Example usage for org.apache.lucene.queryparser.flexible.core.builders QueryTreeBuilder QUERY_TREE_BUILDER_TAGID

List of usage examples for org.apache.lucene.queryparser.flexible.core.builders QueryTreeBuilder QUERY_TREE_BUILDER_TAGID

Introduction

In this page you can find the example usage for org.apache.lucene.queryparser.flexible.core.builders QueryTreeBuilder QUERY_TREE_BUILDER_TAGID.

Prototype

String QUERY_TREE_BUILDER_TAGID

To view the source code for org.apache.lucene.queryparser.flexible.core.builders QueryTreeBuilder QUERY_TREE_BUILDER_TAGID.

Click Source Link

Document

This tag is used to tag the nodes in a query tree with the built objects produced from their own associated builder.

Usage

From source file:com.sindicetech.siren.qparser.keyword.builders.AnyQueryNodeBuilder.java

License:Open Source License

public BooleanQuery build(QueryNode queryNode) throws QueryNodeException {
    AnyQueryNode andNode = (AnyQueryNode) queryNode;

    BooleanQuery bQuery = new BooleanQuery();
    List<QueryNode> children = andNode.getChildren();

    if (children != null) {

        for (QueryNode child : children) {
            Object obj = child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);

            if (obj != null) {
                Query query = (Query) obj;

                try {
                    bQuery.add(query, BooleanClause.Occur.SHOULD);
                } catch (TooManyClauses ex) {

                    throw new QueryNodeException(new MessageImpl(
                            /*
                             * IQQQ.Q0028E_TOO_MANY_BOOLEAN_CLAUSES,
                             * BooleanQuery.getMaxClauseCount()
                             *///from  w w  w. j  a  v  a  2s.  c  o m
                            QueryParserMessages.EMPTY_MESSAGE), ex);

                }

            }

        }

    }

    bQuery.setMinimumNumberShouldMatch(andNode.getMinimumMatchingElements());

    return bQuery;

}

From source file:com.sindicetech.siren.qparser.keyword.builders.ArrayQueryNodeBuilder.java

License:Open Source License

@Override
public Query build(final QueryNode queryNode) throws QueryNodeException {
    final ArrayQueryNode arrayNode = (ArrayQueryNode) queryNode;
    final List<QueryNode> children = arrayNode.getChildren();
    final ArrayQuery arrayQuery = new ArrayQuery();

    for (final QueryNode child : children) {
        final Object v = child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
        if (v == null) { // DummyNode such as the EmptyNodeQueryNode
            continue;
        }/*w ww .ja va2s. c  o  m*/
        if (v instanceof Query) {
            if (v instanceof ArrayQuery) {
                /*
                 * Nested array query. It is transformed as a TwigQuery with empty root
                 */
                final TwigQuery twigQuery = new TwigQuery();
                for (final Query qn : ((ArrayQuery) v).getElements()) {
                    final NodeQuery valQuery = (NodeQuery) qn;
                    twigQuery.addChild(valQuery,
                            NodeQueryBuilderUtil.getModifierValue(child, NodeBooleanClause.Occur.MUST));
                }
                arrayQuery.addElement(twigQuery);
            } else {
                arrayQuery.addElement((NodeQuery) v);
            }
        } else {
            throw new QueryNodeException(new MessageImpl(QueryParserMessages.INVALID_SYNTAX,
                    "Unexpected class of a Twig Query clause: " + v == null ? "null" : v.getClass().getName()));
        }
    }
    return arrayQuery;
}

From source file:com.sindicetech.siren.qparser.keyword.builders.BooleanQueryNodeBuilder.java

License:Open Source License

public Query build(final QueryNode queryNode) throws QueryNodeException {
    final BooleanQueryNode booleanNode = (BooleanQueryNode) queryNode;

    final BooleanQuery bQuery = new BooleanQuery();
    final List<QueryNode> children = booleanNode.getChildren();

    if (children != null) {

        for (final QueryNode child : children) {
            final Object obj = child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);

            if (obj != null) {
                final Query query = (Query) obj;

                try {
                    final QueryNode mod;
                    if (child instanceof DatatypeQueryNode) {
                        mod = ((DatatypeQueryNode) child).getChild();
                    } else {
                        mod = child;//  w w  w  .  j  av a 2 s . c om
                    }
                    bQuery.add(query, getModifierValue(mod));

                } catch (final TooManyClauses ex) {

                    throw new QueryNodeException(new MessageImpl(QueryParserMessages.TOO_MANY_BOOLEAN_CLAUSES,
                            BooleanQuery.getMaxClauseCount(),
                            queryNode.toQueryString(new EscapeQuerySyntaxImpl())), ex);

                }

            }

        }

    }

    return bQuery;

}

From source file:com.sindicetech.siren.qparser.keyword.builders.BoostQueryNodeBuilder.java

License:Open Source License

public Query build(final QueryNode queryNode) throws QueryNodeException {
    final BoostQueryNode boostNode = (BoostQueryNode) queryNode;
    final QueryNode child = boostNode.getChild();

    if (child == null) {
        return null;
    }/*from  w  w  w  . ja v  a2  s. c om*/

    final Query query = (Query) child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
    query.setBoost(boostNode.getValue());

    return query;
}

From source file:com.sindicetech.siren.qparser.keyword.builders.GroupQueryNodeBuilder.java

License:Open Source License

public Query build(QueryNode queryNode) throws QueryNodeException {
    GroupQueryNode groupNode = (GroupQueryNode) queryNode;

    return (Query) (groupNode).getChild().getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);

}

From source file:com.sindicetech.siren.qparser.keyword.builders.ModifierQueryNodeBuilder.java

License:Open Source License

public Query build(QueryNode queryNode) throws QueryNodeException {
    ModifierQueryNode modifierNode = (ModifierQueryNode) queryNode;

    return (Query) (modifierNode).getChild().getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);

}

From source file:com.sindicetech.siren.qparser.keyword.builders.NodeBooleanQueryNodeBuilder.java

License:Open Source License

public NodeQuery build(final QueryNode queryNode) throws QueryNodeException {
    final NodeBooleanQueryNode booleanNode = (NodeBooleanQueryNode) queryNode;
    final List<QueryNode> children = booleanNode.getChildren();
    final NodeBooleanQuery bq = new NodeBooleanQuery();

    if (children == null) {
        return bq; // return empty boolean query
    }//from   w ww. ja v a2 s .c  o  m

    // If more than one child, wrap them into a NodeBooleanQuery
    if (children.size() > 1) {
        for (final QueryNode child : children) {
            final Object obj = child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
            if (obj != null) {
                if (obj instanceof NodeQuery) {
                    final QueryNode mod;
                    if (child instanceof DatatypeQueryNode) {
                        mod = ((DatatypeQueryNode) child).getChild();
                    } else {
                        mod = child;
                    }
                    bq.add((NodeQuery) obj,
                            NodeQueryBuilderUtil.getModifierValue(mod, NodeBooleanClause.Occur.SHOULD));
                } else {
                    throw new QueryNodeException(
                            new Error("Expected NodeQuery: got '" + obj.getClass().getCanonicalName() + "'"));
                }
            }
        }
        return bq;
    }
    // If only one child, return it directly
    else {
        final Object obj = children.get(0).getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
        if (obj != null) {
            if (obj instanceof NodeQuery) {
                return (NodeQuery) obj;
            } else {
                throw new QueryNodeException(
                        new Error("Non NodeQuery query '" + obj.getClass().getCanonicalName() + "' received"));
            }
        }
        return bq; // return empty boolean query
    }
}

From source file:com.sindicetech.siren.qparser.keyword.builders.NodePhraseQueryNodeBuilder.java

License:Open Source License

public NodePhraseQuery build(final QueryNode queryNode) throws QueryNodeException {
    final TokenizedPhraseQueryNode phraseNode = (TokenizedPhraseQueryNode) queryNode;

    final NodePhraseQuery phraseQuery = new NodePhraseQuery();
    final List<QueryNode> children = phraseNode.getChildren();

    if (children != null) {
        for (QueryNode child : children) {
            // the query node should always be a FieldQueryNode
            assert child instanceof FieldQueryNode;
            final FieldQueryNode termNode = (FieldQueryNode) child;
            final NodeTermQuery termQuery = (NodeTermQuery) child
                    .getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
            phraseQuery.add(termQuery.getTerm(), termNode.getPositionIncrement());
        }// w  ww.  ja v  a2s.  c om
    }
    // assign the datatype. We must always have a datatype assigned.
    phraseQuery.setDatatype((String) queryNode.getTag(DatatypeQueryNode.DATATYPE_TAGID));
    return phraseQuery;
}

From source file:com.sindicetech.siren.qparser.keyword.builders.SlopQueryNodeBuilder.java

License:Open Source License

public NodePhraseQuery build(QueryNode queryNode) throws QueryNodeException {
    final SlopQueryNode phraseSlopNode = (SlopQueryNode) queryNode;

    if (phraseSlopNode.getValue() != 0)
        throw new NotImplementedException("Slop Queries not supported in Siren yet");

    return (NodePhraseQuery) phraseSlopNode.getChild().getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);

    // TODO: To implement when siren will support slop queries
    // SlopQueryNode phraseSlopNode = (SlopQueryNode) queryNode;
    ///*  w  w  w.j  a  v a 2  s. c  o  m*/
    // Query query = (Query) phraseSlopNode.getChild().getTag(
    // QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
    //
    //    
    // if (query instanceof PhraseQuery) {
    // ((PhraseQuery) query).setSlop(phraseSlopNode.getValue());
    //
    // } else {
    // ((MultiPhraseQuery) query).setSlop(phraseSlopNode.getValue());
    // }
    //
    // return query;

}

From source file:com.sindicetech.siren.qparser.keyword.builders.SpanBooleanQueryNodeBuilder.java

License:Open Source License

public NodeQuery build(final QueryNode queryNode) throws QueryNodeException {
    final SpanBooleanQueryNode booleanNode = (SpanBooleanQueryNode) queryNode;
    final List<QueryNode> children = booleanNode.getChildren();
    final BooleanSpanQuery bq = new BooleanSpanQuery(booleanNode.getSlop(), booleanNode.isInOrder());

    if (children == null) {
        return bq; // return empty boolean query
    }//  w  w w  . java2s .  c o m

    // If more than one child, add them into the BooleanSpanQuery
    if (children.size() > 1) {
        for (final QueryNode child : children) {
            final Object obj = child.getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
            if (obj != null) {
                if (obj instanceof SpanQuery) {
                    bq.add((SpanQuery) obj,
                            NodeQueryBuilderUtil.getModifierValue(child, NodeBooleanClause.Occur.SHOULD));
                } else {
                    throw new QueryNodeException(new MessageImpl(
                            "Expected SpanQuery: got '" + obj.getClass().getCanonicalName() + "'"));
                }
            }
        }
        return bq;
    }
    // If only one child, return it directly
    else {
        final Object obj = children.get(0).getTag(QueryTreeBuilder.QUERY_TREE_BUILDER_TAGID);
        if (obj != null) {
            if (obj instanceof SpanQuery) {
                return (NodeQuery) obj;
            } else {
                throw new QueryNodeException(
                        new Error("Non SpanQuery query '" + obj.getClass().getCanonicalName() + "' received"));
            }
        }
        return bq; // return empty boolean query
    }
}