2017-04-04 22 views
0

我想把兩個給定節點(下面例子中的藍色和紅色節點)之間的「連通性」的查詢放在一起。Neo4J計算一個節點的「連通性」

如果直接連接到紅色,藍色節點的連通性爲1.0,如果它沒有連接到紅色(直接或傳遞),則連接性爲0.0。

該算法是遞歸的。對於給定的子樹,「連通性」是根據其直接連接節點的平均「連通性」值計算出來的。

您的幫助將不勝感激。另外,如果你能發現算法本身存在明顯的缺陷,我願意提供建議。

Examples

回答

4

假設您的開始/結束節點具有標籤Foo(和id價值12,分別),和你的關係是BAR型的,下面會發現所有路徑的「連通」他們之間:

MATCH p=(:Foo {id:1})-[:BAR*]->(:Foo {id:2}) 
RETURN 
    REDUCE(s = 1.0, n IN NODES(p)[0..-1] | s/SIZE((n)-->())) AS connectedness, 
    p 
+0

非常感謝@cybersam - 您的解決方案是非常有幫助的,並且已經向我介紹了一些新的Cypher語法,將在其他查詢證明是有用的太 –