Алгоритм популярности - SQL / Django - PullRequest
6 голосов
/ 23 марта 2010

Я изучал алгоритмы популярности, используемые на таких сайтах, как 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

Я всегда выполнял простое упорядочивание в SQL, мне интересно, как мне поступить с таким упорядочением.

Должно ли оно использоваться для определения таблицы или я могу построить SQL с упорядочением в формуле ( без ущерба для производительности )?

Мне также интересно, можно ли использовать несколько алгоритмов упорядочения в разных случаях, не создавая проблем с производительностью.


Я использую Django и PostgreSQL.

Помощь будет высоко ценится! ^^

1 Ответ

3 голосов
/ 23 марта 2010

Вам следует кэшировать свой рейтинг популярности в собственном столбце и обновлять его при изменении базовых значений. Вы также должны установить индекс базы данных для этого столбца. Если вы затем кешируете результаты своих самых распространенных запросов, вы приняли наиболее эффективные меры для повышения эффективности ваших запросов популярности.

...