0

我的数据模型包含两个对象 - 用户和产品(存储在 mongodb 中)。我已经使用 elasticsearch 构建了一个多面产品搜索。现在我正在努力实现“最喜欢的产品”——用户可以将一些产品标记为他的最爱,然后在搜索时它们应该位于列表的顶部。问题是 - 如何建模这个最喜欢的产品标记以使搜索知道它并能够执行正确的排序操作?

4

2 回答 2

0

这是我的猜测 - 没有尝试过。而且您知道弹性搜索查询是多么的挑剔。因此,请随时尝试并让我们获得反馈。

在您的代码中,提取用户收藏的文档 ID(从您的用户数据模型中)。然后使用 elasticsearch constant_score 通过将此子句添加到您现有的 bool 查询中(或者您已经在搜索您的产品)来推广那些标记为收藏的产品。

{
  "constant_score" : {
     "ids" : {
        "values" : ["1", "4", "100"]
     }
  }
}

如果这接近正确的轨道,请随时编辑您的问题或此回复,并提供有关您的查询的更多详细信息。

于 2013-04-11T14:13:23.323 回答
0

本文描述了另一种方法 parent\child 文档

在研究相同功能的实现时,我发现它非常有帮助。但我不知道它的缺点,因为我还没有实现它。

于 2013-10-07T11:22:36.030 回答