我想迭代所有这些文档,而不必将整个结果加载到内存中,这显然就是这种情况 - QueryResponse.getResults()返回SolrDocumentList,这是一个ArrayList。
在文档中找不到任何内容。我使用SOLR 4。
注意问题的背景:在将新的SOLR分片添加到现有分片群集时,我需要这样做。在这种情况下,我想基于一致的散列将一些文档从现有的分片移动到新添加的分片。我们的数据不断增长,我们需要继续引入新的分片。
答案 0 :(得分:0)
您可以设置'rows'和'start'查询参数来对结果集进行分页。先查询start = 0,然后start = rows,start = 2 * rows等,直到到达完整结果集的末尾。
答案 1 :(得分:0)
我有一个可能的解决方案我正在测试: Solr paging 100 Million Document result set
粘贴: 我正在尝试使用单独的索引字段(整数)对非常大的结果集(例如,超过1亿个文档)进行深度分页,其中插入随机变量(在0和某些已知的MAXINT之间)。在查询大型结果集时,我执行初始字段查询而没有返回任何行,然后根据计数,我将范围0除以MAXINT,以便通过在子范围内再次执行查询来获得平均PAGE_COUNT结果。随机变量并抓取该范围内的所有行。显然,实际的行数会有所不同,但应遵循可预测的分布。