【发布时间】:2013-07-17 06:26:30
【问题描述】:
我在neo4j中创建了5个节点如下。
Node 1 {userid:1000, username: A, someOtherProperties...}
Node 2 {userid:2000, username: B, someOtherProperties...}
Node 3 {userid:3000, username: c, someOtherProperties...}
Node 4 {userid:4000, username: D, someOtherProperties...}
Node 5 {userid:5000, username: E, someOtherProperties...}
节点 1 与节点 2 和 3 相连,节点 2 与节点 1、3、4 相连
1 -> 2
1 -> 3
2 -> 1
2 -> 3
2 -> 4
3 -> 4
现在我想要节点 1 的用户建议,其中包含那些未连接的节点 它自己与相互计数。我想要这样的结果。
node id userid username mutual count
------- ------ -------- -------------
4 4000 D 2 (which is node 2 & 3)
5 5000 E 0
我尝试过密码查询,但没有成功。
【问题讨论】:
-
您尝试了什么查询?可以分享一下吗?
-
谢谢@Luanne。我试过以下查询: START user=node:node_auto_index("userid:*"), me=node:node_auto_index(userid = '92') WHERE user me WITH user MATCH pMutualFriends=me-[:friends]-> mf
-
所以你正在寻找一个用户U,找到朋友U的所有朋友以及连接到朋友的朋友的U的朋友的数量?不知道为什么 E 在您的示例中出现,因为没有朋友与 E 相关联。也许我误解了您查询的目的?
-
没有@Luanne。我也想要E。我想要所有用户,但它应该按相互计数的最大值到最小值排序。我只想在登录用户和其他用户之间显示 No Of Mutual Friends。因此,登录用户可以向该用户发送邀请。如果新用户不能有任何相互联系,尽管他/她可以根据他/她的城市或国家获得建议。还有一件事,我必须随机显示 10 条记录。谢谢。
-
好的,如果这就是您想要的,那么您的查询就可以了。请注意,它可能真的很昂贵,因为您要匹配所有用户节点
标签: neo4j cypher social-networking mutual-friendship