0

我正在为我的社交网站使用定制版本的 Hacker News 流行度算法(有很多点赞和评论的项目)。该算法运行良好,但我不知道如何正确更新项目得分(我将得分作为元数据存储在项目模型中)。

现在,我只是更新过去 9 天内列出的每个新点赞和评论的分数。这真的很慢而且资源很重,所以我正在寻找一种更好的方法来保持最新的分数。问题是每个项目在更改时都需要一个新分数以保持时间衰减。这样做的更好方法是什么?我在项目中使用 Django。

4

2 回答 2

3

好的。我使用不同的应用程序完成了它:首先,您需要在 github 上安装“dokterbob/django-popularity”或“thornomad/django-hitcount”来跟踪访问链接的频率。

其次,您需要计算一个对象收到了多少票(喜欢或收藏)。为此,您可以尝试“brosner/django-voting”、“apgwoz/django-favorites”。

现在你必须使用这段代码——django-populars把它们放在一起。我建议首先查看这段代码,看看它是如何工作的,以了解如何将所需的组件放在一起。

于 2012-06-25T12:21:34.643 回答
0

有很多方法可以做到这一点。一种简单的方法是按顺序对项目进行编号,并从每个项目的 ID 号的“排名 ID”开始。每当帖子被评为时,增加其排名号(反之亦然)。然后,按排名编号排序以正确排序项目。

另一种选择是指数衰减模型,它需要定期更新,但这些可以依靠投票,减少你必须做的批量更新工作量。我在这里写了一篇关于实现它的文章。它针对 App Engine,但通常很有用。

于 2010-10-08T17:57:08.247 回答