如何设置 Elasticsearch 以使其返回个性化结果?
例如,我希望返回给特定用户的结果排名更高,如果他们之前点击了某个结果,或者如果他们“加星标”了过去的结果。您还可以有一个“隐藏”选项,将结果进一步降低排名。到目前为止,从我对 elasticsearch 的了解来看,似乎很难根据用户自己的动态数据向用户返回不同的排名。
该解决方案必须扩展到每天进行十几次搜索的数千名用户。理想情况下,我希望排名实时变化,但这并不重要。
最佳答案
Elasticsearch 提供了多种评分选项,但是要实现您所说的,您需要执行一些额外的任务。
Function score query和文件 terms lookup terms filter将是我们选择的工具
首先为每个用户创建一个文档,告诉他访问过的链接或链接ID以及他喜欢的链接。这应该作为单独的索引单独存放。这应该由用户维护,因为他应该从客户端更新和维护此记录。
现在,当用户点击数据索引时,使用指向此字段的过滤器函数执行函数评分查询。
在这种方法中,由于过滤器被缓存,您也应该获得不错的性能。
关于search - Elasticsearch 的个性化搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28117977/