hibernate - 结合 JPA 和 HIbernate Search Lucene 查询

标签 hibernate jpa lucene 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();

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

最佳答案

您应该可以使用 projections仅从 lucene 检索标识符,然后使用它们传递给例如in您的 jpa 查询的表达式。

关于hibernate - 结合 JPA 和 HIbernate Search Lucene 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36081363/

相关文章:

java - 实现多个表的 JOIN

hadoop - 如何以mapReduce方式建立Lucene索引?

lucene - 使用Lucene和Sitecore获取锁失败

java - Hibernate/JPA 映射到基类

java - Spring Jpa - hibernate 在数据库中保存一行空值

java - 如何根据 Spring JPA 中的参数使用计算字段发出分页动态请求

java - 在 POJO Getter/Setter 中添加静态方法逻辑

java - @Configuration类没有被调用

java - 如何使 @ManyToOne 实体成为 hibernate 中类的 ID

lucene - 如何在索引过程中为每个文档中的每个术语定义提升因子?