【问题标题】:Updated timestamp sort decay algorithm更新了时间戳排序衰减算法
【发布时间】:2013-11-28 01:54:41
【问题描述】:

我需要通过updated_at 时间戳对一些帖子进行排名,但我需要在帖子在created_at 6 小时后更新后,排名有某种指数衰减,直到 2 周后它达到收支平衡并且不改变等级。

创建帖子时,将updated_at 设置为created_at 的时间戳以启动排序。

我查看了Hot content algorithm / score with time decay,这与我正在寻找的内容相符,但我需要排名具有类似于updated_at 时间戳的精度。

我需要这个的原因是,不久前创建但最近更新的帖子不会比最近创建的帖子显示得更高。

【问题讨论】:

  • 我想,一旦你把这个问题说得足够清楚,有人能正确回答,你就会正确回答。
  • 我应该如何进一步澄清它?
  • “掉”排名是什么意思?所以您只想根据updated_at 对过去6 小时内创建的所有内容进行排名,然后根据created_at 字段对其余内容进行排名?
  • 什么样的排名有精度?降多少,在什么范围内?在较长时间间隔后更新的文件应如何与稍后创建的文件进行排名,您使用什么程序来达到这一点?
  • 我认为他准确地说是指在线排名算法,其中时间不断滴答,排名需要每毫秒(或每隔很短的时间)更新

标签: algorithm sorting ranking


【解决方案1】:

您真的需要时间指数衰减分数吗?这似乎不太可能。相反,您想按修改后的updated_at 排序:

def updated_val(item):
    if(item.updated_at - item.created_at > 6 hours)
        return item.created_at + 6 hours
    else
        return item.updated_at

如果该项目在 6 小时内被编辑,我们将返回未修改的 updated_at。但是,如果该项目在 6 小时后被编辑,我们只返回最后一个有效的 updated_at 值,即 created_at + 6 hours

如果您有类似附加评分功能的功能,只需将其插入此解决方案即可:

def updated_val_scored(item):
    if(item.updated_at - item.created_at > 6 hours)
        return score(item.created_at + 6 hours)
    else
        return score(item.updated_at)

【讨论】:

  • 帖子只有在有人关注它时才会更新。对于这种情况,我仍然希望它显示在第一页上,但根据原始帖子的创建时间(编辑与否)将其下拉。
  • @PaulKonova:所以你想按创建时间排序,但如果帖子在过去六个小时内被编辑,则只显示在首页?那么您当前的问题并不完整。添加一些示例/场景。
猜你喜欢
  • 1970-01-01
  • 2021-04-21
  • 2013-11-17
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 2013-02-03
相关资源
最近更新 更多