4

Neo4j 图数据库包含大约 50,000 个节点和 > 50,000 个关系。有一个包含大多数节点的主图。但是有几个图(尚未)连接到主图。

为了连接各种图以形成一个大的主图,我打算使用 Cypher 查询来列出按大小排序的连接节点的路径或集合(首先是最大的断开连接图)。

stackoverflow上有几篇文章,例如:

这是一个代表问题的小示例图: Neo4j 控制台示例图

以下 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)

4

1 回答 1

3

这不是一个完整的答案,但我认为你应该(如果可以的话)为这个用例回退遍历框架

Cypher 是关于匹配图形的特定部分,不管你想怎么做。遍历框架实际上是关于您要如何遍历图形。

在您的情况下,遍历比要匹配的图形更重要。这是我的建议,使用遍历框架

  1. 以您想要的方式标记节点组
  2. 当您在地图上时,将结果汇总到地图(或更进化的东西)中
于 2013-04-28T17:42:33.890 回答