Cypher查询最短路径

时间:2013-02-15 10:53:51

标签: neo4j cypher

我用这种方式构建了一个图形:节点代表:busStops,并且该关系代表连接公交车站的公交线路。

关系类型对应于从另一个节点开始所需的时间。

当我查询图形时(感谢cypher)得到两个可能没有链接的最短路径,结果就是使用的关系数最小的那个。

我想改变它,以便最短路径对应于两个节点之间使用的所有关系类型的添加(对应于时间)最小的路径?

1 个答案:

答案 0 :(得分:8)

首先,你做错了。不要每次都使用唯一的关系类型。使用一种关系类型,然后将属性“时间”放在所有关系上。

第二,要计算加法,你可以使用这个密码公式:

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;