@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; }
@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 T visit(final Query query) { for (final BooleanClause clause : query.getClauses()) { clause.accept(this); } return null; }
private void addTerm(Query query, String field, String value) { DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, Clause.Occur.SHOULD, true); query.addClause(dmq); Term term = new Term(dmq, field, value); dmq.addClause(term); }
? new Query(true) : new BooleanQuery(query.getParent(), query.getOccur(), true);
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; }
if (t.length() > 0) { Query query = termsToQuery(t); if (!query.getClauses().isEmpty()) { for (Input input : inputs) { BoostInstruction bi = new BoostInstruction(query, direction, boost);
private void addTerm(Query query, String field, String value, boolean isGenerated) { DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, Clause.Occur.SHOULD, true); query.addClause(dmq); Term term = new Term(dmq, field, value, isGenerated); dmq.addClause(term); }
Query query = new Query(); query.addClause(dmq); if (query.getClauses().isEmpty()) { DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, Occur.SHOULD, false); dmq.addClause(new Term(dmq, input)); query.addClause(dmq);
@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") ) ) ); }
public static Query parseString(final String input) { final Query query = new Query(); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery( query, occur, false); query.addClause(dmq); Term term = new Term(dmq, input.substring(start, idx)); dmq.addClause(term); query.addClause(dmq); Term term = new Term(dmq, occur == Occur.MUST ? "+" : "-"); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(query, occur, false); query.addClause(dmq); Term term = new Term(dmq, input.substring(start)); dmq.addClause(term); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery( query, Occur.SHOULD, false); query.addClause(dmq); Term term = new Term(dmq, occur == Occur.MUST ? "+" : "-");
final List<BooleanClause> clauses = ((querqy.model.Query) userQuery).getClauses();
@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 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 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 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") ) )); }
@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") ) ) ); }