我想实现一个网站,我一直在努力,并已决定去与黑客新闻的算法上的排名系统。我选择这种算法的推理很简单,因为它已被描述为here。如何在我的网站中实现排序算法来对数据库数据进行排序?
我一直在寻找这个Python代码和无法弄清楚我将如何实现它(我使用建我的网站的语言)。
def calculate_score(votes, item_hour_age, gravity=1.8):
return (votes - 1)/pow((item_hour_age+2), gravity)
鉴于表:
posts:
id | title | time_submitted
votes:
id | postid | userid | score
如何将我拉从数据库中的数据?理想的解决方案(最有效的)将是构建一个MySQL查询来检索使用该算法排名前10位的帖子。但是鉴于黑客新闻已经在Arc中实现了它,这让我认为他们将所有帖子都拉出来,然后通过算法对它们进行排序以对它们进行排名。
reddit的也想到这个......他们使用非关系数据库模式,所以我会认为他们也像黑客新闻,在他们的代码进行排名 - 而不是数据库。
你将如何实现这一点?
编辑:一篇文章可以有很多票,因为我想记录哪个用户在哪个帖子上投票。
是帖子投票一对多关系吗? – 2010-11-04 01:21:24
是的。我刚刚编辑我的帖子来解释原因。 – dave 2010-11-04 01:26:17
嗯..在Python中,这将是非常糟糕的,只要性能和编码实践去,因为你将不得不检索所有帖子和投票并进行比较。 SQL可以做得更快,并只返回你需要的数据... – Joshkunz 2010-11-04 01:33:19