我正在尝试在Elasticsearch中考虑用户喜欢和个人资料的用户建议系统建模。
我有这样的用户结构:
user: {
id: 232344,
location: 'New York',
likes: [4545, 3434, 343]
}
我想根据以下三个概念建议用户:
1)喜欢我的用户。
2)用户喜欢我喜欢的那个。 (相似的位置等)
3)相互喜欢。 (用户a喜欢用户x。用户b喜欢用户x。建议用户a到b,反之亦然。)
我已经在Elasticsearch中阅读了有关
More like this
查询的信息,但不确定是否可以考虑所有这些情况。我该如何在Elasticsearch查询中为这些事情建模,还是应该考虑使用neo4j之类的图形数据库?
最佳答案
1)喜欢我的用户。假设我的ID是1
{
"query": {
"term" : { "likes" : 1 }
}
}
2)检查more like this api。给定一个文档ID和一组字段,它以与给定文档相似的文档进行响应。有很多选项,所以我建议阅读文档,看看它是否适合您的用例。
3)共同喜欢:假设我是
a
,并且我喜欢这些用户[1, 3, 5]
。如果b
也喜欢其中一个ID,则此查询将返回b
。{
"query": {
"term" : { "likes" : [1, 3, 5] }
}
}
关于elasticsearch - Elasticsearch:根据喜欢推荐用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28283716/