【问题标题】:Implementing algorithm for rating post评分帖子的实现算法
【发布时间】:2012-10-25 01:33:55
【问题描述】:

我正在使用 PHP 开发一种算法。我有大约一百万个帖子。每个帖子都有很多cmet,喜欢和观点。

例如:有 3 个帖子。

  • 帖子 1 的评分是 3000(我有一个固定的公式来使用 cmets、like 和 view 计算这个结果)
  • 发布 2:2000
  • 帖子 3:1000

在存储这些帖子时,我使用 time();也称为 Unix 时间戳

  • 发帖1次:1352099640(评分3000)
  • 发帖2次:1352099660(评分2000)
  • 发帖3次:1352099680(评分1000)

我有以下条件显示帖子;

  1. 显示评分高的帖子
  2. 如果帖子比其他帖子更老,但评分比其他帖子高。在最短时间排名高的帖子下方显示此类帖子。

我正在考虑两件事。

  1. 帖子评分高
  2. 发布时间。

如果帖子在最短的时间内获得高利率,那么它将是网站上的第 1 个帖子。如果 Post 在最长时间内的费率很高,那么它将是第二个帖子.. 我如何写下条件

如何在 PHP 中编写这些条件?

【问题讨论】:

  • Here is one approach。基本上有无数种可能性 - 取决于您希望最终排名如何表现(时间有多重要,帖子是否应该随时间线性衰减?...)
  • 澄清一下,您的算法是否已设计和实现,您只是在寻求建议以显示您的帖子?
  • @SSK 这些评分是否考虑了时间,或者您是否要求提出一个考虑评分和时间然后决定显示帖子的顺序的系统?跨度>
  • 检查我是否更新了问题

标签: php algorithm sorting


【解决方案1】:

我认为这与其说是编程问题,不如说是设计问题。如果意图是评分越高,帖子显示的越高,然后检查对评分进行排序并从列表中降级,首先将评分最高的帖子放在顶部。如果这不是您想要的,那么更多的是算法不明确的问题。

【讨论】:

  • 我正在考虑两件事。 1) 帖子的高评价 2) 发布时间。如果帖子在最短的时间内具有高利率,那么它将是该网站上的第一个帖子。如果 Post 在最长时间内具有高利率,那么它将是第二个帖子.. 我如何写下条件:)
  • 所以只是为了澄清你只关心显示的前两个帖子?
  • 我认为您需要想出一个公式,该公式需要评分和时间,并为您提供显示帖子的命令。例如 order=ranking/time 所以越高的顺序越接近它显示的顶部,这就是你想要的吗?
  • 是的,这可以做到!我怎么能写出这个公式。我已经尝试过这个 (p - 1) / (t + 2)^1.5 其中 p = 点和 t = 以小时为单位的年龄但我没有得到正确的输出
  • 你能用示例输入和输出来展示你的代码吗?每个“帖子”是一个对象还是什么?您如何访问存储速率和时间的变量?如果您将代码复制并粘贴到其中,以供将来参考问题更容易处理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 2015-09-20
  • 2019-03-05
  • 2016-12-14
相关资源
最近更新 更多