поэтому я загрузил набор данных в Neo4j с чем-то вроде 10 MM узлов. Я ищу решение проблемы с двумя узлами, поиск кратчайшего пути, исключая подмножество типов отношений. Вот пример попытки запроса:neo4j оптимизация shortestpath большое количество узлов
match (p1:PT)-[*]-(p2:PT{src:"8"}),
p=shortestPath((p1)-[*..20]-(p2))
with p where p1.src is not null
and NONE (n in nodes(p) where labels(n) in [["X"],["Y"],["FX","RX"],["RX","FX"]])
return p limit 5000
Запрос длится вечно (эффективно). Насколько я понимаю, запрос будет принимать все пары p1, p2, для которых существует некоторая взаимосвязь, определить самый короткий путь между каждой парой, удалить кратчайшие пути, которые выходят из последнего предложения, и возвращать до 5000 таких путей, если они существуют.
Итак, я хотел бы знать, если 1) кто-то видит более эффективный способ сделать это, и 2) Если бы я хотел выбрать самый короткий путь из тех, которые удовлетворяют этому последнему предложению, как будет изменен запрос? Большое спасибо за любую помощь.
Спасибо, Уильям - все еще довольно вяло, я боюсь, но ваш запрос имеет смысл. –
У вас есть индекс на ': PT (src)'? –