0

この Stack Overflow の質問を読んでいて、Ruby on Rails アプリケーションでデータの人気値を保存する一般的な方法は何だろうと考えていました。

私の考えでは、レギュラーモデルと、レギュラーモデルのデータを人気のでソートした人気モデルの2つのモデルを用意することを考えています。cronjob は、特定の間隔で後者のモデルにデータを取り込みます。

何かご意見は?

4

4 に答える 4

0

1 つの rake タスクを使用して人気を更新し、heroku スケジューラーで実行します。

于 2013-07-04T13:07:38.287 に答える
0

内容にもよるでしょうが、人気情報をカラムとしてモデルに格納できると思います。たとえば、人気順に並べ替えたい質問がある場合は、移行を実行できますAddPopularityToQuestions popularity:float

次に、設定した間隔でスクリプトを実行して (例: Whenを使用)、各質問の人気値を更新できます。ただし、それほど多くのアクティビティがない場合は、質問の人気度を変更する何かが発生するたびに、質問の人気度を更新する方が理にかなっている場合があります。たとえば、人気度が主に投票によって決まる場合、新しい投票があるたびに質問の人気度を更新できます。

于 2013-07-03T18:40:32.240 に答える
0

モデルに Popular_Score フィールドを使用し、人気のあるアイテムを返すスコープを使用します。たとえば、次のようになります。

def popular(count = 10)
  order('popularity_score DESC').limit(count)
end

スコアリング アルゴリズムによっては、統計を保持するために追加のモデルを追加する場合があります

class model_stats
  attr_accessor :statistic, :value
  belongs_to :model
end

これは、好みの人気アルゴリズムを使用して定期的に集計され、その結果がpopular_scoreに保存される、ビュー、up_votes、共有などの統計を保持できます。(cron などで開始される rake タスクとして管理)

私なら、popular_score がインデックス付きフィールドであることを確認します!

于 2013-07-04T22:15:47.367 に答える
0

人気は統計的なものだと思います。たとえば、過去 7 日間のビューなどです。使用する測定値は変更される可能性があり、使用する数式をユーザーが選択できるようになる場合もあります。

この場合、通常のモデルに属している統計モデルが必要であり、テーブルを結合して、関心のある人気測定値を取得できます。

于 2013-07-04T16:17:10.757 に答える