Search in sources :

Example 1 with QueryBuilder

use of org.apache.lucene.queryparser.flexible.core.builders.QueryBuilder in project datawave by NationalSecurityAgency.

the class LuceneToJexlQueryParser method convertToJexlNode.

public JexlNode convertToJexlNode(String query) throws ParseException {
    // replace open smart quote 147
    query = query.replaceAll("\\u0093", "\"");
    // replace close smart quote 148
    query = query.replaceAll("\\u0094", "\"");
    // replace open left double quote
    query = query.replaceAll("\\u201c", "\"");
    // replace close right double quote
    query = query.replaceAll("\\u201d", "\"");
    JexlNode parsedQuery = null;
    try {
        Locale.setDefault(Locale.US);
        AccumuloSyntaxParser syntaxParser = new AccumuloSyntaxParser();
        syntaxParser.enable_tracing();
        QueryNodeProcessor processor = getQueryNodeProcessor();
        QueryBuilder builder = new JexlTreeBuilder(allowedFunctions);
        org.apache.lucene.queryparser.flexible.core.nodes.QueryNode queryTree = syntaxParser.parse(query, "");
        queryTree = processor.process(queryTree);
        parsedQuery = (JexlNode) builder.build(queryTree);
    } catch (Exception e) {
        throw new ParseException(e);
    }
    return parsedQuery;
}
Also used : JexlTreeBuilder(datawave.query.language.builder.jexl.JexlTreeBuilder) AccumuloSyntaxParser(datawave.query.language.parser.lucene.AccumuloSyntaxParser) QueryBuilder(org.apache.lucene.queryparser.flexible.core.builders.QueryBuilder) ParseException(datawave.query.language.parser.ParseException) QueryNodeProcessor(org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessor) ParseException(datawave.query.language.parser.ParseException)

Example 2 with QueryBuilder

use of org.apache.lucene.queryparser.flexible.core.builders.QueryBuilder in project datawave by NationalSecurityAgency.

the class LuceneQueryParser method parse.

@Override
public datawave.query.language.tree.QueryNode parse(String query) throws ParseException {
    // replace open smart quote 147
    query = query.replaceAll("\\u0093", "\"");
    // replace close smart quote 148
    query = query.replaceAll("\\u0094", "\"");
    datawave.query.language.tree.QueryNode parsedQuery = null;
    try {
        Locale.setDefault(Locale.US);
        AccumuloSyntaxParser syntaxParser = new AccumuloSyntaxParser();
        syntaxParser.enable_tracing();
        org.apache.lucene.queryparser.flexible.core.config.QueryConfigHandler queryConfigHandler = new QueryConfigHandler();
        QueryNodeProcessor processor = new CustomQueryNodeProcessorPipeline(queryConfigHandler);
        QueryBuilder builder = null;
        if (allowedFunctions == null) {
            builder = new AccumuloQueryTreeBuilder();
        } else {
            builder = new AccumuloQueryTreeBuilder(allowedFunctions);
        }
        QueryNode queryTree = syntaxParser.parse(query, "");
        queryTree = processor.process(queryTree);
        parsedQuery = (datawave.query.language.tree.QueryNode) builder.build(queryTree);
        Set<FieldedTerm> positiveFilters = new TreeSet<>();
        if (log.isTraceEnabled()) {
            log.trace("Query before filters extracted: " + parsedQuery.getContents());
        }
        extractFilters(parsedQuery, positiveFilters);
        parsedQuery.setPositiveFilters(positiveFilters);
        if (log.isTraceEnabled()) {
            log.trace("Query after filters extracted: " + parsedQuery.getContents());
        }
    } catch (QueryNodeException | RuntimeException e) {
        throw new ParseException(e);
    }
    return parsedQuery;
}
Also used : QueryNodeException(org.apache.lucene.queryparser.flexible.core.QueryNodeException) CustomQueryNodeProcessorPipeline(datawave.query.language.processor.lucene.CustomQueryNodeProcessorPipeline) AccumuloQueryTreeBuilder(datawave.query.language.builder.lucene.AccumuloQueryTreeBuilder) QueryBuilder(org.apache.lucene.queryparser.flexible.core.builders.QueryBuilder) QueryNode(org.apache.lucene.queryparser.flexible.core.nodes.QueryNode) TreeSet(java.util.TreeSet) ParseException(datawave.query.language.parser.ParseException) QueryNodeProcessor(org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessor) RangeFieldedTerm(datawave.query.search.RangeFieldedTerm) FieldedTerm(datawave.query.search.FieldedTerm)

Aggregations

ParseException (datawave.query.language.parser.ParseException)2 QueryBuilder (org.apache.lucene.queryparser.flexible.core.builders.QueryBuilder)2 QueryNodeProcessor (org.apache.lucene.queryparser.flexible.core.processors.QueryNodeProcessor)2 JexlTreeBuilder (datawave.query.language.builder.jexl.JexlTreeBuilder)1 AccumuloQueryTreeBuilder (datawave.query.language.builder.lucene.AccumuloQueryTreeBuilder)1 AccumuloSyntaxParser (datawave.query.language.parser.lucene.AccumuloSyntaxParser)1 CustomQueryNodeProcessorPipeline (datawave.query.language.processor.lucene.CustomQueryNodeProcessorPipeline)1 FieldedTerm (datawave.query.search.FieldedTerm)1 RangeFieldedTerm (datawave.query.search.RangeFieldedTerm)1 TreeSet (java.util.TreeSet)1 QueryNodeException (org.apache.lucene.queryparser.flexible.core.QueryNodeException)1 QueryNode (org.apache.lucene.queryparser.flexible.core.nodes.QueryNode)1