首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Lucene和Elasticsearch直接进行Hibernate搜索计数,而不是普通查询

使用Lucene和Elasticsearch直接进行Hibernate搜索计数,而不是普通查询
EN

Stack Overflow用户
提问于 2019-05-21 19:11:31
回答 1查看 247关注 0票数 2

情景:我在Java应用程序中使用Apache-Lucene索引和Hibernate搜索。对于分页,我希望对单个索引上的查询的所有命中进行计数。

现在我正在评估从Apache-Lucene迁移到Elasticsearch (ES)作为索引后端。Hibernate搜索应该仍然提供抽象,就像Apache-Lucene一样。

问:当使用fullTextQuery.getResultSize()时,似乎执行了查询并存储了整个结果。然后根据检索到的结果计算大小。在Lucene和ES实现中似乎都是这种情况。

在ES中有用于此目的的_count API。这个API可以通过Hibernate Search使用吗?检索索引中的所有文档时的一个问题是ES的窗口结果大小限制。我希望在使用_count应用程序接口时,性能也会有所提高。

Apache-Lucene有没有通过Hibernate搜索的计数功能?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-21 19:25:31

在Hibernate Search 5中,您必须将最大结果大小设置为0,这样Hibernate Search就不会加载任何内容:

代码语言:javascript
复制
FullTextQuery fullTextQuery = session.createFullTextQuery( luceneQuery, ScientificArticle.class );
fullTextQuery.setMaxResults(0);
int count = fullTextQuery.getResultSize();

setMaxResults()不会影响getResultSize()的返回值。

这种行为有点奇怪,但由于与结果缓存方式相关的历史原因,在Search 5中将不得不保持这种方式。在Hibernate Search 6中,我们将更改行为,您不必担心仅仅为了检索结果大小而调用setMaxResults()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56237029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档