我的目标是生成一个类似于reddit首页的系统。Web应用程序的可缩放时间衰减
我有东西,为了简单起见,这些东西都有选票。我产生的最好的系统是使用时间衰减。以7天的半衰期计算,如果今天的投票价值为20分,那么在7天内它值10分,在14天内只值5分。
问题是,虽然这产生的结果,我很高兴,它不缩放。每次投票都要求我有效地重新计算其他投票的价值。
所以,我想我可能能够扭转这个想法。今天的投票值得1分。从现在开始的七天内投票价值2分,从现在开始的14天内价值4分等等。这很有效,因为对于每次投票,我只需要更新一行。问题在于,到今年年底,我需要一个数据类型,可以保存极其庞大的数字。
所以,我尝试使用产生可怕排名的线性增长。我尝试了多项式增长(从站点启动和提交以来的平均天数),并且它产生了稍好的结果。然而,随着我的结果稍微好转,我很快就会重新接近不可维护的数字。
所以,我来找你stackoverflow。谁有一个天才想法或链接到如何建模该系统的想法,因此它适合Web应用程序。
http://www.seomoz.org/blog/reddit-stumbleupon-delicious-and-hacker-news-algorithms-exposed略很有帮助,但一目了然,它们都没有显示出任何规模。 – 2012-01-06 06:57:13
我没有看到任何系统允许非线性衰减,您不必在某个时刻重新计算得分。问题是,你需要在每个投票中做到这一点,或者背景cron工作可以做到吗? – 2012-01-06 07:01:05
cron工作吸吮。它会这样做,但我很有决心找到一个非持续性的流程样式解决方案。 – 2012-01-06 07:02:31