Как найти кратчайшие отношения между двумя узлами в neo4j? - PullRequest
2 голосов
/ 23 января 2020

У меня есть несколько отношений в моем графике. Я хотел найти кратчайшие отношения между двумя узлами.

У меня есть два типа узлов: 1.person 2.Company

и множество связей между этими узлами, такими как телефон, электронная почта, адрес , et c.

Вот снимок экрана моего графика

Я попытался сделать:
MATCH (r)-[q:*1..3]-(p) return type(q)
Но он выдал сообщение об ошибке :

Invalid input '*': expected whitespace or a rel type name (line 1, column 14 (offset: 13))

Я также пытался MATCH (r)-[*]-(p) return *, но это занимает бесконечное время. Я также попытался выполнить запрос с помощью индексации, чтобы ускорить процесс, но все же не повезло.

Пожалуйста, дайте мне знать, как найти кратчайший путь между узлами.

Ответы [ 2 ]

2 голосов
/ 23 января 2020

В этом запросе было 2 ошибки:

MATCH (r)-[q:*1..3]-(p)  return type(q)
  1. Двоеточие (":") должно использоваться только в шаблоне отношений перед именем типа. Поскольку в вашем случае вы не хотели указывать имя типа, вам нужно опустить двоеточие.
  2. Поскольку q используется в шаблоне пути переменной длины, его значением будет список отношений.

Вот запрос, который на самом деле должен возвращать то, что ваш запрос, казалось, пытался вернуть:

MATCH ()-[qs*..3]-()
UNWIND qs AS q
RETURN TYPE(q)

Теперь, если вы хотите найти кратчайший путь между двумя узлами (как указано в теме вашего вопроса), см. ответ @ DaveBennett (при условии, что он исправляет проблемы, о которых я упоминал в комментарии к своему ответу).

1 голос
/ 23 января 2020

Консультировались ли вы с Руководством по шифрам Neo4j по случайности на shortestPath?

https://neo4j.com/docs/cypher-manual/current/clauses/match/#query -shortest-path

Если вы хотите найти кратчайший путь ...

MATCH path=shortestPath((r:person {name: 'Sandeep Garg'})-[q*1..3]-(p:Company {name: 'Gopal Prjapati'}))  
RETURN path

Если вы хотите найти корабли в кратчайшем пути

MATCH path=shortestPath((r:person {name: 'Sandeep Garg'})-[q*1..3]-(p:Company {name: 'Gopal Prjapati'}))  
RETURN realtionships(path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...