2013-06-12 22 views
1

我仍然在學習Neo4j的線索,並試圖決定它是否是我需要解決的問題的正確工具。我的目標是計算從一個節點到某組節點中的每個節點的距離。到目前爲止,我想是這樣的:使用shortestPath()查找兩步查詢是找到從一個節點到多個節點的最短路徑的最有效解決方案?

START n = node:node_auto_index(name="Animals") 
MATCH ppl:person 
WITH n, ppl 
MATCH p = shortestPath(n-[*]-ppl) 
RETURN length(p), ppl 

(我正在做一個sample dataset「朋友的朋友」,最早標記所有的人以:person

的問題是:這個查詢是否會在一次遍歷中完成,或者Neo4j是否必須遍歷所有節點ppl,增加計算成本與ppl中節點的數量成線性關係?有沒有更好的方法來做到這一點?

+1

ppl:person是什麼意思? –

+3

在Neo4j 2.0中,這是一種告訴它匹配標籤的方法。所以這就是說ppl節點應該有一個人的標籤。 – Nicholas

回答

0

您所要求的是計算從n到標籤:person的所有節點的最短路徑。當然,這隻會隨着您的人員節點數量的增長而線性縮放,您還將獲得越來越多的最短路徑。

相關問題