python教程 - neo4j查询关系



Cypher查询列出所有断开连接的图Neo4j图形数据库? (1)

Neo4j图形数据库拥有大约50,000个节点和> 50,000个关系。 有一个包含大多数节点的主图。 但是有几个图表还没有连接到主图表。

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

在stackoverflow上有几个帖子,如:

下面是一个代表问题的小例子图: Neo4j Console示例图

以下Cypher查询不能解决问题,但是是一个起点。 它列出了所有与主图不一致的节点。 它错过了将这些节点组合成节点的集合。 它工作在一个小图上。 在一个大图上,它只会在运行超过10分钟后才返回“undefined”。

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运行环境(build 1.7.0_17-b02)


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

Cypher是关于匹配图的特定部分,不管你想怎么做。 遍历框架真的是关于如何遍历一个图。

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

  1. 以您想要的方式标记节点组
  2. 将结果汇总在一张地图(或更多进化的东西)中