使用Neo4j/Cypher,我有一個相當小的數據集(290個節點),只包含一種類型的標籤(:縣)。基於屬性計算的組節點
它們的性質是這樣的:縣({countyCode,countyName,人口})。 這裏有一個索引:County.countyCode
每個:縣與1 + N其他:縣有關的:ADJACENT_TO。
我試圖實現是要找到適合的羣體性質的給定值範圍內的各縣的組合(比如最小100000,最大120000)。三個或三個以上的縣
與查詢下面,我就得到了如發現對,但不是組合。
MATCH x = (a:County)-[:ADJACENT_TO]->(b:County)
WHERE reduce(totalPopulation = 0, n IN nodes(x)| totalPopulation + n.population) >= 100000
AND reduce(totalPopulation = 0, n IN nodes(x)| totalPopulation + n.population) <= 120000
RETURN x, b.countyName, a.countyName,
reduce(totalPopulation = 0, n IN nodes(x)| totalPopulation + n.population) AS reduction
的最終目標是要找到的給定的標準範圍內的降低,即,1個... N縣獨特組合:縣(y)和:縣(x)被聯合縣(Z),但不包括:縣(w),因爲它可能與縣(v)有不同的組合。
沒有縣可以組合,其中「核心」縣不直接存在:ADJACENT_TO定縣。
我很感謝任何答案和指引,以幫助我的方式。
編輯: 經過大量搜索我認爲什麼我想要實現的是所謂的「聚類分析」,但我一直無法弄清楚如何創建羣集(我所說的以上組) ,因此分析還有更遠的距離。也許這個術語有助於澄清我所追求的。
結果什麼是「核心」縣?你能舉一個例子說明你希望這個分組是如何工作的嗎? – cybersam
我並不知道在Cypher中生成所有可能的組合的方法,儘管我已經將它作爲對APOC過程的功能請求添加了。我認爲您的要求中較難的部分是根據不同城市使用的組合限制某個城市的組合。這肯定需要重新檢查,或者需要更好的定義限制應該如何工作。先到先得? – InverseFalcon
對不起,在自己的世界裏很容易失明。一個「核心」縣將是與所有其他縣相鄰的縣。 假設我們有縣A,B和C.A與B和C都相鄰,但B和C不是(必然)彼此相鄰。那麼A就是「核心」縣。 –