我最近熟悉了Hibernate搜索API。如何在实体上进行全文搜索,并按一个特定字段过滤结果?例如:
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();
答案 0 :(得分:2)
在这种情况下,您可以使用Hibernate-search 过滤器。您还需要索引过滤所需的特定字段,尽管您不需要它来进行查询。
http://docs.jboss.org/hibernate/search/5.5/reference/en-US/html/ch05.html#query-filter
我自己使用它并且它很安静。