.predicate( f -> f.range().onField( absoluteFieldPath ).from( value1ToMatch ).to( value2ToMatch ).toPredicate() ) .build(); .asReference() .predicate( f -> f.range().onField( absoluteFieldPath ) .from( value1ToMatch ).excludeLimit() .to( value2ToMatch ) .toPredicate() .predicate( f -> f.range().onField( absoluteFieldPath ) .from( value1ToMatch ) .to( value2ToMatch ).excludeLimit() .toPredicate() .asReference() .predicate( f -> f.range().onField( absoluteFieldPath ) .from( value1ToMatch ).excludeLimit() .to( value3ToMatch ).excludeLimit() .toPredicate()
@Test public void rangeQueryFromTo() { SearchQuery<DocumentReference> query = rangeQuery( f -> f.range().onField( FIELD_PATH ).from( Boolean.FALSE ).to( Boolean.FALSE ).toPredicate() ); assertHasHitsWithBooleanProperties( query, Boolean.FALSE, Boolean.FALSE ); }
.predicate( f -> f.bool() .must( f.range().onField( "flattenedObject.string" ) .from( MATCHING_STRING ).to( MATCHING_STRING ) .from( MATCHING_INTEGER - 1 ).to( MATCHING_INTEGER + 1 ) .from( MATCHING_LOCAL_DATE.minusDays( 1 ) ).to( MATCHING_LOCAL_DATE.plusDays( 1 ) ) .nest( f.bool() .must( f.range().onField( "nestedObject.string" ) .from( MATCHING_STRING ).to( MATCHING_STRING ) .from( MATCHING_INTEGER - 1 ).to( MATCHING_INTEGER + 1 ) .to( MATCHING_LOCAL_DATE.plusDays( 1 ) )
@Test public void fromTo() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); for ( ByTypeFieldModel<?> fieldModel : indexMapping.supportedFieldModels ) { String absoluteFieldPath = fieldModel.relativeFieldName; Object lowerValueToMatch = fieldModel.predicateLowerBound; Object upperValueToMatch = fieldModel.predicateUpperBound; SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.range().onField( absoluteFieldPath ).from( lowerValueToMatch ).to( upperValueToMatch ).toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_2 ); } }
@Test public void rangeFromToSortByFieldQuery() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.range().onField( FIELD_PATH ).from( Boolean.FALSE ).to( Boolean.TRUE ).toPredicate() ) .sort( c -> c.byField( FIELD_PATH ).onMissingValue().sortLast() ) .build(); assertHasHitsWithBooleanProperties( query, Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, Boolean.TRUE ); }
@Test public void fromTo_withDslConverter() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); for ( ByTypeFieldModel<?> fieldModel : indexMapping.supportedFieldWithDslConverterModels ) { String absoluteFieldPath = fieldModel.relativeFieldName; Object lowerValueToMatch = new ValueWrapper<>( fieldModel.predicateLowerBound ); Object upperValueToMatch = new ValueWrapper<>( fieldModel.predicateUpperBound ); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.range().onField( absoluteFieldPath ).from( lowerValueToMatch ).to( upperValueToMatch ).toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_2 ); } }
"range().from().to() predicate with invalid parameter type on field " + absoluteFieldPath, () -> searchTarget.predicate().range().onField( absoluteFieldPath ) .from( null ).to( invalidValueToMatch )
.predicate( f -> f.range().onField( "string" ).from( "text 2" ).to( "text 42" ).toPredicate() ) .build(); assertThat( query ) .predicate( f -> f.range().onField( "string_analyzed" ).from( "2" ).to( "42" ).toPredicate() ) .build(); assertThat( query ) .predicate( f -> f.range().onField( "integer" ).from( 2 ).to( 42 ).toPredicate() ) .build(); assertThat( query ) .predicate( f -> f.range().onField( "localDate" ) .from( LocalDate.of( 2018, 1, 2 ) ) .to( LocalDate.of( 2018, 2, 23 ) ) .toPredicate() .predicate( f -> f.range().onField( "flattenedObject.integer" ).from( 201 ).to( 242 ).toPredicate() ) .build(); assertThat( query )
SubTest.expectException( "range() predicate with null bounds on field " + fieldPath, () -> searchTarget.predicate().range().onField( fieldPath ).from( null ).to( null )
.hasHitCount( 1 ); predicate = searchTarget.predicate().range().onField( "integer" ).from( 1 ).to( 2 ).toPredicate(); query = searchTarget.query() .asReference()
.predicate( f -> f.range().onField( indexMapping.string1Field.relativeFieldName ) .orFields( indexMapping.string2Field.relativeFieldName, indexMapping.string3Field.relativeFieldName ) .from( "d" ).to( "e" ) .toPredicate()