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 3

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