我执行了一些查询,比如"Address:Jack*"
。它显示numFound = 5214
并在结果页中显示100个文档(我将默认显示结果从10更改为100)。
如何获取所有文档。
发布于 2012-04-06 14:39:15
返回所有结果从来都不是一个好的选择,因为它的性能会非常慢。
你能提到你的用例吗?
此外,Solr rows参数还可以帮助您调优返回结果的数量。
然而,我不认为有一种方法可以调优行来返回所有结果。它不接受-1作为值。
因此,您需要为要返回的所有结果设置一个较高的值。
发布于 2016-07-30 03:34:37
您应该做的是首先创建一个SolrQuery,如下所示,并设置要批量获取的文档数。
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。
这将帮助您从上一批处理的最后一个结果开始执行下一批处理。
希望这能有所帮助。如果你需要任何澄清,可以在下面发表评论。
发布于 2016-07-31 05:57:37
正如其他答案所指出的,您可以将行配置为最大整数,以返回查询的所有结果。不过,我建议使用Solr feature of pagination,并构建一个使用cursorMark应用程序接口为您返回所有结果的函数。它的要点是将cursorMark参数设置为'*',设置页面大小(rows参数),并在每个结果上获得下一个页面的cursorMark,因此只使用上一个结果中给定的cursorMark执行相同的查询。通过这种方式,您将以更高的性能更灵活地决定您想要返回多少结果。
https://stackoverflow.com/questions/10039778
复制相似问题