@Test void shouldBuildRangeSeekByNumberQueryForStrings() { // given NumericRangeQuery<Double> query = LuceneDocumentStructure.newInclusiveNumericRangeSeekQuery( 12.0d, null ); // then assertEquals( "number", query.getField() ); assertEquals( 12.0, query.getMin(), 0.001 ); assertTrue( query.includesMin() ); assertNull( query.getMax() ); assertTrue( query.includesMax() ); }
private static void assertNumRange(String query, Double lo, Double hi) throws ParseException { Query parsed = parseFreeTextQuery(query); assertThat(parsed, CoreMatchers.instanceOf(NumericRangeQuery.class)); assertEquals(newDoubleRange(((NumericRangeQuery) parsed).getField(), lo, hi, true, true), parsed); }
@Override public String toString(final String field) { final StringBuilder sb = new StringBuilder(); if (!getField().equals(field)) sb.append(getField()).append(':'); return sb.append(minInclusive ? '[' : '{') .append((min == null) ? "*" : min.toString()) .append(" TO ") .append((max == null) ? "*" : max.toString()) .append(maxInclusive ? ']' : '}') .append(ToStringUtils.boost(getBoost())) .toString(); }
@Override public String toString(final String field) { final StringBuilder sb = new StringBuilder(); if (!getField().equals(field)) sb.append(getField()).append(':'); return sb.append(minInclusive ? '[' : '{') .append((min == null) ? "*" : min.toString()) .append(" TO ") .append((max == null) ? "*" : max.toString()) .append(maxInclusive ? ']' : '}') .append(ToStringUtils.boost(getBoost())) .toString(); }
private static JsonObject convertNumericRangeQuery(NumericRangeQuery<?> query) { JsonObject interval = new JsonObject(); if ( query.getMin() != null ) { interval.addProperty( query.includesMin() ? "gte" : "gt", query.getMin() ); } if ( query.getMax() != null ) { interval.addProperty( query.includesMax() ? "lte" : "lt", query.getMax() ); } interval.addProperty( "boost", query.getBoost() ); JsonObject range = JsonBuilder.object().add( "range", JsonBuilder.object().add( query.getField(), interval )) .build(); return wrapQueryForNestedIfRequired( query.getField(), range); }
} else if (query instanceof NumericRangeQuery) { NumericRangeQuery q = (NumericRangeQuery)query; String fname = q.getField(); FieldType ft = writeFieldName(fname, schema, out, flags); out.append( q.includesMin() ? '[' : '{' );
private static JsonObject convertNumericRangeQuery(NumericRangeQuery<?> query) { JsonBuilder.Object interval = JsonBuilder.object(); if ( query.getMin() != null ) { interval.addProperty( query.includesMin() ? "gte" : "gt", query.getMin() ); } if ( query.getMax() != null ) { interval.addProperty( query.includesMax() ? "lte" : "lt", query.getMax() ); } interval.append( boostAppender( query ) ); JsonObject range = JsonBuilder.object().add( "range", JsonBuilder.object().add( query.getField(), interval ) ) .build(); return wrapQueryForNestedIfRequired( query.getField(), range ); }
private static JsonObject convertNumericRangeQuery(NumericRangeQuery<?> query) { JsonBuilder.Object interval = JsonBuilder.object(); if ( query.getMin() != null ) { interval.addProperty( query.includesMin() ? "gte" : "gt", query.getMin() ); } if ( query.getMax() != null ) { interval.addProperty( query.includesMax() ? "lte" : "lt", query.getMax() ); } interval.append( boostAppender( query ) ); JsonObject range = JsonBuilder.object().add( "range", JsonBuilder.object().add( query.getField(), interval ) ) .build(); return wrapQueryForNestedIfRequired( query.getField(), range ); }
public static FieldCollection extractFieldNames(Query query) { // first we need to find all composing queries since some query types are just containers Set<Query> composingQueries = new HashSet<>(); collectComposingQueries( query, composingQueries ); FieldCollection fieldCollection = new FieldCollection(); for ( Query composingQuery : composingQueries ) { if ( composingQuery instanceof NumericRangeQuery ) { fieldCollection.addNumericFieldName( ( (NumericRangeQuery) composingQuery ).getField() ); } else if ( composingQuery instanceof MultiTermQuery ) { fieldCollection.addStringFieldName( ( (MultiTermQuery) composingQuery ).getField() ); } else if ( composingQuery instanceof TermQuery ) { TermQuery termQuery = (TermQuery) composingQuery; fieldCollection.addStringFieldName( termQuery.getTerm().field() ); } else if ( composingQuery instanceof PhraseQuery ) { PhraseQuery phraseQuery = (PhraseQuery) composingQuery; // all terms must be against the same field, it's enough to look at the first fieldCollection.addStringFieldName( phraseQuery.getTerms()[0].field() ); } else if ( composingQuery instanceof MultiPhraseQuery ) { MultiPhraseQuery phraseQuery = (MultiPhraseQuery) composingQuery; // all terms must be against the same field, it's enough to look at the first fieldCollection.addStringFieldName( phraseQuery.getTermArrays().get( 0 )[0].field() ); } } return fieldCollection; }
public static FieldCollection extractFieldNames(Query query) { // first we need to find all composing queries since some query types are just containers Set<Query> composingQueries = new HashSet<>(); collectComposingQueries( query, composingQueries ); FieldCollection fieldCollection = new FieldCollection(); for ( Query composingQuery : composingQueries ) { if ( composingQuery instanceof NumericRangeQuery ) { fieldCollection.addNumericFieldName( ( (NumericRangeQuery) composingQuery ).getField() ); } else if ( composingQuery instanceof MultiTermQuery ) { fieldCollection.addStringFieldName( ( (MultiTermQuery) composingQuery ).getField() ); } else if ( composingQuery instanceof TermQuery ) { TermQuery termQuery = (TermQuery) composingQuery; fieldCollection.addStringFieldName( termQuery.getTerm().field() ); } else if ( composingQuery instanceof PhraseQuery ) { PhraseQuery phraseQuery = (PhraseQuery) composingQuery; // all terms must be against the same field, it's enough to look at the first fieldCollection.addStringFieldName( phraseQuery.getTerms()[0].field() ); } else if ( composingQuery instanceof MultiPhraseQuery ) { MultiPhraseQuery phraseQuery = (MultiPhraseQuery) composingQuery; // all terms must be against the same field, it's enough to look at the first fieldCollection.addStringFieldName( phraseQuery.getTermArrays().get( 0 )[0].field() ); } } return fieldCollection; }