我怎样才能跟踪每个用户不喜欢的项目并以有效的方式将它们从结果中排除

How can I keep track of each users disliked items and exclude them from the result in an efficient way

我对如何在 ElasticSearch 中对特定用例建模有疑问。

我有一个应用程序,用户可以在其中搜索带有多个参数的推荐,并且 like/dislike 每个返回的推荐项目。就像现在一样,用户之前不喜欢的推荐可能会再次出现。所以问题是;我如何跟踪每个用户不喜欢的推荐并以有效的方式将它们从结果中排除?

因此,如果用户 1 搜索推荐,结果是: rec1, rec2, rec3, rec4, rec5

如果 user1 然后不喜欢 rec1 和 rec2,并再次进行相同的搜索,结果应该是: rec3, rec4, rec5

我知道搜索参数应该包含搜索用户的 ID,并且应该在弹性搜索中维护某种用户不喜欢的推荐列表,但是如果应用程序获得大量用户群,那么效率是否足够不喜欢很多推荐?

您当然可以索引 "user" 文档并在数组中保留不喜欢的列表。但是,让 ES 自动 "join" 该用户的文档并根据该文档中的字段修改其搜索参数是不可能的。

最好的办法是将用户的首选项加载到位于用户和 ES 之间的应用程序中的会话中。从那里,您必须修改进入 ES 的任何查询以排除用户不喜欢的项目。