我正在尋找一種算法來根據流行度對網站結果進行排序..就像Reddit的所以年紀越大的帖子,它的投票/得分越低。受歡迎的網站帖子的流行度衰減算法
這裏是普遍接受的解決方案13759 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的算法,雖然它會適合一個情況,我真正需要的是兩種算法,一個熱門的帖子而另一個爲即將舉行的帖子:
- 熱門職位
- 即將帖子
熱門會衰減得更慢,給稍微老的帖子更多的重量,即將發佈的帖子將更多地關注熱門帖子,在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