人気コンテンツのDiggのような回転ホームページ、要因として日付をどのように含めるか?

StackOverflow https://stackoverflow.com/questions/2715941

  •  01-10-2019
  •  | 
  •  

質問

Webアプリケーションを共有する高度な画像を構築しています。ご想像のとおり、ユーザーは画像をアップロードしたり、他の人がコメントしたり、投票したり、お気に入りです。これらのイベントは、「カルマ」フィールドでキャプチャする画像の人気を決定します。

今、私は最も人気のある画像を表示するDiggのようなホームページシステムを作成したいと思います。私はすでに重み付けされたカルマスコアを持っているので、それは簡単です。私はそれを並べ替えて、最も価値のある20の画像を表示するだけです。

欠落している部分はです 時間. 。私は非常に人気のある画像が常にホームページにあることを望んでいません。簡単な解決策は、結果セットを過去24時間に制限することだと思います。ただし、画像の回転を1日を通して発生させるためには、そのオフセットが画像のソートに影響を与えるある種の変数になる可能性があると考えています。

具体的な質問:

  • 簡単なシナリオ(24時間以内に最高の画像のためにソートするだけ)またはより洗練された画像(ソートの一部としてDatetimeオフセットを使用)をお勧めしますか?後者にアドバイスする場合、これに対する数学的解決策に関する助けはありますか?
  • ホームページの画像をマークするためにスケジュールされたサービスを実行するのが最善ですか、それとも直接クエリをお勧めしますか(MySQLを使用しています)
  • 余分なメモとして、ホームページはページングをサポートする必要があり、静かな日には、常に「満たされた」ことを確認するために、前の日のエントリを含める必要があります。

私はコミュニティにこのアルゴリズムを構築するように頼んでいるのではなく、いくつかのアドバイスを探しているだけです:)

役に立ちましたか?

解決

特定の時間が経過した後、各アイテムの「効果的なカルマ」を減少させる関数を使用します。これはエリックの方法に少し似ています。

「効果的なカルマ」を減らす頻度を決定します。次に、この期間に基づいてカルマにスケーリング係数を掛けます。

effective karma = karma * (1 - percentage_decrease)

どこ percentage_decrease あなたの機能によって決定されます。たとえば、できます

percentage_decrease = min(1, number_of_hours_since_posting / 24)

それを作るために、各アイテムの効果的なカルマは24時間で0に減少します。次に、効果的なカルマを使用して、表示する画像を決定します。これは、0から実際の値の間のカルマを拡大するため、投稿してから時間を差し引くよりも、安定したソリューションです。最小は、スケーリングを0の下限に維持することです。1日に1回通過すると、値が1を超える値を取得し始めます。

ただし、これは厳格な意味での人気を考慮していません。ティムの答えは、厳格な人気(つまりページビュー)を考慮に入れる方法に関するいくつかのアイデアを与えます。

他のヒント

あなたの最初の質問のために、私は少し複雑な方法を使用します。ミックスに「史上最高のお気に入り」が必要になります。しかし、一人で行かないでください、実際の数で行きます ビュー 画像にはあります。誰もがログインして投票するわけではないが、それはイメージをそれほど人気にしていないことに留意してください。 10票と100Kビューの2年前の画像は、100票と1Kビューの1歳の画像よりも明らかに人にとって重要です。

2番目の質問では、はい、フロントページで何らかのキャッシングが行われたいと思っています。これは、サイトへのエントリポイントを作成するための多くのクエリです。ただし、そうであるように、サイトのタイプは、検索エンジンを介して内部ページにトラフィックを引き出す傾向があります。そのため、どこでもクエリを監視 /最適化してみてください。

3番目の質問では、時間以外の要因(つまり、一連のビュー)を使用すると、常に完全でダイナミックなページがあることを確認するのに役立ちます。フロントページでページングすることについてはわかりません。人々をタグや検索に導く方が、より良い戦略かもしれません。

時間をかける「調整されたカルマ」タイプのフィールドを計算するだけです。

adjusted karma = karma - number of hours/days since posted

その後、クエリで直接計算して並べ替えることができます。または、毎晩のプロセスなどで更新するデータベース内の実際のフィールドにすることができます。個人的には、それを更新する毎晩のプロセスを使用して、おそらくアルゴリズムを将来少し洗練されることを容易にするでしょう。

これ、私はそれを見つけました、 Lower bound of Wilson score confidence interval for a Bernoulli parameter

これを見てください: http://www.derivante.com/2009/09/01/php-content-lating-confidence/

2番目の例では、彼は時間を「鮮度要因」として使用する方法を説明しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top