我在我的网站上使用reddit的排名算法,以便对“热门”和“不热门”进行排名。以下是reddit排名算法如何工作的简单解释:
https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9#.igk62pe0x
具体来说,这部分:
# Rewritten code from /r2/r2/lib/db/_sorts.pyx
from datetime import datetime, timedelta
from math import log
epoch = datetime(1970, 1, 1)
def epoch_seconds(date):
td = date - epoch
return td.days * 86400 + td.seconds + (float(td.microseconds) / 1000000)
def score(ups, downs):
return ups - downs
def hot(ups, downs, date):
s = score(ups, downs)
order = log(max(abs(s), 1), 10)
sign = 1 if s > 0 else -1 if s < 0 else 0
seconds = epoch_seconds(date) - 1134028003
return round(sign * order + seconds / 45000, 7)
然而,我发现,尽管这种算法效果很好,但它并没有像我希望的那样经常改变内容。
如何修改算法来执行此操作?我需要修改哪些数字或部分算法才能使我网站上的内容更频繁地更改?
答案 0 :(得分:1)
不是将seconds
除以45000,而是将其除以较小的数字,以便最近的帖子产生更大的影响,并且Feed会更频繁地更改。您还可以使用对数函数的基础进行调整,或使用具有不同增长率的函数,如平方根函数。