@Override public T visit(final Query query) { for (final BooleanClause clause : query.getClauses()) { clause.accept(this); } return null; }
@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; }
if (t.length() > 0) { Query query = termsToQuery(t); if (!query.getClauses().isEmpty()) { for (Input input : inputs) { BoostInstruction bi = new BoostInstruction(query, direction, boost);
final List<BooleanClause> clauses = ((querqy.model.Query) userQuery).getClauses();
if (query.getClauses().isEmpty()) { DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, Occur.SHOULD, false); dmq.addClause(new Term(dmq, input));
@Test public void testThatTermIsRemovedIfThereIsAnotherTermInTheSameDMQ() throws Exception { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); DeleteInstruction delete = new DeleteInstruction(Arrays.asList(mkTerm("a"))); builder.addRule(new Input(Arrays.asList(mkTerm("a")), false, false), new Instructions(Arrays.asList((Instruction) delete))); RulesCollection rules = builder.build(); CommonRulesRewriter rewriter = new CommonRulesRewriter(rules); ExpandedQuery expandedQuery = makeQuery("a"); Query query = (Query) expandedQuery.getUserQuery(); DisjunctionMaxQuery dmq = query.getClauses(DisjunctionMaxQuery.class).get(0); querqy.model.Term termB = new querqy.model.Term(dmq, null, "b"); dmq.addClause(termB); Query rewritten = (Query) rewriter.rewrite(expandedQuery, EMPTY_CONTEXT).getUserQuery(); assertThat(rewritten, bq( dmq( term("b") ) )); }
@Test public void testThatTermIsRemovedOnceIfItExistsTwiceInSameDMQAndNoOtherTermExistsInQuery() throws Exception { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); DeleteInstruction delete = new DeleteInstruction(Arrays.asList(mkTerm("a"))); builder.addRule(new Input(Arrays.asList(mkTerm("a")), false, false), new Instructions(Arrays.asList((Instruction) delete))); RulesCollection rules = builder.build(); CommonRulesRewriter rewriter = new CommonRulesRewriter(rules); ExpandedQuery expandedQuery = makeQuery("a"); Query query = (Query) expandedQuery.getUserQuery(); DisjunctionMaxQuery dmq = query.getClauses(DisjunctionMaxQuery.class).get(0); querqy.model.Term termB = new querqy.model.Term(dmq, null, "a"); dmq.addClause(termB); Query rewritten = (Query) rewriter.rewrite(expandedQuery, EMPTY_CONTEXT).getUserQuery(); assertThat(rewritten, bq( dmq( term("a") ) )); }