我有3个分片的SolrCloud。
我的目的:选择并处理所有类别的产品。
当前实施:周期中的部分选择。
...
但是在成长"开始",表现下降。这里的解释:https://wiki.apache.org/solr/DistributedSearch
使用高"开始&#34>使效率更低。参数。对于 例如,如果您在500,000+的索引上请求start = 500000& rows = 25 每个分片的文档,这将导致500,000条记录获得 通过网络从碎片发送到协调Solr 实例。相比之下,如果你有一个单一的分片索引,那么只有25个 记录将通过网络发送。 (当然,设定开始 这个高点不是很多人需要做的事情。)
我如何理解类别中的所有记录?
答案 0 :(得分:3)
还有另一种方法可以在Solr中进行更有效的分页 - Cursors - 它使用排序中的当前位置。这对于深度分页特别有用。
请参阅有关Cursors at the Pagination of Results Wiki页面的部分。这应该加快交付速度,因为服务器应该能够执行一种本地文档,决定它在该序列中的位置,并在该文档之后返回25个文档。
更新:也是有用的链接coming-soon-to-solr-efficient-cursor-based-iteration-of-large-result-sets
答案 1 :(得分:0)
我认为简短的回答是“不” - 这是Solr如何进行分片的限制。相反,你可以收集Solr之外的文档唯一键列表 - 可能来自后备数据库 - 然后使用这些键的集合从索引中检索?
e.g。 ID:(1 OR 2 OR 3 OR ...very long list...)
或者,如果唯一键是数字键,则可以使用移动范围:
ID:[1 TO 1000]
然后ID:[1001 TO 2000]
等等。
在上述两个选项中,您也会按类别进行限制。然而,它们都应该避免与窗口相关的减速。