首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从solr查询中获取所有结果?

如何从solr查询中获取所有结果?
EN

Stack Overflow用户
提问于 2012-04-06 14:07:23
回答 5查看 58.3K关注 0票数 27

我执行了一些查询,比如"Address:Jack*"。它显示numFound = 5214并在结果页中显示100个文档(我将默认显示结果从10更改为100)。

如何获取所有文档。

EN

回答 5

Stack Overflow用户

发布于 2012-04-06 14:39:15

返回所有结果从来都不是一个好的选择,因为它的性能会非常慢。

你能提到你的用例吗?

此外,Solr rows参数还可以帮助您调优返回结果的数量。

然而,我不认为有一种方法可以调优行来返回所有结果。它不接受-1作为值。

因此,您需要为要返回的所有结果设置一个较高的值。

票数 6
EN

Stack Overflow用户

发布于 2016-07-30 03:34:37

您应该做的是首先创建一个SolrQuery,如下所示,并设置要批量获取的文档数。

代码语言:javascript
复制
int lastResult=0; //this is for processing the future batch

String query = "id:[ lastResult TO *]"; // just considering id for the sake of simplicity

SolrQuery solrQuery = new SolrQuery(query).setRows(500); //setRows will set the required batch, you can change this to whatever size you want.

SolrDocumentList results = solrClient.query(solrQuery).getResults(); //execute this statement

这里我正在考虑一个按id搜索的例子,你可以用你要搜索的任何参数来替换它。

"lastResult“是在执行前500条记录(500是批处理大小)后可以更改的变量,并将其设置为从结果中获取的最后一个id。

这将帮助您从上一批处理的最后一个结果开始执行下一批处理。

希望这能有所帮助。如果你需要任何澄清,可以在下面发表评论。

票数 3
EN

Stack Overflow用户

发布于 2016-07-31 05:57:37

正如其他答案所指出的,您可以将行配置为最大整数,以返回查询的所有结果。不过,我建议使用Solr feature of pagination,并构建一个使用cursorMark应用程序接口为您返回所有结果的函数。它的要点是将cursorMark参数设置为'*',设置页面大小(rows参数),并在每个结果上获得下一个页面的cursorMark,因此只使用上一个结果中给定的cursorMark执行相同的查询。通过这种方式,您将以更高的性能更灵活地决定您想要返回多少结果。

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

https://stackoverflow.com/questions/10039778

复制
相关文章

相似问题

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