3 ms·
This is absolutely correct. The algorithm is meant to quickly drop posts from the top. Such that even if a post has a record vote score, it still will only rema
by jkyle 11y ago
This is absolutely correct. The algorithm is meant to quickly drop posts from the top. Such that even if a post has a record vote score, it still will only remain at the top for a few days.
The amix link above didn't load for me today, but I like this scienceblogs post on the algorithm.[1]
edit
It should also be noted that since reddit is open source, you can always dig right in! [2]
[1] http://scienceblogs.com/builtonfacts/2013/01/16/the-mathematics-of-reddit-rankings-or-how-upvotes-are-time-travel/ http://scienceblogs.com/builtonfacts/2013/01/16/the-mathemat...
[2] https://github.com/reddit/reddit/blob/master/r2/r2/lib/db/_sorts.pyx https://github.com/reddit/reddit/blob/master/r2/r2/lib/db/_s...
- ElvisMa 11y agonot only that, the ranking is also defined by the overall activity in the sub-reddit it is posted in. So you can see a post with fewer upvotes, posted later over a post which has a lot more upvotes posted earlier. Which means, even submissions to very small sub-reddits have a decent chance to be promoted to trending and to r/all even
- deleted 11y ago[deleted]
- jkyle 11y agoThe trending or 'hot' algorithm is a bit different than the "top" algorithm. I believe you're referring to the 'hot' algorithm which is meant to take velocity into account. Velocity tries to abstract away contextual factors like subreddit activity, number of votes, etc. and represent how quickly, relative to number of participants, a post is 'rising'. The 'top' algorithm, however, is purely a factor of total vote (up - down) + time.
- ElvisMa 11y agooh,... yes you are right :)
- pacofvf 11y agocpdef double _hot(long ups, long downs, double date): """The hot formula. Should match the equivalent function in postgres.""" s = score(ups, downs) order = log10(max(abs(s), 1)) if s > 0: sign = 1 elif s < 0: sign = -1 else: sign = 0 seconds = date - 1134028003 return round(sign * order + seconds / 45000, 7) here's the function in question, so yes a newer post with fewer votes than a minutes older post will remain on top.