hibernate - 使用条件查询限制加入 hibernate 搜索查询

标签 hibernate lucene hibernate-search

我想知道如何将以下两个查询连接在一起。

标准条件查询

Criteria result1 = session.createCriteria(Store.class).add(Restrictions.eq("department.name", category));

和全文搜索

    QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Store.class).get();
    Query luceneQuery = queryBuilder.keyword().onFields("productTitle").matching(keyword).createQuery();

    // wrap Lucene query in a javax.persistence.Query
    org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery, Store.class);
    fullTextQuery.setMaxResults(15);
    fullTextQuery.setFirstResult(0);

我通过URL加关键字参数传入额外的参数,我不想完全依赖关键字搜索。有人知道如何使这些一起工作吗?

谢谢。

最佳答案

Hibernate Search 文档实际上不鼓励将 Criteria 查询与全文搜索查询结合使用(指定获取类型除外)。

Only fetch mode can be adjusted, refrain from applying any other restriction. While it is known to work as of Hibernate Search 4, using restriction (ie a where clause) on your Criteria query should be avoided when possible. getResultSize() will throw a SearchException if used in conjunction with a Criteria with restriction.

另请参阅http://docs.jboss.org/hibernate/search/4.4/reference/en-US/html_single/index.html#d0e5722

关于hibernate - 使用条件查询限制加入 hibernate 搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309464/

相关文章:

java - 如何将 Wordnet 同义词与 Hibernate 搜索结合使用?

SQL IN 子句比单个查询慢

java - @TableGenerator 可以保存表中最后使用的 id 而不是下一个可用的 id 吗?

java - 如何通过 Hibernate 搜索使用通配符和投影创建查询?

Solrcloud 副本在更新后立即进入恢复模式

hibernate-search - 如何处理@IndexedEmbedded 包含路径中的抽象类型?

java - 使用 Hibernate Search 自动完成

java - hibernate 4.x 中的注册函数

java - HSDC数据库连接

java - Lucene:Payloads 和相似性函数 --- 始终相同的 Payload 值