Java Solr搜索查询时间随着开始时间的增加而增加

Java Solr搜索查询时间随着开始时间的增加而增加,java,solr,Java,Solr,我目前在Solr中拥有超过2500万个文档,并且数量将逐渐增加。我需要在如此大的Solr索引上搜索记录。当开始时间较低时,查询响应时间较低,例如0。但是随着开始的增加,例如100000,在Solr中搜索也需要时间。在Solr中,即使在大数据集上有较高的开始数,如何使搜索速度更快?行保持不变,只有开始不断增加。我不希望响应时间随着开始时间的不断增加而增加,而是希望start=100000返回的结果与start=0返回的时间相同,假设rows=1000,因为这是性能问题。任何帮助都将不胜感激。您面临

我目前在Solr中拥有超过2500万个文档,并且数量将逐渐增加。我需要在如此大的Solr索引上搜索记录。当开始时间较低时,查询响应时间较低,例如0。但是随着开始的增加,例如100000,在Solr中搜索也需要时间。在Solr中,即使在大数据集上有较高的开始数,如何使搜索速度更快?行保持不变,只有开始不断增加。我不希望响应时间随着开始时间的不断增加而增加,而是希望
start=100000
返回的结果与
start=0
返回的时间相同,假设
rows=1000
,因为这是性能问题。任何帮助都将不胜感激。

您面临的问题称为
深度分页。索尔的追踪器上有很多东西

文章中提到的解决方案将要求您对结果进行排序,如果这对您来说不可行,则解决方案将不起作用。其思想是在文章中按稳定属性排序,即
price
,然后使用价格范围进行过滤,如
fq=price:[9000+到+10000]

如果将该
fq
与合适的
start
(如
start=100030
)相结合,您将获得更好的性能,因为solr不会收集与
fq
不匹配的文档


但是,您需要至少提前进行一次查询以获取合适的元数据,例如找到了多少文档。

随着Solr 4.7的发布,引入了一项新功能
游标。这样做正是为了解决深度分页的问题。如果您仍然有问题,您可以执行Solr 4.7的升级,这是您的最佳选择

关于Solr深度分页的一些参考文献


谢谢您的回复。我怀疑在应用程序中使用过滤查询,因为我只做文本索引,而且查询更像是
而不是范围查询。Solr的tracker解决方案是我实际上正在寻找的,但它不完整,也没有发现与此相关的任何好的解决方案。不管您的查询是什么样的。问题是你是否需要按相关性排序,是否需要使用fq技术。我不需要使用fq技术。然而,我接受你的回答,因为这可能会对其他人有所帮助。如果仔细考虑一下,你能提供一些更详细的信息吗?为什么你要深入研究结果?我认识的大多数人不会阅读结果的第1000条,他们会从更好的搜索开始。