6

我一直在研究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。

帮助将不胜感激!^^

4

1 回答 1

3

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

于 2010-03-22T23:56:07.500 回答