Как реализовать сайт с системой рекомендаций, подобной stackoverflow/digg/reddit? I.e., пользователи представляют контент, и веб-сайт должен рассчитать какую-то «горячность» в соответствии с тем, насколько популярен элемент. Поток выглядит следующим образом:Как реализовать алгоритм, подобный Digg?
- Пользователи отправляют содержание
- Других пользователей просматривать и голосование по содержанию (предположит, что 90% пользователей просматривают содержание и 10% активно голосует вверх или вниз по содержанию)
- Новое содержимое постоянно отправляется
Как реализовать алгоритм, который вычисляет «горячность» отправленного элемента, желательно в режиме реального времени? Есть ли лучшие практики или шаблоны проектирования?
Я бы предположил, что алгоритм принимает во внимание следующее:
- Когда элемент был представлен
- Когда каждый голос был отлит
- Когда элемент был просмотрен
Э.Г. элемент, который получает постоянную струйку голосов, будет оставаться несколько «горячим» постоянно, в то время как элемент, получивший всплеск голосов при его первом представлении, переместится в верхнюю часть «горячего» списка, но затем упадет, когда голоса прекратятся входящий.
(Я использую MySQL + PHP, но меня интересуют общие шаблоны проектирования).
связанный с этим вопрос, какие документы формулу мы используем: http://meta.stackexchange.com/questions/11602/what-formula-should-be-used-to-determine-hot-questions – 2010-01-31 11:55:10