我有一张包含数千条新闻文章记录的表格。在网站上,有一个新闻列表页面,可以选择按受欢迎程度对文章进行无限滚动排序。该表看起来像这样:
id | title | description | views | createdAt
用于确定受欢迎程度的关键列是views and createdAt。
我可以实施哪些算法/公式来按人气排序文章?
目前,我只是按降序排序视图,但这样列表几乎不会更新并且始终显示相同的文章。
答案 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更改最近的日期,即可为您提供有限数量的结果。你甚至可以减少无限循环/结果。