I search all fields of objects with "Hibernate Search".
My Query:
final org.apache.lucene.search.Query luceneQuery = qb
.keyword().wildcard()
.onFields( fields )
.matching( valueToSearch )
.createQuery();
// wrap Lucene query in a javax.persistence.Query
final javax.persistence.Query jpaQuery =
fullTextEntityManager.createFullTextQuery( luceneQuery, Vorgang.class );
// execute search
final List<Vorgang> resultList = new ArrayList<>();
((List<Vorgang>) jpaQuery.getResultList()).stream().filter( t -> projektIds.contains( t.getProjektFk().getId() ) )
.forEach( vorgang -> resultList.add( vorgang ) );
I want to know in which fields there was a match?
My Idea was:
final List<Vorgang> resultList = new ArrayList<>();
for ( final String field : fields )
{
final org.apache.lucene.search.Query luceneQuery = qb
.keyword().wildcard()
.onField( field )
.matching( valueToSearch )
.createQuery();
// wrap Lucene query in a javax.persistence.Query
final javax.persistence.Query jpaQuery =
fullTextEntityManager.createFullTextQuery( luceneQuery, Vorgang.class );
// execute search
((List<Vorgang>) jpaQuery.getResultList()).stream().filter( t -> projektIds.contains( t.getProjektFk().getId() ) )
.forEach( vorgang -> resultList.add( vorgang ) );
}
But the performance is not good. I want to know the fields, where there was a match.