Neo4j图数据库保存大约50,000个节点并且> 50,000关系。 有一个包含大多数节点的主图。但有几个图表尚未(尚未)连接到主图表。
为了连接各种图形以形成一个大的主图,我打算使用Cypher查询列出按其大小排序的连接节点的路径或集合(首先是最大的断开连接图)。
stackoverflow上有几个帖子,如:
以下是一个代表问题的小示例图: Neo4j Console example graph
以下Cypher查询无法解决问题,但却是一个起点。 它列出了所有那些不同于主图的节点。它错过了将这些节点组合成节点集合。它适用于小图。在大图上,它只在运行超过10分钟后返回“未定义”....
START s=node(3), n=node(*)
MATCH s-[*1..10]-m
WITH collect(m) as members, n
WHERE NOT n in members
RETURN DISTINCT id(n), n.name?
ORDER BY id(n)
LIMIT 10;
如何使用Cypher列出所有断开连接的(子)图?
环境: - Neo4j - 图形数据库内核1.9.M05 - Java - SE运行时环境(版本1.7.0_17-b02)
答案 0 :(得分:3)
这不是一个完整的答案,但我认为您应该(如果可以的话)退回此用例的Traversal Framework。
Cypher关于匹配图表的特定部分,无论你想怎么做。 Traversal框架实际上是关于你想要如何遍历图表。
在您的情况下,遍历比图表匹配更重要。这是我建议的,使用遍历框架