%k25u25%fgd5n!?%k25u25%fgd5n!%k25u25%fgd5n!?%k25u25%fgd5n!plugin.xml000066600000001503151455531500006573 0ustar00 [fr]Recherche FULLTEXT Fil 0.1 dev Indexation FULLTEXT du contenu pour accélérer le moteur de recherche http://www.spip-contrib.net/Fulltext Fulltext fulltext_fonctions.php fulltext.png fulltext-22.png Fulltext exec/fulltext.php000066600000016656151455531500010076 0ustar00$f) { if (preg_match(',^(tiny|long|medium)?text\s,i', $desc['field'][$f])) $champs[$i] = "`$f`"; else unset($champs[$i]); } return "`$nom` (".join(',', $champs).')'; } function Fulltext_lien_creer_index($table, $champs, $nom=null) { if (_request('creer') == 'tous') { return Fulltext_creer_index($table, $nom, $champs); } $url = generer_url_ecrire(_request('exec'), 'table='.$table.'&nom='.$nom ); return "

Créer l'index ".Fulltext_index($table,$champs,$nom)."

\n"; } function Fulltext_creer_index($table, $nom, $vals) { $keys = fulltext_keys($table); if ($nom == 'tout') $index = Fulltext_index($table, $vals , 'tout'); else $index = Fulltext_index($table,array($nom), $nom); if (!$s = sql_alter("TABLE ".table_objet_sql($table) ." ADD FULLTEXT ".$index)) return ""._T('spip:erreur')." ".mysql_errno()." ".mysql_error()."
$query

\n"; sql_optimize(table_objet_sql($table)); $keys = fulltext_keys($table); if (isset($keys[$nom])) return "

"._T('fulltext:fulltext_cree')." : $keys[$nom]

"; else return "

"._T('spip:erreur').".

\n"; } function Fulltext_supprimer_index($table, $nom='tout') { if (!$s = sql_alter("TABLE ".table_objet_sql($table)." DROP INDEX ".$nom)) return "

"._T('spip:erreur')." ".mysql_errno()." ".mysql_error()."

$query

\n"; else return " => "._T('fulltext:index_supprime')."\n"; } function Fulltext_regenerer_index($table) { if (count($keys = fulltext_keys($table)) > 0) { foreach ($keys as $key=>$vals) { if (!$s = sql_alter("TABLE ".table_objet_sql($table)." DROP INDEX ".$key)) return "

"._T('spip:erreur')." ".mysql_errno()." ".mysql_error()."

$query

\n"; if (!$s = sql_alter("TABLE ".table_objet_sql($table)." ADD FULLTEXT ".$key." (".$vals.")")) return ""._T('spip:erreur')." ".mysql_errno()." ".mysql_error()."
$query

\n"; sql_optimize(table_objet_sql($table)); } return "

"._T('fulltext:index_regenere')."

"; } } function exec_fulltext() { pipeline('exec_init',array('args'=>array('exec'=>'fulltext'),'data'=>'')); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page("Fulltext", "accueil", "accueil"); echo debut_gauche("",true); echo creer_colonne_droite("", true); echo pipeline('affiche_droite',array('args'=>array('exec'=>'fulltext'),'data'=>'')); echo "\n"; echo propre(_T('fulltext:liste_tables_connues')." [->http://www.spip-contrib.net/Fulltext]."); echo debut_droite("", true); include_spip('inc/autoriser'); if(!autoriser('webmestre')) die(_T('fulltext:reserve_webmestres')); // on va chercher les tables avec liste_des_champs() include_spip('inc/rechercher'); include_spip('base/abstract_sql'); $tables = liste_des_champs(); // Creer un index ? if ($table = _request('table') AND $nom = _request('nom') AND preg_match(',^[a-z_0-9]+$,', "$nom$table")) { echo Fulltext_creer_index($table, $nom, array_keys($tables[$table])); } // charset site $charset = strtolower(str_replace('-','',$GLOBALS['meta']['charset'])); $necessite_conversion = false; foreach($tables as $table => $vals) { // charset table $data = sql_fetch(sql_query("SHOW CREATE TABLE ".table_objet_sql($table))); preg_match(',DEFAULT CHARSET=([^\s]+),', $data["Create Table"], $match); $charset_table = strtolower(str_replace('-','',$match[1])); $charset_table = preg_replace(',^latin1$,', 'iso88591', $charset_table); if ($charset_table != '' AND $charset != $charset_table) $necessite_conversion = true; $keys = fulltext_keys($table); $count = sql_countsel(table_objet_sql($table)); echo "

$table ($count)

\n"; if (_request('regenerer') == $table OR _request('regenerer') == 'tous') echo Fulltext_regenerer_index($table); if (!$engine = Fulltext_trouver_engine_table($table) OR strtolower($engine) != 'myisam') { if (_request('myisam') == $table OR _request('myisam') == 'tous') { $s = sql_alter("TABLE ".table_objet_sql($table)." ENGINE=MyISAM"); if (!$s) echo "

"._T('spip:erreur')." ".mysql_errno().' '.mysql_error()."

\n"; else echo "

"._T('fulltext:table_convertie')."

\n"; } else if ($engine) { echo "

"._T('fulltext:table_format')." '".$engine."'; "._T('fulltext:il_faut_myisam').".

\n"; echo "

"._T('fulltext:convertir_myisam')."

\n"; $myisam++; } else { echo "

"._T('fulltext:table_non_reconnue').".

"; } } else { if ($keys) { foreach($keys as $key=>$def) { echo "
$key".' '._T('fulltext:supprimer').''; if (_request('supprimer') == $table AND _request('index') == $key) { echo Fulltext_supprimer_index($table, $key).'
'; continue; } echo "
$def
\n"; } } else if (!(_request('creer') == 'tous')) echo "

"._T('fulltext:pas_index')."

\n"; $champs = array_keys($vals); // le champ de titre est celui qui a le poids le plus eleve asort($vals); $champs2 = array_keys($vals); $champ_titre = array_pop($champs2); if (!isset($keys[$champ_titre])) { echo Fulltext_lien_creer_index($table, array($champ_titre), $champ_titre); $n ++; } if (!isset($keys['tout'])) { echo Fulltext_lien_creer_index($table, $champs, 'tout'); $n ++; } } } // S'il y a des index a creer les proposer if ($n AND !(_request('creer') == 'tous')) { $url = generer_url_ecrire(_request('exec'), 'creer=tous'); echo "

"._T('fulltext:creer_tous')."

\n"; } if ($myisam) { $url = generer_url_ecrire(_request('exec'), 'myisam=tous'); echo "

"._T('fulltext:convertir_toutes')."

\n"; } $url = generer_url_ecrire(_request('exec'), 'regenerer=tous'); echo "

"._T('fulltext:regenerer_tous')."

\n"; // signaler les incoherences de charset site/tables qui plantent les requetes avec accents... // ?exec=convert_sql_utf8 => conversion base | ?exec=convert_utf8 => conversion site if ($necessite_conversion) { $modif = (substr($charset, 0, 3) == 'iso' ? 'convert_utf8' : 'convert_sql_utf8'); $url = generer_url_ecrire($modif); echo "

"._T('fulltext:incoherence_charset').""._T('fulltext:convertir_utf8')."

\n"; } echo fin_gauche(), fin_page(); } fulltext-22.png000066600000002136151455531500007354 0ustar00PNG  IHDRĴl;tIME /t+ pHYsXX pgAMA aIDATxڵU[oEv=k{;q"uV^(܄ D_ @>J UD"RBz; j; I;˙]ߒ;gfs7Kei4Rc $ɒ$& lIlzDX/Gle友XrRll伩ohPذP}*nmA^ [|l(?Dl(VG΄*Di0<4d;wprTP`+5KA\BW+U;6&`✃Rj~rx52\OoR arzCQ?( TUTR0 oS^/ \W|OM_"JQ>{64dYD~px\97[`m"d(?NTBĺaol2ԊE0S"rKKv!zr9DΣG(2͙\i,~IH#P38ƈu8V[XC&UXie/kmՑ1-yR,*$hF ՚SXU;na,3 <p(ŒnLL ˦s?v-BuB2 S(d٢I2i0w: sr췒H-A,+LFu].ks`H*+LWUUb4333: 500P(dA<ۿ{m9IENDB`fulltext.png000066600000021542151455531500007135 0ustar00PNG  IHDR>asBIT|d pHYs^tEXtSoftwarewww.inkscape.org< IDATxy$W?/ꮾGCHH#]  -wa aņX:baa/? ,-Hb$$B գhwwG{#32򨪮ߎ|/~~ePJ &`o,`c[8`c[8`c[8`c[8`c[8`#x-\|3^O ?izoK#[gUY ]iƋw =Rn?xwt| !LGM|L=sߙf'/>mz|R):ጷ<('A[8 ;NT / ڟ+D4( Lck[nrGqWzV -彗A]l}! Bx1I'fAw%\!S㱐7S*o<0V^xfoA艊19zERTjuhD yH$&k<6XYƠZϟxR%ps bbbx&Z`u"CqхHPJ!MQ̨Bam{VQutY ı M`: CO[eT:nb1gM_@B`1+\I{\di6>Fo4u>řIvbLfbȮ:66ƾK/ q7r Q VVVVC Did:JP 2A̘qU{S<=Ӝ9sZJ`M\C)mCht)ek0K#YugQN5+ "D@2L=;A߻v<@^3yloip6-#e*K@pdinZZ#2{h`MRXT,F*%5ҥa44hP;wءCQ+w[TWjJNtWbϱf'55sX2VeV'j0}WZ 0K&dN$~X$B*1bRaZ%_//q/@]w3A}y :Ooå<|AN:E8TiYZa4YrE{PA.q"6b(gyaܟ|H.Uij)7&wBȐh$wfW.gszq"gY¿#29pN^ӲA'09H ) h C?Xwd&2މqpr㋋r"0 4FK yeK֦ƽ%̒R!֖f3CBPÔ=&WNMM$|CB `R|bss8|#iZh{SlzZ7MMj(|J(bhބT} dc_n4X.)T {G D& d̙0Ź9,Cxc3]6[k&3 pn sdM#5#pNSY cc%=1_W|b=v@)u])kgWVG"Lg!ڃHjyy~CSSj-2אpm8Dk9wBz!:+wߍVf~s"ghJ"{ rlE%@kP*!VW̾BIjYYanms9f@o#8{9J?w/hZt454ܟt-=])Bk%4  Y|&\2:uϯ4]XT7Q]x#=ZhBi͚Ǯݨ[n&:w㏣NE "2L6:e S;xs8aQ)E0Wxn/VAM\$QJX= "B")3ci~Rri.  $X ⚆:■_ڑ_DIi=Da}^{+{dc =qjF|퀗ԩq5x/B-歖 i6_ݬ{jlkoX" H:r59}t:f㺱g]wٳ>wkv$ nz DWW=2>Nh4<7t )3<2 mهR5\ڇԣ?-/{1H*BPdW6K\F.W474 2J;ٝuuA;'')V_XJ8'R)XYA,.i6;LH\CJ$Y,R}P]Zu{wnNKiAhST#q՞PN7,j> LP,=y}|ܳεv\>o-Q;,Bl@!Fs?hT|Y3N{EJ%"|ڽKac7L CwyLhdu"Ǐ~7lmvF XART*YOGǯ0,@sjaw3CIt:| ()T\EUۛ#NᡇX)ɗ hD%%S̩g4Ҥy?n#M6db|>P&#H 8/Bk^)ez}__X4Mc X*.ogw2d~(, L BF)UhgΠ_&E&jzRD\ahKӅr,I<|%%4.<ϣ$76 k! MF)V*|U Cݰ$IZZfbzVC4ڌrsPRDB{CJ 4R1mz[vT roA4JRĴ`VS6 .7%.'uàhPרCdov8 k1Ț HhnMDYaFC _.c:ц=3O T_\Nk5{psUP.GdnjF,d?0R^Pn–<8xlRJkJB`52T[O^kj_ZEII{GWoqB:GIs5Qx[Sm6@=I%lJsȞBg)֊AR ϞJQ oST u`w%2G'a`T_,p||T)V:lZ͝+ֹqסr!F)J<] wcidwGVhPx-3ah^٫ilTo$>m(C+JZ.{R` °^(=0GNu`bL</࢑&8rvK <{/GF^WRkӑ&ʇn'3,RԄ$j3kkH{/{ENM8p9:2DV(=~咉hGFd|}eLU^]eZ?ʉ1~{7xN#W.9#@+_CjcTnԃr|iw ë岉WMOVT.V/,XX4r$c }¿l";/8ϳuKxjf'`8q߅ !vIufv)R*k@(z+gjzcAX#'=zJA0hD5X$BLHb %Ӧt ,c4T*qӹ8vd7Mb><ͽ 7?u,C鮻|T^f~d]jnQ3ήBGOd.ǣ]d#]I:~|QgP k '5.^Ae_n4xi~-~i!qr9"ƾ5kDwBud#- 65?'QY*8`u^__ WNO3Q^?'ȁLAwiaq@ǡd/} cN*G(XX {&CJN*R)P*V.hJ)"Bkdq5=GfOOR4kBkPMaB =^~X^fpJouױrzʔA#f9eK.x6vŵ~[ n\$oM)*O?MTheq8{QMk a9֯ |;d>@;R~ }vVQyi^YTؑ,MX GS)eWnts[TZ/97{Bn%zÇ"  92B+i<~(/]G.KeeS++R)2'oˉtNeB`;Z`:N|} 2fQ,2Ec2~TO~BGXT(jLXj@gm=ULb;!GGC#,/Jyp1]aAPoz w_|ɕe ml| /MQ!'LMM5ԓOܳϺº11?M^jKK][c8`gX}s;NL32f38dfCJ ֺñ1~{n82~8=2a qnh7GPb$p!a. Mb]87t퇈Ur(n=x~>톭 x<ҝ>}2a;'|ŢhP_vo(ܜ~[ ycQ*hXO̯KCL$!;{) %ɯH&;8,k++fPF 6Esnw^w1cgۇز;_(<_wmKBJ23S||!iƀ03Lj_GP,Bcc_ƛB7_: o~} B6r̉ٓIDATqF#Q;AZ4drcO\P9"()vp>anu[[DgA Vo'F )"Ezp hd9}{_*~?Ea0ww$Bi| # x)]쿸[a/ gZah39IRJ B3=Qʾa'Vb hejV7\ 5Tfa:^&yJ @k)!D+i)ܺuMYeiTk@C(V^|\4躮?xy v@3Bͺ}h '<,׃n<~Fz J/U}Lm7HƆ1;NƇ #;: E-މ@h&j B?LayhK+ & _A&(=] +[+@=ܙtn' ^ ҋ 1>('v/,t7L@8Ã7x1yދ@ ZK4BXOÆ֜#L ¼΃¼~ s"L 8^DӎV,x9 BÁ|h?\0$ 9]k?;y ÛBzSeto8C{[R18lݏĶlql &\t^5.IENDB`svn.revision000066600000000475151455531500007150 0ustar00 Origine: svn://zone.spip.org/spip-zone/_plugins_/fulltext Revision: 31049 Dernier commit: 2009-08-04 09:52:10 +0200 svn://zone.spip.org/spip-zone/_plugins_/fulltext 31049 2009-08-04 09:52:10 +0200 fulltext_fonctions.php000066600000000543151455531500011220 0ustar00$GLOBALS['spip_lang']))); $p->code = "'$mess_aide'"; $p->statut = 'html'; return $p; } ?>lang/fulltext_ca.php000066600000005437151455531500010531 0ustar00 'Els accents no es tenen en compte (« déjà » o « deja », ens retornaran el mateix « déjà », « dejà », « déja »...)', 'asie' => 'àsia ', 'asterisque_terminale' => 'no retornarà res: l\'asterisc* ha de ser terminal', 'aussi' => 'també', // C 'casse_indifferente' => 'La caixa (minúscula/majúscula) de les paraules cercades és indiferent.', 'convertir_myisam' => 'Convertir en MyISAM', 'convertir_toutes' => 'Convertir totes les taules en MyISAM', 'convertir_utf8' => 'convertir en UTF-8 per restaurar la coherència', 'creer_tous' => 'Crear tots els índexs FULLTEXT suggerits', // E 'enfan' => 'infan', 'enfance' => 'infància', 'enfant' => 'infant', 'enfanter' => 'infantar', 'enfantillage' => 'criaturada', 'enfants' => 'infants', 'et' => 'I', 'etranger' => 'estranger', 'exemples' => 'Exemples d\'ús', // F 'fant' => 'fant', 'fonctionnement_recherche' => 'Funcionament del motor de cerca d\'aquest lloc', 'fulltext_cree' => 'FULLTEXT creat', // I 'il_faut_myisam' => 'cal MyISAM', 'incoherence_charset' => 'Una incoherència entre el joc de caràcters del vostre lloc i el de les taules de la vostra base de dades pot falsejar les cerques amb caràcters accentuats:', 'index_regenere' => 'índex de la taula reconstruïda', 'index_supprime' => 'índex suprimit', // L 'liste_tables_connues' => 'Heus ací la llista de les taules conegudes de la cerca. Podeu afegir-hi elements FULLTEXT, segons la documentació, a l\'adreça', // M 'mais_pas' => 'però NO', // O 'ou_bien' => 'o bé', // P 'pas_index' => 'Cap índex FULLTEXT', 'premier_soit' => 'O', // R 'regenerer_tous' => 'Renovar tots els índex FULLTEXT', 'reserve_webmestres' => 'Pàgina reservada als webmestres', 'retourne' => 'Retorna els texts que contenen', // S 'sequence_exacte' => 'exactament la seqüència de paraules', 'soit' => 'O', 'supprimer' => 'Suprimir', // T 'table_convertie' => 'taula convertida en MyISAM', 'table_format' => 'Aquesta taula està en format', 'table_non_reconnue' => 'taula no reconeguda', 'textes_premier' => 'però presenta primer els texts que contenen', // U 'utiliser_operateurs_logiques' => 'La cerca utilitza els operadors lògics més corrents.' ); ?> lang/fulltext_ast.php000066600000004647151455531500010737 0ustar00 'Los acentos nun se tienen en cuenta («cuánto» o «cuanto», devuelven el mesmu «cuánto», «cuanto», «cuantó»...)', 'asterisque_terminale' => 'nun devolverá nada: l\'asteriscu * tien que tar al final', 'aussi' => 'tamién', // C 'casse_indifferente' => 'La capitalización (minúscules/mayúscules) de les pallabres guetáes ye indiferente.', 'convertir_myisam' => 'Convertir en MyISAM', 'convertir_toutes' => 'Convertir toles tables en MyISAM', 'convertir_utf8' => 'convertir a UTF-8 pa restaurar la coherencia', 'creer_tous' => 'Crear tolos indices FULLTEXT encamentáos', // E 'et' => 'Y', 'exemples' => 'Exemplos d\'usu', // F 'fonctionnement_recherche' => 'Funcionamientu del motor de gueta d\'esti sitiu', 'fulltext_cree' => 'FULLTEXT creáu', // I 'il_faut_myisam' => 'fai falta MyISAM', 'incoherence_charset' => 'Una incoherencia ente\'l xuegu de carauteres del to sitiu y el de les tables de la base de datos amenaza con dar fallos nes guetes con carauteres acentuaos:', 'index_regenere' => 'índices de la tabla rexeneraos', 'index_supprime' => 'indiz desaniciáu', // L 'liste_tables_connues' => 'Esta ye la llista de tables conocíes de la gueta. Puedes amesta-y elementos FULLTEXT, cf. la documentación na direición', // M 'mais_pas' => 'pero NON', // O 'ou_bien' => 'o bien', // P 'pas_index' => 'Ensin indiz FULLTEXT', // R 'regenerer_tous' => 'Rexenerar tolos índices FULLTEXT', 'reserve_webmestres' => 'Páxina acutada pa los webmasters', 'retourne' => 'Tornar los testos que contengan', // S 'sequence_exacte' => 'exautamente la secuencia de pallabres', 'soit' => 'O', 'supprimer' => 'Desaniciar', // T 'table_convertie' => 'tabla convertida a MyISAM', 'table_format' => 'Esta tabla ta en formatu', 'table_non_reconnue' => 'tabla nun reconocida', 'textes_premier' => 'pero presenta primero los testos que contengan', // U 'utiliser_operateurs_logiques' => 'La gueta utiliza los operadores lóxicos más corrientes.' ); ?> lang/fulltext_fr.php000066600000005421151455531500010546 0ustar00 'Les accents ne sont pas pris en compte (« déjà » ou « deja », retourneront à l\'identique « déjà », « dejà », « déja »...)', 'asie' => 'asie', 'asterisque_terminale' => 'ne retournera rien: l\'astérisque * doit être terminale', 'aussi' => 'aussi', // C 'casse_indifferente' => 'La casse (minuscule/majuscule) des mots recherchés est indifférente.', 'convertir_myisam' => 'Convertir en MyISAM', 'convertir_toutes' => 'Convertir toutes les tables en MyISAM', 'convertir_utf8' => 'convertir en UTF-8 pour restaurer la cohérence', 'creer_tous' => 'Créer tous les index FULLTEXT suggérés', // E 'enfan' => 'enfan', 'enfance' => 'enfance', 'enfant' => 'enfant', 'enfanter' => 'enfanter', 'enfantillage' => 'enfantillage', 'enfants' => 'enfants', 'et' => 'ET', 'etranger' => 'étranger', 'exemples' => 'Exemples d\'utilisation', // F 'fant' => 'fant', 'fonctionnement_recherche' => 'Fonctionnement du moteur de recherche de ce site', 'fulltext_cree' => 'FULLTEXT créé', // I 'il_faut_myisam' => 'il faut MyISAM', 'incoherence_charset' => 'Une incohérence entre le charset de votre site et celui des tables de votre base de données risque de fausser les recherches avec caractères accentués:', 'index_regenere' => 'index de la table régénérés', 'index_supprime' => 'index supprimé', // L 'liste_tables_connues' => 'Voici la liste des tables connues de la recherche. Vous pouvez y ajouter des éléments FULLTEXT, cf. documentation à l\'adresse', // M 'mais_pas' => 'mais PAS', // O 'ou_bien' => 'ou bien', // P 'pas_index' => 'Pas d\'index FULLTEXT', 'premier_soit' => 'SOIT', // R 'regenerer_tous' => 'Régénérer tous les index FULLTEXT', 'reserve_webmestres' => 'Page réservée aux webmestres', 'retourne' => 'Retourne les textes qui contiennent', // S 'sequence_exacte' => 'exactement la séquence de mots', 'soit' => 'SOIT', 'supprimer' => 'Supprimer', // T 'table_convertie' => 'table convertie en MyISAM', 'table_format' => 'Cette table est au format', 'table_non_reconnue' => 'table non reconnue', 'textes_premier' => 'mais présente en premier les textes qui contiennent', // U 'utiliser_operateurs_logiques' => 'La recherche utilise les opérateurs logiques les plus courants.' ); ?> lang/fulltext_ro.php000066600000005172151455531500010562 0ustar00 'Accentele nu sunt luate în considerare (« déjà » sau « deja », vor avea ca rezultat: « déjà », « dejà », « déja »...)', 'asterisque_terminale' => 'nu va întoarce nimic: asteriscul * trebuie să fie la final', 'aussi' => 'de asemenea', // C 'casse_indifferente' => 'Minuscul/majuscul este nerelevant.', 'convertir_myisam' => 'Convertiţi în MyISAM', 'convertir_toutes' => 'Convertiţi toate tabelele în MyISAM', 'convertir_utf8' => 'convertiţi în UTF-8 pentru a restaura coerenţa', 'creer_tous' => 'Creaţi toţi indecşii FULLTEXT sugeraţi', // E 'et' => 'ŞI', 'exemples' => 'Exemple de utilizare', // F 'fonctionnement_recherche' => 'Funcţionarea motorului de căutare a acestui site', 'fulltext_cree' => 'FULLTEXT creat', // I 'il_faut_myisam' => 'trebuie MyISAM', 'incoherence_charset' => 'O incoerenţă intre charset-ul site-ului şi cel al tabelelor din baza de date riscă să dea rezultate de căutare false în cazul caracterelor accentuate:', 'index_regenere' => 'index-ul tabelei regenerat', 'index_supprime' => 'index şters', // L 'liste_tables_connues' => 'Iată lista tabelelor cunoscute pentru căutare. Puteţi să adăugaţi elemente FULLTEXT, conform documentaţiei de la adresa', // M 'mais_pas' => 'dar NU', // O 'ou_bien' => 'sau ', // P 'pas_index' => 'Fără index FULLTEXT', // R 'regenerer_tous' => 'Regeneraţi toţi indecşii FULLTEXT', 'reserve_webmestres' => 'Pagină rezervată webmaster-ilor', 'retourne' => 'Întoarce textele care conţin', // S 'sequence_exacte' => 'exact secvenţa de cuvinte', 'soit' => 'AŞADAR', 'supprimer' => 'Ştergeţi', // T 'table_convertie' => 'tabelă convertită în MyISAM', 'table_format' => 'Această tabelă este în formatul', 'table_non_reconnue' => 'tabelă nerecunoscută', 'textes_premier' => 'dar prezintă mai întâi textele care conţin', // U 'utiliser_operateurs_logiques' => 'Căutarea utilizează operatorii logici cei mai curenţi.' ); ?> lang/fulltext_en.php000066600000004706151455531500010546 0ustar00 'Accents are not taken into account ("déjà" or "deja", will return the same results, including "déjà", "dejà", "déja"...)', 'asie' => 'asia', 'asterisque_terminale' => 'will return no results: the asterisk must be final', 'aussi' => 'also', // C 'casse_indifferente' => 'The case (lowercase/uppercase) of letters in the words is without effect.', 'convertir_myisam' => 'Convert to MyISAM', 'convertir_toutes' => 'Convert all tables to MyISAM', 'convertir_utf8' => 'convert to UTF-8 to restore coherency', 'creer_tous' => 'Create all the suggested FULLTEXT indexes', // E 'enfan' => 'chil', 'enfance' => 'childhood', 'enfant' => 'child', 'enfanter' => 'child', 'enfantillage' => 'childishness', 'enfants' => 'children', 'et' => 'AND', 'etranger' => 'stranger', 'exemples' => 'Usage examples', // F 'fant' => 'ild', 'fonctionnement_recherche' => 'How the search mechanism works on this site', 'fulltext_cree' => 'FULLTEXT created', // I 'il_faut_myisam' => 'MyISAM is required', 'incoherence_charset' => 'There is an inconsistency between the character set of your site and that of the database. This may lead to bad results being given for searches which contain accented letters:', 'index_regenere' => 'table index regenerated', 'index_supprime' => 'index deleted', // L 'liste_tables_connues' => 'Here is the list of tables taken into account for searches. You can add more FULLTEXT elements -- see the documentation at', // M 'mais_pas' => 'but NOT', // O 'ou_bien' => 'or else', // P 'pas_index' => 'No FULLTEXT index', 'premier_soit' => 'EITHER', // R 'regenerer_tous' => 'Regenerate all FULLTEXT indexes', 'reserve_webmestres' => 'Only webmasters can use this page', 'retourne' => 'Returns texts containing', // S 'sequence_exacte' => 'the exact phrase', 'soit' => '/', 'supprimer' => 'Delete', // T 'table_convertie' => 'table converted to MyISAM', 'table_format' => 'This table\'s format is', 'table_non_reconnue' => 'unrecognised table', 'textes_premier' => 'but presents first the texts which contain', // U 'utiliser_operateurs_logiques' => 'The search uses standard logical operators.' ); ?> lang/fulltext_ar.php000066600000014712151455531500010544 0ustar00 'المحرك يتجاهل العلامات النطقية (فإدخال «déjà» او «deja» يعطي «déjà» و«dejà» و«déja»...)', 'asie' => 'آسيا', 'asterisque_terminale' => 'لا يعطي شيئاً: فالنجمة يجب ان تكون في الآخر', 'aussi' => 'أيضاً', // C 'casse_indifferente' => 'لا يتأثر المحرك بحالة الأحرف ان كانت كبيرة او صغيرة.', 'convertir_myisam' => 'تحويل الى MyISAM', 'convertir_toutes' => 'تحويل كل الجداول الى MyISAM', 'convertir_utf8' => 'تحويل الى UTF-8 لاسترجاع الاتساق', 'creer_tous' => 'إنشاء كل فهارس FULLTEXT المقترحة', // E 'enfan' => 'ولد', 'enfance' => 'ولدان', 'enfant' => 'ولدي', 'enfanter' => 'ولدت', 'enfantillage' => 'ولدن', 'enfants' => 'ولد', 'et' => 'و', 'etranger' => 'غريب', 'exemples' => 'أمثلة على الاستخدام', // F 'fant' => 'لدي', 'fonctionnement_recherche' => 'طريقة عمل محرك البحث', 'fulltext_cree' => 'تم إنشاء FULLTEXT', // I 'il_faut_myisam' => 'يجب ان يكون نوع الجداول MyISAM', 'incoherence_charset' => 'قد يؤدي عدم تجانس بين طقم أحرف موقعك وطقم أحرف جداول قاعدة البيانات الى تحريف نتائج البحث للعديد من الأحرف:', 'index_regenere' => 'فهارس الجدول المعاد إنتاجها', 'index_supprime' => 'تم حذف الفهرس', // L 'liste_tables_connues' => 'هذه هي قائمة الجداول التي تعرّف عليها محرك البحثز يمكنك إضافة عناصر FULLTEXT، انظر التوثيق على العنوان', // M 'mais_pas' => 'ولكن ليس', // O 'ou_bien' => 'أو', // P 'pas_index' => 'لا يوجد فهارس FULLTEXT', 'premier_soit' => 'إما', // R 'regenerer_tous' => 'إعادة إنتاج كل فهارس FULLTEXT', 'reserve_webmestres' => 'صفحة محصورة بمسؤول الموقع', 'retourne' => 'يسترجع النصوص التي تحتوي ', // S 'sequence_exacte' => 'تسلسل الكلمات تماماً', 'soit' => 'أو', 'supprimer' => 'حذف', // T 'table_convertie' => 'تم تحويل الجدول الى MyISAM', 'table_format' => 'تنسيق هذا الجدول هو', 'table_non_reconnue' => 'جدول غير معروف', 'textes_premier' => 'ولكن يعرض أولاً النصوص التي تحتوي', // U 'utiliser_operateurs_logiques' => 'يستخدم البحث العوامل المنطقية الشائعة.' ); ?> lang/fulltext_tr.php000066600000005400151455531500010561 0ustar00 'Aksanlar dikkate alınmıyor (« déjà » veya « deja » şunlara denktir « déjà », « dejà », « déja »...)', 'asterisque_terminale' => 'hiçbir şey döndürmez: asterisk * sonda olmalıdır', 'aussi' => 'de', // C 'casse_indifferente' => 'Aranan sözcüğün büyük harf / küçük kombinasyonu önemsiz.', 'convertir_myisam' => 'MyISAM\'e dönüştür', 'convertir_toutes' => 'Tüm tabloları MyISAM\'e dönüştür', 'convertir_utf8' => 'Uyumluluğu geri almak için UTF-8\'e dönüştür', 'creer_tous' => 'Önerilen tüm FULLTEXT endekslerini oluştur', // E 'et' => 'VE', 'exemples' => 'Kullanım örnekleri', // F 'fonctionnement_recherche' => 'Bu sitedeki arama motorunun çalışması', 'fulltext_cree' => 'FULLTEXT oluşturuldu', // I 'il_faut_myisam' => 'MyISAM gerekli', 'incoherence_charset' => 'Sitenizin karakter setiyle veritabanı tablolarınızınki arasındaki uyuşmazlık aksanlı karakterlerle yapılan aramaları geçersiz kılabilir :', 'index_regenere' => 'yeniden oluşturulan tabloların endeksi', 'index_supprime' => 'endeks silindi', // L 'liste_tables_connues' => 'Arama sonucunda tanınan tablolar. Buraya FULLTEXT elemanları ekleyebilirsiniz, cf. dokümanlar şu adreste ', // M 'mais_pas' => 'ama şu DEĞİL', // O 'ou_bien' => 'veya', // P 'pas_index' => 'FULLTEXT endeksi yok', // R 'regenerer_tous' => 'Tüm FULLTEXT endekslerini yeniden oluştur', 'reserve_webmestres' => 'Site yöneticilerine ayrılmış sayfa', 'retourne' => 'İçeren metinleri getirir', // S 'sequence_exacte' => 'tam olarak sözcük serisini', 'soit' => 'OLSUN', 'supprimer' => 'Sİl', // T 'table_convertie' => 'tablo MyISAM\'e dönüştürüldü', 'table_format' => 'Bu tablonun formatı ', 'table_non_reconnue' => 'tanınmayan tablo', 'textes_premier' => 'ama ilk önce şunu içeren metinleri gösterir', // U 'utiliser_operateurs_logiques' => 'Arama en sık kullanılan mantıksal operatörleri kullanır.' ); ?> inc/rechercher.php000066600000036006151455531500010155 0ustar00 array( 'surtitre' => 5, 'titre' => 8, 'soustitre' => 5, 'chapo' => 3, 'texte' => 1, 'ps' => 1, 'nom_site' => 1, 'url_site' => 1, 'descriptif' => 4 ), 'breve' => array( 'titre' => 8, 'texte' => 2, 'lien_titre' => 1, 'lien_url' => 1 ), 'rubrique' => array( 'titre' => 8, 'descriptif' => 5, 'texte' => 1 ), 'site' => array( 'nom_site' => 5, 'url_site' => 1, 'descriptif' => 3 ), 'mot' => array( 'titre' => 8, 'texte' => 1, 'descriptif' => 5 ), 'auteur' => array( 'nom' => 5, 'bio' => 1, 'email' => 1, 'nom_site' => 1, 'url_site' => 1, 'login' => 1 ), 'forum' => array( 'titre' => 3, 'texte' => 1, 'auteur' => 2, 'email_auteur' => 2, 'nom_site' => 1, 'url_site' => 1 ), 'document' => array( 'titre' => 3, 'descriptif' => 1, 'fichier' => 1 ), 'syndic_article' => array( 'titre' => 5, 'descriptif' => 1 ), 'signature' => array( 'nom_email' => 2, 'ad_email' => 4, 'nom_site' => 2, 'url_site' => 4, 'message' => 1 ) ) ); } // Recherche des auteurs et mots-cles associes // en ne regardant que le titre ou le nom // http://doc.spip.org/@liste_des_jointures function liste_des_jointures() { return pipeline('rechercher_liste_des_jointures', array( 'article' => array( 'auteur' => array('nom' => 10), 'mot' => array('titre' => 3), 'document' => array('titre' => 2, 'descriptif' => 1) ), 'breve' => array( 'mot' => array('titre' => 3), 'document' => array('titre' => 2, 'descriptif' => 1) ), 'rubrique' => array( 'mot' => array('titre' => 3), 'document' => array('titre' => 2, 'descriptif' => 1) ), 'document' => array( 'mot' => array('titre' => 3) ) ) ); } function fulltext_keys($table, $prefix=null, $serveur=null) { if ($s = sql_query("SHOW CREATE TABLE ".table_objet_sql($table), $serveur) AND $t = sql_fetch($s) AND $create = array_pop($t) AND preg_match_all('/,\s*FULLTEXT\sKEY.*`(.*)`\s+[(](.*)[)]/i', $create, $keys, PREG_SET_ORDER)) { $cles = array(); foreach ($keys as $key) { $cle = $key[2]; if ($prefix) $cle = preg_replace(',`.*`,U', $prefix.'.$0', $cle); $cles[$key[1]] = $cle; } spip_log("fulltext $table: ".join(', ',array_keys($cles)),'recherche'); return $cles; } } // Effectue une recherche sur toutes les tables de la base de donnees // options : // - toutvoir pour eviter autoriser(voir) // - flags pour eviter les flags regexp par defaut (UimsS) // - champs pour retourner les champs concernes // - score pour retourner un score // On peut passer les tables, ou une chaine listant les tables souhaitees // http://doc.spip.org/@recherche_en_base function recherche_en_base($recherche='', $tables=NULL, $options=array(), $serveur='') { include_spip('base/abstract_sql'); if (!is_array($tables)) { $liste = liste_des_champs(); if (is_string($tables) AND $tables != '') { $toutes = array(); foreach(explode(',', $tables) as $t) if (isset($liste[$t])) $toutes[$t] = $liste[$t]; $tables = $toutes; unset($toutes); } else $tables = $liste; } include_spip('inc/autoriser'); // options par defaut $options = array_merge(array( 'preg_flags' => 'UimsS', 'toutvoir' => false, 'champs' => false, 'score' => false, 'matches' => false, 'jointures' => false ), $options ); $results = array(); $recherche_brute = $recherche; if (!strlen($recherche) OR !count($tables)) return array(); $u = $GLOBALS['meta']['pcre_u']; include_spip('inc/charsets'); $recherche = trim(translitteration($recherche)); // s'il y a plusieurs mots il faut les chercher tous : oblige REGEXP $recherche = preg_replace(',\s+,'.$u, '|', $recherche); $preg = '/'.str_replace('/', '\\/', $recherche).'/' . $options['preg_flags']; // Si la chaine est inactive, on va utiliser LIKE pour aller plus vite // ou si l'expression reguliere est invalide if (preg_quote($recherche, '/') == $recherche OR (@preg_match($preg,'')===FALSE) ) { $methode = 'LIKE'; $u = $GLOBALS['meta']['pcre_u']; // eviter les parentheses qui interferent avec pcre par la suite (dans le preg_match_all) s'il y a des reponses $recherche = str_replace( array('(',')','?','[', ']'), array('\(','\)','[?]', '\[', '\]'), $recherche); $recherche_mod = $recherche; // echapper les % et _ $q = str_replace(array('%','_'), array('\%', '\_'), trim($recherche)); // les expressions entre " " sont un mot a chercher tel quel // -> on remplace les espaces par un _ et on enleve les guillemets if (preg_match(',["][^"]+["],Uims',$q,$matches)){ foreach($matches as $match){ // corriger le like dans le $q $word = preg_replace(",\s+,Uims","_",$match); $word = trim($word,'"'); $q = str_replace($match,$word,$q); // corriger la regexp $word = preg_replace(",\s+,Uims","[\s]",$match); $word = trim($word,'"'); $recherche_mod = str_replace($match,$word,$recherche_mod); } } $q = sql_quote( "%" . preg_replace(",\s+,".$u, "%", $q) . "%" ); $preg = '/'.preg_replace(",\s+,".$u, ".+", trim($recherche_mod)).'/' . $options['preg_flags']; } else { $methode = 'REGEXP'; $q = sql_quote($recherche); } $jointures = $options['jointures'] ? liste_des_jointures() : array(); foreach ($tables as $table => $champs) { spip_timer('rech'); $requete = array( "SELECT"=>array(), "FROM"=>array(), "WHERE"=>array(), "GROUPBY"=>array(), "ORDERBY"=>array(), "LIMIT"=>"", "HAVING"=>array() ); $_id_table = id_table_objet($table); $requete['SELECT'][] = "t.".$_id_table; $a = array(); // Recherche fulltext foreach ($champs as $champ => $poids) { if (is_array($champ)){ spip_log("requetes imbriquees interdites"); } else { if (strpos($champ,".")===FALSE) $champ = "t.$champ"; $requete['SELECT'][] = $champ; $a[] = $champ.' '.$methode.' '.$q; } } if ($a) $requete['WHERE'][] = join(" OR ", $a); $requete['FROM'][] = table_objet_sql($table).' AS t'; // FULLTEXT $fulltext = false; # cette table est-elle fulltext? if ($keys = fulltext_keys($table, 't', $serveur)) { $fulltext = true; $r = trim(preg_replace(',\s+,', ' ', $recherche_brute)); // si espace, ajouter la meme chaine avec des guillemets pour ameliorer la pertinence $pe = (strpos($r, ' ') AND strpos($r,'"')===false) ? sql_quote(trim("\"$r\""), $serveur) : ''; // On utilise la translitteration pour contourner le pb des bases // declarees en iso-latin mais remplies d'utf8 if (($r2 = translitteration($r)) != $r) $r .= ' '.$r2; $p = sql_quote(trim("$r"), $serveur); // On va additionner toutes les cles FULLTEXT // de la table $score = array(); foreach ($keys as $name => $key) { $val = "MATCH($key) AGAINST ($p)"; // Une chaine exacte rapporte plein de points if ($pe) $val .= "+ 2 * MATCH($key) AGAINST ($pe)"; // Appliquer les ponderations donnees // quels sont les champs presents ? // par defaut le poids d'une cle est fonction decroissante // de son nombre d'elements // ainsi un FULLTEXT sur `titre` vaudra plus que `titre`,`chapo` $compteur = preg_match_all(',`.*`,U', $key, $ignore); $mult = intval(sqrt(1000/$compteur))/10; // (Compat ascendante) si un FULLTEXT porte sur un seul champ, // ET est nomme de la meme facon : `titre` (`titre`) // sa ponderation est eventuellement donnee par la table $liste if ($key == "t.`${name}`" AND $ponderation = $liste[$table][$name]) $mult = $ponderation; // Appliquer le coefficient multiplicatif if ($mult != 1) $val = "($val) * $mult"; // si symboles booleens les prendre en compte if ($boolean = preg_match(', [+-><~]|\* |".*?",', " $r ")) $val = "MATCH($key) AGAINST ($p IN BOOLEAN MODE) * $mult"; $score[] = $val; } // On ajoute la premiere cle FULLTEXT de chaque jointure $from = array_pop($requete['FROM']); if (is_array($jointures[$table])) foreach(array_keys($jointures[$table]) as $jtable) { $i++; if ($mkeys = fulltext_keys($jtable, 'obj'.$i, $serveur)) { $score[] = "SUM(MATCH(".array_shift($mkeys).") AGAINST ($p".($boolean ?' IN BOOLEAN MODE':'')."))"; $_id_join = id_table_objet($jtable); $table_join = table_objet($jtable); if ($jtable == 'document') $from .= " LEFT JOIN spip_documents_liens AS lien$i ON (lien$i.id_objet=t.$_id_table AND lien$i.objet='$table') LEFT JOIN spip_${table_join} AS obj$i ON lien$i.$_id_join=obj$i.$_id_join "; else $from .= " LEFT JOIN spip_${jtable}s_${table}s as lien$i ON lien$i.$_id_table=t.$_id_table LEFT JOIN spip_${table_join} AS obj$i ON lien$i.$_id_join=obj$i.$_id_join "; } } $requete['FROM'][] = $from; $score = join(' + ', $score).' AS score'; spip_log($score, 'recherche'); // si on define(_FULLTEXT_WHERE_$table,'date>"2000") // cette contrainte est ajoutee ici:) $requete['WHERE'] = array(); if (defined('_FULLTEXT_WHERE_'.$table)) $requete['WHERE'][] = constant('_FULLTEXT_WHERE_'.$table); else if (!test_espace_prive() AND in_array($table, array('article', 'rubrique', 'breve', 'forum', 'syndic_article'))) $requete['WHERE'][] = "t.statut='publie'"; // nombre max de resultats renvoyes par l'API define('_FULLTEXT_MAX_RESULTS', 500); // preparer la requete $requete['SELECT'] = array( "t.$_id_table" ,$score ); // popularite ? if (true # config : "prendre en compte la popularite AND $table == 'article') $requete['SELECT'][] = "t.popularite"; # "t.date" # "t.note" #array_unshift($requete['FROM'], table_objet_sql($table)." AS t"); $requete['GROUPBY'] = array("t.$_id_table"); $requete['ORDERBY'] = "score DESC"; $requete['LIMIT'] = "0,"._FULLTEXT_MAX_RESULTS; $requete['HAVING'] = ''; # var_dump($requete); # spip_log($requete,'recherche'); if (!$s) spip_log(mysql_errno().' '.mysql_error()."\n".$query, 'recherche'); # exit; } $s = sql_select( $requete['SELECT'], $requete['FROM'], $requete['WHERE'], implode(" ",$requete['GROUPBY']), $requete['ORDERBY'], $requete['LIMIT'], $requete['HAVING'], $serveur ); while ($t = sql_fetch($s,$serveur) AND (!isset($t['score']) OR $t['score']>0)) { $id = intval($t[$_id_table]); // FULLTEXT if ($fulltext) { $pts = $t['score']; if (isset($t['popularite']) AND $mpop = $GLOBALS['meta']['popularite_max']) $pts *= (1+$t['popularite']/$mpop); $results[$table][$id]['score'] = $pts; } ELSE // fin FULLTEXT if ($options['toutvoir'] OR autoriser('voir', $table, $id)) { // indiquer les champs concernes $champs_vus = array(); $score = 0; $matches = array(); $vu = false; foreach ($champs as $champ => $poids) { $champ = explode('.',$champ); $champ = end($champ); if ($n = ($options['score'] || $options['matches']) ? preg_match_all($preg, translitteration_rapide($t[$champ]), $regs, PREG_SET_ORDER) : preg_match($preg, translitteration_rapide($t[$champ])) ) { $vu = true; if ($options['champs']) $champs_vus[$champ] = $t[$champ]; if ($options['score']) $score += $n * $poids; if ($options['matches']) $matches[$champ] = $regs; if (!$options['champs'] AND !$options['score'] AND !$options['matches']) break; } } if ($vu) { if (!isset($results[$table])) $results[$table] = array(); $results[$table][$id] = array(); if ($champs_vus) $results[$table][$id]['champs'] = $champs_vus; if ($score) $results[$table][$id]['score'] = $score; if ($matches) $results[$table][$id]['matches'] = $matches; } } } // Gerer les donnees associees if (!$fulltext AND isset($jointures[$table]) AND $joints = recherche_en_base( $recherche, $jointures[$table], array_merge($options, array('jointures' => false)) ) ) { foreach ($joints as $jtable => $jj) { $it = id_table_objet($table); $ij = id_table_objet($jtable); if ($jtable == 'document') $s = sql_select("id_objet as $it, $ij", "spip_documents_liens", array("objet='$table'",sql_in('id_'.${jtable}, array_keys($jj))), '','','','',$serveur); else $s = sql_select("$it,$ij", "spip_${jtable}s_${table}s", sql_in('id_'.${jtable}, array_keys($jj)), '','','','',$serveur); while ($t = sql_fetch($s)) { $id = $t[$it]; $joint = $jj[$t[$ij]]; if (!isset($results[$table])) $results[$table] = array(); if (!isset($results[$table][$id])) $results[$table][$id] = array(); if ($joint['score']) $results[$table][$id]['score'] += $joint['score']; if ($joint['champs']) foreach($joint['champs'] as $c => $val) $results[$table][$id]['champs'][$jtable.'.'.$c] = $val; if ($joint['matches']) foreach($joint['matches'] as $c => $val) $results[$table][$id]['matches'][$jtable.'.'.$c] = $val; } } } spip_log("recherche $table ($recherche_brute) : ".count($results[$table])." resultats ".spip_timer('rech'),'recherche'); } return $results; } // Effectue une recherche sur toutes les tables de la base de donnees // http://doc.spip.org/@remplace_en_base function remplace_en_base($recherche='', $remplace=NULL, $tables=NULL, $options=array()) { include_spip('inc/modifier'); // options par defaut $options = array_merge(array( 'preg_flags' => 'UimsS', 'toutmodifier' => false ), $options ); $options['champs'] = true; if (!is_array($tables)) $tables = liste_des_champs(); $results = recherche_en_base($recherche, $tables, $options); $preg = '/'.str_replace('/', '\\/', $recherche).'/' . $options['preg_flags']; foreach ($results as $table => $r) { $_id_table = id_table_objet($table); foreach ($r as $id => $x) { if ($options['toutmodifier'] OR autoriser('modifier', $table, $id)) { $modifs = array(); foreach ($x['champs'] as $key => $val) { if ($key == $_id_table) next; $repl = preg_replace($preg, $remplace, $val); if ($repl <> $val) $modifs[$key] = $repl; } if ($modifs) modifier_contenu($table, $id, array( 'champs' => array_keys($modifs), ), $modifs); } } } } ?> aide_recherche.html000066600000010614151455531500010356 0ustar00[(#REM) Eviter les boutons d'admin sur la page d'oubli ]#HTTP_HEADER{Content-Type: text/html; charset=#CHARSET} <:fulltext:fonctionnement_recherche:>
[(#LANG_DIR|=={rtl}|?{#SET{arr,←},#SET{arr,→}})]

<:fulltext:fonctionnement_recherche:>

<:fulltext:casse_indifferente:>
<:fulltext:accents_pas_pris:>
<:fulltext:utiliser_operateurs_logiques:>
<:fulltext:exemples:>
  #GET{arr} <:fulltext:retourne:> <:fulltext:premier_soit:>  <:fulltext:enfant:> , <:fulltext:soit:>  <:fulltext:etranger:> , <:fulltext:soit:>  <:fulltext:enfant:>  <:fulltext:et:>  <:fulltext:etranger:> .
  #GET{arr} <:fulltext:retourne:>  <:fulltext:enfant:>  <:fulltext:et:>  <:fulltext:etranger:> .
  #GET{arr} <:fulltext:retourne:>  <:fulltext:enfant:>  <:fulltext:textes_premier:> <:fulltext:aussi:>  <:fulltext:etranger:> .
  #GET{arr} <:fulltext:retourne:>  <:fulltext:enfant:>  <:fulltext:mais_pas:>  <:fulltext:etranger:> .
  #GET{arr} <:fulltext:retourne:>  <:fulltext:enfant:>  <:fulltext:et:>  <:fulltext:etranger:>  <:fulltext:ou_bien:>  <:fulltext:enfant:>  <:fulltext:et:>  <:fulltext:asie:>  <:fulltext:textes_premier:>  <:fulltext:enfant:>  <:fulltext:et:>  <:fulltext:etranger:> .
  #GET{arr} <:fulltext:retourne:>  <:fulltext:enfant:> ,  <:fulltext:enfants:> ,  <:fulltext:enfance:>e ,  <:fulltext:enfanter:> ,  <:fulltext:enfantillage:> .... ( *<:fulltext:fant:>  <:fulltext:asterisque_terminale:>.)
  #GET{arr} <:fulltext:retourne:> <:fulltext:sequence_exacte:>  <:fulltext:enfant:> <:fulltext:etranger:> .