public Term clone(final DisjunctionMaxQuery newParent, final boolean isGenerated) { return new Term(newParent, field, value, isGenerated); }
protected void addSynonymTermToDisjunctionMaxQuery(final DisjunctionMaxQuery dmq, final querqy.rewrite.commonrules.model.Term synTerm, final TermMatches termMatches) { final List<String> fieldNames = synTerm.getFieldNames(); final ComparableCharSequence charSequence = synTerm.fillPlaceholders(termMatches); if (fieldNames == null || fieldNames.isEmpty()) { dmq.addClause(new Term(dmq, charSequence, true)); } else { for (final String fieldName: fieldNames) { dmq.addClause(new Term(dmq, fieldName, charSequence, true)); } } }
List<Term> termsWithFieldname(String fieldName, String... values) { List<Term> result = new LinkedList<>(); for (String value : values) { result.add(new Term(null, fieldName, value)); } return result; }
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; }
TermMatches termMatches(String... values) { TermMatches result = new TermMatches(); for (String value : values) { result.add(new TermMatch(new Term(null, value))); } return result; }
@Override public Node visit(final Term term) { final ComparableCharSequence value = term.getValue(); if (value instanceof querqy.rewrite.commonrules.model.Term) { querqy.rewrite.commonrules.model.Term termValue = (querqy.rewrite.commonrules.model.Term) value; final ComparableCharSequence newValue = termValue.fillPlaceholders(termMatches); return new Term((DisjunctionMaxQuery) getNewParent(), term.getField(), newValue, true); } else { return term.clone((DisjunctionMaxQuery) getNewParent(), true); } }
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); }
@Test public void testReplacePlaceHolderAtBeginning() throws Exception { char[] chars = "$1a".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("xyza", filledPlaceholders)); }
@Test public void testRepeatedPlaceHoldersAtBeginning() throws Exception { char[] chars = "$1$1a".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("xyzxyza", filledPlaceholders)); }
@Test public void testRepeatedPlaceHoldersOnly() throws Exception { char[] chars = "$1$1".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("xyzxyz", filledPlaceholders)); }
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); }
@Test public void testReplacePlaceHoldersInMiddle() throws Exception { char[] chars = "a$1b".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("axyzb", filledPlaceholders)); }
@Test public void testReplacePlaceHolderOnly() throws Exception { char[] chars = "$1".toCharArray(); Term term = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = term.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("xyz", filledPlaceholders)); }
@Test public void testReplacePlaceHolderAtEnd() throws Exception { char[] chars = "a$1".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("axyz", filledPlaceholders)); }
@Test public void testRepeatedPlaceHolders() throws Exception { char[] chars = "a$1$1b".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("axyzxyzb", filledPlaceholders)); }
@Test public void testRepeatedPlaceHoldersAtEnd() throws Exception { char[] chars = "a$1$1".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("axyzxyz", filledPlaceholders)); }
@Test public void testSamePlaceHolderWithOtherInMiddle() throws Exception { char[] chars = "a$1b$1c".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("axyzbxyzc", filledPlaceholders)); }
@Test public void testSamePlaceHolderAtBordersWithOtherInMiddle() throws Exception { char[] chars = "$1b$1".toCharArray(); Term outputTerm = new Term(chars, 0, chars.length, null); ComparableCharSequence filledPlaceholders = outputTerm.fillPlaceholders(new TermMatches(new TermMatch(new querqy.model.Term(null, "klxyz"), true, new SimpleComparableCharSequence("xyz".toCharArray(), 0, 3) ))); assertTrue(CharSequenceUtil.equals("xyzbxyz", filledPlaceholders)); }
@Test public void testSingeInputSingleInstruction() { RulesCollectionBuilder builder = new TrieMapRulesCollectionBuilder(false); String s1 = "test"; Input input = new Input(inputTerms(null, s1), false, false); Instructions instructions = instructions("instruction1"); builder.addRule(input, instructions); RulesCollection rulesCollection = builder.build(); PositionSequence<InputSequenceElement> sequence = new PositionSequence<>(); sequence.nextPosition(); sequence.addElement(new Term(null, s1)); List<Action> actions = rulesCollection.getRewriteActions(sequence); assertThat(actions, contains(new Action(Arrays.asList(instructions), termMatches(s1), 0, 1))); }
@Test public void testThatGeneratedIsPropagatedToClauses() throws Exception { BooleanQuery bq = new BooleanQuery(null, SHOULD, false); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(bq, Clause.Occur.SHOULD, false); bq.addClause(dmq); dmq.addClause(new Term(dmq, "Test", false)); final BooleanQuery clone = (BooleanQuery) bq.clone(null, MUST, true); assertThat(clone, bq(must(), dmq(should(), term("Test", true)))); assertTrue(clone.isGenerated()); assertTrue(clone.getClauses().get(0).isGenerated()); assertEquals(MUST, clone.getOccur()); } }