使用neo4j_一文带你使用neo4j生成三国人物社交关系图

本文介绍如何利用Neo4j图数据库来创建三国演义中的人物社交关系图。通过docker快速搭建Neo4j服务,准备好三国人物数据,生成并执行节点和关系的插入语句,最终展示出人物之间的复杂联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

最近给孩子买了三国演义,可是三国人物关系太复杂,就想着把三国人物关系做成一张图,这样方便看,整好neo4j图数据库非常适合社交关系的处理,下面就一起来看看,如何使用neo4j生成三国人物社交关系图。

neo4j安装

现在docker很流行,也很方便,在这里,我就用docker快速搭建一个neo4j图数据库服务。

拉取neo4j镜像

[root@mysql ~]#docker pull neo4j[root@mysql ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEneo4j               latest              ce22583052bf        6 days ago          546MB

创建neo4j的docker容器

[root@mysql ~]#docker run -id -d --publish=7474:7474 --publish=7687:7687 neo4j[root@mysql ~]# docker ps CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                                      NAMESbc33fcdae7f4        neo4j                "/sbin/tini -g -- /d鈥 4 hours ago         Up 4 hours          0.0.0.0:7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp   hopeful_roentgen

到这里,图数据库的服务已经搭建好了,剩下的就是将数据导入。

准备三国人物数据

在这里,我已经准备好了三国演义中蜀国主要人物的关系表,将这些数据库拷贝到linux系统的a.txt文件

刘备      关羽      结义兄弟刘备      张飞      结义兄弟刘备      卢植      主公刘备      马超      主公刘备      庞统      主公刘备      黄忠      主公刘备      赵云      主公刘备      魏延      主公刘备      蒋琬      主公刘备      法正      主公刘备      马良      主公刘备      孟获      主公刘备      啥摩柯     主公刘备      糜竺      主公刘备      糜芳      主公甘夫人     刘备      妻糜夫人     刘备      次妻孙尚香     刘备      妻关羽      关兴      父子关平      关羽      义子张飞      张苞      父子马腾      马超      父子马腾      韩遂      异性兄弟庞德      庞统      叔父马谡      马良      弟弟祝融      孟获      妻糜芳      糜夫人     兄妹糜竺      糜芳      兄弟刘备      诸葛亮     主公黄月英     诸葛亮     妻黄承彦     黄月英     父女姜维      诸葛亮     弟子诸葛亮     诸葛瑾     兄弟诸葛亮     诸葛瞻     父子刘备      刘禅      父子甘夫人     刘禅      母子刘禅      姜维      主公诸葛瞻     刘禅      女婿刘备      中山王:刘胜  后代刘胜      刘启      父子刘启      刘辩      宗亲刘辩      刘协      让位

使用awk获取不重复的人物名称

cat a.txt |awk '{print $1""$2}'|sort|uniq > b.sql

生成neo4j图数据节点插入语句

[root@mysql ~]# cat b.sql |awk '{print "create (country:shu { name:'''"$1"'''});"}'create (country:shu { name:'法正'});create (country:shu { name:'甘夫人'});create (country:shu { name:'关平'});create (country:shu { name:'关兴'});create (country:shu { name:'关羽'});create (country:shu { name:'韩遂'});create (country:shu { name:'黄承彦'});create (country:shu { name:'黄月英'});create (country:shu { name:'黄忠'});create (country:shu { name:'姜维'});create (country:shu { name:'蒋琬'});create (country:shu { name:'刘备'});create (country:shu { name:'刘辩'});create (country:shu { name:'刘禅'});create (country:shu { name:'刘启'});create (country:shu { name:'刘胜'});create (country:shu { name:'刘协'});create (country:shu { name:'卢植'});create (country:shu { name:'马超'});create (country:shu { name:'马良'});create (country:shu { name:'马谡'});create (country:shu { name:'马腾'});create (country:shu { name:'孟获'});create (country:shu { name:'糜芳'});create (country:shu { name:'糜夫人'});create (country:shu { name:'糜竺'});create (country:shu { name:'庞德'});create (country:shu { name:'庞统'});create (country:shu { name:'啥摩柯'});create (country:shu { name:'孙尚香'});create (country:shu { name:'魏延'});create (country:shu { name:'张苞'});create (country:shu { name:'张飞'});create (country:shu { name:'赵云'});create (country:shu { name:'诸葛瑾'});create (country:shu { name:'诸葛亮'});create (country:shu { name:'诸葛瞻'});create (country:shu { name:'祝融'});

生成neo4j图数据人物关系语句

[root@mysql ~]# cat a.txt |awk '{print "match (p1:shu {name:'''"$1"'''}),(p2:shu{name:'''"$2"'''}) create (p1)- [r:rel {relation:'''"$3"'''}]->(p2);"}'match (p1:shu {name:'刘备'}),(p2:shu{name:'关羽'}) create (p1)- [r:rel {relation:'结义兄弟'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'张飞'}) create (p1)- [r:rel {relation:'结义兄弟'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'卢植'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'马超'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'庞统'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'黄忠'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'赵云'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'魏延'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'蒋琬'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'法正'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'马良'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'孟获'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'啥摩柯'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'糜竺'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'糜芳'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'甘夫人'}),(p2:shu{name:'刘备'}) create (p1)- [r:rel {relation:'妻'}]->(p2);match (p1:shu {name:'糜夫人'}),(p2:shu{name:'刘备'}) create (p1)- [r:rel {relation:'次妻'}]->(p2);match (p1:shu {name:'孙尚香'}),(p2:shu{name:'刘备'}) create (p1)- [r:rel {relation:'妻'}]->(p2);match (p1:shu {name:'关羽'}),(p2:shu{name:'关兴'}) create (p1)- [r:rel {relation:'父子'}]->(p2);match (p1:shu {name:'关平'}),(p2:shu{name:'关羽'}) create (p1)- [r:rel {relation:'义子'}]->(p2);match (p1:shu {name:'张飞'}),(p2:shu{name:'张苞'}) create (p1)- [r:rel {relation:'父子'}]->(p2);match (p1:shu {name:'马腾'}),(p2:shu{name:'马超'}) create (p1)- [r:rel {relation:'父子'}]->(p2);match (p1:shu {name:'马腾'}),(p2:shu{name:'韩遂'}) create (p1)- [r:rel {relation:'异性兄弟'}]->(p2);match (p1:shu {name:'庞德'}),(p2:shu{name:'庞统'}) create (p1)- [r:rel {relation:'叔父'}]->(p2);match (p1:shu {name:'马谡'}),(p2:shu{name:'马良'}) create (p1)- [r:rel {relation:'弟弟'}]->(p2);match (p1:shu {name:'祝融'}),(p2:shu{name:'孟获'}) create (p1)- [r:rel {relation:'妻'}]->(p2);match (p1:shu {name:'糜芳'}),(p2:shu{name:'糜夫人'}) create (p1)- [r:rel {relation:'兄妹'}]->(p2);match (p1:shu {name:'糜竺'}),(p2:shu{name:'糜芳'}) create (p1)- [r:rel {relation:'兄弟'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'诸葛亮'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'黄月英'}),(p2:shu{name:'诸葛亮'}) create (p1)- [r:rel {relation:'妻'}]->(p2);match (p1:shu {name:'黄承彦'}),(p2:shu{name:'黄月英'}) create (p1)- [r:rel {relation:'父女'}]->(p2);match (p1:shu {name:'姜维'}),(p2:shu{name:'诸葛亮'}) create (p1)- [r:rel {relation:'弟子'}]->(p2);match (p1:shu {name:'诸葛亮'}),(p2:shu{name:'诸葛瑾'}) create (p1)- [r:rel {relation:'兄弟'}]->(p2);match (p1:shu {name:'诸葛亮'}),(p2:shu{name:'诸葛瞻'}) create (p1)- [r:rel {relation:'父子'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'刘禅'}) create (p1)- [r:rel {relation:'父子'}]->(p2);match (p1:shu {name:'甘夫人'}),(p2:shu{name:'刘禅'}) create (p1)- [r:rel {relation:'母子'}]->(p2);match (p1:shu {name:'刘禅'}),(p2:shu{name:'姜维'}) create (p1)- [r:rel {relation:'主公'}]->(p2);match (p1:shu {name:'诸葛瞻'}),(p2:shu{name:'刘禅'}) create (p1)- [r:rel {relation:'女婿'}]->(p2);match (p1:shu {name:'刘备'}),(p2:shu{name:'刘胜'}) create (p1)- [r:rel {relation:'后代'}]->(p2);match (p1:shu {name:'刘胜'}),(p2:shu{name:'刘启'}) create (p1)- [r:rel {relation:'父子'}]->(p2);match (p1:shu {name:'刘启'}),(p2:shu{name:'刘辩'}) create (p1)- [r:rel {relation:'宗亲'}]->(p2);match (p1:shu {name:'刘辩'}),(p2:shu{name:'刘协'}) create (p1)- [r:rel {relation:'让位'}]->(p2);

执行插入语句

将上面生成的节点和关系语句在neo4j中执行,就可以了。然后查询,就可以看到效果图了

c96ff599cd9d9ef367d1c74e44887c57.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值