将所有用户的帖子从高到低排序
Ranking posts of all users from highest to lowest
如果 posts 的用户包含评论和喜欢以及创建日期,我如何实现某种排名,其中涉及评论和喜欢的数量以及创建和返回 posts 的日期从最高 post 到最低
您要找的是Ranked Feeds。排名提要允许自定义活动排名;您可以使用自己的公式来计算每个 activity 的分数。只要您的活动具有所需的信息(例如 likes_count
、comments_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_count
和 comments_count
中使用的两个计数器明显随时间变化。要使排名提要起作用,您需要同步这些值。 Activity 数据可以更新 using the APIs.
注意:由于activity更新API不支持部分更新,建议不要更新事务性活动(例如用户点击赞->发送API调用将计数器从 X 更新到 X+1),但每 X 秒执行一次批量更新。
每 5 分钟一次的 Crontab 示例:
*/5 * * * * /path/to/script/update_activities_counters
如果 posts 的用户包含评论和喜欢以及创建日期,我如何实现某种排名,其中涉及评论和喜欢的数量以及创建和返回 posts 的日期从最高 post 到最低
您要找的是Ranked Feeds。排名提要允许自定义活动排名;您可以使用自己的公式来计算每个 activity 的分数。只要您的活动具有所需的信息(例如 likes_count
、comments_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_count
和 comments_count
中使用的两个计数器明显随时间变化。要使排名提要起作用,您需要同步这些值。 Activity 数据可以更新 using the APIs.
注意:由于activity更新API不支持部分更新,建议不要更新事务性活动(例如用户点击赞->发送API调用将计数器从 X 更新到 X+1),但每 X 秒执行一次批量更新。
每 5 分钟一次的 Crontab 示例:
*/5 * * * * /path/to/script/update_activities_counters