0

私は自分のソーシャル サイト (多数のいいね! とコメントを含むアイテム) で、カスタマイズされたバージョンの Hacker News 人気アルゴリズムを使用しています。アルゴリズムは完全に機能しますが、アイテムのスコアを正しく更新する方法がわかりません (スコアをアイテム モデルにメタ データとして保存しています)。

現在、過去 9 日間にリストされたアイテムのすべての新しいいいねとコメントのスコアを更新しています。これは非常に遅く、リソースを大量に消費するため、スコアを最新の状態に保つためのより良い方法を探しています。問題は、時間の減衰を維持するために変更すると、すべてのアイテムに新しいスコアが必要になることです。これを行うためのより良い方法は何でしょうか? プロジェクトに Django を使用しています。

4

2 に答える 2

3

わかった。私はさまざまなアプリを使用してそれを行いました。まず、リンクにアクセスする頻度を追跡するために、githubに「dokterbob/django-popularity」または「thornomad/django-hitcount」をインストールする必要があります。

次に、オブジェクトが受け取った投票(いいねまたはお気に入り)の数を数える必要があります。そのためには、「brosner / django-voting」、「apgwoz/django-favorites」を試すことができます。

次に、このコード(django-populars )を使用してすべてをまとめる必要があります。まず、このコードを調べて、必要なコンポーネントをまとめる方法を理解するためにどのように機能するかを確認することをお勧めします。

于 2012-06-25T12:21:34.643 に答える
0

これを行うにはいくつかの方法があります。簡単な方法の 1 つは、アイテムに順番に番号を付け、各アイテムをその ID 番号の「ランク ID」で開始することです。投稿が高く評価されるたびに、そのランク番号を増やします (反対票の場合はその逆)。次に、ランク番号で並べ替えて、アイテムを正しく並べます。

もう 1 つのオプションは指数関数的減衰モデルです。これには定期的な更新が必要ですが、これらは投票に便乗することができ、実行しなければならないバッチ更新作業の量を減らすことができます。私はそれを実装することについての記事を書きましたhere . これは App Engine を対象としていますが、一般的には便利です。

于 2010-10-08T17:57:08.247 に答える