cypher neo4j - 收集一组节点

Posted

技术标签:

【中文标题】cypher neo4j - 收集一组节点【英文标题】:cypher neo4j - collect a group of nodes 【发布时间】:2017-04-07 07:56:34 【问题描述】:

我尝试在我的 neo4j 项目中获取节点集合

我的数据库尝试通过评分来描述用户和电影之间的联系

所以我使用具有评分值(1-5)的链接“RATED”将用户链接到电影

此外,我通过“相似性”链接将用户与他们自己联系起来

现在我有一组喜欢他们之间的用户

the groups of users

我想查看每组相似度用户:喜欢该电影的电影组(喜欢=评分>=4)

example

在这个例子中我的结果是:爆发,与狼共舞,披露

【问题讨论】:

你如何尝试得到结果? 您是否使用一些社区算法来尝试定义您的相似人群? 我不知道如何构建返回电影组的查询(针对每个相似性用户组) 如何获得相似度用户群?仅在用户之间建立具有相似性的关系是不够的。 我创建了用户之间的相似关系:用户与其他用户相似:如果他们有至少 50% 的共同电影是他们喜欢的 【参考方案1】:

现在您已经在用户之间创建了直接关系SIMILAR,您必须运行社区检测算法,以便它定义不同的用户组。您可以使用apoc.algo 函数运行它,并使用apoc plugin for neo4j。

CALL apoc.algo.community(25,['User'],'community','SIMILAR','BOTH',1,10000)

现在您已经使用社区检测算法定义了用户组,您可以简单地查询不同的用户组喜欢什么

//You can also set additional filters when matching movies groups liked
MATCH (user:User)-[rel:LIKED]->(m:Movie) where rel.rating > 3.5
RETURN distinct(user.community) as group,collect(m.title) as movies

知道这是一个非常简单的版本,您可以如何实现它。我建议您查看this graphgist 和this video。

希望对你有帮助

【讨论】:

感谢您的回答,但我不知道如何安装neo4j在windows机器上运行的插件,所有教程都是针对linux机器的 下载neo4j的zip版本,安装指南在这里...neo4j.com/docs/operations-manual/current/installation/windows ...然后只需将apoc.jar文件复制到neo4j/plugins目录中即可

以上是关于cypher neo4j - 收集一组节点的主要内容,如果未能解决你的问题,请参考以下文章

Cypher - 通过其连接节点的属性匹配节点?

使用 Cypher 从 Neo4j 图中提取子图

知识图谱Neo4j Cypher查询语言详解

使用 Cypher 在 Neo4j 中通过模式移动与其他节点的关系

neo4j初次使用学习简单操作-cypher语言使用

Neo4j数据库——Cypher语言初学