之前问题描述有问题。 重新描述,建立用户浏览网站的行为轨迹, 从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这里 已经有了关系 节点就是里面的每一个不同的页面名称。
(感谢大神的指导)
在导入时,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