1

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

4

1 回答 1

2

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

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

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

一种非常常见的方法是将一些受欢迎程度得分与活动的年龄相结合。为此,您可以使用时间衰减函数之一并将结果与​​喜欢和评论的总和相乘。

例如:

{
  "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要使排名提要起作用,您需要同步这些值。可以使用 API更新活动数据。

注意:由于活动更新 API 不支持部分更新,因此建议不要以事务方式更新活动(例如,用户点击点赞 -> 发送 API 调用以将计数器从 X 更新到 X+1),而是每隔一段时间执行一次批量更新X 秒。

每 5 分钟一次的 Crontab 示例:

*/5   *  *   *   *     /path/to/script/update_activities_counters
于 2016-09-08T07:45:00.587 回答