如何用类似于stackoverflow/digg/reddit的推荐系统来实现一个网站?即,用户提交内容,网站需要根据项目的受欢迎程度来计算某种“热度”。流程如下:
- 用户提交内容
- 其他用户查看内容并对内容进行投票(假设 90% 的用户只查看内容,而 10% 的用户对内容积极投赞成票或反对票)
- 新内容不断提交
如何实现一个算法来计算提交项目的“热度”,最好是实时计算?是否有任何最佳实践或设计模式?
我假设该算法考虑了以下因素:
- 提交项目时
- 每次投票时
- 查看项目的时间
例如,一个获得持续不断的投票的项目会一直保持一定的“热度”,而一个在首次提交时获得大量投票的项目将跳到“热度”列表的顶部,但随后随着投票而下降别进来了
(我使用的是 MySQL+PHP,但我对一般设计模式感兴趣)。