Подобная Digg домашняя страница вращения популярного содержания, как включать дату как фактор?

Я создаю усовершенствованное изображение, совместно использующее веб-приложение. Как можно ожидать, пользователи могут загрузить изображения, и другие могут комментарии к нему, голосовать по нему, и фаворит он. Эти события определят популярность изображения, которое я получаю в поле "кармы".

Теперь я хочу создать подобную Digg систему домашней страницы, показывая самые популярные изображения. Это легко, так как у меня уже есть взвешенный счет Кармы. Я просто вид на этом descendingly для показа 20 самых ценных изображений.

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

Конкретные вопросы:

  • Вы рекомендовали бы легкий сценарий (просто, вид для лучших изображений в течение 24 часов) или более сложный (используют смещение даты и времени в качестве части сортировки)? Если Вы советуете последнему, какой-либо справке на математическом решении этого?
  • Было бы лучше выполнить регулярный рейс для маркировки изображений для домашней страницы, или Вы будете советовать прямому запросу (я использую MySQL),
  • Как дополнительное примечание, домашняя страница должна поддерживать подкачку страниц, и в тихий день должен включать записи дней прежде, чтобы удостовериться, что это всегда "заполнено"

Я не прошу, чтобы сообщество для создания этого алгоритма, просто ища некоторых советовало :)

6
задан Fer 26 April 2010 в 18:39
поделиться

4 ответа

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

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

effective karma = karma * (1 - percentage_decrease)

где процент_убавления определяется вашей функцией. Например, вы можете сделать

percentage_decrease = min(1, number_of_hours_since_posting / 24)

, чтобы эффективная карма каждого предмета уменьшалась до 0 в течение 24 часов. Затем используйте эффективную карму, чтобы определить, какие изображения показывать. Это немного более стабильное решение, чем просто вычитание времени с момента публикации, поскольку оно масштабирует карму от 0 до ее фактического значения. Минимум заключается в том, чтобы удерживать масштаб на нулевой нижней границе, поскольку раз в день вы начнете получать значения больше 1.

Однако это не учитывает популярность в строгом смысле этого слова. Ответ Тима дает некоторые идеи о том, как учитывать строгую популярность (например, просмотры страниц).

2
ответ дан 17 December 2019 в 18:11
поделиться

Отвечая на ваш первый вопрос, я бы выбрал более сложный метод. Вы захотите добавить в микс несколько «фаворитов за все время». Но не ограничивайтесь временем, оценивайте количество фактических просмотров изображения. Имейте в виду, что не все будут входить в систему и голосовать, но это не делает изображение менее популярным. Изображение двухлетней давности с 10 голосами и 100 тысячами просмотров, очевидно, более важно для людей, чем изображение годовалой давности с 100 голосами и 1 тысячами просмотров.

Что касается вашего второго вопроса, да, вы хотите, чтобы на вашей первой странице происходило какое-то кеширование. Это много запросов для создания точки входа на ваш сайт. Однако, как и в случае с SO, ваш тип сайта будет иметь тенденцию привлекать трафик на внутренние страницы через поисковые системы ... так что старайтесь смотреть / оптимизировать свои запросы везде.

Что касается вашего третьего вопроса, то использование факторов, отличных от времени (например, количества просмотров), помогает гарантировать, что у вас всегда будет полная и динамичная страница. Я не уверен в разбивке по страницам на главной странице, лучше направлять людей к тегам или поисковым запросам.

1
ответ дан 17 December 2019 в 18:11
поделиться

Вы можете просто вычислить поле типа «скорректированная карма», которое будет учитывать время :

adjusted karma = karma - number of hours/days since posted

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

0
ответ дан 17 December 2019 в 18:11
поделиться

Это, как я обнаружил, Нижняя граница доверительного интервала оценки Уилсона для параметра Бернулли

Посмотрите на это: http://www.derivante.com/2009/09/01/php-content-rating-confidence/

Во втором примере он объясняет, как использовать время в качестве «фактора свежести».

0
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: