【发布时间】:2021-09-21 18:32:56
【问题描述】:
我需要使用 bfs 从某个顶点获取给定深度的子图。我尝试过类似于以下的代码
MATCH (p:Node {id: '1'}) CALL apoc.path.subgraphAll(p, {minLevel: 0, maxLevel: 1}) YIELD nodes, relationships RETURN nodes, relationships;
但与密码查询(neo4j 4.3.3)相比,它似乎非常慢。在 neo4j 中使用 bfs 获取子图的最佳方法是什么?
【问题讨论】:
-
你能分享你与之比较的密码查询吗?
-
查询返回所有直接邻居可能看起来像 MATCH q=(:Node {id: '1'})-[:Edge*0..1]-(:Node) return nodes(q ), 关系 (q)。对于深度 2 [:Edge*0..2]。它会返回比 bfs 更多的数据,因为它会返回所有路径,而不仅仅是图形,但即便如此它的运行速度也更快。