admin管理员组

文章数量:1547959

准备阶段

  • 一、项目概述
  • 二、Neo4j环境配置
    • 1、Neo4j简单介绍
    • 2、Neo4j安装方法
  • 三、Neo4j基本知识点
    • 1、添加操作
    • 2、删除操作
    • 3、修改节点
    • 4、查询操作
  • 四、Python操作Neo4j

一、项目概述

这个小项目主要想把之前做的一个数据结构可视化网站加上协同过滤推荐,从而达到初级的个性化学习。我将以一个网页版的对话机器来实现这个功能,项目所涉及的所有知识均会详细讲述,记录我学习经历的同时帮助要做相关项目的人少走弯路,总共分为八篇文章,可以通过下方链接进行访问。
python结合Neo4j图数据库实现协同过滤推荐(一)
python结合Neo4j图数据库实现协同过滤推荐(二)
python结合Neo4j图数据库实现协同过滤推荐(三)
python结合Neo4j图数据库实现协同过滤推荐(四)
python结合Neo4j图数据库实现协同过滤推荐(五)
python结合Neo4j图数据库实现协同过滤推荐(六)
python结合Neo4j图数据库实现协同过滤推荐(七)
python结合Neo4j图数据库实现协同过滤推荐(八)

二、Neo4j环境配置

1、Neo4j简单介绍

Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。

可移步百度百科进行进一步了解。Neo4j中的节点可表示一个实体,实体又可以方便的设置属性,实体间又可以通过连线设定关系。其数据底层存储专门针对图数据的特点进行优化,在关系数据的处理上具备远高于其他数据库的性能,操作方便,而且不同的编程语言可以很方便的调用它。这篇文章讲述的比较详细,这里稍微了解一下就行。

2、Neo4j安装方法

①、JDK安装
因为它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。所以需要安装一下JDK,先到下面链接去下载好对应的JDK:
https://www.oracle/java/technologies/downloads/
必须要下载合适的版本,推荐1.11.0(一定不要乱下,否则你会遇到各种问题,尽量就下载1.11.0的吧),下面给出网盘链接:
链接:https://pan.baidu/s/1qWgjS6CwHn2PXCbBXjYjqA
提取码:ltgx
我的系统为Win10,下载的是下面这个:

要选择合适的JDK,否则可能导致安装Neo4j失败。
首先双击打开刚下载好的.exe文件,然后按照如下图操作顺序进行操作。

记住安装路径,因为需要配置对应的环境变量。



接下来进行JDK的环境配置,打开环境变量。



打开cmd

依次输入:

java -version
java
javac




出现如上问题则说明没问题了。
②、Neo4j安装
进入官网下载Neo4j:
https://neo4j/download-center/

我这里提供百度网盘的链接:
链接:https://pan.baidu/s/1WBYnNDgdPcwcMJUld7_uuA
提取码:v36d
下载解压后,文件名太长,可稍微改一下。
配置环境变量,操作和JDK操作类似,把bin目录添加到环境变量里面,同时把以下三条语句加入环境变量里面:

C:\Windows\System32\WindowsPowerShell\v1.0
C:\Windows\System32\wbem
C:\Windows


打开cmd,输入:

neo4j.bat console

即可打开neo4j,找到如图所示的连接,在浏览器打开(谷歌可以,IE好像不行,其他没试)。

http://localhost:7474/


然后初始账号和密码都是neo4j,输入即可进入

第一次登录会要求重置密码,重置一个就行。

至此,neo4j环境配置就算完成了。

如果还存在问题,请详细检查一下JDK版本,彻底卸载JDK的方法参考这篇文章。

三、Neo4j基本知识点

1、添加操作

①. 添加节点:

create (x:学生{studentId:'1001',age:20}

②. 添加关系:
对现有的节点添加关系

match (x:学生{studentId:1001}),(y:教师{tid:'09'}) create (x)-[jx:课程{name:'高数'}]->(y)
match (x:学生),(y:教师) where x.studentId='1001' and y.tid='09' create (x)-[jx:课程{name:'高数'}]->(y)

添加节点并添加关系

create (x:学生{studentId:1001})-[jx:课程{name:'高数'}]->(y:教师{tid:'09'})

③. 根据节点的ID创建关系

match (x:学生),(y:教师) where id(x)=254885 and id(y)=554896 create (x)-[jx:课程{name:'高数'}]->(y)

2、删除操作

①. 删除节点:

match (x:学生{studentId:1001}) delete x

②. 删除关系:

match (x:学生{studentId:1001})-[jx:课程{name:'高数'}]->(y:教师{tid:'09'})  delete jx

③. 删除关系的同时,删除数据:

match (x:学生{studentId:1001})-[jx:课程{name:'高数'}]->(y:教师{tid:'09'})  delete x,jx,y

3、修改节点

①. 给节点添加一个新的属性,两种方式:

match(x:学生{studentId:'1001'}) set x.age=21 return x
match(x:学生{studentId:'1001'}) set x+={age:21} return x

②. 给节点添加属性并删除现有属性

match(x:学生{studentId:'1001'}) set x={age:21,name:'abc'} //注意这里,会将studentId属性删除

③. 添加新标签:

match(x:学生{studentId:'1001'}) set x:男生 return x  //添加一个标签
match(x:学生{studentId:'1001'}) set x:男生:团员 return x  //添加多个标签

4、查询操作

①. 根据节点属性查找对应节点:

match(x:Student{studentId:'1001'}) return x

或者

match(x:Student) where x.studentId='1001' return x

②. 根据关系查找节点

match (x)-[r:教学内容]-(y) where r.课程='语文' return x,r,y

③. 查询单独的节点,即:与其他任何节点没有任何关系

match(x) where not (x)-[]-() return x

④. 查询N层关系的节点:

match q=(x)-[*5..8]-() return q limit 200 //这个为查询5到8层关系的
match q=(dh)-[r]-(jq)-[rr]-()-[]-()-[]-()-[]-()-[]-()-[]-() return q limit 400

⑤. 查询节点关系数个数:

match(dh:`学生`)-[r]-(jq:`老师`) with dh, count(r) as dhs where dhs > 2 return dh

⑥. 查询节点个数:

match(x) return count(x)

⑦. 查询所有的关系类型:

CALL db.relationshipTypes()

⑧. 查询所有的节点标签:

CALL db.labels()

⑨. 查询节点关系种类:

CALL db.schema()

⑩. 最短路径查询

MATCH (x:电话{hm:"02711111111"}),(y:电话{sjdbh:"025111111111"}),p=shortestpath((x)-[*..10]-(y))RETURN p

⑪. 查询不存在某个属性的节点

match(x:电话) where x.repeat is null with x match p=(x)-[r*1..5]-(y) return p

⑫. 查询存在关联到某一个节点具有相同属性的其他的节点

match p=(x)-[]-()-[]-(y) where x.name=y.name return p

⑬. 查询两个节点之间存在多个关系的节点

match p=(x)-[r1]-(y)-[r2]-(x) where id(r1)<>id(r2) return p

⑭. 查询某一个节点具有m到n层关系的所有的节点

match q=(x:学生)-[*1..5]-() where x.no ='201921011XXXX' return q  //查询某学生有关系的节点,最多五层关
match (x)-[r:介绍]-(y) where x.name='有向图' return y

四、Python操作Neo4j

首先,需要安装Python环境,参考我之前写的的这篇文章。
https://blog.csdn/sjjsbsbbs/article/details/119853477?spm=1001.2014.3001.5502,下载好后,打开anaconda promote

然后创建一个虚拟环境:

conda create -n Neo4j python=3.7

创建好后进入到这个环境中:

activate Neo4j

接着进行安装py2neo库:

pip install py2neo -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装好后输入代码测试一下:

from py2neo import Node, Graph, Relationship, NodeMatcher,Subgraph
from py2neo.matching import *


如果不报错,则说明安装成功了,至此,Neo4j环境配置就告一段落。

本文标签: 数据库PythonNeo4j