上篇文章簡(jiǎn)單的構(gòu)造了一個(gè)知識(shí)圖譜,但是其中包含了許多重復(fù)的結(jié)點(diǎn),看起來也非常亂,不清晰??茖W(xué)上網(wǎng)之后,發(fā)現(xiàn)了一個(gè) apoc 的工具,關(guān)于 apoc 是什么如何安裝,這篇文章有很好的介紹 Neo4j:入門基礎(chǔ)(三)之APOC插件_Dawn_www的博客-CSDN博客_apoc neo4j,應(yīng)下載與neo4j相應(yīng)版本的jar包Releases · neo4j-contrib/neo4j-apoc-procedures · GitHub
于是乎我根據(jù)步驟操作完之后,檢驗(yàn)是否安裝成功,這樣就是安裝成功了,代碼跑起來也沒有報(bào)錯(cuò)不過重復(fù)結(jié)點(diǎn)并沒有刪除。
graph.run('MATCH (n:sex) WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count WHERE count > 1 CALL apoc.refactor.mergeNodes(nodelist) YIELD node RETURN node')
?在neo4j啟動(dòng)的時(shí)候,有這樣一個(gè)語句,但是上網(wǎng)查找并沒有找到合適的解決辦法,所以這個(gè) apoc 工具暫且擱置,后面再研究。
APOC couln't set a URLStreamHandlerFactory since some other tool already did this (e.g. tomcat). This means you cannot use s3:// or hdfs:// style URLs in APOC. This is caused by a limitation of the JVM which we cannot fix.
繼續(xù)科學(xué)上網(wǎng)之后,最后發(fā)現(xiàn)了 merge() 方法,相見恨晚。(以后還是要多去看看源碼或者官方文檔)。使用的時(shí)候程序報(bào)錯(cuò)如下命令:
Primary label and primary key are required for MERGE operation
這個(gè)是因?yàn)閜y2neo版本語法的問題??丛创a可以解決。
create 和 merge的主要區(qū)別就是,create不會(huì)去判斷節(jié)點(diǎn)中是否有重復(fù)數(shù)據(jù),只是添加;而merge等于是create+match,如果節(jié)點(diǎn)中有重復(fù)數(shù)據(jù),就不會(huì)添加進(jìn)去。
基于上一篇文章py2neo連接知識(shí)圖譜(包含代碼,導(dǎo)入csv文件)_想不出叫啥名的博客-CSDN博客修改的去重復(fù)結(jié)點(diǎn)代碼
import csv
from py2neo import *
graph = Graph("http://localhost:7474", auth=('neo4j','neo4j'))
graph.delete_all()
with open('data.csv', 'r') as f:
reader = csv.reader(f)
data = list(reader)
print(data[1]) # 測(cè)試
for i in range(1,len(data)):
node = Node('person', id = data[i][0], name = data[i][1], age =data[i][2])
relation = Node('address', name = data[i][4])
relation1 = Node('sex', name = data[i][3])
graph.create(node)
graph.merge(relation, 'address', 'name')
graph.merge(relation1, 'sex', 'name')
address = Relationship(node, '居住地', relation)
sex = Relationship(node, '性別', relation1)
graph.create(address)
graph.create(sex)
print("創(chuàng)建成功")
neo4j可視化效果:
很明顯,調(diào)理更加清晰了?
?文章來源地址http://www.zghlxwxcb.cn/news/detail-411445.html
?文章來源:http://www.zghlxwxcb.cn/news/detail-411445.html
?
到了這里,關(guān)于py2neo創(chuàng)建知識(shí)圖譜合并結(jié)點(diǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!