6

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

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

足りない部分は時間です。非常に人気のある画像を常にホームページに表示したくありません。簡単な解決策は、結果セットを過去24時間に制限することだと思います。ただし、画像の回転を1日中継続させるために、時間はオフセットが画像の並べ替えに影響を与えるある種の変数である可能性もあると思います。

具体的な質問:

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

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

4

4 に答える 4

2

一定の時間が経過すると、各アイテムの「有効カルマ」を減らす機能を使います。これはエリックの方法に少し似ています。

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

effective karma = karma * (1 - percentage_decrease)

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

percentage_decrease = min(1, number_of_hours_since_posting / 24)

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

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

于 2010-04-26T19:01:02.367 に答える
1

最初の質問では、もう少し複雑な方法を使用します。ミックスには「いつものお気に入り」が必要です。ただし、時間だけではなく、画像の実際のビュー数を確認してください。誰もがログインして投票するわけではありませんが、それによって画像の人気が低下することはありません。2年前に10票と10万回の視聴回数を記録した画像は、1年前に100票と1千回の視聴回数を記録した画像よりも明らかに重要です。

2番目の質問では、はい、フロントページで何らかのキャッシュを実行する必要があります。これは、サイトへのエントリポイントを作成するための多くのクエリです。ただし、SOと同様に、サイトの種類によっては検索エンジンを介して内部ページにトラフィックが集まる傾向があります。そのため、あらゆる場所でクエリを監視/最適化してみてください。

3番目の質問では、時間以外の要因(つまり、ビューの数)を確認することで、常に完全で動的なページを確保できます。フロントページのページ付けについてはよくわかりません。タグや検索にユーザーを誘導する方が良い戦略かもしれません。

于 2010-04-26T18:46:45.780 に答える
0

時間を考慮した「調整済みカルマ」タイプのフィールドを計算するだけで済みます。

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

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

于 2010-04-26T18:46:25.540 に答える
0

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

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

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

于 2010-04-26T18:53:02.413 に答える