2013-02-15 3 views
0

Я построю graphe таким образом: узлы представляют: busStops, а отношение представляет собой шину, соединяющую шины друг с другом.Cypher query shortest path

Тип отношений соответствует времени, необходимому для перехода от узла два другого.

Когда я запрашиваю график (спасибо cypher), чтобы получить shortestPath между двумя, которые, возможно, не связаны, результатом является тот, где число используемых отношений является наименьшим.

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

ответ

8

Во-первых, вы делаете это неправильно. не используйте уникальный тип отношения для каждого времени. используйте один тип отношения, а затем поместите свойство «время» на все отношения.

второй, для расчета того, вы можете использовать эту формулу Cypher:

START from=node({busStopId1}), to=node({busStopId2}) 
MATCH p=from-[:LINE*]-to //asterix * means any distance 
RETURN p,reduce(total = 0, r in relationships(p): total + r.time) as tt 
ORDER by tt asc; 
+0

Нет, тип отношения является ИНТ как 2 или 3 значение в минутах. –

+0

вы должны изменить это. просто имеют только 1 тип отношения и помещают эти минуты в свойство отношений. – ulkas

+0

Тип отношения - это просто имя, оно не может быть int, и вы не можете делать вычисления по его значению – ulkas