NrOfMutualF
LeBron James
2
James Harden
1
Chris Paul
1
Yao Ming
1
Damian Lillard
1
JaVale McGee
1
Kevin Durant
1
Kyle Anderson
1
Rudy Gay
1
Russell Westbrook
1
显然,LeBron 最值得推荐!再看看这些共同好友都是谁?
collect(distinct f.player.name)
James Harden
["Dejounte Murray"]
LeBron James
["Danny Green", "Dejounte Murray"]
Chris Paul
["Dejounte Murray"]
Yao Ming
["Shaquille O'Neal"]
Damian Lillard
["LaMarcus Aldridge"]
JaVale McGee
["Shaquille O'Neal"]
Kevin Durant
["Dejounte Murray"]
Kyle Anderson
["Dejounte Murray"]
Rudy Gay
["LaMarcus Aldridge"]
Russell Westbrook
["Dejounte Murray"]
同样,我们在刚才的子图里找找 LeBron James 吧!我们把他俩之间的两步、双向路径找出来,果然只会经过 ["Danny Green", "Dejounte Murray"] 并且,没有直接的连接:
现在,系统应该给两边发提醒:“hey,也许你们应该交个朋友!”
共同邻居查找共同邻居是一个很常见的图查询,它的场景可能根据不同的邻居关系、节点类型 , 同构、异构,带来不同的场景 。前面两个场景的共同好友本质上是两点之间的共同邻居,直接查询这样的关系用 openCypher 的表达非常简单 。
两点之间的共同邻居这个表达可以查询两个用户之间的共性、交集,结果可能是共同团队、去过的地方、兴趣爱好、共同参与的帖子回复等等:
MATCH p = (`v0`)--()--(`v1`)WHERE id(`v0`) == "player100" AND id(`v1`) == "player104"RETURN p
而限定了边的类型之后,这个查询就限定在共同好友的查询了 。MATCH p = (v0)--(:`follow`)--(v1)WHERE id(v0) == "player100" AND id(v1) == "player104"RETURN p
多点之间的共同邻居:内容推送下面,我们给出一个多点共同邻居的场景:我们从一个文章出发,查出所有在这个文章上有互动的用户,找到这一群体中的共同邻居 。这个共同邻居有什么用处呢?很自然 , 如果这个共同邻居还没有和这个文章有任何交互,我们可以把这个文章推荐给他 。
这个查询的实现很有意思:
- 第一个 MATCH 是查到所有 post11 文章下留言、点赞之类的同作者交互的总人数
- 第二个 MATCH 里我们查询这群人的一度好友中哪些人同互动用户的共同好友数量刚好等于文章互动人数,即这些所有参与互动的用户的共同好友 。
MATCH (blog:post)<-[e]-(:player) WHERE id(blog) == "post11"WITH blog, count(e) AS invoved_user_countMATCH (blog:post)<-[]-(users:player)-[:`follow`]-(common_neighbor:player)WITH toSet(collect(users)) AS users, common_neighbor, invoved_user_countWHERE size(users) == invoved_user_countRETURN common_neighbor
而这个人就是…Tony!+-----------------------------------------------------+| common_neighbor|+-----------------------------------------------------+| ("player101" :player{age: 36, name: "Tony Parker"}) |+-----------------------------------------------------+
而我们可以很容易在可视化中验证它:MATCH p=(blog:post)<-[]-(users:player)-[:`follow`]-(common_neighbor:player)WHERE id(blog) == "post11"RETURN p
渲染这个查询结果,再在这篇叫做 "Let's have a party!" 的文章与 Tony 之间查找评论、发帖、关注三类边的双向、两跳查询,就可以看到这些参与文章的人们无一例外,都是 Tony 的好友,而只有 Tony 自己还没去文章里留言!
推荐阅读
- 客户欠货款不认账要怎么办理 客户欠货款不认账要怎么办
- 苹果13屏幕发黄怎么回事儿 苹果13屏幕发黄怎么回事
- 怎么看微信是哪一年注册的账号 怎么看微信是哪一年注册的
- 逃税86万怎么惩处他人 逃税86万怎么惩处
- 孩子学习没耐心怎么办 孩子没耐心怎么办培养
- 抖音极速版怎么发视频作品 抖音极速版怎么发视频
- 孩子上高一静不下心学习怎么办
- 小孩子静不下心学习怎么办 孩子静不下心来学东西怎么办
- 新买的车库门遥控器怎么对码 车库门遥控器怎么对码
- 电脑版qq音乐怎么看等级 qq音乐怎么看等级