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