Example usage for org.apache.lucene.search BooleanQuery BooleanQuery

List of usage examples for org.apache.lucene.search BooleanQuery BooleanQuery

Introduction

In this page you can find the example usage for org.apache.lucene.search BooleanQuery BooleanQuery.

Prototype

BooleanQuery

Source Link

Usage

From source file:com.netspective.sparx.navigate.fts.SearchHitsTemplateRenderer.java

License:Open Source License

protected Query getAllWordsQuery(final NavigationContext nc, final String[] defaultFieldNames,
        final String allWordsParamValue) {
    final BooleanQuery allWordsQuery = new BooleanQuery();
    for (int i = 0; i < defaultFieldNames.length; i++) {
        final BooleanQuery booleanQuery = new BooleanQuery();
        final String[] words = TextUtils.getInstance().split(allWordsParamValue, " ", true);
        for (int j = 0; j < words.length; j++)
            booleanQuery.add(new TermQuery(new Term(defaultFieldNames[i], words[j])), true, false);
        allWordsQuery.add(booleanQuery, false, false);
    }/*from w  w  w .j  av  a2  s  .com*/
    return allWordsQuery;
}

From source file:com.o19s.solr.swan.nodes.SwanNode.java

License:Apache License

public Query getQuery(String[] fields) {
    BooleanQuery query = new BooleanQuery();
    for (int x = 0; x < fields.length; x++) {
        query.add(getQuery(fields[x]), BooleanClause.Occur.SHOULD);
    }/*from  w w w . j a  va2  s  .c o m*/
    return query;
}

From source file:com.o19s.solr.swan.nodes.SwanNotNode.java

License:Apache License

@Override
public Query getQuery(String field) {
    BooleanQuery query = new BooleanQuery();
    query.add(_left.getQuery(field), BooleanClause.Occur.MUST);
    query.add(_right.getQuery(field), BooleanClause.Occur.MUST_NOT);
    return query;
}

From source file:com.o19s.solr.swan.nodes.SwanNotNode.java

License:Apache License

@Override
public Query getQuery(String[] fields) {
    BooleanQuery query = new BooleanQuery();

    query.add(_left.getQuery(), BooleanClause.Occur.MUST);
    query.add(_right.getQuery(), BooleanClause.Occur.MUST_NOT);

    return query;
}

From source file:com.o19s.solr.swan.nodes.SwanOperatorNode.java

License:Apache License

@Override
public Query getQuery(String field) {
    BooleanQuery query = new BooleanQuery();
    for (SwanNode n : _nodes) {
        Query q = n.getQuery(field);
        query.add(q, getClause());/* w  w  w.j  a  v  a2  s.  c o  m*/
    }
    return query;
}

From source file:com.o19s.solr.swan.nodes.SwanOperatorNode.java

License:Apache License

@Override
public Query getQuery(String[] fields) {
    BooleanQuery query = new BooleanQuery();
    for (SwanNode n : _nodes) {
        query.add(n.getQuery(), getClause());
    }/*  w  w  w. java  2s. c o  m*/
    return query;
}

From source file:com.o19s.solr.swan.nodes.SwanProxNode.java

License:Apache License

private Query nestedConditionalQuery(BooleanClause.Occur innerOccur, BooleanClause.Occur outerOccur,
        List<SwanNode> left, List<SwanNode> right, String lfDef, String rfDef, boolean reverse) {
    BooleanQuery query = new BooleanQuery();
    BooleanQuery innerQuery;//from w ww .  j  a v a  2  s  .  c om
    for (SwanNode l : left) {
        String lf = l.getField() != null ? l.getField() : lfDef;
        innerQuery = new BooleanQuery();
        for (SwanNode r : right) {
            String f = r.getField() != null ? r.getField() : rfDef;
            if (f == null)
                f = lf;
            else if (lf != null && !lf.equals(f))
                continue;

            if (reverse)
                addSpanQuery(innerQuery, innerOccur, r, l, f);
            else
                addSpanQuery(innerQuery, innerOccur, l, r, f);
        }
        if (innerQuery.getClauses().length == 0)
            throw new IllegalArgumentException("Clauses must have same field.");
        query.add(innerQuery, outerOccur);
    }

    return query;
}

From source file:com.o19s.solr.swan.nodes.SwanProxNode.java

License:Apache License

private Query conditionalQuery(BooleanClause.Occur occur, List<SwanNode> left, List<SwanNode> right,
        String lfDef, String rfDef) {
    BooleanQuery query = new BooleanQuery();
    for (SwanNode l : left) {
        String lf = l.getField() != null ? l.getField() : lfDef;
        for (SwanNode r : right) {
            String f = r.getField() != null ? r.getField() : rfDef;
            if (f == null)
                f = lf;/*from   w ww. j  a v  a 2s  .  co  m*/
            else if (lf != null && !lf.equals(f))
                continue;

            addSpanQuery(query, occur, l, r, f);
        }
    }

    return query;
}

From source file:com.o19s.solr.swan.nodes.SwanProxNode.java

License:Apache License

private Query xOrConditionalQuery(SwanNode left, SwanNode right, boolean reverse) {
    String lf_def = left.getField();
    String rf_def = right.getField();

    BooleanClause.Occur occur = reverse ? ((SwanOperatorNode) right).getClause()
            : ((SwanOperatorNode) left).getClause();
    List<SwanNode> left_nodes = ((SwanOperatorNode) left).getNodes();
    List<SwanNode> right_nodes = ((SwanOperatorNode) right).getNodes();

    List<Query> nodes = new ArrayList<Query>();

    for (SwanNode left_node : left_nodes) {
        BooleanQuery outer = new BooleanQuery();
        String lf = checkSet(left_node.getField(), lf_def);

        for (SwanNode right_node : right_nodes) {
            String rf = checkSet(right_node.getField(), rf_def);
            String f = checkSet(lf, rf);

            if (reverse)
                addSpanQuery(outer, occur, right_node, left_node, f);
            else//from   w  w  w .j  a  v a  2 s  . com
                addSpanQuery(outer, occur, left_node, right_node, f);
        }
        nodes.add(outer);
    }

    return xOrNodes(nodes);
}

From source file:com.o19s.solr.swan.nodes.SwanProxNode.java

License:Apache License

private Query dualXOrConditionalQuery() {
    String lf_def = _left.getField();
    String rf_def = _right.getField();

    List<Query> nodes = new ArrayList<Query>();

    for (SwanNode left : ((SwanOperatorNode) _left).getNodes()) {
        String lf = checkSet(left.getField(), lf_def);
        for (SwanNode right : ((SwanOperatorNode) _right).getNodes()) {
            String rf = checkSet(right.getField(), rf_def);
            String f = checkSet(lf, rf);

            // TODO: This I believe can be refactored to something cleaner.
            if (f == null) {
                BooleanQuery inner = new BooleanQuery();
                for (String _f : defaultFields)
                    inner.add(getSpanQuery(left, right, _f), BooleanClause.Occur.SHOULD);
                nodes.add(inner);/*from w  w  w  .  j  a  v  a  2s.c om*/
            } else {
                nodes.add(getSpanQuery(left, right, f));
            }
        }
    }

    return xOrNodes(nodes);
}