文章目录
- 前言
- 环境
- 第一步:JDK安装
- 第二步:neo4j安装
- 第三步:测试neo4j是否安装成功
- 第四步:Python进行连接neo4j
前言
最近新入坑梦幻模拟战手游,对于英雄的羁绊一直不是很清楚,也不知道怎么方便查找英雄的羁绊(后来发现哔哩哔哩有专门的wiki进行介绍)。想到之前使用过一个叫做全历史的软件,是不是可以自己画一个类似的那种人物羁绊关系图,后来网上搜索了一下有个知识图谱的东西,似乎就很相似。但是网上的资料似乎都或多或少有点问题,花了我一天半的时间我才学会如何使用neo4j,因此在这儿重新梳理一下如何从完全不了解的情况下,开始使用neo4j搭建一个简单的知识图谱。写的不好,欢迎指责!
环境
- win11
- python = 3.8.1
- IDE:VS code
第一步:JDK安装
- 官网下载 :
https://www.oracle.com/java/technologies/javase-downloads.html - 选择JDK版本
博主最开始下载的是java-20的版本,但是后来启动neo4j网页的时候,cmd终端总会发出警告(与neo4j版本不匹配),说是让我更换jdk的版本,因此这里使用的是JDK-17。 - 下载安装
这玩意儿下载比较慢,博主试了好几次,反复点击链接新建下载,每次下载的速度都不一样,慢的半小时,快的两分钟。
- 保存安装路径
这里可以直接使用这个路径,安装在C盘也只有200+MB,也不会被误删,记得先复制下来这个路径,待会儿有用 - 设置系统变量
可以直接在搜索框搜索环境变量 - 点进系统属性-高级-环境变量
- 选择新建一个系统变量,变量名为JAVA_HOME,变量值为C:\Program Files\Java\jdk-17(就是刚刚那个JDK的安装路径)
- 如下所示:
- 设置环境变量
双击系统变量里面的path,创建环境变量路径:%JAVA_HOME%\bin,设置完连点三个确定就可以了。 - 检测JDK是否安装成功
使用win+R,打开cmd,输入java -version,若没有报错则JDK安装成功
第二步:neo4j安装
- 官网下载
https://neo4j.com/download-center/#community - 版本选择
我是直接选择的最新个人社区版 - 下载解压
将压缩包解压在一个你不会误删除的地方,比如我放在了D:\neo4j-community-5.6.0 - 设置系统变量与环境变量
跟刚刚的JDK类似,搜索环境变量打开菜单栏,添加系统变量和环境变量,设置完就连点三个确定就可以了。
第三步:测试neo4j是否安装成功
- 进入到neo4j文件夹下的bin目录:D:\neo4j-community-5.6.0\bin,这儿有neo4j的启动文件neo4j.bat
- 使用鼠标右键点击空白处,选择在终端中打开,或者通过win+R,打开cmd,通过cd指令,进入到这个路径。然后输入
./neo4j.bat console
通过框选处给出的网址可以进入到网页端的neo4j,这个窗口在使用时不可关闭
- 设置用户名与密码
初次打开网页使用用户名neo4j和密码neo4j即可登陆成功,然后他紧接着会要求你修改密码,这个密码很关键,后面使用python进行连接的时候需要用到,记得保存。 - 试用一下
打开后是这样的内容,下面两个小框可以直接叉掉,不用管
在第一行输入
match(n) detach delete n
大小写都可以,可以先删除之前残留的知识图谱,(建议每次打开都删除一下)
然后再在第一行输入指令
CREATE (n:Person {name:'老师'}) RETURN n;
CREATE (n:Person {name:'学生A'}) RETURN n;
CREATE (n:Person {name:'学生B'}) RETURN n;
创建三个节点
可以使用指令
match(n) return n
显示当前的知识图谱
然后输入指令(注意指令中的箭头),把这三者的关系加上
MATCH (a:Person {name:'老师'}), (b:Person {name:'学生A'}) MERGE (a)-[:师生]->(b);
MATCH (a:Person {name:'老师'}), (b:Person {name:'学生B'}) MERGE (a)-[:师生]->(b);
MATCH (a:Person {name:'学生A'}), (b:Person {name:'学生B'}) MERGE (a)-[:同学]->(b);
再输入指令
match(n) return n
显示一下知识图谱:
可以看见三者之间的关系已经创建好了,可能有同学会觉得这个单向箭头有点不对劲,但是实际上在neo4j里面,显示形式只有单向箭头,当然也可以通过再加一套箭头的方式来显得好看,比如输入指令(注意指令中的箭头):
MATCH (a:Person {name:'老师'}), (b:Person {name:'学生A'}) MERGE (a)<-[:师生]-(b);
MATCH (a:Person {name:'老师'}), (b:Person {name:'学生B'}) MERGE (a)<-[:师生]-(b);
MATCH (a:Person {name:'学生A'}), (b:Person {name:'学生B'}) MERGE (a)<-[:同学]-(b);
构建一套三者的关系
再使用match(n) return n进行显示便得到:
Tips:实际上不需要每次都输入match(n) return n,我们可以点击代码块右上角的▶按钮,进行重复运行这一代码块,这样子这一块就是每次更新知识图谱的内容
第四步:Python进行连接neo4j
- 安装py2neo包
pip install py2neo
- 在终端启动neo4j (使用时不能关闭)
打开窗口中的那个网页,并使用match(n) detach delete n删除之前的图谱
./neo4j.bat consle
- 编写并运行python程序
这里进行说明一下,代码中的auth=(“neo4j”, “88888”)是用户名和密码,就是第一次打开时让你改的那个密码,而前面那个网址就是neo4j那个网页的网址
from py2neo import Graph, Node, Relationship, NodeMatcher
graph = Graph('http://localhost:7474',auth=("neo4j", "88888"),name='neo4j')
# 可以一个一个创建
t = Node('Person',name='老师')
a = Node('Person',name='学生A')
b = Node('Person',name='学生B')
graph.create(Relationship(t, "师生", a))
graph.create(Relationship(t, "师生", b))
graph.create(Relationship(a, "同学", b))
- 显示知识图谱
回到neo4j网页,输入以下指令
match(n) return n