Neo4j图形数据库 - 伦敦地铁规划器 - 路径未找到

3
我已在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(Piccadilly线上从Wood Green出发的下一个车站),我会得到“未找到结果”的答复。节点“Bounds Green”存在,Wood Green和Bounds Green之间的关系也存在。
我无法想象这是链中节点数量的限制。但我在使用Neo4j方面没有太多经验,有点卡住了。
非常感谢您提供任何见解。
-ifor

1
请提供更改后的查询以及您的数据库(不应该很大)。链的限制是15,但是您可以使用(a)-[*..30]->(b)来增加它。 - Michael Hunger
太棒了,谢谢Michael。我以为[*]会给出一个无限的链。改成[*..30]解决了问题。再次感谢。 - iforwms
1个回答

2

正如Michael所提到的,当运行一个(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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接