2016-04-01 50 views
0

我想運行這兩個密碼查詢,我不理解它們之間的區別。此處的目的是在給定的兩個節點之間找到多條路徑,以使該路徑中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。

回答