2016-03-01 3 views
0

Мне нужно найти все пути между двумя узлами. Длина каждого пути должна быть между 1 и 5 (2 и 3 для этого примера).Neo4j - Производительность по запросу пути

Так я использую этот запрос:

profile match p = (a:Station {name : 'X'}) - [r*2..3] -> (b:Station {name : 'Y'}) return distinct p 

У меня есть индекс: станции (название)

но когда я профиль этого запроса у меня есть этот результат:

my query's profile Таким образом, проблема neo4j принимает все возможные отношения для этого узла B, а затем фильтрует имя. Это способ просто принять отношение, которое связано с этими двумя конкретными узлами?

+0

У вас есть различные типы отношений между этими узлами? Используете ли вы ярлыки для своих отношений? У вас есть индексы для свойства name? http://neo4j.com/docs/stable/query-schema-index.html – Supamiu

+0

Как сказано, у меня есть индекс на: Station (name) Каждый узел на моем графике - это станция Да, у меня есть 3 разных вида отношений , –

+0

О, не видел этого, мое плохое, а как насчет двух других вопросов? :) – Supamiu

ответ

1

Может быть, вы можете захотеть использовать allShortestPaths для этого, например:

PROFILE MATCH p=allShortestPaths((n:Person {name:'Ian Robinson'})-[r*1..5]–(b:Person {name:'Michal Bachman'})) 
RETURN p 

enter image description here

+0

Но какова на самом деле разница между кратчайшими путями и каждым путем? Я боюсь пропустить некоторые пути –

Смежные вопросы