Springboot集成neo4j实现知识图谱关系图
今天咱们聊一个超实用的话题:如何用Spring Boot和Neo4j搭建你的社交关系图谱!你知道吗?Neo4j这个家伙其实是个图形数据库界的网红哦,它不搞那些复杂的表结构,就喜欢“节点”和“关系”,简单直接,就像你认识的朋友都是一个个点,你们之间的交情就是线,简单又直观!
先别急着安装,我得警告你,别跟我犯同一个错!我下载的是3.5.28,超过4.x的版本对JDK可是有要求的,得是11才行!启动的时候,记得在bin目录下用cmd敲命令,neo4j.bat console,这样就能轻松启动数据库啦!第一次登录管理页面,地址是http://localhost:7474,账号密码都是neo4j,记住了没?
别看我这里写的是技术,其实这也是一场“关系学”啊!比如你公司项目里,要把评委和选手的关系理清楚,那不就是一场社交网络嘛!用Spring Boot集成Neo4j,分分钟就能搞掂,只需要加个依赖,spring-boot-starter-data-neo4j,然后你就有了自己的图谱世界!
是不是觉得这挺酷的?想象一下,你的项目里不仅能展示谁和谁是什么关系,还能轻松找到指定评委和选手之间的纽带,这不就是现实版的“社交图谱”吗?赶紧动手试试吧,说不定你就是下一个图谱界的网红创客!
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、neo4j是什么?
- 二、安装步骤
-
- 1.启动
- 2.使用
- 2.简单命令
- 二、使用springboot集成neo4j
-
- 1.引入依赖
- 2.功能实现
- 3.查询关系节点
- 4. 查询指定评委和指定选手中,存在指定关系,并返回关系集合
前言
使用neo4j来完成人员关系
公司项目有一个功能需要将各个人员关系列出,在参加评选的时候,进行展示和筛选
一、neo4j是什么?
neo4j是高性能的NOSQL图形数据库,在neo4j中,社区版本只能使用一个database。在neo4j中不存在表的概念,我们只需要注意两个东西,一个是节点,一个是关系。不同节点和相同节点都可以产生关系。
二、安装步骤
https://neo4j.com/download-center/
我下载的是3.5.28,超过4.x,jdk版本需要11
1.启动
在bin目录下使用cmd命令 在命令框中执行 neo4j.bat console启动数据库
2.使用
1.登录管理页面 http://localhost:7474
2.第一次登录账号密码都是neo4j
2.简单命令
1.创建节点 create (:node1{nodeId:1,name:'王大'})
2.修改节点 merge (a:node1{nodeId:1}) set a.name='王小二' return a //如果节点不存在就创建
3.删除节点 match (a:node1{nodeId:1}) delete a
4.查询节点 match (a:node1{nodeId:1}) return a
5.创建关系 create (a:node1{nodeId:1})-[:relationShip{shipId:1,shipName:'好友'}]->(b:node1{nodeId:2})
6.查询关系 match (a:node1)-[r:relationShip]->(b:node1) return a.name,r.shipName,b.name
7.在查询关系时可以在a和关系以及b中设置查询条件,或者在b后跟where条件来筛选
二、使用springboot集成neo4j
1.引入依赖
本项目是springboot框架进行开发的,所以在项目中添加pom依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId></dependency>
2.功能实现
这个功能是对人员进行关系筛选,人员身份是两类,一种是评委,一种是选手,所以,我们使用PersonNode对象,并且使用type来区分
可以使用neo4j框架自带的注解进行标注,NodeEntity是存在neo4j数据库种node的节点名称,Property是存放在数据库的名称,Relationship是节点关系的属性,包括节点类型和指向。指向默认是向外,也可以向内和双向。personRelationship是另一个关系类的名称
@Data
@NodeEntity(label = "PersonNode")
public class PersonNode {@Id@GeneratedValueprivate Long id;@Property(name = "type")private Integer type; @Property(name = "personId")private String personId;@Property(name = "name")private String name;@Property(name = "idCard")private