流行度算法 - SQL / Django

Posted

技术标签:

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

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

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的主要内容,如果未能解决你的问题,请参考以下文章

简单的流行度算法

推荐算法入门

用pl/sql计算6度分离度的算法和查询?

推荐系统 MostPopular 算法的 Python 实现

推荐系统 MostPopular 算法的 Python 实现

推荐系统实践(项亮)— 第2章 利用用户行为数据