Reddit算法

Hack News: SxiOP.png

Reddit: n1wNt.png

從數學角度兩者相差不大,但是從實際開發角度,第二種(reddit)模型要遠遠優於第一種模型。

第一種算法的分數是一個動態值,如果想排序有兩種途徑:

    select * from problems order by f(current_time, othor_value) desc limit 20;

很顯然,上面的排序無法利用索引。

還有一種辦法是每隔一段時間去計算一次所有條目的score值,這樣是可以利用索引排序的,但是排名不夠平滑。

Reddit的算法就完美解決了這個問題,無論什麼時間,score都是一個定植,只需要在相關因素有變動的時候去更新一下對應的score值。既可以利用索引,排序又平滑,並且簡單。

    select * from problems order by rank desc limit 20;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章