关于neo4j图数据库笔记四

发布时间:2024-12-12 11:33

六度理论是一个数学领域的猜想,名为Six Degrees of Separation,理论指出:你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过6个中间人你就能够认识任何一个陌生人。这就是六度分割理论,也叫小世界理论。

交往圈无论是在运营商还是在社交平台都发挥着举足轻重的作用,但交往圈由于其数据量庞大,社会交往关系网错综复杂,假设一个人平均交往10个人的话,6度模型扩散出去至少可以达到10万级,而运营商/社交平台的用户数都是百万级甚至数亿,由此形成的交往关系可达到数万亿,这样的数据量和运算量在关系数据库、在大数据平台中基本都是无法做到的。

neo4j提供了这种计算能力和扩展能力,本文的样例数据来自于《Neo4j权威指南》,本人也做了一些补充。

首先创建15个人,20条认识规则

CREATE (小北:朋友圈{姓名:"小北"}), (小菲:朋友圈{姓名:"小菲"}), (小鹏:朋友圈{姓名:"小鹏"}), (小颖:朋友圈{姓名:"小颖"}), (小兰:朋友圈{姓名:"小兰"}), (小峰:朋友圈{姓名:"小峰"}), (小讯:朋友圈{姓名:"小讯"}), (小东:朋友圈{姓名:"小东"}), (小唯:朋友圈{姓名:"小唯"}), (小窦:朋友圈{姓名:"小窦"}), (小齐:朋友圈{姓名:"小齐"}), (小林:朋友圈{姓名:"小林"}), (小锐:朋友圈{姓名:"小锐"}), (小伟:朋友圈{姓名:"小伟"}), (小玲:朋友圈{姓名:"小玲"}), (小讯)-[:认识]->(小窦), (小讯)-[:认识]->(小齐), (小讯)-[:认识]->(小林), (小讯)-[:认识]->(小鹏), (小讯)-[:认识]->(小伟), (小讯)-[:认识]->(小峰), (小菲)-[:认识]->(小鹏), (小菲)-[:认识]->(小峰), (小菲)-[:认识]->(小唯), (小峰)-[:认识]->(小北), (小峰)-[:认识]->(小兰), (小东)-[:认识]->(小林), (小东)-[:认识]->(小锐), (小东)-[:认识]->(小菲), (小鹏)-[:认识]->(小颖), (小北)-[:认识]->(小兰), (小颖)-[:认识]->(小东), (小唯)-[:认识]->(小鹏), (小唯)-[:认识]->(小锐), (小唯)-[:认识]->(小玲)

展示整个朋友圈关系图

MATCH (n) RETURN n

MATCH n=(:朋友圈{姓名:"小峰"})-[*..6]-() RETURN n

由于数据量不大,交往圈尚未达到6度,所以返回六度数据等同于所有交往圈

展示一度关系

展示小讯直接认识的朋友

MATCH n=(:朋友圈{姓名:"小讯"})-[:认识]-() RETURN n

展示二度关系

展示小讯直接认识的朋友以及小讯认识的朋友的朋友

MATCH n=(:朋友圈{姓名:"小讯"})-[*..2]-() RETURN n

展示三度关系

展示小讯直接认识的朋友以及小讯认识的朋友的朋友以及小讯认识的朋友的朋友的朋友

MATCH n=(:朋友圈{姓名:"小讯"})-[*..3]-() RETURN n

展示相关人员

展示小讯可以通过朋友认识其他朋友的朋友

MATCH (n:朋友圈{姓名:"小讯"})-[:认识]-(other)-[:认识]-(otherother) RETURN other

展示小讯可以通过朋友认识的朋友的

MATCH (n:朋友圈{姓名:"小讯"})-[:认识]-(other)-[:认识]-(otherother) RETURN otherother

展示小讯可以通过朋友认识其他朋友的朋友和小讯的朋友

MATCH (n:朋友圈{姓名:"小讯"})-[:认识]-(other)-[:认识]-(otherother) RETURN other,otherother

展示小讯可以通过朋友认识其他朋友的朋友和小讯的朋友以及小讯

MATCH (n:朋友圈{姓名:"小讯"})-[:认识]-(other)-[:认识]-(otherother) RETURN n,other,otherother

依托社交网络搜寻两人之间的最短熟人路径

需要注意的是方向箭头,->代表有向,-代表无向

选择小讯和小锐之间的最短路径

MATCH n=shortestPath((小讯:朋友圈{姓名:"小讯"})-[*..6]->(小锐:朋友圈{姓名:"小锐"})) RETURN n

MATCH n=allshortestPaths((小讯:朋友圈{姓名:"小讯"})-[*..6]-(小锐:朋友圈{姓名:"小锐"})) RETURN n

MATCH n=allshortestPaths((小讯:朋友圈{姓名:"小讯"})-[*..6]-(小锐:朋友圈{姓名:"小菲"})) RETURN n

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。

原始发表:2019-12-16

,如有侵权请联系 [email protected] 删除

网址:关于neo4j图数据库笔记四 https://mxgxt.com/news/view/175900

相关内容

中国历史人物传记数据库
明星数据库指数
小红书实时笔记热度榜数据分析!小红书达人投放评估!
小红书如何做明星数据库
娱乐明星代言数据库是什么
如何关注明星动向数据库
当代明星代言数据库是什么
如何看明星话题数据库
什么是追星的数据库平台
如何查看明星活粉数据库

随便看看