2016-04-04 4 views
1

特定の文字列のインスタンスに対してnグラム(約100万行)の大きな外部ファイルを検索しています。その文字列が現れるファイルから行全体を返すことができます。それが可能なのかどうか、またどのようになるのかも知りません。 はここで、現時点では私のコードです:このコードでNode.jsのfs.readFile()を使用して、文字列が表示される行を返します。

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); 
    }); 

    }; 

私はファイルw5_.txtは素晴らしいですが、私はそれが関係するnグラムを得ることができるようにする必要があるいくつかの文字列が含まれているかどうかを判断することができますよ。例えば。 「デザイン」を検索すると、「デザインの一部」というnグラムがファイルから返されます。

これについてのお手伝いがあれば幸いです。

答えて

2

一つのオプションは、正規表現を使用することです:

// 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); 
+0

感謝場合! – papahummle

0

何百万行があるので、あなたが何らかの形でそのような行ずつ読んでください:あなたは、これが私の中で完全に働いた

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++; 
    } 
}); 
関連する問題