protected Query stringRange( Path<?> leftHandSide, String field, @Nullable Expression<?> min, @Nullable Expression<?> max, boolean minInc, boolean maxInc, QueryMetadata metadata) { if (min == null) { return new TermRangeQuery( field, null, convert(leftHandSide, max, metadata)[0], minInc, maxInc); } else if (max == null) { return new TermRangeQuery( field, convert(leftHandSide, min, metadata)[0], null, minInc, maxInc); } else { return new TermRangeQuery( field, convert(leftHandSide, min, metadata)[0], convert(leftHandSide, max, metadata)[0], minInc, maxInc); } }
protected Query stringRange(Path<?> leftHandSide, String field, @Nullable Expression<?> min, @Nullable Expression<?> max, boolean minInc, boolean maxInc, QueryMetadata metadata) { if (min == null) { return TermRangeQuery.newStringRange(field, null, convert(leftHandSide, max, metadata)[0], minInc, maxInc); } else if (max == null) { return TermRangeQuery.newStringRange(field, convert(leftHandSide, min, metadata)[0], null, minInc, maxInc); } else { return TermRangeQuery.newStringRange(field, convert(leftHandSide, min, metadata)[0], convert(leftHandSide, max, metadata)[0], minInc, maxInc); } }
@Test void shouldBuildRangeSeekByStringQueryForStrings() { // given TermRangeQuery query = (TermRangeQuery) LuceneDocumentStructure .newRangeSeekByStringQuery( "foo", false, null, true ); // then assertEquals( "string", query.getField() ); assertEquals( "foo", query.getLowerTerm().utf8ToString() ); assertFalse( query.includesLower() ); assertNull( query.getUpperTerm() ); assertTrue( query.includesUpper() ); }
private static void planTermRangeQuery(final StringBuilder builder, final TermRangeQuery query) { builder.append(query.getLowerTerm().utf8ToString()); builder.append(" TO "); builder.append(query.getUpperTerm().utf8ToString()); }
return TermRangeQuery.newStringRange(propertyName, first, last, pr.firstIncluding, pr.lastIncluding); } else if (pr.first != null && pr.last == null) { return TermRangeQuery.newStringRange(propertyName, first, null, pr.firstIncluding, true); } else if (pr.last != null && !pr.last.equals(pr.first)) { return TermRangeQuery.newStringRange(propertyName, null, last, true, pr.lastIncluding); } else if (pr.list != null) { BooleanQuery in = new BooleanQuery(); return new TermRangeQuery(propertyName, null, null, true, true);
private static void assertTextRange(String query, String lo, String hi) throws ParseException { Query parsed = parseFreeTextQuery(query); assertThat(parsed, CoreMatchers.instanceOf(TermRangeQuery.class)); assertEquals(new TermRangeQuery(((TermRangeQuery) parsed).getField(), lo == null ? null : new BytesRef(lo), hi == null ? null : new BytesRef(hi), true, true), parsed); } }
BytesRef startT = ((TermRangeQuery) luceneQuery).getLowerTerm(); BytesRef endT = ((TermRangeQuery) luceneQuery).getUpperTerm(); casQuery.addCriterion(new RangeQueryCriteria(((TermRangeQuery) luceneQuery).getField(), startT.utf8ToString(), endT.utf8ToString())); } else if (luceneQuery instanceof BooleanQuery) { List<BooleanClause> clauses = ((BooleanQuery) luceneQuery).clauses();
@Override protected Query newRangeQuery(String field, String part1, String part2, boolean startInclusive, boolean endInclusive) { if (isPass2ResolvingPhrases) { // Must use old-style RangeQuery in order to produce a BooleanQuery // that can be turned into SpanOr clause TermRangeQuery rangeQuery = TermRangeQuery.newStringRange(field, part1, part2, startInclusive, endInclusive); rangeQuery.setRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_REWRITE); return rangeQuery; } return super.newRangeQuery(field, part1, part2, startInclusive, endInclusive); }
/** Prints a user-readable version of this query. */ @Override public String toString(String field) { StringBuilder buffer = new StringBuilder(); if (!getField().equals(field)) { buffer.append(getField()); buffer.append(":"); } buffer.append(includeLower ? '[' : '{'); // TODO: all these toStrings for queries should just output the bytes, it might not be UTF-8! buffer.append(lowerTerm != null ? ("*".equals(Term.toString(lowerTerm)) ? "\\*" : Term.toString(lowerTerm)) : "*"); buffer.append(" TO "); buffer.append(upperTerm != null ? ("*".equals(Term.toString(upperTerm)) ? "\\*" : Term.toString(upperTerm)) : "*"); buffer.append(includeUpper ? ']' : '}'); buffer.append(ToStringUtils.boost(getBoost())); return buffer.toString(); }
/** Prints a user-readable version of this query. */ @Override public String toString(String field) { StringBuilder buffer = new StringBuilder(); if (!getField().equals(field)) { buffer.append(getField()); buffer.append(":"); } buffer.append(includeLower ? '[' : '{'); // TODO: all these toStrings for queries should just output the bytes, it might not be UTF-8! buffer.append(lowerTerm != null ? ("*".equals(Term.toString(lowerTerm)) ? "\\*" : Term.toString(lowerTerm)) : "*"); buffer.append(" TO "); buffer.append(upperTerm != null ? ("*".equals(Term.toString(upperTerm)) ? "\\*" : Term.toString(upperTerm)) : "*"); buffer.append(includeUpper ? ']' : '}'); return buffer.toString(); }
/** Returns the upper value of this range filter */ public BytesRef getUpperTerm() { return query.getUpperTerm(); }
/** Returns the lower value of this range filter */ public BytesRef getLowerTerm() { return query.getLowerTerm(); }
/** Returns <code>true</code> if the lower endpoint is inclusive */ public boolean includesLower() { return query.includesLower(); }
return TermRangeQuery.newStringRange(propertyName, first, last, pr.firstIncluding, pr.lastIncluding); } else if (pr.first != null && pr.last == null) { return TermRangeQuery.newStringRange(propertyName, first, null, pr.firstIncluding, true); } else if (pr.last != null && !pr.last.equals(pr.first)) { return TermRangeQuery.newStringRange(propertyName, null, last, true, pr.lastIncluding); } else if (pr.list != null) { BooleanQuery in = new BooleanQuery(); return new TermRangeQuery(propertyName, null, null, true, true);
BytesRef startT = ((TermRangeQuery) luceneQuery).getLowerTerm(); BytesRef endT = ((TermRangeQuery) luceneQuery).getUpperTerm(); casQuery.addCriterion(new RangeQueryCriteria(((TermRangeQuery) luceneQuery).getField(), startT.utf8ToString(), endT.utf8ToString())); } else if (luceneQuery instanceof BooleanQuery) { List<BooleanClause> clauses = ((BooleanQuery) luceneQuery).clauses();
@Override protected Query newRangeQuery(String field, String part1, String part2, boolean startInclusive, boolean endInclusive) { if (isPass2ResolvingPhrases) { // Must use old-style RangeQuery in order to produce a BooleanQuery // that can be turned into SpanOr clause TermRangeQuery rangeQuery = TermRangeQuery.newStringRange(field, part1, part2, startInclusive, endInclusive); rangeQuery.setRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_REWRITE); return rangeQuery; } return super.newRangeQuery(field, part1, part2, startInclusive, endInclusive); }
/** Prints a user-readable version of this query. */ @Override public String toString(String field) { StringBuilder buffer = new StringBuilder(); if (!getField().equals(field)) { buffer.append(getField()); buffer.append(":"); } buffer.append(includeLower ? '[' : '{'); // TODO: all these toStrings for queries should just output the bytes, it might not be UTF-8! buffer.append(lowerTerm != null ? ("*".equals(Term.toString(lowerTerm)) ? "\\*" : Term.toString(lowerTerm)) : "*"); buffer.append(" TO "); buffer.append(upperTerm != null ? ("*".equals(Term.toString(upperTerm)) ? "\\*" : Term.toString(upperTerm)) : "*"); buffer.append(includeUpper ? ']' : '}'); buffer.append(ToStringUtils.boost(getBoost())); return buffer.toString(); }
/** Prints a user-readable version of this query. */ @Override public String toString(String field) { StringBuilder buffer = new StringBuilder(); if (!getField().equals(field)) { buffer.append(getField()); buffer.append(":"); } buffer.append(includeLower ? '[' : '{'); // TODO: all these toStrings for queries should just output the bytes, it might not be UTF-8! buffer.append(lowerTerm != null ? ("*".equals(Term.toString(lowerTerm)) ? "\\*" : Term.toString(lowerTerm)) : "*"); buffer.append(" TO "); buffer.append(upperTerm != null ? ("*".equals(Term.toString(upperTerm)) ? "\\*" : Term.toString(upperTerm)) : "*"); buffer.append(includeUpper ? ']' : '}'); return buffer.toString(); }
/** Returns the upper value of this range filter */ public BytesRef getUpperTerm() { return query.getUpperTerm(); }
/** Returns the lower value of this range filter */ public BytesRef getLowerTerm() { return query.getLowerTerm(); }