Bonjour,
Recherche texte libre via requête PHP :
WHERE MATCH($champ) AGAINST('$text' IN BOOLEAN MODE)
chez OVH : Mutu avec SQL privé.
Table MyISAM cela marchait très bien sauf que par défaut ft_min_word_len = 4.
Or je veux 3, les mots de 3 lettres doivent être pris en compte, par exemple "hub usb"
Autrefois il était possible de changer cette valeur par le manager OVH.
Aujourd'hui il faut faire la demande au support, cela prend plusieurs mails, plusieurs coups de téléphone et plusieurs jours. Et à chaque mois il faut recommencer car je suppose qu'ils réinitialisent leurs réglages.
OVH m'a demandé de passer la table en InnoDB car la valeur par défaut est 3.
Petit détail ce n'est pas la même variable en InnoDB.
C'est innodb_ft_min_token_size
J'ai passé la table à la fois en UTF-8 et en InnoDB.
SHOW VARIABLES LIKE '%innodb_ft_min_token_size%';
innodb_ft_min_token_size : 3
SHOW VARIABLES LIKE '%innodb_ft_max_token_size%';
innodb_ft_max_token_size : 84
Actuellement
hub usb -> 28 produits répondent à votre demande.// BON
hub usb a -> Désolé, aucun produit ne correspond au texte « hub usb a »
Cela signifie que "a" est considéré comme un motif de recherche, comme si innodb_ft_max_token_size = 1.
Donc j'ai détruit tous les index.
Puis je les ai recréés à l'identique FULLTEXT.
Puis j'ai redémarré la base.
Et j'ai toujours le même problème.
Quelqu'un aurait-il une idée ?
Recherche texte libre via requête PHP :
WHERE MATCH($champ) AGAINST('$text' IN BOOLEAN MODE)
chez OVH : Mutu avec SQL privé.
Table MyISAM cela marchait très bien sauf que par défaut ft_min_word_len = 4.
Or je veux 3, les mots de 3 lettres doivent être pris en compte, par exemple "hub usb"
Autrefois il était possible de changer cette valeur par le manager OVH.
Aujourd'hui il faut faire la demande au support, cela prend plusieurs mails, plusieurs coups de téléphone et plusieurs jours. Et à chaque mois il faut recommencer car je suppose qu'ils réinitialisent leurs réglages.
OVH m'a demandé de passer la table en InnoDB car la valeur par défaut est 3.
Petit détail ce n'est pas la même variable en InnoDB.
C'est innodb_ft_min_token_size
J'ai passé la table à la fois en UTF-8 et en InnoDB.
SHOW VARIABLES LIKE '%innodb_ft_min_token_size%';
innodb_ft_min_token_size : 3
SHOW VARIABLES LIKE '%innodb_ft_max_token_size%';
innodb_ft_max_token_size : 84
Actuellement
hub usb -> 28 produits répondent à votre demande.// BON
hub usb a -> Désolé, aucun produit ne correspond au texte « hub usb a »
Cela signifie que "a" est considéré comme un motif de recherche, comme si innodb_ft_max_token_size = 1.
Donc j'ai détruit tous les index.
Puis je les ai recréés à l'identique FULLTEXT.
Puis j'ai redémarré la base.
Et j'ai toujours le même problème.
Quelqu'un aurait-il une idée ?