Сложные свойства отношений в базе данных Neo4j
Я разрабатываю планировщик маршрутов на Neo4j для образовательных целей. Я разработал некоторый алгоритм по этому поводу, и я использую как запрос шифрования, так и Rest API в своем проекте. Но есть проблема, которая не устранена мной. Я пытаюсь вычислить различные маршруты от neo4j по dijkstra, shorttestPath и мой собственный алгоритм.
Например, есть несколько бессмысленных маршрутов, которые вычисляются из neo4j. Выходные данные многократно передают пользователю на другую шину, когда я использую алгоритм dijsktra в neo4j. Также, это аналогично с shorttestPath. Я хочу дать 5-кратный максимум передачи. Как я могу предотвратить эту проблему?
Кроме того, neo4j выдает выходные данные в следующем сегменте кода;
0 => array(
'Stop' => '1',
'StopID' => '163',
'StopName' => 'KALIHI-PALAMA BUS FACILITY',
'RouteID' => (int) **132**,
'RouteName' => 'Kalihi via School Street Express',
'RouteShortName' => 'W3',
'Relationship' => array(
'RouteID' => (int) 79,
'RouteType' => 'ROUTE',
'EndNode' => '1'
)
),
(int) 1 => array(
'Stop' => '0',
'StopID' => '4523',
'StopName' => 'KALIHI TRANSIT CENTER',
'RouteID' => (int) 1,
'RouteName' => 'Kaimuki-Kalihi',
'RouteShortName' => '**132**',
'Relationship' => array(
'RouteID' => (int) 1,
'RouteType' => 'ROUTE',
'EndNode' => '54'
)
),
(int) 2 => array(
'Stop' => '54',
'StopID' => '38',
'StopName' => 'S BERETANIA ST + OPP KALAKAUA AVE',
'RouteID' => (int) **2**,
'RouteName' => 'Waikiki-School-Middle',
'RouteShortName' => '2',
'Relationship' => array(
'RouteID' => (int) 2,
'RouteType' => 'ROUTE',
'EndNode' => '54'
)
),
(int) 3 => array(
'Stop' => '53',
'StopID' => '37',
'StopName' => 'KALAKAUA AVE + S KING ST',
'RouteID' => (int) **132**,
'RouteName' => 'Waikiki-School-Middle Limited',
'RouteShortName' => '2L',
'Relationship' => array(
'RouteID' => (int) 132,
'RouteType' => 'ROUTE',
'EndNode' => '53'
)
) ...
Нет смысла давать RouteID=2 Bus.Because, когда вы выходите из автобуса, вы можете снова сесть на ту же самую шину. Это не умно. Как я могу предотвратить это?
Я обычно использую код в следующем сегменте;
START n=node(5), m=node(45)
MATCH p=shortestPath(n-[r:ROUTE*..100]-m)
RETURN p
Спасибо, С наилучшими пожеланиями