将所有用户的帖子从高到低排序

Ranking posts of all users from highest to lowest

如果 posts 的用户包含评论和喜欢以及创建日期,我如何实现某种排名,其中涉及评论和喜欢的数量以及创建和返回 posts 的日期从最高 post 到最低

您要找的是Ranked Feeds。排名提要允许自定义活动排名;您可以使用自己的公式来计算每个 activity 的分数。只要您的活动具有所需的信息(例如 likes_countcomments_count),您就可以使用它来对您的供稿进行排名。

这是一个简单的排名公式示例:

{
    "score": "likes_count + comments_count",
     "defaults": {
        "likes_count": 0,
        "comments_count": 0
    }
}

一种非常常见的方法是将一些人气分数与 activity 的年龄相结合。为此,您可以使用 time decay 函数之一,并将结果乘以点赞和评论的总和。

例如:

{
  "functions":{
    "popularity_gauss":{
      "base":"decay_gauss",
      "scale":"5d",
      "offset":"1d",
      "decay":"0.3"
    }
  },
  "defaults": {
      "likes_count": 0,
      "comments_count": 0
  },
  "score":"popularity_gauss(time) * (likes_count + comments_count)"
}

该示例使用具有缩放、偏移和衰减参数的 decay_gauss 函数。使用选定的参数,活动将在超过 1 天的阈值时降低分数。对于 5 天前的活动,分数将减少到三分之一。

正在同步数据

我们在示例 likes_countcomments_count 中使用的两个计数器明显随时间变化。要使排名提要起作用,您需要同步这些值。 Activity 数据可以更新 using the APIs.

注意:由于activity更新API不支持部分更新,建议不要更新事务性活动(例如用户点击赞->发送API调用将计数器从 X 更新到 X+1),但每 X 秒执行一次批量更新。

每 5 分钟一次的 Crontab 示例:

*/5   *  *   *   *     /path/to/script/update_activities_counters