Neo4j Graph DB - 伦敦地铁计划 - 未找到路径

时间:2015-03-18 04:30:01

标签: graph path neo4j

我在Neo4j创建了伦敦地铁的地图。站点通过以下方式连接:CONNECTED_TO关系,其中一个时间值表示停靠之间需要多长时间(此时这些是我为测试而放入的随机值)。多行的站点每行有一个节点,由:PART_OF关系连接。使用此查询:

MATCH (from {name:"Wood Green"}), (to {name:"Royal Oak"}), 
p = shortestPath((from)-[*]-(to))
WITH REDUCE(time = 0, rel in rels(p) | time + rel.time) AS time, p
RETURN p, time
ORDER BY time ASC LIMIT 1

我能够获得以下最短路径:  Shortest route from Wood Green to Royal Oak

此路线位于4条不同的线路上,并设法找到没有问题的路线。

如果我将查询更改为从Royal Oak转到Bounds Green(Wood Green的Piccadilly线上的下一站),我找不到任何结果。节点'Bounds Green'节点存在,Wood Green和Bounds Green之间的关系也存在。

我无法想象这是对链中节点数量的限制。但是我在使用Neo4j时没有太多经验,而且我有点卡住了。

非常感谢任何见解,谢谢。

-ifor

1 个答案:

答案 0 :(得分:2)

正如迈克尔所说,运行(a)-[*]-(b)查询时,节点之间的关系似乎有15个限制。更改查询以使用(a)-[*..30]-(b)解决了问题。

MATCH (from {name: "STATION_NAME_A" }), (to {name: "STATION_NAME_B" }), 
p = shortestPath((from)-[*..30]-(to))
WITH REDUCE(time = 0, rel in rels(p) | time + rel.time) AS time, p
RETURN p, time
ORDER BY time ASC LIMIT 1