Я изучал алгоритмы популярности, используемые на сайтах, таких как 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.
Справка очень ценилась бы! ^^
Вы должны кэшировать свой рейтинг популярности в отдельном столбце и обновлять его при изменении базовых значений. Вы также должны настроить индекс базы данных для этого столбца. Если вы затем также кешируете результат ваших наиболее распространенных запросов, вы приняли наиболее эффективные меры для повышения эффективности ваших популярных запросов.