Поиск пути в Гремлине до заданного расстояния - PullRequest
0 голосов
/ 27 июня 2018

Я хочу найти пути между двумя вершинами, пока я не найду путь или расстояние не превысит заданное значение (скажем, 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

Я нашел этот вопрос ( Ограничение глубины запроса по кратчайшему пути с использованием Gremlin на JanusGraph ), который помог бы мне. Но пока нет ответа.

1 Ответ

0 голосов
/ 27 июня 2018

Вам просто нужно добавить еще одно условие разрыва в 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()
...