Je vois qu'il y a du monde même le dimanche ;-) Je suis sur la refonte de la recherche titre. Pour l'instant, je bosse sur une fonction 'test_title_query()' dans misc.inc.php. Normalement, ça vient remplacer analyze_title_query().
Ca commence comme ça (le reste est commité, mais pas utilisé encore) : function test_title_query($query, $operator=TRUE, $force_regexp=FALSE) { // fonction d'analyse d'une recherche sur titre // la fonction retourne un tableau : $query_result = array( 'type' => 0, 'restr' => '', 'order' => ''); // $query_result['type'] = type de la requête : // 0 : rien (problème) 1: match/against 2: regexp // $query_result['restr'] = critères de restriction // $query_result['order'] = critères de tri // si operator TRUE La recherche est booléenne AND // si operator FALSE La recherche est booléenne OR // si force_regexp: la rech. est forcée en mode regexp ... Si je cherche 'mouvement libération femme' avec recherche regexp forcée, j'obtiens ce restricteur : WHERE (index_tit1 REGEXP 'mouvement' OR index_tit2 REGEXP 'mouvement' OR index_tit3 REGEXP 'mouvement' OR index_tit4 REGEXP 'mouvement' OR index_serie REGEXP 'mouvement') AND (index_tit1 REGEXP 'liberation' OR index_tit2 REGEXP 'liberation' OR index_tit3 REGEXP 'liberation' OR index_tit4 REGEXP 'liberation' OR index_serie REGEXP 'liberation') AND (index_tit1 REGEXP 'femme OR index_tit2 REGEXP 'femme' OR index_tit3 REGEXP 'femme' OR index_tit4 REGEXP 'femme' OR index_serie REGEXP 'femme') Ca me paraît OK sur la forme, mais question utilisation de ressources ça te dit quoi ? (pas un peu lourd ?). J'ai une autre soluce sous le coude : WHERE index_tit1 REGEXP 'mouvement|liberation|femme' OR index_tit2 REGEXP 'mouvement|liberation|femme' OR index_tit3 REGEXP 'mouvement|liberation|femme' OR index_tit4 REGEXP 'mouvement|liberation|femme' OR index_serie REGEXP 'mouvement|liberation|femme' qui me semble moins gourmande, mais je tiens à appliquer le booléen fourni en param même si ça switche sur REGEXP. Si je ne force pas la REGEXP, j'obtiens cela (beaucoup plus civilisé...) : WHERE MATCH (index_tit1,index_tit2,index_tit3, index_tit4, index_serie) AGAINST ('mouvement') AND MATCH (index_tit1,index_tit2,index_tit3,index_tit4, index_serie) AGAINST ('liberation') AND MATCH (index_tit1,index_tit2,index_tit3,index_tit4, index_serie) AGAINST ('femme') Une fois que j'ai fini le restricteur, reste le problème de la création d'un indice de confiance pour les REGEXP. apparemment, champ REGEXP 'montruc' me retourne 0 ou 1, donc si je construit mon indice comme ça : SELECT stuff, champ1 REGEXP 'truc' + champ2 REGEXP 'truc' + ... AS indice j'obtiens une approximation d'un simili indice ? (je m'occuperais de la mise à l'echelle pour la mini-barre sur le moment de sa génération...) A+ -- François Lemarchand homepage : http://balno.free.fr/ PhpMyBibli : http://phpmybibli.sourceforge.net Liste de diffusion phpmybibli.devel Pour se désinscrire : mailto:[EMAIL PROTECTED]