弹性搜索中的排序和评分

时间:2016-09-12 06:47:46

标签: elasticsearch elasticsearch-plugin

我需要使用机器学习算法来对查询结果进行排序/排名。 我们的查询在elasticsearch上运行。 为此,我们需要结合文档本身的数据,解释部分的数据(尽管不应该返回解释)和外部来源。

这是非常繁重的计算,所以我不想在所有文档上运行排名算法,但只在前1000名上运行,并返回我的前100名。

创建评分插件将在所有文档上运行;我没有看到任何为重新安装阶段创建插件的选项。 所以,似乎我必须创建一个排序插件。

我的问题是 - 分拣阶段有多少文件在运行?有没有办法控制它(如rescore中的window_size)?如果我有分页会发生什么 - 我的排序是否再次运行? 是否有可能将1000个文档与解释部分一起放入排序阶段,并且只返回100而没有解释?

谢谢!

1 个答案:

答案 0 :(得分:0)

- 这是非常繁重的计算,所以我不想在所有文档上运行排名算法,但只在前1000名上运行,并返回我的前100名。

将rescoring与您的评分插件结合使用,重新计算algo仅在前N个结果上运行

- 在分拣阶段有多少文件正在运行?

所有符合您查询的内容,如果您要求提供N个文档,则每个分片都会发送前N个然后将它们合并在一起

- 如果我有分页会怎么样 - 我的排序会再次运行吗?

是的,排序再次运行,如果您要求提供100000到100010的文档,则会更糟糕,每个分片会对100010个文档进行排序