public Term(final DisjunctionMaxQuery parentQuery, final String field, final char[] value, final int start, final int length, final boolean generated) { this(parentQuery, field, new SimpleComparableCharSequence(value, start, length), generated); }
@Test public void testCharAt() throws Exception { SimpleComparableCharSequence seq = new SimpleComparableCharSequence("cde-fgh-".toCharArray(), 0, 8); assertEquals(8, seq.length()); for (int i = 0; i < 8; i++) { assertEquals("cde-fgh-".charAt(i), seq.charAt(i)); } }
@Test public void testSubSequence() throws Exception { SimpleComparableCharSequence seq = new SimpleComparableCharSequence("abcd".toCharArray(), 0, 4); assertEquals("a", seq.subSequence(0, 1).toString()); assertEquals("ab", seq.subSequence(0, 2).toString()); assertEquals("bc", seq.subSequence(1, 3).toString()); assertEquals("d", seq.subSequence(3, 4).toString()); assertEquals("", seq.subSequence(0, 0).toString()); assertEquals("", seq.subSequence(1, 1).toString()); assertEquals("", seq.subSequence(4, 4).toString()); }
@Override public ComparableCharSequence subSequence(final int start, final int end) { if (end > length) { throw new ArrayIndexOutOfBoundsException(end); } if (start < 0) { throw new ArrayIndexOutOfBoundsException(start); } return new SimpleComparableCharSequence(value, this.start + start, end - start); }
@Override public ComparableCharSequence subSequence(final int start, final int end) { if (end > length) { throw new ArrayIndexOutOfBoundsException(end); } if (start < 0) { throw new ArrayIndexOutOfBoundsException(start); } return new SimpleComparableCharSequence(value, this.start + start, end - start); }
public List<ComparableCharSequence> getCharSequences(final boolean lowerCaseValue) { final SimpleComparableCharSequence seq = new SimpleComparableCharSequence(value, start, length); final ComparableCharSequence valueSequence = lowerCaseValue ? new LowerCaseCharSequence(seq) : seq; final List<ComparableCharSequence> seqs = new LinkedList<>(); if (fieldNames == null) { seqs.add(valueSequence); } else { for (final String name : fieldNames) { seqs.add(new CompoundCharSequence(FIELD_CHAR, name, valueSequence)); } } return seqs; }
new SimpleComparableCharSequence(scratchChars, start, i - start), true)); add.addClause(newDmq); start = i + 1; if (start < scratchChars.length) { DisjunctionMaxQuery newDmq = new DisjunctionMaxQuery(add, Occur.MUST, true); newDmq.addClause(new Term(newDmq, new SimpleComparableCharSequence(scratchChars, start, scratchChars.length - start), true)); add.addClause(newDmq); adds.add(new Term(currentDmq, new SimpleComparableCharSequence(scratchChars, 0, scratchChars.length), true));
@Override public Node visitTermQuery(TermQueryContext ctx) { BooleanQuery parent = booleanQueryStack.getLast(); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(parent, getOccur(), false); TermContext tc = ctx.getRuleContext(TermContext.class, 0); Token startToken = tc.getStart(); List<FieldNameContext> fieldNameContexts = ctx.getRuleContexts(FieldNameContext.class); if (fieldNameContexts != null && !fieldNameContexts.isEmpty()) { for (FieldNameContext fieldNameContext : fieldNameContexts) { String fieldName = fieldNameContext.getText(); dmq.addClause( new Term(dmq, fieldName, new SimpleComparableCharSequence(input, startToken.getStartIndex(), 1 + startToken.getStopIndex() - startToken.getStartIndex()))); } } else { dmq.addClause(new Term(dmq, new SimpleComparableCharSequence(input, startToken.getStartIndex(), 1 + startToken.getStopIndex() - startToken.getStartIndex()))); } parent.addClause(dmq); return dmq; }
@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 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 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)); }
@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)); }
newDmq.addClause( new Term(newDmq, new SimpleComparableCharSequence(scratchChars, start, i - start))); replaceSeq.addClause(newDmq); start = i + 1; newDmq.addClause(new Term(newDmq, new SimpleComparableCharSequence(scratchChars, start, scratchChars.length - start))); replaceSeq.addClause(newDmq); replaceDmq.addClause(new Term(replaceDmq, new SimpleComparableCharSequence(scratchChars, 0, scratchChars.length))); add.addClause(replaceDmq);