优化Solr进行排序

dev*_*ley 5 lucene solr

我正在使用Solr作为实时搜索索引.我的数据集大约是60M大文档.我需要按时间排序,而不是按相关性排序.目前我在查询中使用sort标志按时间排序.这适用于特定搜索,但是当搜索返回大量结果时,Solr必须获取所有生成的文档并在返回之前按时间排序.这很慢,必须有更好的方法.

有什么更好的方法?

dev*_*ley 5

我找到了答案。

如果要按时间而不是相关性排序,请对所有过滤器使用fq =而不是q =。这样,Solr不会浪费时间找出与q =匹配的文档的加权值。事实证明,Solr花费了太多时间进行加权,而不是进行排序。

另外,可以通过预热solrconfig.xml中的newSearcher和firstSearcher事件侦听器中的排序字段来加快排序速度。这将确保通过缓存进行排序。