Elasticsearch 中基于每个用户行为的评分

Per user behavior based scoring in Elasticsearch

我们通过分析用户通常搜索的标签来了解用户的行为。 现在我们需要为这些用户赋予此类标签更高的优先级。我想知道我们如何使用 Elasticsearch 以优雅的方式实现这一目标。

最好的方法是

  1. 分析用户的行为
  2. 查看他感兴趣的所有关键字
  3. 在包含所有这些关键字的另一个索引中为每个用户维护一个文档。
  4. 在搜索该用户时,使用 function_score query
  5. 提高这些关键字的出现次数
  6. 可以在boost函数中使用terms filter来实现this.Add函数分数查询中functions下的boost函数
  7. terms filter 中,您可以指向此用户文档并动态获取值
  8. 使用自定义过滤键,这样构造的缓存键就不会占用太多内存

在这种方法中,您可以避免客户端代码中的大量代码路径。