我有一個在Neo中有5億個節點和邊的圖。我想找到避免超節點的2個節點之間的最短路徑(即使它們比具有超節點的路徑長)。Neo4j中沒有超節點的最短路徑
下面的查詢工作正常較小的圖形,但從來沒有完成對我處理大小的圖表:
MATCH (n:Node { id:'123'}),(m:Node { id:'234' }), p = shortestPath((n)-[*..6]-(m))
WHERE NONE(x IN NODES(p) WHERE size((x)--())>1000)
RETURN p
如果我刪除WHERE子句是超級快。通常是亞秒。
我該如何加快速度?預先計算節點度並索引它們會有幫助嗎?我是否應該複製所有與超節點相鄰的邊,並給它們一個新的標籤,並將它們用於我的shortestPath查詢而不使用WHERE子句?還有其他建議嗎?
會發生什麼事,如果你刪除標籤? (x) - ())> 1000) –
好點。道歉,我實際上在WHERE子句中沒有標籤測試它。第一個標籤有錯誤。第二個標籤似乎沒有任何區別。讓我更新我的問題以刪除標籤。作爲參考它最初看起來像這樣: WHERE NONE(x:Node IN NODES(p)WHERE size((x:Node) - ())> 1000) – Tom