Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/03/2007, 17h11   #1
Invité de passage
 
Inscription : septembre 2005
Messages : 5
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 5
Points : 3
Points : 3
Par défaut indexation fulltext des mots avec un trait d'union

J'ai un problème pour l'indexation fulltext en MySQL des mots comportant un trait d'union ("hyphen" en anglais) tels que "science-fiction". L'indexation se fait comme s'il s'agissait de 2 mots distincts (dans l'exemple il va indexer "science" et "fiction" séparément). Ce n'est pas ce que je souhaite. Je voudrais que "science-fiction" soit indexé comme un seul mot.
Savez-vous s'il y a une façon propre d'obtenir cela ? J'ai bien une solution "sale" sous la main qui consisterait à remplacer dans la base les tirets par une chaine du style "$&$" et à faire la rétroconversion à l'affichage. Mais s'il existe une solution propre, je préfèrerais.

Edit : la seule info que j'ai pu trouver sur ce sujet est un commentaire sur la page http://dev.mysql.com/doc/refman/5.0/...xt-search.html :

Citation:
Posted by Dyfed Lloyd Evans on October 21 2002 12:39am

Hyphen '-' characters break literals at the moment.
A search for something like "GATA-D22S690" finds
all entries containing GATA and not the full
hyphenated text. The '-' character is treated as a
word stop even within literals. The same is true if
any of the special text search modifiers are used (eg
+, -, ~) so that hyphenated literals are not correctly
found with full text searches.
ce post date du 21 octobre 2002. Il semble que ça n'a pas évolué depuis.
andraz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2007, 18h11   #2
Invité de passage
 
Inscription : septembre 2005
Messages : 5
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 5
Points : 3
Points : 3
j'ai trouvé cette page qui en dit un plus sur le sujet et parle de 2 solutions possibles :

Citation:
[11 Dec 2003 10:43] Sergei Golubchik
If you can rebuild mysqld, you can the desired behaviour fairy easily. In
the myisam/ftdefs.h file there is

#define HYPHEN_IS_DELIM

you need to comment it out.
Pour ma part, je suis en hébergement mutualisé et cette solution est exclue.

Citation:
[15 Sep 2006 21:17] Sergei Golubchik

There is another workaround. It was recently added to the manual:
"
Modify a character set file: This requires no recompilation. The
true_word_char() macro uses a “character type” table to distinguish letters
and numbers from other characters. . You can edit the <ctype><map> contents in
one of the character set XML files to specify that '-' is a “letter.” Then
use the given character set for your FULLTEXT indexes.
"
Là je ne comprends pas quel est le fichier à éditer. J'imagine que de toute façon je n'ai pas non plus la possibilité de faire cela en hébergement mutualisé.
andraz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2007, 16h46   #3
Membre Expert
 
Avatar de Sivrît
 
Inscription : février 2006
Messages : 953
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 953
Points : 1 189
Points : 1 189
Probablement "mysql5\share\charsets\qqc.xml", mais effectivement en mutualisé c'est pas gagné.
Sivrît est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h54.


 
 
 
 
Partenaires

Hébergement Web