以下では、ディレクトリ内のファイルを調べて読み取り、最大500行のファイルで新しいディレクトリに保存します。これは私にとってはうまくいきます(ダニエルに感謝します)が、変更が必要です。alphanumベースのファイルに保存したいと思います。
まず、配列のアルファを数値で(すでに小文字で)ソートすることが、私が想定する最初のステップになります。
「a」で始まる各$incoming。"/。txt"のすべての行を取得し、それらを$save500。"/ a"のフォルダーに配置しますが、それぞれ最大500行です。(ソートの一番上にある最初から始めるのが最善だと思いますので、「a」ではなく「0」ですよね?)
数字で始まるすべての行は、$save500。"/num"に入ります。
どの行もa-z0-9以外で始まりません。
これにより、このフラットファイル方式を使用して、一致するファイルをより効率的に検索できるようになります。1つのフォルダに絞り込みます。
$nextfile=0;
if (glob("" . $incoming . "/*.txt") != false){
$nextfile = count(glob("" . $save500 . "/*.txt"));
$nextfile++;
}
else{$nextfile = 1;}
/**/
$files = glob($incoming."/*.txt");
$lines = array();
foreach($files as $file){
$lines = array_merge($lines, file($file, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES));
}
$lines = array_unique($lines);
/*this would put them all in one file*/
/*file_put_contents($dirname."/done/allofthem.txt", implode("\n", $lines));*/
/*this breaks them into files of 500*/
foreach (array_chunk($lines, 500) as $chunk){
file_put_contents($save500 . "/" . $nextfile . ".txt", implode("\n", $chunk));
$nextfile++;
}
それぞれが最大500行である必要があります。
後でmysqlに卒業します。これを行っているのは今から数か月だけです。
それだけでは不十分であるかのように。最初の2人のキャラクターを脱ぐことも考えました。subs a/0からz/zでディレクトリを作成します!
応答がないため、上記の間違ったアプローチである可能性があります。
しかし、私はaardvarkのような単語を1.txt a / aフォルダー(追加)に保存したいと思います。1.txtに500行が含まれていない限り、それをa /a2.txtに保存します。
したがって、500行がない限りxeniaはx / eフォルダの1.txtファイルに追加されるので、2.txtを作成してそこに保存します。
そうすれば、1トンをメモリにロードしたり、一致するものが含まれていないファイルや行をループしたりすることなく、これらの単語をより効率的に検索できるようになります。
みんな、ありがとう!