结合休眠全文搜索和JPA查询

时间:2015-02-09 03:36:20

标签: java hibernate jpa-2.1

我最近熟悉了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();

1 个答案:

答案 0 :(得分:2)

在这种情况下,您可以使用Hibernate-search 过滤器。您还需要索引过滤所需的特定字段,尽管您不需要它来进行查询。

http://docs.jboss.org/hibernate/search/5.5/reference/en-US/html/ch05.html#query-filter

我自己使用它并且它很安静。