我正在尝试运行这两个密码查询,我不理解它们之间的区别。这里的目的是在给定的两个节点之间找到多条路径,使得该路径中的transit_time之和按升序排列。
Q1:
MATCH p =(:`ml` { placeId: 960 })-[:ETA*0..10]->(:`ml` { placeId: 814 })
return p, p as allshortestPaths,
REDUCE(time=0, r in relationships(p) | time+r.transit_time) AS totalTime
ORDER BY totalTime ASC
Q2:
MATCH (from:`ml` { placeId: 960}), (to: `ml` {placeId: 814}) ,
paths = allShortestPaths((from)-[:ETA*]->(to))
WITH REDUCE(time = 0, rel in rels(paths) | time + rel.transit_time)
AS totalTime, paths
RETURN (totalTime)
ORDER BY totalTime ASC
在此我从Q1
得到了最好的结果。这些操作也需要很长时间。
任何其他更好的方法可能是使用图算法?我认为有可能使用Dijkstra算法做任何有关如何指定cost_parameter的帮助以及如何使用将是很好的。
我正在使用py2neo和neo4j。
答案 0 :(得分:0)
Neo4j有一个integrated tool to explain queries,事实上它不是在解释而是分析。
您还可以找到here有关执行计划的一些文档,以解释每个操作。