Neo4j 相关问题!怎么合并相同节点?
发布于 7 年前 作者 yanyinxi 17966 次浏览 来自 问答

之前问题描述有问题。 重新描述,建立用户浏览网站的行为轨迹, 从a页面跳转到b页面(此时a是来源,b是当前url)让后有跳转了c页面(此时b是来源,c是当前url), 以此类推。

原始数据:关系.csv 来源url,当前url a b b c c d c d1 d e d e1

解决办法: 创建语句: –导入节点;网站名称 USING PERIODIC COMMIT 300 LOAD CSV WITH HEADERS FROM “file:///网址枚举url.csv” AS line
MERGE (a:名称1{url:line.url})

–导入关系:来源t–》原始t USING PERIODIC COMMIT 300 LOAD CSV WITH HEADERS FROM “file:///关系.csv” AS line
match (from:名称1{url:line.referrerurl}),(to:名称1{url:line.requesturl})
merge (from)-[r:访问1]->(to)

这样就ok了, 之前的问题是我把来源和当前url当成了两个节点来做了其实没有必要。 因为关系.csv这里 已经有了关系 节点就是里面的每一个不同的页面名称。

(感谢大神的指导)

2 回复

在导入时,merge 子句里面 只有在 已经存在 各个标签、属性、属性值 与当前 merge 后面描述的节点 完全相同的 情况下才不会重复创建多余节点。所以你要先整理数据源,保证csv中的每条数据相同的节点 要完全相同

如果已经生成了多余节点,要合并 相同的节点,可以使用存储过程apoc.refactor.mergeNodes,试试,比较好用 MATCH (n:Tag) WITH n.name AS name, COLLECT(n) AS nodelist, COUNT(*) AS count WHERE count > 1 CALL apoc.refactor.mergeNodes(nodelist) YIELD node RETURN node

合并关系呢,这个只合并了节点 有些关系是重复的

回到顶部