我一直在尝试使用neo4j及其apoc进程库来获取2个节点之间的最短路径。
例如我创建了2个节点,如下所示
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无视这个方向?任何帮助将不胜感激。
答案 0 :(得分:3)
您需要在查询中为关系类型添加>
或<
。
MATCH (start:Point {title: 'B'}), (end:Point {title: 'B'})
CALL apoc.algo.dijkstra(start, end, 'distance>', 'value') YIELD path, weight
RETURN path, weight