2016-01-22 71 views
1

我有一個非常大的(幾百萬個節點和更多的關係)嵌入Neo4J圖形數據庫。我正在使用Neo4J的2.1.5版本。我經常需要看看如何連接兩個節點。我使用GraphAlgoFactory來構建一個PathFinder,然後我調用findSinglePath。如果我構建一個Djikstra的路徑查找器,它的運行速度要比節點實際連接時運行ShortestPath路徑查找器要慢一個數量級。但是,如果沒有連接,ShortestPath將比DJikstra的運行速度慢。有人知道爲什麼它可能會像這樣?Neo4J PathFinder優化

另外,如何優化這些調用?當兩個節點未連接時,需要60-120秒才能確定。對我而言,這太慢了。

回答

0

什麼是你的網絡的程度分佈?

你可以過濾更強的rel-types,方向或屬性或節點之間的標籤嗎?只是爲了減少路徑的數量?

它也可能有助於使用不同的唯一性,例如,節點全球。

您應該提供預期長度的上限。

Dijkstra和最短路徑都是雙向的。

您也可以自己使用雙向移動器。

看到這個博客帖子:http://maxdemarzi.com/2015/11/20/bidirectional-traversals-in-space/

+0

平均度圖中的一個節點可能是某處大約20我在REL-類型,方向和標籤儘可能多的已經過濾,因爲我可以不破壞的目的遍歷。我確實提供了一個長度的上限,雖然它很長。 500.這是一個問題很難解決的情況,所以需要一段時間? – user1389906