SegmentFault问答排序算法
- - 标点符SegmentFault 参考了 Stack Overflow的热门算法设置了自己的排序算法,具体排序算法如下:. 对于热门文章,使用了如下公式:. views:浏览量,对浏览量做了一次去对数处理,主要是为了防止某些浏览量较大的文章异军突起,待在榜单迟迟不动. recommendScore/collectScore:文章的推荐数和收藏数,直接加和到分子中,作为文章热门程度的考虑因素.
SegmentFault 参考了 Stack Overflow的热门算法设置了自己的排序算法,具体排序算法如下:
热门文章
对于热门文章,使用了如下公式:
其中
热门问答
对于热门问答,使用了如下公式:
热门问答的计算参考了 Stack Overflow 对于回答数量和问题得票数的处理。同时,结合我们的实际,将评论的得票数也做为一个因素加入计算。
其余的变量含义和文章算法相同。
日/周/月热门
首先要明确各类不同热门内容的目的。
所以,该怎么做呢?
对于同一内容,上面的计算公式均可化简为:
可以看出,其热度和创建时间成反比,那么这个反比的值最终就由重力因子 i 来影响。
日热门为了突出新热内容、过滤时间过久的热门内容,需要增大重力因子,尽可能排除 24 小时之外的热门内容;周热门和月热门则需要按时间要求依次逐渐降小 i 值。
关于指数 i 值的选定,采取了估算:绘制出一定范围内时间和文章热度的指数函数的图,然后根据需求挑选满足自己条件的指数值。如下图:
多次估值测试,最终分别将日、周、月的 i 值选取为 1.0、0.5、0.3。
参考链接; https://segmentfault.com/a/1190000004253816
Related posts: