Cypher查询列出所有未连接的图形Neo4j图形数据库?

5
Neo4j图形数据库包含大约50,000个节点和> 50,000个关系。有一个主图包含大多数节点。但是,有几个图表尚未与主图连接。
为了连接各种图形以形成一个大的主图,我打算使用Cypher查询来列出按大小排序的路径或连接节点集合(最大的未连接图先)。
有几篇stackoverflow上的文章,例如:
- 查找图中所有未连接的子图,但不清楚如何使用Cypher解决它。 - 如何在neo4j中使用Cypher查找未连接的节点? 这里有一个代表问题的小例子图: 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运行时环境(构建1.7.0_17-b02)

在较低的级别上遇到了类似的问题,并得到了解决。https://dev59.com/6arka4cB1Zd3GeqPfpCB - Srinath Ganesh
1个回答

4
这不是一个完整的答案,但我认为您应该(如果可以的话)针对这种情况使用遍历框架
Cypher关注匹配图表的特定部分,无论您想如何操作。 遍历框架真正关注的是您想要如何遍历一个图。
在您的情况下,遍历比匹配图表更重要。 这是我的建议,使用遍历框架来:
  1. 按您想要的方式标记节点组
  2. 在此过程中将结果聚合到地图(或更复杂的内容)中

Rolf,遍历框架意味着使用Java或Groovy(或者可能是Jython)。我更喜欢使用Python / Py2Neo的REST API。 - Roman
据我所知,遍历也在REST API中公开暴露了(http://docs.neo4j.org/chunked/1.8.2/rest-api-traverse.html)。 - fbiville
哇,我不知道那个。会试一下。 - Roman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接