user1079877
user1079877

Reputation: 9358

Combine hibernate full text search and JPA query

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

Answers (1)

Ondrej Bozek
Ondrej Bozek

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

Related Questions