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.intuit.tank.search.util.SearchUtils.java

License:Open Source License

public static final Query createLuceneQuery(Operator operator, CompositeSearchQuery query) {
    Query luceneQuery = new MultiSearchParam(query.getOperator(),
            query.getQuery1().getSearchParams().toArray((new SearchParam[0]))).getLuceneQuery();
    Query otherLuceneQuery = new MultiSearchParam(Operator.OR,
            query.getQuery2().getSearchParams().toArray((new SearchParam[0]))).getLuceneQuery();
    BooleanQuery booleanQuery = new BooleanQuery();
    booleanQuery.add(luceneQuery, operator.getOccur());
    booleanQuery.add(otherLuceneQuery, query.getOperator().getOccur());
    return booleanQuery;
}

From source file:com.isotrol.impe3.nr.core.LuceneTranslator.java

License:Open Source License

/** Filter criteria map to query. */
private static <K> BooleanQuery map2query(Function<? super K, Query> f, Map<K, FilterType> map) {
    if (map == null || map.isEmpty()) {
        return null;
    }/*from ww w.j  av a  2 s  .c o  m*/
    BooleanQuery bq = new BooleanQuery();
    for (Entry<K, FilterType> e : map.entrySet()) {
        bq.add(new BooleanClause(f.apply(e.getKey()), TYPE_MAP.get(e.getValue())));
    }
    return bq;
}

From source file:com.isotrol.impe3.nr.core.LuceneTranslator.java

License:Open Source License

private BooleanQuery boolQuery(BooleanClause.Occur occur, Iterable<Query> queries) {
    if (queries == null) {
        return null;
    }/*from  ww  w .j av a2  s. c  o  m*/
    boolean empty = true;
    final BooleanQuery bq = new BooleanQuery();
    for (Query q : filter(queries, notNull())) {
        empty = false;
        final BooleanClause clause = new BooleanClause(q, occur);
        bq.add(clause);
    }
    return empty ? null : bq;
}

From source file:com.isotrol.impe3.nr.core.LuceneTranslator.java

License:Open Source License

/**
 * Translate a node query and a node filter into lucene query
 * @param query Node query./*from   w  ww .j  a va2s.c  o  m*/
 * @param filter Node filter.
 * @return A lucene query representing the query and the filter.
 */
public Query query(NodeQuery query, NodeFilter filter) {
    Query q = query(query);
    Query f = query(filter);
    if (f == null) {
        return q;
    }
    BooleanQuery both = new BooleanQuery();
    both.add(new BooleanClause(q, BooleanClause.Occur.MUST));
    both.add(new BooleanClause(f, BooleanClause.Occur.MUST));
    return both;
}

From source file:com.isotrol.impe3.nr.core.LuceneTranslator.java

License:Open Source License

private ImmutableMap<Class<?>, Object> createFunctionsMap() {
    ImmutableMap.Builder<Class<?>, Object> builder = ImmutableMap.builder();

    builder.put(NRTermQuery.class, new Function<NRTermQuery, TermQuery>() {
        public TermQuery apply(NRTermQuery input) {
            return new TermQuery(get(input.getTerm()));
        }//from   ww w  .  j a va  2 s.  c o m
    });

    builder.put(NRWildcardQuery.class, new Function<NRWildcardQuery, WildcardQuery>() {
        public WildcardQuery apply(NRWildcardQuery input) {
            return new WildcardQuery(get(input.getTerm()));
        }
    });

    builder.put(NRRangeQuery.class, new Function<NRRangeQuery, Query>() {
        public Query apply(NRRangeQuery input) {
            return new TermRangeQuery(input.getFieldName(), input.getLowerVal(), input.getUpperVal(),
                    input.isIncludeLower(), input.isIncludeUpper());
        }
    });

    builder.put(NRMatchAllDocsQuery.class, new Function<NRMatchAllDocsQuery, Query>() {
        public Query apply(NRMatchAllDocsQuery input) {
            return new MatchAllDocsQuery();
        }
    });

    builder.put(NRBooleanQuery.class, new Function<NRBooleanQuery, Query>() {
        public Query apply(NRBooleanQuery input) {
            final BooleanQuery query = new BooleanQuery();
            for (BooleanClause clause : Iterables.transform(input.getClauses(),
                    new Function<NRBooleanClause, BooleanClause>() {

                        public BooleanClause apply(NRBooleanClause input) {
                            final Query q = query(input.getQuery());
                            final BooleanClause.Occur occur;
                            switch (input.getOccur()) {
                            case MUST:
                                occur = BooleanClause.Occur.MUST;
                                break;
                            case SHOULD:
                                occur = BooleanClause.Occur.SHOULD;
                                break;
                            case MUST_NOT:
                                occur = BooleanClause.Occur.MUST_NOT;
                                break;
                            default:
                                throw new IllegalStateException();
                            }
                            return new BooleanClause(q, occur);
                        };
                    })) {

                if (clause != null && clause.getQuery() != null && clause.getQuery().toString().length() > 0) {
                    query.add(clause);
                }
            }
            return query;
        }
    });

    builder.put(NRStringQuery.class, new Function<NRStringQuery, Query>() {
        public Query apply(NRStringQuery input) {
            final NRTerm term = input.getTerm();
            final QueryParser parser = new PrefixAnalyzedQueryParser(term.getField(), analyzer);

            try {
                return parser.parse(term.getText());
            } catch (ParseException e) {
                throw new IllegalArgumentException(e);
            }
        }
    });

    return builder.build();
}

From source file:com.isotrol.impe3.nr.core.LucisQuerySupportTest.java

License:Open Source License

@Test
public void lucisMultiBooleanQueryTest() {
    Query query1 = createBooleanQuery();
    Query query2 = new TermQuery(new Term("FIELD1", "TEST"));

    BooleanClause clause1 = new BooleanClause(query1, BooleanClause.Occur.SHOULD);
    BooleanClause clause2 = new BooleanClause(query2, BooleanClause.Occur.MUST);

    BooleanQuery query = new BooleanQuery();

    query.add(clause1);//from  ww  w  . ja v a2 s .  c  om
    query.add(clause2);

    NodeQuery lquery1 = createLucisBooleanQuery();
    NodeQuery lquery2 = NodeQueries.term("FIELD1", "TEST");

    NRBooleanQuery lquery = NodeQueries.bool();

    lquery.should(lquery1);
    lquery.must(lquery2);

    Query test = translator().query(lquery);

    Assert.assertNotNull(test);
    Assert.assertEquals(query, test);

}

From source file:com.isotrol.impe3.nr.core.LucisQuerySupportTest.java

License:Open Source License

private BooleanQuery createBooleanQuery() {
    Query query1 = new TermRangeQuery("FIELD_NAME", "090101", "090201", true, true);
    Query query2 = new TermQuery(new Term("FIELD", "TEST"));
    Query query3 = new MatchAllDocsQuery();
    Query query4 = new WildcardQuery(new Term("FIELD", "TEST*"));

    BooleanQuery query = new BooleanQuery();

    BooleanClause clause1 = new BooleanClause(query1, BooleanClause.Occur.MUST);
    BooleanClause clause2 = new BooleanClause(query2, BooleanClause.Occur.MUST_NOT);
    BooleanClause clause3 = new BooleanClause(query3, BooleanClause.Occur.SHOULD);
    BooleanClause clause4 = new BooleanClause(query4, BooleanClause.Occur.MUST);

    query.add(clause1);/*ww w  .j  a v  a2  s  .c  o  m*/
    query.add(clause2);
    query.add(clause3);
    query.add(clause4);

    return query;
}

From source file:com.it.lucene.test.IndexSearch.java

@Test
public void booleanQuery() {
    BooleanQuery query = new BooleanQuery();
    // TermQuery/*from   w w  w .  j  av  a  2 s  . co m*/
    Query q1 = new TermQuery(new Term("description", "java"));
    Query q2 = NumericRangeQuery.newFloatRange("price", 50f, 56f, false, true);
    // 1?MUSTMUST???
    // 2?MUSTMUST_NOT?????
    // 3?MUST_NOTMUST_NOT?
    // 4?SHOULDMUSTMUSTSHOULD?
    // 5?SHOUlDMUST_NOTMUSTMUST_NOT
    // 6?SHOULDSHOULD?

    query.add(q1, Occur.MUST);
    query.add(q2, Occur.MUST);

    System.out.println(query);
    doSearch(query);
}

From source file:com.it.lucene.test.IndexSearch.java

@Test
public void testsToString() {
    BooleanQuery query = new BooleanQuery();
    query.add(new FuzzyQuery(new Term("description", "lucene")), Occur.MUST);
    Query q2 = NumericRangeQuery.newFloatRange("price", 50f, 56f, false, true);
    query.add(q2, Occur.MUST);/*from   w w  w. j av a  2 s. c o  m*/
    System.out.println(query);
}

From source file:com.jaeksoft.searchlib.function.expression.RootExpression.java

License:Open Source License

public static void main(String[] argv) {
    String exp = " 10000 / ( 1 * rord(creationDate) + 10000 ) ";
    try {//  w  w  w .  jav  a2 s.c o  m
        System.out.println(getQuery(new BooleanQuery(), exp));
    } catch (SyntaxError e) {
        System.err.println(e.getMessage());
    }
}