return new DeleteInstruction(previousInput.getInputTerms()); return new DeleteInstruction(previousInput.getInputTerms()); return new DeleteInstruction(deleteTerms);
if (pos >= startPosition && pos < endPosition && isToBeDeleted(term)) {
@Test public void test01() throws Exception { RulesCollection rules = createRulesFromResource("rules-test.txt", false); Term t1 = new Term(null, "aa"); Term t2 = new Term(null, "l"); PositionSequence<InputSequenceElement> seq = new PositionSequence<>(); seq.nextPosition(); seq.addElement(t1); seq.nextPosition(); seq.addElement(t2); List<Action> actions = rules.getRewriteActions(seq); assertThat(actions, contains( new Action( Arrays.asList( new Instructions(Arrays.asList((Instruction) new DeleteInstruction(Arrays.asList(mkTerm("aa")))))), new TermMatches(new TermMatch(t1)), 0, 1))); }
@Test public void testThatTermIsRemovedIfThereASecondDMQWithoutTheTerm() 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); Query rewritten = (Query) rewriter.rewrite(makeQuery("a b"), EMPTY_CONTEXT).getUserQuery(); assertThat(rewritten, bq( dmq( term("b") ) )); }
@Test public void testThatTermIsNotRemovedOnceIfThereASecondDMQWithTheSameTermAndNoOtherTermExists() 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); Query rewritten = (Query) rewriter.rewrite(makeQuery("a a"), EMPTY_CONTEXT).getUserQuery(); assertThat(rewritten, bq( dmq( term("a") ) )); }
@Test public void testThatNothingIsDeletedIfWeWouldEndUpWithAnEmptyQuery() { 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 query = makeQuery("a"); Query rewritten = (Query) rewriter.rewrite(query, EMPTY_CONTEXT).getUserQuery(); assertThat(rewritten, bq( dmq( term("a") ) )); }
new Instructions( Arrays.asList( (Instruction) new DeleteInstruction(Arrays.asList(mkTerm("b")))))), new TermMatches(Arrays.asList(new TermMatch(t1), new TermMatch(t2))), 0, 2), new Instructions( Arrays.asList( (Instruction) new DeleteInstruction(Arrays.asList(mkTerm("a"))), (Instruction) new DeleteInstruction(Arrays.asList(mkTerm("c"))) ))), new TermMatches(Arrays.asList(new TermMatch(t1), new TermMatch(t2), new TermMatch(t3))), 0, 3)
@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") ) )); }
@Test public void testThatDeleteIsAppliedToWildcardInput() throws Exception { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); Input input = (Input) LineParser.parseInput("k*"); DeleteInstruction deleteInstruction = new DeleteInstruction(input.getInputTerms()); builder.addRule(input, new Instructions(Collections.singletonList((Instruction) deleteInstruction))); RulesCollection rules = builder.build(); CommonRulesRewriter rewriter = new CommonRulesRewriter(rules); ExpandedQuery query = makeQuery("x klm"); Query rewritten = (Query) rewriter.rewrite(query, EMPTY_CONTEXT).getUserQuery(); assertThat(rewritten, bq( dmq( term("x") ) )); }
@Test public void testThatDeleteIsAppliedToMultiTermWildcardInput() throws Exception { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); Input input = (Input) LineParser.parseInput("ab k*"); DeleteInstruction deleteInstruction = new DeleteInstruction(input.getInputTerms()); builder.addRule(input, new Instructions(Collections.singletonList((Instruction) deleteInstruction))); RulesCollection rules = builder.build(); CommonRulesRewriter rewriter = new CommonRulesRewriter(rules); ExpandedQuery query = makeQuery("x ab klm"); Query rewritten = (Query) rewriter.rewrite(query, EMPTY_CONTEXT).getUserQuery(); assertThat(rewritten, bq( dmq( term("x") ) )); }
DeleteInstruction deleteInstruction = new DeleteInstruction(input.getInputTerms());