gpt4 book ai didi

hibernate - Hibernate Search直接计数,而不是使用Lucene和Elasticsearch进行常规查询

转载 作者:行者123 更新时间:2023-12-02 22:27:49 25 4
gpt4 key购买 nike

情况:
我在Java应用程序中将Apache-Lucene索引与Hibernate Search一起使用。对于分页,我想在单个索引上计算查询的所有匹配。

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

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

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

通过Hibernate Search,Apache-Lucene是否具有计数功能?

谢谢。

最佳答案

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

FullTextQuery fullTextQuery = session.createFullTextQuery( luceneQuery, ScientificArticle.class );
fullTextQuery.setMaxResults(0);
int count = fullTextQuery.getResultSize();
setMaxResults()不会影响 getResultSize()返回的值。

确实,这种行为有点奇怪,但是由于历史原因(与如何缓存结果有关),它必须在Search 5中保持这种状态。
在Hibernate Search 6中,我们将更改行为,您不必担心仅调用 setMaxResults()来检索结果大小。

关于hibernate - Hibernate Search直接计数,而不是使用Lucene和Elasticsearch进行常规查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56237029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com