如何根据他们的评分和发布时间找到最好的帖子?

时间:2011-09-23 10:23:53

标签: php mysql algorithm

我有一张Posts表,其中包含很多不同时间提交的帖子,每个帖子都有评分。出于问题的原因,我可以说Posts表中包含了所有必需的详细信息(即contentsratingscreated_at等等。

我需要一种算法,根据帖子的评分以及最近发布的帖子,智能地对帖子进行排序。 我正在使用MySQL后端,因此查询是合适的。

3 个答案:

答案 0 :(得分:5)

Google真的不是那么难。 the first hit似乎非常好,the second one甚至是关于此问题的主题,导致a great article about Bayesian rating似乎是您正在寻找的。

其余的是简单的数学 - 根据贝叶斯评级,您可以轻松确定哪些帖子是最好的。考虑到时间,只需将评级除以创建帖子后的分钟数(例如),结果是一个考虑创建时间的良好评级。

答案 1 :(得分:3)

如果我理解你可以尝试:

SELECT * FROM Posts
ORDER BY ratings DESC, created_at

通过这种方式,您可以在顶部获得更高评分的帖子,如果评分相同,那么旧帖子会排在第一位。

答案 2 :(得分:0)

此查询首先提供最高ratings,然后created_at

SELECT *
FROM yourposttable
ORDER BY ratings DESC, 
     created_at DESC;

更新

您的评论建议您需要某种加权算法。按照上面的Oezis链接,它们会引导一些关于该主题的好页面。