格雷姆林中的搜索路径,直到指定距离

时间:2018-06-27 11:43:33

标签: python path gremlin janusgraph

我想找到2个顶点之间的路径,直到找到路径或距离超过给定值(例如10)为止。

例如,说一个图(A)->(B)<-(C)<-(D)<-(E)->(F)<-(G)<-(H)->(I)。而且最大距离是4。因此,如果我搜索路径(A-E),我将得到ABCDE,但是如果我搜索(B-G),我将得到"too far away"

我目前使用它来查找两个顶点之间的路径: 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),对我有帮助。但这还没有答案。

1 个答案:

答案 0 :(得分:4)

您只需要在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()