は、私は2つの列でユーザーを注文することができるようにしたい:信者の注文のPostgres
- ナンバー彼らが持っている私は、次の午前同じ次のユーザーの
- 数 - について類似
は、ここでこれは人々THAを選択し、今
SELECT COUNT(fSimilar.id) as similar_follow, COUNT(fCount.id) as followers_count, users.name FROM users
LEFT JOIN follows fSimilar ON fSimilar.user_id = users.id
AND fSimilar.following_id IN (
SELECT following_id FROM follows WHERE user_id = 1 // 1 is my user id
)
LEFT JOIN follows fCount ON fCount.following_id = users.id
WHERE users.name LIKE 'test%'
GROUP BY users.name
ORDER BY followers_count * 0.3 + similar_follow * 0.7 DESC
のための私のクエリです私と同じ人に従って、彼らの人気(フォロワーの量)も考慮する。これはInstagramの検索に似ています。
Iは、30%、70%又は0.7
によってsimilar_follow
、及びfollowers_count
を優先。しかし、followers_count * 0.3
は注文の完全性を提供しません。たとえば、1〜1,000万人のフォロワーを持つユーザーがいると、followers_count
が大きすぎるため、similar_follow
が小さすぎて注文に影響を与えません。
followers_count/500
ここで、500
は平均フォロワー数です。しかし、これはまだ注文のためにうまくいきません。
Iはfollowers_count
とsimilar_follow
を等しくする方法が必要なので、パーセンテージ(0.3
と0.7
)による乗算は、両方の値の差分を行います。 またhttps://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9#.wuz8j0f4wを見て、ウィルソンスコア間隔を見ていますが、私が2つの値(私は間違っているかもしれません)を扱うので、これが私の場合の正しい解決策であるかどうかはわかりません。
ありがとうございます。
クエリで 'FROM ...'句が見つかりません。 – wildplasser
'ORDER BY followers_count * 0.3 DESC、similar_follow * 0.7 DESC'は' ORDER BY followers_count DESC、similar_follow DESC'と同じです。この場合の係数は順序を変更しないためです。おそらく、あなたは 'ORDER BY followers_count * 0.3 + similar_follow * 0.7 DESC'を望んでいますか? – Abelisto
@wildplasser申し訳ありません私の悪い –