() -> searchTarget.predicate().match().onField( indexMapping.string1Field.relativeFieldName ).orField( "unknown_field" )
@Override public List<Book> searchByMedium(String terms, BookMedium medium, int offset, int limit) { FullTextQuery<Book> query = entityManager.search( Book.class ).query() .asEntity() .predicate( f -> f.bool( b -> { if ( terms != null && !terms.isEmpty() ) { b.must( f.match() .onField( "title" ).boostedTo( 2.0f ) .orField( "summary" ) .matching( terms ) ); } b.must( f.nested().onObjectField( "copies" ) .nest( f.match().onField( "copies.medium" ).matching( medium ) ) ); } ) ) .sort( b -> b.byField( "title_sort" ) ) .build(); query.setFirstResult( offset ); query.setMaxResults( limit ); return query.getResultList(); }
.asReference() .predicate( f -> f.match().onField( indexMapping.string1Field.relativeFieldName ) .orField( indexMapping.string2Field.relativeFieldName ) .matching( indexMapping.string1Field.document1Value.indexedValue ) .toPredicate() .asReference() .predicate( f -> f.match().onField( indexMapping.string1Field.relativeFieldName ) .orField( indexMapping.string2Field.relativeFieldName ) .matching( indexMapping.string2Field.document1Value.indexedValue ) .toPredicate()
@Override public List<Book> searchByMedium(String terms, BookMedium medium, int offset, int limit) { FullTextSearchTarget<Book> target = entityManager.search( Book.class ); BooleanJunctionPredicateContext booleanBuilder = target.predicate().bool(); if ( terms != null && !terms.isEmpty() ) { booleanBuilder.must( target.predicate().match() .onField( "title" ).boostedTo( 2.0f ) .orField( "summary" ) .matching( terms ) ); } booleanBuilder.must( target.predicate().nested().onObjectField( "copies" ) .nest( target.predicate().match().onField( "copies.medium" ).matching( medium ) ) ); FullTextQuery<Book> query = entityManager.search( Book.class ).query() .asEntity() .predicate( booleanBuilder.toPredicate() ) .sort( target.sort().byField( "title_sort" ).toSort() ) .build(); query.setFirstResult( offset ); query.setMaxResults( limit ); return query.getResultList(); }
b.must( f.match() .onField( "title" ).boostedTo( 2.0f ) .orField( "summary" ) .matching( terms ) );
target.predicate().match() .onField( "title" ).boostedTo( 2.0f ) .orField( "summary" ) .matching( terms ) );