Search in sources :

Example 1 with AndQueryNode

use of org.apache.lucene.queryparser.flexible.core.nodes.AndQueryNode in project lucene-solr by apache.

the class StandardSyntaxParser method ConjQuery.

public final QueryNode ConjQuery(CharSequence field) throws ParseException {
    QueryNode first, c;
    Vector<QueryNode> clauses = null;
    first = ModClause(field);
    label_3: while (true) {
        switch((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
            case AND:
                ;
                break;
            default:
                jj_la1[4] = jj_gen;
                break label_3;
        }
        jj_consume_token(AND);
        c = ModClause(field);
        if (clauses == null) {
            clauses = new Vector<QueryNode>();
            clauses.addElement(first);
        }
        clauses.addElement(c);
    }
    if (clauses != null) {
        {
            if (true)
                return new AndQueryNode(clauses);
        }
    } else {
        {
            if (true)
                return first;
        }
    }
    throw new Error("Missing return statement in function");
}
Also used : RegexpQueryNode(org.apache.lucene.queryparser.flexible.standard.nodes.RegexpQueryNode) GroupQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.GroupQueryNode) AndQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.AndQueryNode) FieldQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.FieldQueryNode) TermRangeQueryNode(org.apache.lucene.queryparser.flexible.standard.nodes.TermRangeQueryNode) BooleanQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.BooleanQueryNode) BoostQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.BoostQueryNode) FuzzyQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.FuzzyQueryNode) ModifierQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.ModifierQueryNode) QuotedFieldQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.QuotedFieldQueryNode) SlopQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.SlopQueryNode) OrQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.OrQueryNode) QueryNode(org.apache.lucene.queryparser.flexible.core.nodes.QueryNode) Vector(java.util.Vector) AndQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.AndQueryNode)

Example 2 with AndQueryNode

use of org.apache.lucene.queryparser.flexible.core.nodes.AndQueryNode in project lucene-solr by apache.

the class QueryNodeOperation method logicalAnd.

/**
   * perform a logical and of 2 QueryNode trees. if q1 and q2 are ANDQueryNode
   * nodes it uses head Node from q1 and adds the children of q2 to q1 if q1 is
   * a AND node and q2 is not, add q2 as a child of the head node of q1 if q2 is
   * a AND node and q1 is not, add q1 as a child of the head node of q2 if q1
   * and q2 are not ANDQueryNode nodes, create a AND node and make q1 and q2
   * children of that node if q1 or q2 is null it returns the not null node if
   * q1 = q2 = null it returns null
   */
public static final QueryNode logicalAnd(QueryNode q1, QueryNode q2) {
    if (q1 == null)
        return q2;
    if (q2 == null)
        return q1;
    ANDOperation op = null;
    if (q1 instanceof AndQueryNode && q2 instanceof AndQueryNode)
        op = ANDOperation.BOTH;
    else if (q1 instanceof AndQueryNode)
        op = ANDOperation.Q1;
    else if (q2 instanceof AndQueryNode)
        op = ANDOperation.Q2;
    else
        op = ANDOperation.NONE;
    try {
        QueryNode result = null;
        switch(op) {
            case NONE:
                List<QueryNode> children = new ArrayList<>();
                children.add(q1.cloneTree());
                children.add(q2.cloneTree());
                result = new AndQueryNode(children);
                return result;
            case Q1:
                result = q1.cloneTree();
                result.add(q2.cloneTree());
                return result;
            case Q2:
                result = q2.cloneTree();
                result.add(q1.cloneTree());
                return result;
            case BOTH:
                result = q1.cloneTree();
                result.add(q2.cloneTree().getChildren());
                return result;
        }
    } catch (CloneNotSupportedException e) {
        throw new QueryNodeError(e);
    }
    return null;
}
Also used : QueryNode(org.apache.lucene.queryparser.flexible.core.nodes.QueryNode) AndQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.AndQueryNode) QueryNodeError(org.apache.lucene.queryparser.flexible.core.QueryNodeError) ArrayList(java.util.ArrayList) AndQueryNode(org.apache.lucene.queryparser.flexible.core.nodes.AndQueryNode)

Aggregations

AndQueryNode (org.apache.lucene.queryparser.flexible.core.nodes.AndQueryNode)2 QueryNode (org.apache.lucene.queryparser.flexible.core.nodes.QueryNode)2 ArrayList (java.util.ArrayList)1 Vector (java.util.Vector)1 QueryNodeError (org.apache.lucene.queryparser.flexible.core.QueryNodeError)1 BooleanQueryNode (org.apache.lucene.queryparser.flexible.core.nodes.BooleanQueryNode)1 BoostQueryNode (org.apache.lucene.queryparser.flexible.core.nodes.BoostQueryNode)1 FieldQueryNode (org.apache.lucene.queryparser.flexible.core.nodes.FieldQueryNode)1 FuzzyQueryNode (org.apache.lucene.queryparser.flexible.core.nodes.FuzzyQueryNode)1 GroupQueryNode (org.apache.lucene.queryparser.flexible.core.nodes.GroupQueryNode)1 ModifierQueryNode (org.apache.lucene.queryparser.flexible.core.nodes.ModifierQueryNode)1 OrQueryNode (org.apache.lucene.queryparser.flexible.core.nodes.OrQueryNode)1 QuotedFieldQueryNode (org.apache.lucene.queryparser.flexible.core.nodes.QuotedFieldQueryNode)1 SlopQueryNode (org.apache.lucene.queryparser.flexible.core.nodes.SlopQueryNode)1 RegexpQueryNode (org.apache.lucene.queryparser.flexible.standard.nodes.RegexpQueryNode)1 TermRangeQueryNode (org.apache.lucene.queryparser.flexible.standard.nodes.TermRangeQueryNode)1