私はこのようなグラフを持っています
a-[:LIKES { 頻度:6 }]->アイス b-[:LIKES { 頻度:3 }]->ピザ など
このクエリを実行して、2 人が好む一般的な食べ物を見つけます。頻度属性を合計して食品のようなインデックスを作成すると、うまく機能します。
START b=node:node_auto_index(name='B')
MATCH p = b-[r1:LIKES]->stuff, someone_else_too -[r2:LIKES]->stuff
WITH b, someone_else_too, r1.frequency + r2.frequency AS likeIndex
RETURN likeIndex ,someone_else_too
ORDER BY likeIndex DESC
ただし、私がやりたいのは、2 つの頻度値の最小値 (合計の最小値ではない) を見つけることです。したがって、この min(r1.frequency, r2.frequency) のようなものです。目標は、ペアの 1 つが特定の食べ物に非常に高い親和性を持っている場合に、好きなランキングを増加させる歪度を取り除くことです。
START b=node:node_auto_index(name='B')
MATCH p = b-[r1:LIKES]->stuff, someone_else_too -[r2:LIKES]->stuff
WITH b, someone_else_too, min(r1.frequency,r2.frequency) AS likeIndex
RETURN likeIndex ,someone_else_too
ORDER BY likeIndex DESC
ただし、Cypher はその構文を受け入れません。何か提案や回避策はありますか?ここでNeo4jコンソールを参照してください