是的,密碼可以做所有這些事情。
範圍查詢是這個樣子:
MATCH path=(a:MyNode { name: "Foo"})-[:myRelationshipType*1..20]->(b));
這就給了你所有的「B」的節點是1個20之間跳從與給定的關係類型MYNODE。匹配的路徑是一個變量,可以應用各種密碼功能。因此,對於每條路徑,您可以問它是多久,中間是什麼,等等。 cypher refcard顯示適用於路徑的函數,以瞭解您可以對它們執行的操作。
最短路徑搜索can be found here並在密碼中使用shortestPath
和allShortestPaths
函數。
如果你想從某件事物到圖中所有其他事物的最短路徑,你可以在一個查詢中做到這一點;最短路徑將從匹配「頭」節點和「尾」節點開始。在找到從一件事到其他事物的最短路徑的情況下,頭節點匹配將成爲您感興趣的節點,並且尾節點匹配將是「圖中的任何節點」。例如。 MATCH (a:MyNodeOfInterest), (b), p=shortestPath((a)-[*]->(b))
。所以你可以在一個查詢中做到這一點,,但,如果你想在一百萬個節點圖中找到最短路徑從一件事到一切,這將需要一些時間,無論你使用什麼圖形數據庫使用。
在性能方面,沒有人能真正準確地回答這個問題。這將取決於很多不同的因素,如:
- 總數據量
- 索引策略
- 您使用/濫用節點的標籤,和關係類型
- 路徑總長度
- JVM /內存/緩存配置。
謝謝你的回答。已經upvoted。但是a)範圍查詢實際上包括哪個節點處於該範圍內的最小距離的信息。如:a)節點c = 2hops,節點b = 3hops。關於最短路徑。我知道Neo4j給出了2個節點之間的最短路徑。但是當我想計算節點和所有其他圖形節點之間的距離時,這是否意味着我必須執行總共1M個查詢? – Alexandros 2014-10-02 14:32:52
更新回答解決您的其他問題。一探究竟。 – FrobberOfBits 2014-10-02 14:38:17
非常好。非常感謝你。這就是我需要知道的 – Alexandros 2014-10-02 14:39:45