O să postez la codepen.io!
Vin imediat cu soluția combinată server/client(PHP/javascript).
Pe server se iau toate fișierele de prelucrat și se adaugă dicționarul dar numai pentru cuvintele existente în fiecare fișier(direct constanta array - cât poate să fie de mare?)
Prelucrarea în javascript este accesibilă (se presupune că paginile au dimensiunea rezonabilă 100k-200k - nu discutăm de pagini de dimensiune aiurea - dacă aveți totuși un exemplu de astfel de pagină aiurea puneți link Internet - NU generată aleator)
Exemplul pe care o să-l pun va fi edificator!
Scuzați-mă dar am pus aici temporar codul (nefinisat) PHP. Nu ștergeți!
<?php
$s=file_get_contents('http://aiurea.eu/test.php');
$s=preg_replace('/(<([^>]+)>)/',' ',$s);
$s=preg_replace('/([^a-zA-Z@]+)/',' ',$s);
$s=preg_replace('/\s\s+/',' ',$s);
$v=explode(" ",$s);
$dict=file("http://aiurea.eu/dictionary.txt");
$v=array_map('strtolower',$v);
foreach ($dict as $el)
{
$wordArray=explode(":",$el);
$word=$wordArray[0];
$word=str_replace("'","",$word);
if(in_array(strtolower($word),$v))
{echo "<br>".$el;};
}
?>
Update 27.08.2015 - 8:30
@iamntz,@alescx: NU aveți dreptate cu viteza pe client (am testat 100k cu un dictionar de 50 cuvinte, execuția replace-urilor dureaza 1 sec. - acceptabil).
Am corectat scriptul client(vezi update din 26.08) - în loc de:
new RegExp(arrWords[i],"g")
se pune:
new RegExp("\\b"+word+"\\b","g")
astfel că se înlocuiesc numai cuvintele întregi și
am eliminat eroarea gravă care ducea la înlocuirea repetată a aceluiași cuvânt astfel
am folosit funcția de eliminare a duplicatelor în array - http://jsfiddle.net/ARnL3/ (în jQuery e mai simplu):
var unique = function(origArr) {
var newArr = [],
origLen = origArr.length,
found,
x, y;
for ( x = 0; x < origLen; x++ ) {
found = undefined;
for ( y = 0; y < newArr.length; y++ ) {
if ( origArr[x] === newArr[y] ) {
found = true;
break;
}
}
if ( !found) newArr.push( origArr[x] );
}
return newArr;
}
și am apelat-o după ce array-ul arrWords a fost generat:
arrWords = html.split(' ');
arrWords = unique(arrWords);
Viteza a crescut enorm!