如何按人气排序文章?

时间:2016-11-09 06:38:48

标签: php mysql algorithm sorting probability

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

id | title | description | views | createdAt

用于确定受欢迎程度的关键列是views and createdAt。

我可以实施哪些算法/公式来按人气排序文章?

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

3 个答案:

答案 0 :(得分:3)

一种方法可能是按年龄“惩罚”文章。例如,自文章发布以来的每一天,将得分降低100(或与网站拥有的流量相匹配的其他任意数字)。这样一来,旧文章就会被慢慢推出,新版本的文章将有机会被人看到:

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

答案 1 :(得分:0)

简单地做,希望它能起作用:

 order by views,createdAt

答案 2 :(得分:0)

你可以再增加一个专栏说' lastView'

想法是打印最近流行的项目,而不仅仅是流行的。

在您的查询中,您可以提供以下条件: select * from table where created> =' recentDate1'和lastView> =' recentDate2'按意见排序;根据您的需要。

在每次刷新时,您只需通过jQuery更改最近的日期,即可为您提供有限数量的结果。你甚至可以减少无限循环/结果。