У меня огромный (нециклический) граф, и я хочу найти все узлы, достижимые по отношению X
от данного узла.Тем не менее, я не хочу пересекать узел, имеющий определенный атрибут {attr:'donotcross'}
, поскольку это представляет собой дроссельную точку, которую я не хочу пересекать (т.е. это единственный узел, ведущий к смежному подграфу).
В настоящее времяСначала я выполняю поиск в ширину, используя тривиальный запрос Cypher, чтобы изолировать соседние узлы и python, останавливая рекурсию, как только достигаю этого конкретного узла.Это, однако, очень медленно, и я думаю, что использование чистого Cypher для изоляции этих узлов может быть быстрее.
Как выглядит запрос Cypher, возвращающий все подключенные узлы через X, но не пересекающий узел ссвойство attr:'donotcross'
?
Моя интуиция была бы
MATCH (n)-[:X*]->(inter)-[:X*]->(m) WHERE NOT inter.attr = 'donotcross' RETURN m
, где n - начальный узел.Однако это не работает, так как этот шаблон может сопоставить путь с запрещенным узлом, если между начальным и целевым узлом больше запрещенного узла.