基于投票的热门计数算法策略
类似基于投票的热门计数算法普遍应用在热门文章,热门评论等场景中,
典型的比如网易和今日头条的评论区,国外比如Hacker News和Reddit的主题排序。
一.Hacker News的排序算法
Hacker News是一个主题社区,用户可以为主题投票,根据得票数,系统自动统计出热门文章排行榜。 同时主题发表时间也会对排名产生影响,新发表的主题比旧的主题更容易得到好的排名。 Hacker News的排名算法是这样实现的:(p – 1) / (t + 2)^G其中, P表示帖子的得票数,减去1是为了忽略发帖人的投票。 T表示距离发帖的时间(单位为小时),加上2是为了防止最新的帖子导致分母过小(之所以选择2,可能是因为从原始文章出现在其他网站,到转贴至Hacker News,平均需要两个小时)。 G表示"重力因子"(gravityth power),即将帖子排名往下拉的力量,默认值为1.8。 从这个公式来看,决定帖子排名有三个因素: 第一个因素是得票数P。 在其他条件不变的情况下,得票越多,排名越高。 第二个因素是距离发帖的时间T。 在其他条件不变的情况下,越是新发表的帖子,排名越高。或者说,一个帖子的排名,会随着时间不断下降。 第三个因素是因子G。 它的数值大小决定了排名随时间下降的速度。 G值越大,排名下降得越快,意味着排行榜的更新速度越快。