Cypher查询列出所有断开连接的图Neo4j图DB?

时间:2013-04-28 11:42:30

标签: neo4j cypher

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)

1 个答案:

答案 0 :(得分:3)

这不是一个完整的答案,但我认为您应该(如果可以的话)退回此用例的Traversal Framework

Cypher关于匹配图表的特定部分,无论你想怎么做。 Traversal框架实际上是关于你想要如何遍历图表。

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

  1. 以您希望的方式标记节点组
  2. 将结果汇总到地图中(或者更多进化的内容),而不是