2016-04-04 20 views
1

Belirli bir dizenin örnekleri için büyük bir harici n-gram dosyası (yaklaşık 1 milyon satır) arıyorum. Tüm satırı, dizenin görüntülendiği dosyadan döndürmek. Bunun nasıl olabileceğini ve nasıl olabileceğini merak ediyorum. Dosya w5_.txt harika birkaç ip içeriyor ama ilgilidir n-gram elde edebilmek gerekiyorsa, ben belirleyebilir olduğum bu kod ileBir dizgenin göründüğü satırı döndürmek için Node.js 'fs.readFile() işlevini kullanın.

composeLines = function(importantWords, cb) { 
    var word = importantWords.shift(); 

    fs.readFile("./w5_.txt", function(err, cont) { 
     if (err) throw err; 
     console.log("String"+(cont.indexOf(word)>-1 ? " " : " not ")+"found"); 

     cb(importantWords); 
    }); 

    }; 

: İşte şu anda benim kod. Örneğin. "tasarım" kelimesinin aranması, n-gramın "tasarımın bir parçası" olan dosyadan döndürülmesidir.

Bu konuda herhangi bir yardım çok takdir edilecektir. çizgilerin milyonlarca böyle bir şekilde satır satır okumalı olduğundan

// Make sure `word` is properly escaped first 

// 'm' allows '^' and '$' to match line boundaries or 
// start and beginning of the input (respectively) 
var re = new RegExp('^.*' + word + '.*$', 'm'); 
var m = re.exec(cont); 
if (m) 
    console.log('Word %j found on line: %j', word, m[0]); 
else 
    console.log('Word %j not found', word); 

cevap

2

Seçeneklerden biri normal bir ifade kullanmaktır bunda mükemmel çalıştı,

var word = importantWords.shift(); 

var matchCount = 0; 
var lineCount = 0; 

var lineReader = require('readline').createInterface({ 
    input: require('fs').createReadStream('file.in') 
}); 

lineReader.on('line', function (line) { 
    lineCount++; 
    if(-1 < line.indexOf(word)){ 
    console.log(line); 
    matchCount++; 
    } 
}); 
+0

Teşekkür sizi benim vaka! – papahummle

0

:

İlgili konular