了解 Solr 函数查询性能



我正在使用Solr中的"edismax"和"function-query"解析器,并且很难理解"function-query"所花费的查询时间是否有意义。我尝试优化的查询如下所示:

q={!func sum($q 1,$q 2,$q 3)} 其中 q1,q2,q3 是 edismax 查询。

edismax 查询返回的 QTime 花费的时间远低于 50 毫秒,但似乎函数查询是速率确定步骤,因为上面的组合查询大约需要 200-300 毫秒。我还分析了仅使用常量进行函数查询的性能。

不同 q 的 QTime 结果如下:

  • 097ms for q={!func} sum(10,20)

  • 109ms for q={!func} sum(10,20,30)

  • 127ms for q={!func} sum(10,20,30,40)

  • 145ms for q={!func} sum(10,20,30,40,50)

这种趋势有意义吗?函数查询应该这么慢吗?

是什么让 edismax 查询如此之快?

我该怎么做才能优化我的原始查询(具有 edismax 子查询 q1,q2,q3)以在 100ms 内工作?

func 查询枚举所有文档,因此它不提供任何选择性。您可能不需要在文档中对其进行评估,这与最大值不匹配,例如

q=+{!v=$q1} +{!v=$q2} +{!v=$q3} {!func sum($q1,$q2,$q3)}

最新更新