我正在为我的社交网站使用自定义版本的黑客新闻流行度算法(带有许多喜欢和评论的项目)。该算法运行良好,但我不知道如何正确更新项目评分(我将项目模型中的分数存储为元数据)。
现在我只是更新过去9天内列出的所有项目的评分和评论。这真的很慢而且资源很重,所以我正在寻找一种更好的方法来保持分数最新。问题是当一个项目发生变化以保持时间衰减时,每个项目都需要一个新的分数。有什么更好的方法呢?我正在使用Django进行该项目。
答案 0 :(得分:3)
行。我使用不同的应用程序完成了它: 首先,您需要在github上安装“dokterbob / django-popular”或“thornomad / django-hitcount”来跟踪链接的访问频率。
其次,您需要计算一个对象收到多少票(喜欢或收藏)。为此,您可以尝试“brosner / django-voting”,“apgwoz / django-favorites”。
现在你必须使用这段代码 - django-populars将它们放在一起。 我建议首先查看this code,看看如何理解如何组合所需的组件。
答案 1 :(得分:0)
有很多方法可以做到这一点。一种简单的方法是按顺序对项目进行编号,并以ID号的“等级ID”开始每个项目。每当帖子评级时,增加其排名(反之亦然)。然后,按等级编号排序以正确订购商品。
另一种选择是指数衰减模型,它需要定期更新,但这些可以在投票时捎带,减少了你必须做的批量更新工作量。我写了一篇关于实现here的文章。它针对App Engine,但通常很有用。