Neo4j Graph DB-планировщик лондонского метро-путь не найден
Я создал карту лондонского метро в Neo4j. станции связаны через: CONNECTED_TO отношения со значением времени, обозначающим, сколько времени проходит между остановками (на данный момент это случайные значения, которые я ввел для тестирования). Станции, расположенные на нескольких линиях, имеют узел для каждой линии, связанный отношением: PART_OF. Используя этот запрос:
MATCH (from {name:"Wood Green"}), (to {name:"Royal Oak"}),
p = shortestPath((from)-[*]-(to))
WITH REDUCE(time = 0, rel in rels(p) | time + rel.time) AS time, p
RETURN p, time
ORDER BY time ASC LIMIT 1
Я могу получить самый короткий путь ниже:
Этот маршрут проходит по 4 различным линиям, и ему удается найти маршрут не составит труда.
Если я изменю запрос, чтобы перейти с Royal Oak на Bounds Green (следующая станция на линии Пикадилли от Wood Green), я не получу результатов. Узел' Bounds Green ' существует так же, как и связь между Wood Green и Bounds Green.
Я не могу себе представить, что это ограничение на количество узлов в цепочке. Но у меня нет большого опыта в uing Neo4j, и я немного застрял.Любые идеи высоко ценятся, спасибо.
- ifor
1 ответ:
Как упоминал Майкл, при выполнении запроса
(a)-[*]-(b)
существует ограничение в 15 отношений между узлами. Изменение запроса на использование(a)-[*..30]-(b)
решило проблему.MATCH (from {name: "STATION_NAME_A" }), (to {name: "STATION_NAME_B" }), p = shortestPath((from)-[*..30]-(to)) WITH REDUCE(time = 0, rel in rels(p) | time + rel.time) AS time, p RETURN p, time ORDER BY time ASC LIMIT 1