流行度算法 - SQL / Django
Posted
技术标签:
【中文标题】流行度算法 - SQL / Django【英文标题】:Popularity Algorithm - SQL / Django 【发布时间】:2011-01-30 14:12:01 【问题描述】:我一直在研究在 Reddit、Digg 甚至 *** 等网站上使用的流行度算法。
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】:您应该将您的人气评级缓存在自己的列中,并在基础值发生变化时更新它。您还应该在该列上设置数据库索引。如果您随后还缓存了最常见查询的结果,那么您就对流行度查询的性能采取了最有效的措施。
【讨论】:
@stefanw 我不得不再次阅读您的答案。谢谢斯蒂芬,我想这是要走的路。通过 SQL 进行排序或设置不会太复杂。 :)以上是关于流行度算法 - SQL / Django的主要内容,如果未能解决你的问题,请参考以下文章
推荐系统 MostPopular 算法的 Python 实现