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;
Run Code Online (Sandbox Code Playgroud)
如何使用 Cypher 列出所有断开的(子)图?
环境: - Neo4j - 图形数据库内核 1.9.M05 - Java - SE 运行时环境(内部版本 1.7.0_17-b02)