2013-05-12 156 views
3

比方說,我有一個電影和導演的圖表,其中電影通過共同觀衆彼此連接。我想找到類似的導演,即導演的電影傾向於一起觀看。Cypher按路徑數量排序

START n = node:index(Name =「Steven Spielberg」)MATCH n - > m - l < --o RETURN o;

這使我得到了所有相關的導演,但是如何通過連接他們的路徑數量來排列呢?如果我也可以考慮電影之間的關係,可以獲得獎勵積分。

回答

4

COUNT(*)是其具有n個開始和結束與鄰

START n=node:index(Name="Steven Spielberg") 
MATCH n-->m--l<--o 
RETURN o,count(*) 
order by count(*) desc; 

與重量的關係的路徑數

START n=node:index(Name="Steven Spielberg") 
MATCH path=n-->m--l<--o 
RETURN o,sum(reduce(sum=0,r in rels(path) : sum+r.weight)) as weight 
ORDER BY weight desc; 
0
START n=node:index(Name="Steven Spielberg") 
MATCH path=n-->m--l<--o 
RETURN o 
ORDER BY length(path);