我正在使用 Solr 进行实时搜索索引。我的数据集大约有 60M 大文档。我需要按时间排序,而不是按相关性排序。目前,我在查询中使用排序标志按时间排序。这对于特定搜索效果很好,但是当搜索返回大量结果时,Solr 必须获取所有结果文档并在返回之前按时间对它们进行排序。这很慢,必须有更好的方法。
更好的方法是什么?
我找到了答案。
如果您想按时间而不是相关性排序,请对所有过滤器使用 fq= 而不是 q=。这样,Solr 就不会浪费时间计算与 q= 匹配的文档的权重值。事实证明,Solr 花费了太多时间进行加权,而不是排序。
此外,您可以通过在 solrconfig.xml 中的 newSearcher 和 firstSearcher 事件侦听器中预热排序字段来加快排序速度。这将确保排序是通过缓存完成的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)