ポピュラーでウェブサイトの結果をソートするアルゴリズムを探しています。Redditのように古いポストほど投票力が低い/スコアがあります。ここでポピュラーなウェブサイトのポピュラー崩壊アルゴリズム
はのredditで使用されるような一般的に受け入れられているソリューションです。
t = (time of entry post) - (Dec 8, 2005)
x = upvotes - downvotes
y = {1 if x > 0, 0 if x = 0, -1 if x < 0)
z = {1 if x < 1, otherwise x}
rank = log(z) + (y * t)/45000
私はRedditにのアルゴリズムの上になって、それが1つの状況にフィットしますが、私が本当に必要なことは2つのアルゴリズム、人気の記事のためのものですしましたそして今後の記事のための別:
- 人気の投稿
- 今後の記事
人気が次第に低下し、若干古い投稿に多くの重みを与えます。今後の投稿は今日のポピュラーな記事にもっと集中し、N時間/日後には急落します。
私はhugly複雑なアルゴを書くことができないと私は、次の機能へのアクセス権を持っているので、私はスフィンクスの表現を使用して、これを書いている:
http://sphinxsearch.com/docs/current.html#numeric-functions
だから私はポストごとに以下のデータを持っています:秒で
- ポスト年齢
- 投稿
Exponent = 0.01 (Popular), 0.5 (Upcoming)
SecondsSincePublised = abs(CurTimeInSecondsSinceDate-PubTimeInSecondsSinceDate)
Rank = (log10(PostScore)*10000)/pow(SecondsSincePublised,Exponent)
が:
はここに私の現在のソリューションです。ここ数時間の新しくポピュラーな投稿は、人気があり、今後も人気が高く、実際には私が望むものではありません。
私は指数コンポーネントを変更して減衰を調整することができる別のアルゴリズムをお勧めしますか?
を参照してください、私はそれをローカルに実装し、私が得る結果の種類を見るつもりです。 – antfx