@Override public Node visitQuery(QueryContext ctx) { query = new Query(); operatorStack.add(Operator.NONE); booleanQueryStack.add(query); super.visitQuery(ctx); operatorStack.removeLast(); return booleanQueryStack.removeLast(); }
@Override public Query clone(final BooleanParent newParent, final Occur occur, final boolean generated) { final Query q = new Query(generated); for (final BooleanClause clause : clauses) { q.addClause(clause.clone(q, generated)); } return q; }
@Override public Node visit(final Query query) { Query clone = new Query(); newParentStack.add(clone); for (final BooleanClause clause : query.getClauses()) { clone.addClause((BooleanClause) clause.accept(this)); } newParentStack.removeLast(); return clone; }
Query termsToQuery(String termsQuery) { Query query = new Query(); for (String t : termsQuery.split("\\s+")) { if (t.length() > 0) { DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, Occur.SHOULD, false); query.addClause(dmq); Term term = new Term(dmq, t); dmq.addClause(term); } } return query; }
Query query = new Query();
public static Query parseString(final String input) { final Query query = new Query();
? new Query(true) : new BooleanQuery(query.getParent(), query.getOccur(), true);
@Test public void testThatShinglingDoesNotTriggerExceptionOnSingleTerm() throws Exception { Query query = new Query(); addTerm(query, "t1"); ExpandedQuery expandedQuery = new ExpandedQuery(query); ShingleRewriter rewriter = new ShingleRewriter(); rewriter.rewrite(expandedQuery); assertThat((Query) expandedQuery.getUserQuery(), bq( dmq( term("t1") ) ) ); }
@Test public void testShinglingForTwoTokensWithOnFieldNameNullDontShingle() { Query query = new Query(); addTerm(query, "f1", "cde"); addTerm(query, "ajk"); ExpandedQuery expandedQuery = new ExpandedQuery(query); ShingleRewriter rewriter = new ShingleRewriter(); rewriter.rewrite(expandedQuery); assertThat((Query) expandedQuery.getUserQuery(), bq(dmq(term("f1", "cde")), dmq(term("ajk")))); }
@Test public void testShinglingForTwoTokensWithDifferentFieldsDontShingle() { Query query = new Query(); addTerm(query, "f1", "cde"); addTerm(query, "f2", "ajk"); ExpandedQuery expandedQuery = new ExpandedQuery(query); ShingleRewriter rewriter = new ShingleRewriter(); rewriter.rewrite(expandedQuery); assertThat((Query) expandedQuery.getUserQuery(), bq(dmq(term("cde")), dmq(term("ajk")))); }
@Test public void testShinglingForTwoTokensWithSameFieldAndGeneratedFlag() { Query query = new Query(); addTerm(query, "f1", "cde", true); addTerm(query, "f1", "ajk", true); ExpandedQuery expandedQuery = new ExpandedQuery(query); ShingleRewriter rewriter = new ShingleRewriter(true); rewriter.rewrite(expandedQuery); assertThat((Query) expandedQuery.getUserQuery(), bq( dmq( term("f1", "cde"), term("f1", "cdeajk") ), dmq( term("f1", "ajk"), term("f1", "cdeajk") ) ) ); }
@Test public void testShinglingForTwoTokensWithSameField() { Query query = new Query(); addTerm(query, "f1", "cde"); addTerm(query, "f1", "ajk"); ExpandedQuery expandedQuery = new ExpandedQuery(query); ShingleRewriter rewriter = new ShingleRewriter(); rewriter.rewrite(expandedQuery); assertThat((Query) expandedQuery.getUserQuery(), bq( dmq( term("f1", "cde"), term("f1", "cdeajk") ), dmq( term("f1", "ajk"), term("f1", "cdeajk") ) ) ); }
@Test public void testShinglingForTwoTokens() { Query query = new Query(); addTerm(query, "cde"); addTerm(query, "ajk"); ExpandedQuery expandedQuery = new ExpandedQuery(query); ShingleRewriter rewriter = new ShingleRewriter(); rewriter.rewrite(expandedQuery); assertThat((Query) expandedQuery.getUserQuery(), bq( dmq( term("cde"), term("cdeajk") ), dmq( term("ajk"), term("cdeajk") ) ) ); }
@Test public void testShinglingForThreeTokensWithOneTokenGeneratedIgnoringGenerated() { Query query = new Query(); addTerm(query, "cde", false); addTerm(query, "ajk", false); addTerm(query, "xyz", true); ExpandedQuery expandedQuery = new ExpandedQuery(query); ShingleRewriter rewriter = new ShingleRewriter(false); rewriter.rewrite(expandedQuery); assertThat((Query) expandedQuery.getUserQuery(), bq( dmq( term("cde"), term("cdeajk") ), dmq( term("ajk"), term("cdeajk") ), dmq( term("xyz") ) ) ); }
@Test public void testShinglingForThreeTokensWithMixedFields() { Query query = new Query(); addTerm(query, "f1", "cde"); addTerm(query, "f1", "ajk"); addTerm(query, "f2", "xyz"); ExpandedQuery expandedQuery = new ExpandedQuery(query); ShingleRewriter rewriter = new ShingleRewriter(); rewriter.rewrite(expandedQuery); assertThat((Query) expandedQuery.getUserQuery(), bq( dmq( term("f1", "cde"), term("f1", "cdeajk") ), dmq( term("f1", "ajk"), term("f1", "cdeajk") ), dmq(term("f2", "xyz")) ) ); }
@Test public void testShingleWithHyphens() throws Exception { Query query = new Query(); addTerm(query, "cde-fgh", false); addTerm(query, "-", false);
@Test public void testShinglingForThreeTokens() { Query query = new Query(); addTerm(query, "cde"); addTerm(query, "ajk"); addTerm(query, "xyz"); ExpandedQuery expandedQuery = new ExpandedQuery(query); ShingleRewriter rewriter = new ShingleRewriter(); rewriter.rewrite(expandedQuery); assertThat((Query) expandedQuery.getUserQuery(), bq( dmq( term("cde"), term("cdeajk") ), dmq( term("ajk"), term("cdeajk"), term("ajkxyz") ), dmq( term("xyz"), term("ajkxyz") ) ) ); }
@Test public void testShinglingForThreeTokensWithThreeTokenGenerated() { Query query = new Query(); addTerm(query, "cde", true); addTerm(query, "ajk", true); addTerm(query, "xyz", true); ExpandedQuery expandedQuery = new ExpandedQuery(query); ShingleRewriter rewriter = new ShingleRewriter(true); rewriter.rewrite(expandedQuery); assertThat((Query) expandedQuery.getUserQuery(), bq( dmq( term("cde"), term("cdeajk") ), dmq( term("ajk"), term("cdeajk"), term("ajkxyz") ), dmq( term("xyz"), term("ajkxyz") ) ) ); }