很多网站在设计博客的排行时,在时间相关性上很困惑,为了满足访问网站频率不同的用户需求,他们只好按日、周、月来做排行,非常明显的缺陷是,让每周或每月的开始时,周榜和月榜上的精彩文章精彩程度不够,而上周末或月末的精彩文章可能被过早撤出用户视线。但是如果按七天排行或者三十天排行,算法又太复杂。
有没有兼顾的算法呢?答案是有的。
假定用户访问周期介于T1到TN,TN=N*T1,用户访问频率在T1到T2之间线性分布。
设文章在每个时间TX里获得的访问量为TXPV,设计系数A=(N-1)/N
使用计算式T1PV*A^(N-1)+T2PV*A^(N-2)+T3PV*A^(N-3)+……+TNPV=∑TXPV*A^(N-X)来计算随时间衰减的关注度。
这个算式看上去复杂,但是在程序上实现是非常简单的:
用一个字段存储截止到上一个时间周期的∑TXPV*A^(N-X)(假定此值表示为C),另一个字段存储当前时间周期的访问量(此值表示为D),当进入下一时间周期时,使用C*A+D替换C,然后D清零。
考虑不同时间用户的行为习性的差异,可以设置时间周期T为不等长,按经验设置或按总体访问量的变化设置一个TN周期里的各T长度。为满足用户找回精彩文章的需要,可以多设几个N,比如七天排行按七天为周期设计,三十天排行按三十天为周期设计。编辑也可以按需要重设周期以方便挖掘精彩内容,好推荐给用户。