1

我想遍历所有这些文档,而不必将整个结果加载到内存中,这显然是这种情况 - QueryResponse.getResults() 返回 SolrDocumentList,它是一个 ArrayList。

在文档中找不到任何内容。我正在使用 SOLR 4。

注意问题的背景:我需要在将新的 SOLR 分片添加到现有分片集群时执行此操作。在这种情况下,我想基于一致哈希将一些文档从现有分片移动到新添加的分片。我们的数据不断增长,我们需要不断引入新的分片。

4

2 回答 2

0

您可以设置“行”和“开始”查询参数来对结果集进行分页。首先使用 start = 0 进行查询,然后使用 start = rows、start = 2*rows 等,直到到达完整结果集的末尾。

http://wiki.apache.org/solr/CommonQueryParameters#start

于 2012-12-17T08:53:21.507 回答
0

我有一个正在测试的可能解决方案: Solr paging 100 Million Document result set

粘贴:我正在尝试使用一个单独的索引字段(整数)对非常大的结果集(例如,超过 1 亿个文档)进行深度分页,我在其中插入一个随机变量(介于 0 和一些已知的 MAXINT 之间)。查询大型结果集时,我执行初始字段查询,不返回任何行,然后根据计数,我将范围划分为 0 到 MAXINT,以便通过在子范围内再次执行查询来获得平均 PAGE_COUNT 结果随机变量并抓取该范围内的所有行。显然,实际的行数会有所不同,但它应该遵循可预测的分布。

于 2014-12-23T15:53:23.830 回答