final List<Query> filterQueries = transformFilterQueries(rewrittenQuery.getFilterQueries()); final List<Query> querqyBoostQueries = needsScores ? getQuerqyBoostQueries(rewrittenQuery)
@Test public void testThatFilterQueriesAreMarkedAsGenerated() { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); FilterInstruction filterInstruction = new FilterInstruction(makeQuery("a").getUserQuery()); builder.addRule(new Input(Arrays.asList(mkTerm("x")), false, false), new Instructions(Arrays.asList((Instruction) filterInstruction))); RulesCollection rules = builder.build(); CommonRulesRewriter rewriter = new CommonRulesRewriter(rules); ExpandedQuery query = makeQuery("x"); Collection<QuerqyQuery<?>> filterQueries = rewriter.rewrite(query, EMPTY_CONTEXT).getFilterQueries(); QuerqyQuery<?> qq = filterQueries.iterator().next(); assertTrue(qq instanceof BooleanQuery); assertThat((BooleanQuery) qq, bq( dmq(must(), term("a", true)) ) ); }
@Test public void testThatBoostQueriesWithMustClauseUseMM100ByDefault() { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); FilterInstruction filterInstruction = new FilterInstruction(makeQuery("a b").getUserQuery()); builder.addRule(new Input(Arrays.asList(mkTerm("x")), false, false), new Instructions(Arrays.asList((Instruction) filterInstruction))); RulesCollection rules = builder.build(); CommonRulesRewriter rewriter = new CommonRulesRewriter(rules); ExpandedQuery query = makeQuery("x"); Collection<QuerqyQuery<?>> filterQueries = rewriter.rewrite(query, EMPTY_CONTEXT).getFilterQueries(); QuerqyQuery<?> qq = filterQueries.iterator().next(); assertTrue(qq instanceof BooleanQuery); assertThat((BooleanQuery) qq, bq( dmq(must(), term("a", true)), dmq(must(), term("b", true)) ) ); }
@Test public void testPurelyNegativeFilterQuery() { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(true); FilterInstruction filterInstruction = new FilterInstruction(makeQuery("-ab").getUserQuery()); builder.addRule(new Input(Collections.singletonList(mkTerm("x")), false, false), new Instructions(Collections.singletonList((Instruction) filterInstruction))); RulesCollection rules = builder.build(); CommonRulesRewriter rewriter = new CommonRulesRewriter(rules); ExpandedQuery query = makeQuery("x"); Collection<QuerqyQuery<?>> filterQueries = rewriter.rewrite(query, EMPTY_CONTEXT).getFilterQueries(); assertNotNull(filterQueries); assertEquals(1, filterQueries.size()); QuerqyQuery<?> qq = filterQueries.iterator().next(); assertTrue(qq instanceof BooleanQuery); assertThat((BooleanQuery) qq, bq( should(), dmq( mustNot(), term("ab", true) ) ) ); }