【发布时间】:2008-12-15 13:35:18
【问题描述】:
在用户可以提交“故事”方面,我正在开发一个类似于 digg 的网站。
我会记录每个项目获得了多少“投票”和“类似添加”。类似的添加被定义为两个用户添加相同的“链接”。
这是算法的部分(本质上是最重要的):
y = day number
sy = number of adds on day y
∑ y[1:10] sy / y
所以基本上计算指定日期的“类似添加”的数量,然后除以自发布内容以来的秒数。在过去 10 天内执行此操作(例如)。
但是,我不确定如何实现它以使其表现良好。我能想到的每一种方法都会很慢。
我能想到实现这一点的唯一方法是计算过去 10 天内提交的每个项目的添加数量,这将永远持续下去。 (所以一个按日期分组的 sql 命令在过去 10 天内执行了 10 次 - 显然这种方法很糟糕)。
即使我保留一个每天更新一次的表(并在后台运行上述 sql),一旦数据库变大,它仍然会非常慢。加上评级将“过时”,因为它不是实时的(例如突发新闻“项目”永远不会到达顶部)。
有没有人知道如何做这件事?
【问题讨论】:
-
你说的是“秒后”,但我在任何地方都没有看到你的公式。是几秒后添加了类似的添加,还是几秒后链接了原始文章?
-
@Tom H.:距离添加原始文章已经几秒钟了。