【发布时间】:2017-09-21 17:28:41
【问题描述】:
我正在尝试遍历图表以跟踪特定节点的沿袭。我希望我的查询以广度优先模式产生该节点的先行词。注意,每个节点可以有多个父节点。图表可以有很多层,我想查看给定节点的所有级别的结果。我正在尝试遵循this 配方,但遇到了异常没有这样的属性:收集。我正在 gremlin 控制台版本 3.3 上尝试此操作
【问题讨论】:
标签: graph gremlin tinkerpop graph-traversal
我正在尝试遍历图表以跟踪特定节点的沿袭。我希望我的查询以广度优先模式产生该节点的先行词。注意,每个节点可以有多个父节点。图表可以有很多层,我想查看给定节点的所有级别的结果。我正在尝试遵循this 配方,但遇到了异常没有这样的属性:收集。我正在 gremlin 控制台版本 3.3 上尝试此操作
【问题讨论】:
标签: graph gremlin tinkerpop graph-traversal
使用barrier() 步骤 (Apache TinkerPop 3.3 docs)。例如:
gremlin> g.V().sideEffect{println "first: ${it}"}.barrier().sideEffect{println "second: ${it}"}.iterate()
first: v[1]
first: v[2]
first: v[3]
first: v[4]
first: v[5]
first: v[6]
second: v[1]
second: v[2]
second: v[3]
second: v[4]
second: v[5]
second: v[6]
Stephen 在gremlin-users post 中对 BFS 进行了另一个很好的描述。
首先,让我们假设一个没有优化的 Gremlin 语言 - 做:
g.V().out().out()将导致深度优先搜索。您可以使用 barrier() 强制 BFS:
g.V().out().barrier().out()这基本上会在进行下一步之前强制排水之前的步骤。
【讨论】: