Как реализовать сайт с системой рекомендаций, подобной stackoverflow/digg/reddit? I.e., пользователи представляют контент, и веб-сайт должен рассчитать какую-то "горячность" в соответствии с тем, насколько популярен элемент. Поток выглядит следующим образом:
- Пользователи отправляют контент
- Другие пользователи просматривают и проголосуют за контент (предположим, что 90% пользователей просматривают только контент и 10% активно голосуют вверх или вниз по контенту).
- Новый контент постоянно отправляется
Как реализовать алгоритм, который вычисляет "горячность" отправленного элемента, предпочтительно в режиме реального времени? Есть ли лучшие практики или шаблоны проектирования?
Я бы предположил, что алгоритм учитывает следующее:
- Когда отправлен элемент
- Когда каждый голос был брошен
- Когда элемент был просмотрен
например. элемент, который получает постоянную струйку голосов, будет оставаться несколько "горячим" постоянно, в то время как элемент, получивший всплеск голосов при его первом представлении, переместится в верхнюю часть "горячего" списка, но затем упадет, когда голоса прекратятся входящий.
(Я использую MySQL + PHP, но меня интересуют общие шаблоны проектирования).