Reputation: 9358
I recently got familiar with Hibernate search API. How can I have full text search on an entity and also filter the result by one specific field? For example:
final FullTextEntityManager ftem = Search.getFullTextEntityManager(em);
final QueryBuilder qb = ftem.getSearchFactory()
.buildQueryBuilder().forEntity(Item.class).get();
final org.apache.lucene.search.Query query = qb
.keyword()
.onFields(Item_.CONTENT)
.matching(match)
.createQuery();
/* also here I want to filter the results for all the Items in which category equals to 2 */
final FullTextQuery persistenceQuery = ftem.createFullTextQuery(query, Item.class);
final List<Item> result = persistenceQuery.getResultList();
Upvotes: 2
Views: 1895
Reputation: 11481
For this case you can use Hibernate-search Filters. You also need to index that particuler field you need for filtering although you don't need it for query itself.
http://docs.jboss.org/hibernate/search/5.5/reference/en-US/html/ch05.html#query-filter
I use it myself and it works quiet good.
Upvotes: 2