use of org.codice.ddf.opensearch.endpoint.ASTNode in project ddf by codice.
the class KeywordTextParserTest method trace.
// We have been using this for debugging purposes, its not meant to be a test.
@Ignore
@Test
public void trace() {
Map<String, String> inputToOutput = new LinkedHashMap<>();
FilterBuilder filterBuilder = new GeotoolsFilterBuilder();
List<String> inputs = new ArrayList<>();
// inputs.add("A \"(test test2)\" OR test2");
inputs.add("A B C D");
for (String input : inputs) {
KeywordTextParser parser = Parboiled.createParser(KeywordTextParser.class);
ParsingResult<ASTNode> result = new TracingParseRunner(parser.inputPhrase()).run(input);
// ParsingResult<ASTNode> result = new
// ReportingParseRunner(parser.inputPhrase()).run(input);
KeywordFilterGenerator kfg = new KeywordFilterGenerator(filterBuilder);
Filter filter = kfg.getFilterFromASTNode(result.resultValue);
inputToOutput.put(input, filter.toString());
// visualize(result);
}
for (Map.Entry<String, String> iteration : inputToOutput.entrySet()) {
System.out.println(iteration.getKey() + " : " + iteration.getValue());
}
}
use of org.codice.ddf.opensearch.endpoint.ASTNode in project ddf by codice.
the class OpenSearchQuery method addContextualFilter.
public void addContextualFilter(String searchTerms, String selectors) throws ParsingException {
Filter filter = null;
KeywordFilterGenerator keywordFilterGenerator = new KeywordFilterGenerator(filterBuilder);
KeywordTextParser parser = Parboiled.createParser(KeywordTextParser.class);
// translate the search terms into an abstract syntax tree
ParsingResult<ASTNode> result = new RecoveringParseRunner(parser.inputPhrase()).run(searchTerms);
// make sure it's a good result before using it
if (result.matched && !result.hasErrors()) {
filter = generateContextualFilter(selectors, keywordFilterGenerator, result);
} else if (result.hasErrors()) {
throw new ParsingException("Unable to parse keyword search phrase. " + generateParsingError(result));
}
if (filter != null) {
filters.add(filter);
}
}
Aggregations