Un cas très particulier d'utilisation de SQL Server 2005 est le passage par le moteur de recherche FullText.
Ainsi avec SQL Server 2000, on pouvait créer sa propre langue (testLangue) avec son propre fichier noisetestLangue.txt, puis création des clé dans la base de registre, puis on spécifiait le code de sa langue dans la création du catalogue.
Tout ceci fonctionne très bien sous SQL Server 2000.
En revanche lors du passage sur SQL Server 2005, on se trouve face à des différences de résultat :
- Une recherche de "MARIE" n'affichera pas "MARIE-CHRISTINE" dans les résultats
- On est obligé de passer par "MARIE CHRISTINE" pour avoir ce résultat dans la liste
Cet écart se voit aussi avec les ' et tous les autres séparateurs classiques.
Après plusieurs heures de recherche et un très fort brainstorming avec mon collègue de la journée (au passage merci Thierry), on a trouvé la solution et la raison.
Ceci provient donc du code page langue du système et de la base. En effet, la langue "testLangue" avec son code hasardeux, n'existe pas dans la liste des langues générée par le système (1033, 1036, ...), donc le moteur FullText, ne connaît pas les séparateurs standards adaptés ("-", "'", ...) et du coup il n'applique pas de séparation sur les mots composés.
La solution est donc de modifier une des langue du moteur FullText en prenant par exemple le "Neutral" (fichier "noiseneu.txt"), copier le contenu de notre noisetestLangue.txt dans celui-ci et recréer intégralement notre catalogue FullText en lui donnant le code langue du Neutral (0).
On n'a plus alors qu'à rebuilder notre catalogue et la recherche fonctionnera donc pour MARIE, CHRISTINE, ...
Romelard Fabrice [MVP]
Commentaires
Enregistrer un commentaire