2017-07-29 72 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 
相关问题