网页分类
我们有这样一个网站,用户可以在其上提交他们喜爱的链接url,比如汇智网(http://www.hubwiz.com),并且提交者可以为这个url添加一些标签,作为主题,其他用户可以为这条信息打分。我们有一个集合,收集了这些信息,然后我们需要看看哪种主题最为热门,热门程度由最新打分日期和所给分数共同决定。
首先建立一个map函数,发出(emit)标签和一个基于流行度和新旧程度的值。
> map = function(){
... for(var i in this.tags){
... var recency = 1/(new Date() - this.date);
... var score = recency * this.score;
... emit(this.tags[i], {"urls":[this.url], "score":this.score});
... }
... };
现在就化简同一个标签的所有值,以得到这个标签的分数:
> reduce = function(key, emits) {
... var total = {"urls":[], "score":0};
... for(var i in emits) {
... emits[i].urls.forEach(function(url) {
... total.urls.push(url);
... });
... total.score += emits[i].score;
... }
... return total;
... };