py2neo-neo4j同名节点合并以及neo4j配置等问题

py2neo-neo4j同名节点合并以及neo4j配置等问题

  • 1.neo4j配置问题
  • 2.neo4j同名节点合并问题
  • 3.neo4j节点更换标签问题

最近赶毕业论文,需要用neo4j构建知识图谱,遇到一些问题这里记录一下。

1.neo4j配置问题

像环境变量配置攻略有很多也较为简单,这里说一下配置好环境变量后可能出现的问题:
(1).Invoke-Neo4j : Could not find java at…

解决方法:找到neo4j安装目录bin\mannagent 下的get-Java.ps文件夹,这里是我的该文件路径D:\ECNU\neo4j-community-3.5.5\bin\Neo4j-Management\Get-Java.ps1,修改其中**$javaPath**,如下:
原: process
{
$javaPath = ‘’
$javaCMD = ‘’

修改为
process
{
$javaPath = ‘C:\Program Files\Java\jdk-15.0.2’
$javaCMD = ‘’

把jdk路径添加进去即可。

(2) 跳过账号验证等

打开neo4j.conf配置文件,我的:D:\ECNU\neo4j-community-3.5.5\conf\neo4j.conf,将
dbms.security.auth_enabled=true取消注释并将true改为false。***
dbms.connectors.default_listen_address=0.0.0.0 也要取消注释。

2.neo4j同名节点合并问题

注意:此方法面向neo4j3.5.4版本及之后。
此方法采用的是Nodematcher方法,原理很简单,看一遍代码就明白了,这里简单说一下:

首先可以先创建若干个节点,然后对每个节点进行遍历,遍历之前会采用该方法先判断当前节点是否与已存在节点重复,如果重复则跳过创建节点步骤,直接创建关系。重点注意的是当节点存在时,创建关系需要用Nodelist[0]来代替该节点。,具体请参考一下代码。

test.csv内容如图:
py2neo-neo4j同名节点合并以及neo4j配置等问题_第1张图片

from py2neo import Graph, Node, Relationship,NodeMatcher
import csv

# 连接neo4j数据库,输入地址、用户名、密码
graph = Graph("http://localhost:7474")
graph.delete_all()

node = Node('人物1',name= '毛泽东')
node2 = Node('人物2',name= '蔡和森')

graph.create(node)
graph.create(node2)

with open('test.csv', 'r') as f:
    reader = csv.reader(f)
    data = list(reader)
#遍历节点
for i  in  range(1,len(data)):
    matcher = NodeMatcher(graph)
    #nodelist[0]就代表当前遍历节点
    nodelist = list(matcher.match('人物1', name=data[i][0]))
    if len(nodelist) > 0:
        matcher = NodeMatcher(graph)
        nodelist1 = list(matcher.match('人物2', name=data[i][1]))
        if len(nodelist1)>0:
            print("两个都有")
            #尤为重要,采用nodelist[0]会跳过创建节点而直接建立联系,
            # 如果先node = ('人物1', name=data[i][0]),再Relationship(node, data[i][2], node2)还是会重复建立节点
            zhucong = Relationship(nodelist[0], data[i][2], nodelist1[0])
            graph.create(zhucong)

        else:
            cong = Node('人物2', name=data[i][1])
            graph.create(cong)
            zhucong = Relationship(nodelist[0], data[i][2], cong)
            graph.create(zhucong)
    else:
        zhu = Node('人物1', name=data[i][0])
        graph.create(zhu)
        matcher = NodeMatcher(graph)
        nodelist1 = list(matcher.match('人物2', name=data[i][1]))
        if len(nodelist1)>0:
            print('1没有2有')
            zhucong = Relationship(zhu, data[i][2], nodelist1[0])
            graph.create(zhucong)
        else:
            cong = Node('人物2', name=data[i][1])
            graph.create(cong)
            zhucong = Relationship(zhu, data[i][2], cong)
            graph.create(zhucong)

3.neo4j节点更换标签问题

示例:py2neo-neo4j同名节点合并以及neo4j配置等问题_第2张图片
py2neo-neo4j同名节点合并以及neo4j配置等问题_第3张图片
py2neo-neo4j同名节点合并以及neo4j配置等问题_第4张图片

如有疑问,欢迎留言。

你可能感兴趣的:(neo4j)