2017-07-29 70 views
0

要找到neo4j中的最短路徑,我使用APOC庫中的Dijkstra算法。問題是請求只返回1個結果。是否有可能獲得5或10個最短路徑?或者我可以通過邊緣重量設置條件?例如,總長度超過500.Neo4j apoc dijkstra程序

MATCH (start:Point {title: 'Some Point 1'}), (end:Point {title: 'Some Point 5'}) CALL apoc.algo.dijkstra(start, end, 'distance', 'value') YIELD path, weight RETURN path, weight 

回答

1

如果你想有更多的控制,我會去一個純粹的密碼解決方案,而不是apoc程序。

前10:

MATCH p=(start:Point {title: 'Some Point 1'})-[rels:distance*]->(end:Point {title: 'Some Point 5'}) 
WITH p, REDUCE(weight=0, rel in rels | weight + rel.value) as length 
RETURN p, length 
ORDER BY length ASC 
LIMIT 10 

路徑,其中長度大於500:

MATCH p=(start:Point {title: 'Some Point 1'})-[rels:distance*]->(end:Point {title: 'Some Point 5'}) 
WITH p, REDUCE(weight=0, rel in rels | weight + rel.value) as length 
with p, length where length > 500 
return p, length 
LIMIT 10 
相關問題