【问题标题】:Popularity Algorithm - SQL / Django流行度算法 - SQL / Django
【发布时间】:2011-01-30 14:12:01
【问题描述】:

我一直在研究在 RedditDigg 甚至 Stackoverflow 等网站上使用的流行度算法。

Reddit 算法:

t = (time of entry post) - (Dec 8, 2005)
x = upvotes - downvotes

y = {1 if x > 0, 0 if x = 0, -1 if x < 0)
z = {1 if x < 0, otherwise x}

log(z) + (y * t)/45000

我一直在 SQL 中执行简单的排序,我想知道我应该如何处理这种排序。

应该用它来定义一个表,还是我可以用公式中的顺序构建一个 SQL(不影响性能)?

我也想知道,是否可以在不同场合使用多种排序算法,而不会导致性能问题。


我正在使用 Django 和 PostgreSQL。

我们将不胜感激! ^^

【问题讨论】:

    标签: sql django postgresql django-orm popularity


    【解决方案1】:

    您应该将您的人气评级缓存在自己的列中,并在基础值发生变化时更新它。您还应该在该列上设置数据库索引。如果您随后还缓存了最常见查询的结果,那么您就对流行度查询的性能采取了最有效的措施。

    【讨论】:

    • @stefanw 我不得不再次阅读您的答案。谢谢斯蒂芬,我想这是要走的路。通过 SQL 进行排序或设置不会太复杂。 :)
    猜你喜欢
    • 2010-12-30
    • 2014-10-12
    • 2012-06-23
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多