结合 JPA 和 HIbernate Search Lucene 查询

Gio*_*ato 5 lucene hibernate jpa hibernate-search

我可以使用 Hibernate Search 使用全文查询轻松搜索我的 JPA 实体:

FullTextEntityManager fullTextEntityManager = 
        Search.getFullTextEntityManager(this.entityManager);

QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory()
        .buildQueryBuilder().forEntity(MyBean.class).get();

org.apache.lucene.search.Query luceneQuery = queryBuilder.keyword()
        .onFields("foo", "bar").matching("needle").createQuery();

javax.persistence.Query jpaQuery = fullTextEntityManager
        .createFullTextQuery(luceneQuery, MyBean.class);

List<MyBean> fulltextResult = jpaQuery.getResultList();
Run Code Online (Sandbox Code Playgroud)

这很棒。但是,如何luceneQuery在现有的 JPA 查询中组合 ?例如作为在CriteriaBuilder.where()表达式中使用的谓词。我认为这可能是可能的,因为 Hibernate Search 从其索引中检索实体标识符,并最终在 JPA 查询中使用它们来获取结果,但我不知道是否还有其他方法getResultList()可以在其他中间类型中获取查询,例如一个javax.persistence.criteria.Predicate.

use*_*136 0

您应该能够使用投影仅从 lucene 检索标识符,然后使用它们传递到例如injpa 查询的表达式。