我试图在CouchDB上使用Futon构建Map-reduce视图。地图部分代码如下:
function(doc) {
var m = new Map(); // dictionary
m.set('molto', 'R');
m.set('davvero', 'R');
m.set('veramente', 'R');
m.set('troppo', 'R');
m.set('bel', 'R');
m.set('bello', 'R');
m.set('ben', 'R');
m.set('molti', 'R');
m.set('sicuramente', 'R');
m.set('tante', 'R');
m.set('incredibile', 'R');
m.set('tanta', 'R');
m.set('top', 'R');
m.set('troppi', 'R');
m.set('urla', 'R');
m.set('assolutamente', 'R');
m.set('boom', 'R');
m.set('esattamente', 'R');
m.set('grave', 'R');
m.set('perfetto', 'R');
m.set('riconferma', 'R');
m.set('accusa', 'R');
m.set('deciso', 'R');
m.set('grande', 'P');
m.set('#superstar', 'P');
m.set('#napolivale', 'P');
m.set('#brambillasindaco', 'P');
m.set('bene', 'P');
m.set('forza', 'P');
m.set('VERO', 'P');
m.set('sostegno', 'P');
m.set('merita', 'P');
m.set('lavoro', 'P');
m.set('bravo', 'P');
m.set('cuore', 'P');
m.set('dema', 'P');
m.set('tanti', 'P');
m.set('vincere', 'P');
m.set('buon', 'P');
m.set('caro', 'P');
m.set('masaniello', 'P');
m.set('complimenti', 'P');
m.set('futuro', 'P');
m.set('buona', 'P');
m.set('#stavotalettieri', 'P');
m.set('coraggio', 'P');
m.set('#sindaco', 'P');
m.set('cara', 'P');
m.set('cambiamento', 'P');
m.set('#napolicapitale', 'P');
m.set('leader', 'P');
m.set('piace', 'P');
m.set('proposte', 'P');
m.set('risultati', 'P');
m.set('#decidelacittà ', 'P');
m.set('#napolié5stelle', 'P');
m.set('dignità ', 'P');
m.set('finalmente', 'P');
m.set('impegno', 'P');
m.set('speciale', 'P');
m.set('onestà ', 'P');
m.set('passione', 'P');
m.set('possibile', 'P');
m.set('speranza', 'P');
m.set('stile', 'P');
m.set('successo', 'P');
m.set('#sindacoxnapoli', 'P');
m.set('fiducia', 'P');
m.set('grandi', 'P');
m.set('legalità ', 'P');
m.set('rivoluzione', 'P');
m.set('voterei', 'P');
m.set('#napolibenecomune', 'P');
m.set('bellissima', 'P');
m.set('idee', 'P');
m.set('merito', 'P');
m.set('pulita', 'P');
m.set('sociale', 'P');
m.set('uniti', 'P');
m.set('valori', 'P');
m.set('#iovotodemagistris', 'P');
m.set('#iovotono', 'P');
m.set('#lettierisindaco', 'P');
m.set('#liberiamonapoli', 'P');
m.set('#marapernapoli', 'P');
m.set('libertà ', 'P');
m.set('popolari', 'P');
m.set('tifo', 'P');
m.set('vinciamo', 'P');
m.set('#corruzione', 'P');
m.set('#lavoro', 'P');
m.set('#pensioni', 'P');
m.set('amore', 'P');
m.set('belle', 'P');
m.set('grandissimo', 'P');
m.set('onesto', 'P');
m.set('riuscito', 'p');
m.set('sostiene', 'P');
m.set('vincente', 'P');
m.set('abbraccio', 'P');
m.set('adoro', 'P');
m.set('bellissimo', 'P');
m.set('big', 'P');
m.set('bravissimo', 'P');
m.set('classe', 'P');
m.set('compagno', 'P');
m.set('convinto', 'P');
m.set('luce', 'P');
m.set('pizza', 'P');
m.set('rielezione', 'P');
m.set('riparte', 'P');
m.set('#napoliautonoma', 'P');
m.set('#ricominciodalleperiferie', 'P');
m.set('libera', 'P');
m.set('migliore', 'P');
m.set('onesti', 'P');
m.set('palle', 'P');
m.set('popolare', 'P');
m.set('ribelle', 'P');
m.set('sicura', 'P');
m.set('simpatico', 'P');
m.set('stavolta', 'P');
m.set('trasparenza', 'P');
m.set('vamos', 'P');
m.set('votiamo', 'P');
m.set('#coraggio', 'P');
m.set('#decidelacitta', 'P');
m.set('#dema', 'P');
m.set('#esserenapoletanovuoldire', 'P');
m.set('#iovotoonesto', 'P');
m.set('#stalotalettieri', 'P');
m.set('brava', 'P');
m.set('buone', 'P');
m.set('piaciuto', 'P');
m.set('rappresenta', 'P');
m.set('splendido', 'P');
m.set('stavota', 'P');
m.set('#demagistrissindaco', 'P');
m.set('#lungomareliberato', 'P');
m.set('#savebikesharingnapoli', 'P');
m.set('amo', 'P');
m.set('applausi', 'P');
m.set('buono', 'P');
m.set('fortuna', 'P');
m.set('funziona', 'P');
m.set('gioia', 'P');
m.set('libero', 'P');
m.set('mafie', 'P');
m.set('meriti', 'P');
m.set('migliori', 'P');
m.set('miracolo', 'P');
m.set('opportunità ', 'P');
m.set('positivo', 'P');
m.set('qualità ', 'P');
m.set('riscatto', 'P');
m.set('sogno', 'P');
m.set('soluzione', 'P');
m.set('trasparenti', 'P');
m.set('#iopartecipo', 'P');
m.set('#iostocondemagistris', 'P');
m.set('#masaniello', 'P');
m.set('#napolipride', 'P');
m.set('#resistenza', 'P');
m.set('#riscetamento', 'P');
m.set('#votafi', 'P');
m.set('bravi', 'P');
m.set('capace', 'P');
m.set('coerenza', 'P');
m.set('combatte', 'P');
m.set('conoscere', 'P');
m.set('consigli', 'P');
m.set('credibile', 'P');
m.set('cultura', 'P');
m.set('docet', 'P');
m.set('faremo', 'P');
m.set('festa', 'P');
m.set('no', 'N');
m.set('cacare', 'N');
m.set('male', 'N');
m.set('vergogna', 'N');
m.set('fine', 'N');
m.set('problema', 'N');
m.set('#lariachetira', 'N');
m.set('cagare', 'N');
m.set('peggio', 'N');
m.set('perdere', 'N');
m.set('volgarità ', 'N');
m.set('peccato', 'N');
m.set('schifo', 'N');
m.set('abusivi', 'N');
m.set('degrado', 'N');
m.set('attacca', 'N');
m.set('peggiore', 'N');
m.set('populismo', 'N');
m.set('chiacchiere', 'N');
m.set('palazzo', 'N');
m.set('purtroppo', 'N');
m.set('spese', 'N');
m.set('vattene', 'N');
m.set('indegne', 'N');
m.set('merda', 'N');
m.set('minacce', 'N');
m.set('monnezza', 'N');
m.set('morte', 'N');
m.set('corrotti', 'N');
m.set('povera', 'N');
m.set('volgare', 'N');
m.set('cazzo', 'N');
m.set('fallimento', 'N');
m.set('flop', 'N');
m.set('minaccia', 'N');
m.set('bugie', 'N');
m.set('cacati', 'N');
m.set('colpa', 'N');
m.set('condannato', 'N');
m.set('dispiace', 'N');
m.set('distrutto', 'N');
m.set('dubbio', 'N');
m.set('errore', 'N');
m.set('#caffèscorretto', 'N');
m.set('#vergogna', 'N');
m.set('becero', 'N');
m.set('brutta', 'N');
m.set('bruttezza', 'N');
m.set('brutto', 'N');
m.set('fallito', 'N');
m.set('incapace', 'N');
m.set('inutili', 'N');
m.set('pessimo', 'N');
m.set('roba', 'N');
m.set('spieghi', 'N');
m.set('tristezza', 'N');
m.set('attacchini', 'N');
m.set('bocciato', 'N');
m.set('buffone', 'N');
m.set('crisi', 'N');
m.set('delirio', 'N');
m.set('disastro', 'N');
m.set('interista', 'N');
m.set('ridicolo', 'N');
m.set('rischio', 'N');
m.set('sangue', 'N');
m.set('solito', 'N');
m.set('vergognati', 'N');
m.set('violento', 'N');
m.set('#gomorralaserie', 'N');
m.set('culo', 'N');
m.set('esodato', 'N');
m.set('fallita', 'N');
m.set('falsità ', 'N');
m.set('fastidio', 'N');
m.set('non', 'I');
m.set('mai', 'I');
m.set('invece', 'I');
m.set('meno', 'I');
m.set('sbagliato', 'I');
m.set('nessuna', 'I');
m.set('not', 'I');
m.set('contrario', 'I');
m.set('diversa', 'I');
m.set('#jungels', 'A');
m.set('#moser', 'A');
m.set('@giroditalia', 'A');
m.set('#dumoulin', 'A');
m.set('#nibali', 'A');
m.set('#trentin', 'A');
m.set('#roglic', 'A');
m.set('#veloextra', 'A');
m.set('crono', 'A');
m.set('#gomorra2', 'A');
m.set('maillot', 'A');
m.set('#ciclismo', 'A');
m.set('http//cyclismactunet', 'A');
m.set('#girorai2016', 'A');
m.set('#saichivoti', 'A');
m.set('#eurosportciclismo', 'A');
m.set('dumoulin', 'A');
m.set('#fightforpink', 'A');
m.set('#giroditalia2016', 'A');
m.set('ciclabile', 'A');
m.set('ciclismo', 'A');
m.set('gregario', 'A');
var sentiment = 0;
var words = doc.text.split(' ');
for(var i = 0; i < words.length; i++) {
var word = words[i].replace(/^\s+|\s+$/g,""); // trim
word = word.replace(/[?!.:,;-]/g,""); // strip punctuation
word = word.replace(/\"/g,""); // strip escaped quotes
word = word.toLowerCase();
if( word.length > 0 ) {
var prova = 0;
if( m.has(word) ){
var sentChar = m.get(word);
switch (sentChar){
case 'P':
sentiment = sentiment+1;
break;
case 'N':
sentiment = sentiment-1;
break;
case 'I':
prova = 0;
break;
case 'R':
prova = 0;
break;
case 'A':
prova=0;
break;
}
}
}
}
emit(doc.Candidato,sentiment);
}
&#13;
我尝试从CouchDB中运行部分代码,传递一个人工短语,一切正常。但似乎CouchDB不喜欢新的Map()或m.set();
此代码应根据此短词典(意大利语)发送推文并对其进行情感分析,例如在字典中添加+1或减去-1(如果它在字典中的情感变量)并且它标有P(正)或P(负)。我还有其他案例,其中包括&#39; R&#39;或者&#39; A&#39;我必须做不同的事情。
问题是:为什么Map()似乎无法在CouchDB上运行?我该怎么用来避免在数组上进行顺序搜索? (我的数据库中有20k个推文)
答案 0 :(得分:0)
Map是ES6功能,CouchDB已包含的Spidermonkey版本不支持该功能。
一种选择是只使用普通对象,在这种情况下不应该使用警告/陷阱,因为意大利语在其词典中没有单词__proto__
。
另一个选择是切换到使用Node.js的较新版本(v4 +)作为查询服务器。您可以找到in the documentation的说明。 (它标记为“实验性”,因此您的里程可能会有所不同)
如果这两个选项都不可接受,您还可以找到Map polyfill库并将其包含为CommonJS Module。
就个人而言,我发现普通物体最具吸引力,因为根据我对情况的理解,它具有最少的缺点和最少的开销。