Связь базы данных графа Neo4j со свойствами

Я разрабатываю что-то для изучения графовых баз данных. Я нахожу кратчайший путь, который запрашивает в следующем сегменте:

start n=node(5),m=node(45) match p=shortestPath(n-[*..1000]->m) return p,length(p)

Но у меня проблема с этим. Этот запрос вернет кратчайший путь и не учитывается свойствами ROUTE. Я имею в виду, что я хочу получить кратчайший путь с отношением, если существует такое же свойство.

Узел A ==>: RELATION (ROUTE_ID = 180) ==> Узел B ==>: RELATION (ROUTE_ID = 180) ==> УЗЕЛ C ==>: RELATION (ROUTE_ID = 197)

Когда я вызываю обычную функцию кратчайшего пути, она дает мне отношения по случайным свойствам. Я хочу также сосредоточиться на свойствах. Какое ключевое слово для этого? Как я могу исправить эту проблему или как я могу улучшить этот запрос?

Спасибо.


person user3566301    schedule 08.05.2014    source источник
comment
Я не уверен, понимаю ли я вас ... Вы имеете в виду, что вам нужен кратчайший путь между двумя узлами, но с использованием только одного определенного типа для ссылок (например, только RELATION ссылки)? А также указать некоторые условия, которым должны удовлетворять ссылки (например, свойство p должно быть равно 6 или больше 14)?   -  person jdehesa    schedule 08.05.2014


Ответы (1)


Если все отношения со свойством ROUTE_ID имеют определенный тип отношения, скажем «ROUTE», то вы можете сделать это:

START n=node(5), m=node(45)
MATCH p=shortestPath(n-[:ROUTE*..1000]->m)
RETURN p,length(p);

В противном случае вы можете сделать так:

START n=node(5), m=node(45)
MATCH p=shortestPath(n-[r*..1000]->m)
WHERE all(x IN r WHERE has(x.ROUTE_ID))
RETURN p,length(p);

Первый подход должен быть намного быстрее.

person cybersam    schedule 08.05.2014
comment
На самом деле имеет смысл переместить ROUTE-ID в сам тип отношения, поэтому используйте ROUTE_180 как тип отношения: MATCH p=shortestPath(n-[:ROUTE_180*..1000]->m) - person Michael Hunger; 12.05.2014
comment
Вот о чем я говорю. Я не могу изменить свои типы отношений, потому что если я их изменю, я должен изменить весь свой алгоритм. Спасибо, cybersam. С наилучшими пожеланиями. - person user3566301; 12.05.2014
comment
Как насчет минимального количества ROUTE_ID. Я имею в виду, я хочу, чтобы минимальное количество RouteID было 5 или больше? - person user3566301; 05.06.2014