人气算法 - SQL/Django

Rad*_*Hex 6 sql django postgresql popularity django-orm

我一直在研究在Reddit,Digg甚至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
Run Code Online (Sandbox Code Playgroud)

我总是在SQL中执行简单的排序,我想知道我应该如何处理这样的排序.

它应该用于定义表,还是可以使用公式中的排序构建SQL(不会影响性能)?

我也想知道,如果可以在不同的场合使用多种排序算法,而不会引发性能问题.


我正在使用Django和PostgreSQL.

非常感谢帮助!^^

ste*_*anw 3

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