如何显示随机博客帖子,支持高收视率的帖子?

时间:2011-01-16 08:02:09

标签: php mysql database search

假设我有一个博客帖子表,其中有一个评级字段,表示帖子的质量。随机查找帖子的最有效方法是什么,返回高排名帖子的可能性更高?

我将在PHP,MySQL和Lucene中实现它。

3 个答案:

答案 0 :(得分:3)

一个简单的解决方案是包含对RAND()rating列的调用并将它们相乘:

SELECT title, content FROM blog_posts ORDER BY (rating + 1) * RAND() DESC LIMIT 1;

如果您发现这对评分较高的项目给予过多优先权,则可以使用SQRT

SELECT title, content FROM blog_posts ORDER BY SQRT(rating + 1) * RAND() DESC LIMIT 1;

答案 1 :(得分:2)

您可以使用“加权随机”排序,例如:

SELECT title, body FROM posts ORDER BY (score+1) * RAND() DESC LIMIT 5

+1允许选择0分的帖子。 根据您帖子的平均分数,您可能需要将分数乘以另一个常数因子(例如0.5*score+1

根据您的得分分布,您可能希望转换得分,例如使用LOG(score)SQRT(score)

答案 2 :(得分:0)

SQL命令:

SELECT * FROM posts WHERE id = '$randomly_generated_ids' ORDER BY ratings ASC

例如 $ random_generated_ids 可以是“13,10,5,20”

详细信息:ORDER BY