揭秘「热榜算法」:Hacker News、Reddit、IMDB 背后的排序之道

4 阅读4分钟

在信息爆炸的时代,什么内容值得被看到,不再是“编辑说了算”,而是算法决定。点赞、时间、点击量,这些看似简单的数据,在背后构建出复杂的热度排序逻辑。

今天,我们来扒一扒那些耳熟能详的网站,如 Hacker News、Reddit、IMDB,是如何让“热门”变得可计算的。


一、Hacker News:为什么你的帖子火不起来?

Hacker News 是极客们钟爱的资讯社区。它的排序算法乍一看很简单,只有点赞(没有踩),但是热度排名却非常“滑溜”。

🔢 排名核心公式:

Score = (P - 1) / (t + 2)^1.5
  • P 是点赞数
  • t 是发帖以来的小时数

这里的「-1」意在剔除“自己给自己投票”的影响,而「+2」是为了避免新帖一开始被严重加权。

🔍 重力因子 G(如1.5)决定了内容“掉榜”的速度。G 越大,内容越快被替代,榜单更新频率更高。

🧠 为什么不适合电商?

新闻讲求“新”,而电商更在意“热”。所以你会看到:

Score = Σ(订单量 × α^t)
  • α 是时间衰减因子,0 < α < 1
  • t 是订单距离当前的天数

衰减的核心在于:一周前的销量比昨天的权重小得多。这个公式更加关注“持续热销”而非“刚上新”。


二、Reddit:点赞 vs 点踩,一个都不能少

Reddit 允许投反对票,因此其排序考虑了「投票倾向」:

🔢 Reddit 热榜公式:

Score = log10(|ups - downs|) + sign * (发布时间戳 - 常量) / 45000
  • 对数部分削弱大票仓的影响
  • 时间项强化新帖优先级

⚠️ 时间单位是秒,每过一天,新帖得分会天然 +2。老帖想保榜,必须投票量翻倍。

Reddit 背后的哲学:每个时间段都有自己的“热点”,你很难与昨天的红人贴竞争。


三、评论系统:点赞≠好评

仅凭点赞数来排序评论靠谱吗?来看看这组数据:

  • A:550好评,450差评 → 好评率55%
  • B:60好评,40差评 → 好评率60%

绝对值和比例对结果判断完全不同。更糟的是:

  • C:1好评,0差评 → 100%
  • D:9好评,1差评 → 90%

C 真比 D 好?

这时候就得引入统计学的「威尔逊置信区间」:

def wilson_score(ups, downs):
    n = ups + downs
    p = ups / n
    z = 1.6  # 置信度95%
    return (p + z*z/(2*n) - z * sqrt((p*(1-p)+z*z/(4*n))/n)) / (1 + z*z/n)

它惩罚样本太小的“虚高好评率”,更公平地反映评论的真实价值。


四、IMDB:电影打分不是算术平均

为什么 IMDB 的 Top250,不是被10人打满分的冷门片,而是大热之作?

因为它用了 贝叶斯平均数

WR = (v / (v + m)) * R + (m / (v + m)) * C
  • v:某部电影的打分人数
  • R:该电影的平均得分
  • m:最低打分人数门槛(如25000)
  • C:全站电影平均分

也就是说:IMDB 假设每部电影初始有 25000 张“中等评分”票,然后再慢慢用真实评分去修正。

这就避免了“冷门作品高分霸榜”,让排名更具代表性。


五、StackOverflow:什么问题值得被顶上去?

开发者问答社区 StackOverflow 的热门排序综合考虑了:

  • 浏览量(log10)
  • 答案数 × 问题得分
  • 所有答案得分
  • 时间衰减

核心逻辑是:

热度 = (内容质量 × 参与度) / 时间衰减

但它仍有优化空间,例如:

  • 浏览量使用对数,防止“巨鲸”贴垄断
  • 答案数放大作用太大,未必合理
  • 时间影响需更精细调控

📌 更优做法:只计算有效答案 + 答案分值开方求和,弱化“刷答案”的影响。


六、SegmentFault:国产 Q&A 的“算法本地化”

SegmentFault 参考 StackOverflow,但更明确地区分了日、周、月热门

通过调整「重力因子 i」来改变热度衰减速度:

  • 日榜:i=1.0(快速更新)
  • 周榜:i=0.5
  • 月榜:i=0.3(相对平稳)

这种“热度+时间”分层策略,更符合内容平台“冷启动”和“长尾价值”的需求。


🔚写在最后

热度排序算法的本质,是对 关注度、时效性、可信度 三者的动态权衡。没有一种算法适用于所有场景。

你想让用户看到什么,决定了你该如何设计排序公式。


👨‍💻 想看更多数据产品、算法设计、推荐系统的思维拆解?欢迎留言或点个赞支持更新!