Elasticsearch:根据喜好建议用户

时间:2015-02-02 17:51:54

标签: elasticsearch recommendation-engine

我正在尝试在elasticsearch中建模用户建议系统,该系统考虑了用户喜欢和个人资料。

我有这样的用户结构:

user: { 
    id: 232344,
    location: 'New York',
    likes: [4545, 3434, 343]
}

我想根据以下三个概念建议用户:

1)喜欢我的用户。

2)用户喜欢我喜欢的用户。 (类似的位置等)

3)相互喜欢。 (用户类似用户x。用户b喜欢用户x。建议用户a到b,反之亦然。)

我在弹性搜索中看过More like this查询,但我不确定它是否可以考虑所有这些情况。

我如何在elasticsearch查询中建模这些东西,还是应该考虑使用像neo4j这样的图形数据库?

1 个答案:

答案 0 :(得分:1)

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] }
    }
}