php - 如何按受欢迎程度对文章进行排序?

标签 php mysql algorithm sorting probability

<分区>

我有一张包含数千条新闻文章记录的表格。在该网站上,有一个新闻列表页面,其中包含一个选项,可以通过无限滚动按受欢迎程度对文章进行排序。该表看起来像这样:

id | title | description | views | createdAt

决定受欢迎程度的关键列是浏览量和创建时间。

我可以实现什么算法/公式来按受欢迎程度对文章进行排序?

目前,我只是按浏览量降序排列,但这样列表几乎不会更新并始终显示相同的文章。

最佳答案

一种方法是根据文章的年龄“惩罚”文章。例如,自文章发表后的每一天,将分数降低 100(或与您网站的流量相匹配的其他任意数字)。这样旧的文章就会慢慢被推出,新的文章才有机会被浏览:

SELECT   *
FROM     articles
ORDER BY views - 100 * DATEDIFF(CURRENT_DATE, createdAt) DESC

关于php - 如何按受欢迎程度对文章进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40501287/

相关文章:

javascript - 确定定界形状边界的点的算法——使用 javascript

algorithm - 从不断增长的集合中找出中值

php - IMAP 和 PHP - 从已发送和收件箱文件夹中获取所有电子邮件

php - Route::resource 和 Route::controller 等同于流明?

php - 我正在尝试结合 PDO 和 OOP,但无法正常工作

mysql - Laravel 5.2 - 在子查询上使用 Left Join 时出现奇怪的结果

php - 清空 php 中 $array[] 的旧值

c# - 使用mysql命令创建mysql数据库

mysql - 为什么我不断收到 'Incorrect Syntax near ' Select'.期待 Set' 错误?

java - 为什么哈希表会通过加倍来调整大小?