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

时间:2015-12-07 02:05:39

标签: ios algorithm mongodb ranking

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

我相信实现算法的最佳位置是在服务器中。我对它如何工作的想法是在创建帖子时以及当另一个用户喜欢/不喜欢帖子时,算法会运行并更新分数。然后将分数与数据库中的帖子一起保存。然后在应用程序中,它按降序显示得分最高的帖子。

问题在于,算法将日期作为输入(即较旧的帖子排名较低)。因此,如果用户发帖,该帖子被分配了一个等级,然后该帖子再也没有通过该算法,则排名将保持不变......无论它多大了。

要解决此问题,我是否经常需要在每个帖子中线性运行并更新分配给它的分数?

我对这方面的事情相当新,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

这取决于您希望拥有的帖子数量,预期的网页浏览量和上/下投票活动等一些内容。

该算法看起来相当简单,因此如果你的帖子数量很少,你可以在每次检索帖子时在服务器上动态计算这个数字,并在返回结果之前对其进行排序。

或者,您可以安排任务每10分钟/小时/天/等更新此排名,并将值存储在每个帖子中。然后,您可以检索此排名所订购的帖子。这意味着您的排名可能会过时,但会快速返回您可以缓存的结果。

正如您所指出的那样,当您执行新帖子或投票/投票时,排名才会真正发生变化,因此您只能重新计算这些事件的排名。您需要考虑这种情况发生的频率,并且可能会在10分钟内安排更新(如果尚未安排更新,那么连续投票将在10分钟内批量生产)。