我有一张Posts
表,其中包含很多不同时间提交的帖子,每个帖子都有评分。出于问题的原因,我可以说Posts
表中包含了所有必需的详细信息(即contents
,ratings
,created_at
等等。
我需要一种算法,根据帖子的评分以及最近发布的帖子,智能地对帖子进行排序。 我正在使用MySQL后端,因此查询是合适的。
答案 0 :(得分:5)
问Google真的不是那么难。 the first hit似乎非常好,the second one甚至是关于此问题的主题,导致a great article about Bayesian rating似乎是您正在寻找的。 p>
其余的是简单的数学 - 根据贝叶斯评级,您可以轻松确定哪些帖子是最好的。考虑到时间,只需将评级除以创建帖子后的分钟数(例如),结果是一个考虑创建时间的良好评级。
答案 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链接,它们会引导一些关于该主题的好页面。