我在Solr中使用“edismax”和“function-query”解析器,并且很难理解“function-query”所花费的查询时间是否有意义。我正在尝试优化的查询如下所示:
q = {!func sum($ q1,$ q2,$ q3)}其中q1,q2,q3是edismax查询。
edismax查询返回的QTime大约需要50ms,但似乎函数查询是速率确定步骤,因为上面的组合查询需要大约200-300ms。我还使用常量分析了函数查询的性能。
不同q的QTime结果如下:
这种趋势有意义吗?函数查询预计会变慢吗?
是什么让edismax查询更快?
如何优化原始查询(edismax子查询q1,q2,q3)在100ms以下工作?
func查询枚举所有文档,因此它不提供任何选择性。你可能不需要在docs上评估它,它与dismaxes不匹配,例如
q=+{!v=$q1} +{!v=$q2} +{!v=$q3} {!func sum($q1,$q2,$q3)}