16

如何设置 Elasticsearch 以使其返回个性化结果?

例如,我希望返回给特定用户的结果排名更高,如果他们之前点击了结果,或者如果他们在过去“加星标”了该结果。您还可以有一个“隐藏”选项,将结果进一步推低排名。从我到目前为止看到的弹性搜索来看,似乎很难根据用户自己的动态数据向用户返回不同的排名。

该解决方案必须扩展到每天进行十几次搜索的数千名用户。理想情况下,我希望排名实时变化,但这并不重要。

4

1 回答 1

10

Elasticsearch 提供了多种评分选项,但要实现您所说的,您需要执行一些额外的任务。

功能分数查询和文档术语查找术语过滤器将是我们选择的工具

首先为每个用户创建一个文档,告诉他访问的链接或链接 ID 以及他喜欢的链接。这应该作为单独的索引单独存放。这应该由用户维护,因为他应该从客户端更新和维护这个记录。

现在,当用户点击数据索引时,使用指向该字段的过滤函数执行函数得分查询。

在这种方法中,由于过滤器被缓存,您也应该获得不错的性能。

于 2015-01-24T06:12:54.387 回答