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