Как заставить путь следовать за тем же свойством для переменного числа шагов - PullRequest
0 голосов
/ 09 ноября 2018
  • Я пытаюсь найти путь от s : от начала до f : до конца.
  • Узлы между ними являются сеткой перекрестков.
  • Отношения между каждым узлом имеют два свойства: name (str) и steps (int).
  • Когда путь пройден, имя необходимо повторить шагов раз, прежде чем использовать другое имя.

ПРИМЕР: с узла a У меня есть 3 исходящих отношения ({x, 2} {y, 3} { z , 4}).Чтобы добраться до b , путь может использовать z только если есть 4 (не больше, не меньше) z между a и б .

1 Ответ

0 голосов
/ 10 ноября 2018

Вы можете использовать условие на пути, который вы получите.

MATCH path = (start:Label {id:$id})-[rels*..20]-(end)
WHERE all(idx IN range(0,size(rels)-2)
      WHERE all(r2 IN rels[idx+1..(idx + (rels[idx]).steps)] WHERE (rels[idx]).name = r2.name))
RETURN path

Это будет намного проще и эффективнее в Java в пользовательском браузере / экспандере, чем в Cypher.

См .: блог @ maxdemarzi: https://maxdemarzi.com/2015/09/04/flight-search-with-the-neo4j-traversal-api/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...