elasticsearch - Elasticsearch:根据喜欢推荐用户

标签 elasticsearch recommendation-engine

我正在尝试在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/

相关文章:

elasticsearch - 如果存在具有相同名称的映射,则嵌套查询不适用于Elasticsearch 1.7

full-text-search - ElasticSearch中的多语言查询

azure - 推荐火柴盒

arrays - 如何在查询嵌套对象/数组时使用 "wildcard"或 "regexp"

java - 根据在 Elasticsearch 中使用的给定CIDR范围从IP地址文件中查询以获取记录集

database - 如何创建自己的推荐引擎?

ruby - 在被动评级系统中增加和减少 float 的算法

python - 矩阵分解新用户

machine-learning - 没有评分的推荐引擎

logging - Elasticsearch 盘空间计算