流行度算法 - SQL / Django

6
I've been looking into popularity algorithms used on sites such as Reddit, Digg and even 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。

非常感谢您的帮助! ^^

1个回答

3

您应该在自己的列中缓存受欢迎程度评分,并在基础值更改时更新它。您还应在该列上设置数据库索引。如果您还缓存了最常见查询的结果,则为提高受欢迎度查询的性能采取了最有效的措施。


@stefanw我不得不再读一遍你的回答。谢谢Stefan,我想这是正确的方法。通过SQL进行排序或设置只会使事情变得非常复杂。 :) - RadiantHex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接