Как обновить рейтинг популярности контента, такой как алгоритм Hacker News? - PullRequest
0 голосов
/ 07 октября 2010

Я использую настроенную версию алгоритма популярности Hacker News для своего социального сайта (элементы с множеством лайков и комментариев).Алгоритм работает отлично, но я не знаю, как правильно обновлять оценки элементов (я сохраняю оценку в модели элементов в виде метаданных).

Теперь я просто обновляю оценки по каждому новому лайку и комментирую элементы, перечисленные в течение последних 9 дней.Это действительно медленно и ресурсоемко, поэтому я ищу лучший способ поддерживать результаты в актуальном состоянии.Проблема в том, что каждому предмету нужен новый счет, когда он меняется, чтобы сохранить время.Что было бы лучшим способом сделать это?Я использую Django для проекта.

Ответы [ 2 ]

3 голосов
/ 25 июня 2012

OK.Я сделал это с помощью различных приложений: во-первых, вам нужно установить либо «dokterbob / django-популярность» на github, либо «thornomad / django-hitcount», чтобы отслеживать частоту посещения ссылки.

Во-вторых, вынужно подсчитать, сколько голосов (лайков или фаворитов) получает объект.Для этого вы можете попробовать "brosner / django-голосования", "apgwoz / django-Favorites".

Теперь вы должны использовать этот кусок кода - django-Populars , чтобысобрать их все вместеЯ бы порекомендовал сначала изучить этот код , чтобы увидеть, как он работает, чтобы понять, как собрать необходимые компоненты.

0 голосов
/ 08 октября 2010

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

Другим вариантом является модель экспоненциального затухания, которая требует периодических обновлений, но они могут быть подтверждены голосами, что сокращает объем выполняемых вами операций пакетного обновления. Я написал статью о реализации этого здесь . Он нацелен на App Engine, но в целом полезен.

...