在给定距离内在 gremlin 中搜索路径
Search path in gremlin upto a given distance
我想找到 2 个顶点之间的路径,直到找到路径或距离超过给定值(比如 10)。
举个例子,说一个图 (A)->(B)<-(C)<-(D)<-(E)->(F)<-(G)<-(H)->(I)
。最大距离为 4。因此,如果我搜索路径 (A-E)
,我会得到 ABCDE
,但如果我搜索 (B-G)
,我会得到 "too far away"
。
我目前使用它来查找 2 个顶点之间的路径:
g.V(nodeID1).repeat(__.both().simplePath()).until(__.hasId(nodeID2)).path().limit(limit).toList()
顺便说一下,我正在使用 gremlin_python
我发现了这个问题 (Limiting depth of shortest path query using Gremlin on JanusGraph),这对我很有帮助。但目前还没有答案。
您只需要在 until()
中添加另一个中断条件:
g.V(nodeID1).
repeat(__.both().simplePath()).
until(__.hasId(nodeID2).or().loops().is(eq(4))).
hasId(nodeID2).limit(limit).path().toList()
如果列表为空,则在给定距离内找不到路径。
Python 编辑:
g.V(nodeID1).
repeat(__.both().simplePath()).
until(__.hasId(nodeID2).or_().loops().is_(P.eq(4))).
hasId(nodeID2).limit(limit).path().toList()
我想找到 2 个顶点之间的路径,直到找到路径或距离超过给定值(比如 10)。
举个例子,说一个图 (A)->(B)<-(C)<-(D)<-(E)->(F)<-(G)<-(H)->(I)
。最大距离为 4。因此,如果我搜索路径 (A-E)
,我会得到 ABCDE
,但如果我搜索 (B-G)
,我会得到 "too far away"
。
我目前使用它来查找 2 个顶点之间的路径:
g.V(nodeID1).repeat(__.both().simplePath()).until(__.hasId(nodeID2)).path().limit(limit).toList()
顺便说一下,我正在使用 gremlin_python
我发现了这个问题 (Limiting depth of shortest path query using Gremlin on JanusGraph),这对我很有帮助。但目前还没有答案。
您只需要在 until()
中添加另一个中断条件:
g.V(nodeID1).
repeat(__.both().simplePath()).
until(__.hasId(nodeID2).or().loops().is(eq(4))).
hasId(nodeID2).limit(limit).path().toList()
如果列表为空,则在给定距离内找不到路径。
Python 编辑:
g.V(nodeID1).
repeat(__.both().simplePath()).
until(__.hasId(nodeID2).or_().loops().is_(P.eq(4))).
hasId(nodeID2).limit(limit).path().toList()