2016-09-07 15 views
1

ユーザーの投稿がコメント、好きなもの、作成されたものである場合、どのようにコメントや好きな数、 〜に最低。すべてのユーザーの投稿を最高から最低まで

+0

これはあなたのデータ層です。投稿のランキングを表に追加し、日付とユーザー別にソートまたはグループ化します。また、コードと特定の問題に関する特定の質問を投稿することで、ここでより良い運を見つけることができます。 –

答えて

2

あなたが探しているのはRanked Feedsです。順位付けされたフィードは、アクティビティのカスタムランク付けを可能にします。独自の数式を使用して、各アクティビティのスコアを計算することができます。あなたの活動に必要な情報(たとえば、likes_countcomments_count)がある場合は、これを使用してフィードをランク​​付けすることができます。ここで

は、ランキング式の簡単な例です:

{ 
    "score": "likes_count + comments_count", 
    "defaults": { 
     "likes_count": 0, 
     "comments_count": 0 
    } 
} 

非常に一般的なアプローチは、活動の年齢でいくつかの人気のスコアを組み合わせることです。これを行うには、time decay関数の1つを使用し、結果に好きとコメントの合計を掛けることができます。例えば

{ 
    "functions":{ 
    "popularity_gauss":{ 
     "base":"decay_gauss", 
     "scale":"5d", 
     "offset":"1d", 
     "decay":"0.3" 
    } 
    }, 
    "defaults": { 
     "likes_count": 0, 
     "comments_count": 0 
    }, 
    "score":"popularity_gauss(time) * (likes_count + comments_count)" 
} 

例では、スケール、オフセット及び減衰パラメータでdecay_gauss関数を使用しています。選択したパラメータを使用すると、1日前のしきい値を超えたアクティビティのスコアが低下します。 5日齢の活動の場合、スコアは3分の1に減ります。

同期するデータ

我々はlikes_countcomments_countは明らかに時間の経過とともに変化している例で使用される2つのカウンター。ランキングフィードが機能するには、これらの値を同期させる必要があります。活動データはで更新できます。

注:アクティビティ更新APIは部分的な更新をサポートしていないため、アクティビティをトランザクション的に更新しないでください(例:ユーザーがlike - > APIコールを送信してカウンタをXからX + 1に更新) X秒ごとにバルクで更新されます。

のcrontabたとえば5分ごと:

*/5 * * * *  /path/to/script/update_activities_counters 
関連する問題