映画と監督のグラフがあり、映画は共同視聴者によって互いに接続されているとしましょう。似たような監督、つまり一緒に観る傾向のある監督を探したい。
START n=node:index(Name="Steven Spielberg") MATCH n-->m--l<--o RETURN o;
これにより、関連するすべてのディレクターが取得されますが、それらを接続するパスの数で並べ替えるにはどうすればよいでしょうか? 映画間のタイの重みも考慮に入れることができれば、ボーナスポイント。
count(*) は、n で始まり o で終わるパスの数です。
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;
START n=node:index(Name="Steven Spielberg")
MATCH path=n-->m--l<--o
RETURN o
ORDER BY length(path);