Bonjour,
Je me suis plongé dans le code d'inc_index.php3 dans l'optique d'une internalisation et voici quelques réflexions sur le moteur de recherche de SPIP.
1) l'indexation full texte actuelle n'est pas compatible avec la notation des caractères unicode en entités numériques &#xxxx; qu'on retrouve dans le vietnamien, l'arabe, le japonnais,....
En effet les caractères & # ; sont déjà des séparateurs pour l'indexation.
Une illustration simple:
- Le nom vietnam en vietnamien est stocké dans la base sous la forme việt nam.
- Le mécanisme d'indexation découpe les 2 chaines en vi 7879 t nam.
- du fait de la limite de 3 caractères à l'indexation, on ne retrouve plus que 7879 et nam dans le dictionnaire de SPIP
7879 montre qu'on va indexer individuellement chaque caractéres unicodes et les mots ne comportant pas d'entités numeriques. Ce qui est lourd et donnera par la suite des recherches incohérentes.
Une solution pourrait être de retirer & # ; de la liste des séparateurs dans la fonction separateurs_indexation().
Ainsi, on va pouvoir indexer correctement les chaines việt et nam .
2) Pour la Normalisation des chaines indexés dans nettoyer_chaine_indexation, le filtre des accents actuel n'a pas de sens pour les langues exotiques.
Pour les langues monosyllabiques comme le vietnamien, ne pas indexer les accents est un handicap car les mots changent complétement de sens suivant les accents. Je propose que le filtre accents soient optionnelles suivant les langues.
De plus, les fonctions PHP strtoupper et strtolower ne marchent pas bien avec les entités numériques &#xxxx; . Alors pourquoi, plutôt que forcer les minuscules dans la fonction nettoyer_chaine_indexation, ne pas appeller la fonction SPIP majuscules qu'on doit déjà personnaliser suivant les langues ?
3) L'indexation full texte de Spip a pour inconvénient de ne pas tenir compte de la proximité des mots, ce qui est un problème pour la recherche des mots composés. Une recherche sur "việt nam" va retourné tous les articles comportant 'việt' et tous les articles comportant 'nam'. Ce qui n'est pas pertinent.
Je ne sais pas si c'est le cas pour les autres langues, mais ceci qui est un grand problème pour le vietnamien qui ne comporte que des mots composés.
Une solution rapide serait de rendre accessible le mini moteur de recherche qui existe déjà dans l'interface privé, en ajoutant un formulaire #FORMULAIRE_RECHERCHE _TITRE.
Bien que moins puissante que le moteur full texte, l'utilisation du mini moteur permettra une recherche de mots composés et aura de plus l'avantage de ne pas nécessiter une indexation préalable des articles.
Pierre