我不明白如何在我的应用程序中使用排名算法

I don't understand how to use a Ranking Algorithm in my App

所以我发现了一个叫做 hotrank 的算法。 Reddit 使用它并且可以找到它 here。我正在尝试将此算法实施到 iOS 应用程序中。该应用程序连接到节点 js 服务器,该服务器在 mongodb 数据库中存储 posts。

我认为实现该算法的最佳位置是在服务器中。我对它如何工作的想法是,当创建 post 并且当另一个用户 likes/dislikes 和 post 时,算法运行并更新分数。然后将分数与 post 一起保存在数据库中。然后在应用程序中,它会按降序显示得分最高的 post。

这个问题是算法将日期作为输入(即较旧的 post 排名较低)。因此,如果用户创建 post,则 post 被分配一个排名,然后 post 再也不会运行该算法,排名将保持不变......无论多长时间是的。

要解决此问题,我是否必须不断 运行 线性地遍历每个 post 并更新分配给它的分数?

我对这方面还很陌生,非常感谢任何帮助。

这取决于一些因素,例如您希望有多少 post、预期的页面浏览量和 up/down 投票 activity。

该算法看起来相当简单,因此如果您的 post 数量较少,您可以在每次检索 post 时在服务器上动态计算此数字并在 return计算结果。

或者,您可以安排一项任务,每 10 mins/hour/day/etc 更新一次此排名,并针对每个 post 存储值。然后就可以检索出按这个排名排序的posts了。这意味着您的排名可能有点过时,但会很快 return 可以缓存的结果。

正如您指出的那样,排名只有在您进行新的 post 或向上 vote/down 投票时才会真正改变,因此您只能重新计算这些事件的排名。您需要考虑这种情况发生的频率,并可能在 10 分钟内安排一次更新(如果尚未安排一次,那么连续的赞成票将在 10 分钟内分批处理)。