我目前在索尔有超过2500万份文件,而且数量会逐渐增加。我需要在如此大的Solr索引上搜索记录。当开始较低时,查询响应时间较短,例如0.但是随着开始增加,例如100000,在Solr中搜索也花费时间。即使Solr中的大数据集的起始编号较高,如何才能更快地进行搜索?行保持不变只有开始不断增加。我不希望响应时间随着开始不断增加而增加,而是希望为start=100000
返回的结果应该与start=0
相同,假设为rows=1000
,因为这是性能问题。任何帮助将不胜感激。
答案 0 :(得分:3)
您遇到的问题称为Deep Paging
。 Solr的跟踪器上a good article about it和solr.pl上有an incomplete issue。
本文中提到的解决方案将要求您对结果进行排序,如果这对您不可行,则解决方案将无效。我们的想法是在文章price
中按稳定属性排序,然后使用价格范围过滤,例如fq=price:[9000+TO+10000]
。
如果您将fq
与合适的start
结合使用 - 例如start=100030
- 您将获得更好的效果,因为solr不会收集与{{1}不匹配的文档}。
但是,您需要提前至少提出一个查询来获取合适的元数据,例如已经找到了多少个文档。
答案 1 :(得分:2)
随着Solr 4.7的发布,我们引入了一项新功能Cursors
。这样做完全是为了解决Deep Paging的问题。如果您仍然遇到问题并且可以升级到Solr 4.7,那么这是您的最佳选择。
有关使用Solr进行深度分页的一些参考资料