Skip to main content
 首页 » 编程设计

python之在给定距离内在 gremlin 中搜索路径

2025年05月04日23findumars

我想找到 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()