如何以有效的方式跟踪每个用户不喜欢的项目并将其排除在结果之外

时间:2015-06-27 10:40:31

标签: elasticsearch data-modeling modeling

我有一个关于如何在ElasticSearch中建模特定用例的问题。

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

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

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

我知道搜索参数应该包含搜索用户的id,并且某些用户不喜欢的推荐列表应该在弹性搜索中维护,但是如果应用程序获得大量用户群,那么它就足够了推荐不喜欢?

1 个答案:

答案 0 :(得分:0)

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

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