Performance SolrCloud:经典分页的变通方法;“开始,行”;参数

Performance SolrCloud:经典分页的变通方法;“开始,行”;参数,performance,solr,solrj,solrcloud,Performance,Solr,Solrj,Solrcloud,我有3个碎片的SolrCloud 我的目的:从类别中选择并处理所有产品 当前实施:循环中的部分选择 第一次迭代:q=cat:1&start=0&rows=100 第二次迭代:q=cat:1&start=100&rows=100 第三排:q=cat:1和start=200和rows=100 但是,随着“开始”的增长,性能下降。解释如下: 使使用高“开始”参数的效率更低。对于 例如,如果在索引为500000的情况下请求start=500000&rows=25+ 每个碎片的文档数,目前将导致50

我有3个碎片的SolrCloud

我的目的:从类别中选择并处理所有产品

当前实施:循环中的部分选择

  • 第一次迭代:q=cat:1&start=0&rows=100
  • 第二次迭代:q=cat:1&start=100&rows=100
  • 第三排:q=cat:1和start=200和rows=100

但是,随着“开始”的增长,性能下降。解释如下:

使使用高“开始”参数的效率更低。对于 例如,如果在索引为500000的情况下请求start=500000&rows=25+ 每个碎片的文档数,目前将导致500000条记录 通过网络从碎片发送到协调Solr 例如。相反,如果你有一个碎片索引,只有25个 记录将通过网络发送。(已批准,设置开始 很多人不需要这么高的价格。)


有什么想法可以让我绕过分类中的所有记录吗?

我认为简短的答案是“否”-这是Solr如何进行切分的限制。相反,您是否可以在Solr之外收集文档唯一键的列表(可能来自支持数据库),然后使用这些键的集合从索引中检索

e、 g.
ID:(1或2或3或…非常长的列表…

或者,如果唯一关键点是数字,则可以使用移动范围:

ID:[1到1000]
然后
ID:[1001到2000]
等等


在上面的两个选项中,您还可以按类别进行限制。但是,它们都应该避免与窗口相关的减速

我认为简短的回答是“不”——这是Solr如何进行切分的限制。相反,您是否可以在Solr之外收集文档唯一键的列表(可能来自支持数据库),然后使用这些键的集合从索引中检索

e、 g.
ID:(1或2或3或…非常长的列表…

或者,如果唯一关键点是数字,则可以使用移动范围:

ID:[1到1000]
然后
ID:[1001到2000]
等等


在上面的两个选项中,您还可以按类别进行限制。但是,它们都应该避免与窗口相关的减速

我认为简短的回答是“不”——这是Solr如何进行切分的限制。相反,您是否可以在Solr之外收集文档唯一键的列表(可能来自支持数据库),然后使用这些键的集合从索引中检索

e、 g.
ID:(1或2或3或…非常长的列表…

或者,如果唯一关键点是数字,则可以使用移动范围:

ID:[1到1000]
然后
ID:[1001到2000]
等等


在上面的两个选项中,您还可以按类别进行限制。但是,它们都应该避免与窗口相关的减速

我认为简短的回答是“不”——这是Solr如何进行切分的限制。相反,您是否可以在Solr之外收集文档唯一键的列表(可能来自支持数据库),然后使用这些键的集合从索引中检索

e、 g.
ID:(1或2或3或…非常长的列表…

或者,如果唯一关键点是数字,则可以使用移动范围:

ID:[1到1000]
然后
ID:[1001到2000]
等等


在上面的两个选项中,您还可以按类别进行限制。但是,它们都应该避免与窗口相关的减速

在Solr中还有另一种更有效的分页方法——它使用排序中的当前位置。这对于深度分页特别有用

请参阅关于wiki页面的部分。这将加快交付速度,因为服务器应该能够对其本地文档进行排序,确定其在该序列中的位置,并在该文档之后返回25个文档


更新:还有一个有用的链接

在Solr中还有另一种更有效的分页方法--它使用排序中的当前位置。这对于深度分页特别有用

请参阅关于wiki页面的部分。这将加快交付速度,因为服务器应该能够对其本地文档进行排序,确定其在该序列中的位置,并在该文档之后返回25个文档


更新:还有一个有用的链接

在Solr中还有另一种更有效的分页方法--它使用排序中的当前位置。这对于深度分页特别有用

请参阅关于wiki页面的部分。这将加快交付速度,因为服务器应该能够对其本地文档进行排序,确定其在该序列中的位置,并在该文档之后返回25个文档


更新:还有一个有用的链接

在Solr中还有另一种更有效的分页方法--它使用排序中的当前位置。这对于深度分页特别有用

请参阅关于wiki页面的部分。这将加快交付速度,因为服务器应该能够对其本地文档进行排序,确定其在该序列中的位置,并在该文档之后返回25个文档


更新:也是有用的链接

+1这似乎是我所描述的更好的方法-我建议从基础链接中获取一些信息,并在此处复制(1)传递cursorMark参数并在结果中显示nextCursorMark字段&(2)排序必须包括索引的唯一键。+1这似乎是我所描述的更好的方法-我建议从底层链接获取一些信息,并在这里复制(1)传递cursorMark参数,并在结果中显示nextCursorMark字段&(2)排序必须包括索引的唯一键。+1这似乎是我所描述的更好的方法-我建议从索引中获取一些信息