Elasticsearch:根据喜欢推荐用户
Elasticsearch: suggest users based on likes
我正在尝试在 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]
。此查询将 return b
如果 b
也喜欢其中一个 ID。
{
"query": {
"term" : { "likes" : [1, 3, 5] }
}
}
我正在尝试在 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]
。此查询将 return b
如果 b
也喜欢其中一个 ID。
{
"query": {
"term" : { "likes" : [1, 3, 5] }
}
}