[英]neo4j cypher text as a graph refactoring
我们有一个图数据库,其中文本作为图。 在系统中,分页符用(pb)-节点表示。 现在,我想用(页面)节点指向页面的开头和结尾来对页面进行建模。
带有单词的w节点的图形中的文本示例(n属性为增量式):
(pb {n:1})-[:NEXT]->(w)-[:NEXT]->(w)-[:NEXT]->(w)-[:NEXT]->
(w)-[:NEXT]->(pb {n:2})-[:NEXT]->(w)-[:NEXT]->(w)-[:NEXT]->
(w)-[:NEXT]->(w)-[:NEXT]->(pb {n:3})-[:NEXT]->(w)-[:NEXT]->
(w)-[:NEXT]->(pb {n:4})
结果应为这些节点添加一条边:
(pb {n:1})-[:FIRST_CHILD-OF]->(Page)<-[:FIRST_CHILD-OF]->(pb {n:2})
(pb {n:2})-[:FIRST_CHILD-OF]->(Page)<-[:FIRST_CHILD-OF]->(pb {n:3})
(pb {n:3})-[:FIRST_CHILD-OF]->(Page)<-[:FIRST_CHILD-OF]->(pb {n:4})
任何帮助都会很棒。
这是我找到的答案(使用来自这里的信息: 如何以不友好的方式在cypher中找到路径 )
// Find pb tags
MATCH (t1:pb})
WITH collect(t1) AS tags
// create unique pairs
UNWIND tags AS x UNWIND tags AS y
WITH x, y WHERE ID(x) < ID(y)
AND y.n = x.n+1
// create nodes and edges
CREATE (p:Page)
MERGE (y)<-[:FIRST_CHILD_OF]-(p)-[:LAST_CHILD_OF]->(x)
RETURN *;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.