3

我对 Gremlin 很陌生。

我有一个 Pregel (GraphX) 算法,它正在执行以下操作:给定一个顶点列表,找到所有网络邻域,直到第 N 级(相邻顶点,以及与它们相邻的顶点,重复 N 次。这样之间的边数最远的顶点不超过N)

在 Pregel 中,这基本上只是从源顶点开始进行最短路径遍历,但在 N 次迭代后停止。

我如何使用 Gremlin (tinkerpop3) 实现相同的行为?

示例用例是 - 在社交网络中,查找所有朋友、朋友的朋友和个人朋友的朋友的朋友等……

这听起来像是一个非常常见的用例,但我找不到这样做的语法。

4

1 回答 1

2

一个可能的解决方案:

g.V(1, 2, 3).repeat(
  bothE().dedup().store('edges').bothV().dedup().store('vertices')
).times(2).cap('vertices', 'edges')

这将返回一个对象,其键vertices包含顶点数组,键edges包含边数组。

返回的顶点和边是具有 id ( 1, 2, 3) 的顶点的邻域,直到距离2

于 2015-12-08T13:43:19.293 回答