2017-07-03 180 views
2

我一直试图使用neo4j及其apoc进程库来获得2个节点之间的最短路径。
例如我创建2个节点,如下Apoc Dijkstra在计算最短路径时在两个方向上遍历

CREATE (:Point {title:'A'}) 
CREATE (:Point {title:'B'}) 

然后我建立它们作为这样

MATCH (u1:Point {title:'A'}), (u2:Point {title: 'B'}) 
CREATE (u1)-[:distance {value:10}]->(u2) 

现在我已经建立从A到B的有向关系,而不是相反的关系。 因此,当我打电话APOC Dijkstra算法如下

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

我不应该得到任何结果作为他们的是从B到A没有直接路径,但我得到了相同的结果,当我使用运行查询从A到B的路径。

有人能告诉我为什么是这样吗? Dijkstra为什么不理会方向?任何帮助将非常感激。

回答

2

您需要将><添加到查询中的关系类型。

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

非常感谢。我不知道是不是因为我对Neo4j没有经验,但是我在apoc文档中找不到任何这样的细节。 – MrRo