我正致力于在Elasticsearch中提供自定义分数提升解决方案。
我想问一下使用function_score
是不是一个好主意。因为索引大小很大,但查询的结果不应该那么大。
function_score
是在处理查询结果还是作为查询逻辑的一部分?如果是前者,可能会很快,是吗?
PS。最初查询boost
运算符似乎是最佳选择,但我无法将其提高到远高于match
之一的正常范围。我已经检查了_explain
API并且它说queryNorm
使我的提升正常化,我仍然得到低于正常范围的值(0.1 .. 4)。
答案 0 :(得分:1)
原则上 - 是的,它会降低搜索的性能。当然,真正的惩罚取决于脚本的复杂程度。它将在所谓的“搜索”期间发挥作用。阶段,这意味着,它将应用于所有匹配的文档。
如果您的案例适合重新评估功能,您可以尝试更快地使逻辑更快,因为它仅适用于前N个(可在rescore API中配置)结果。
有关重新校正的更多信息 - https://www.elastic.co/guide/en/elasticsearch/guide/current/_improving_performance.html#rescore-api