Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL 5.6 Problème de recherche en texte intégral lors de la recherche du mot the en PHP

Ok, j'ai enfin compris ça. Il semble que j'ai déjà effacé les mots vides myisam mais pas ceux d'innodb. C'est un peu plus difficile à faire que pour myisam, mais voici les étapes pour tous ceux qui pourraient en avoir besoin :

Dans votre /etc/my.cnf (ou my.ini sous windows) ajoutez ces lignes :

Créez un tableau de mots vides. J'ai créé le mien dans une base de données appelée settings et une table appelée innodb-stopwords . Vous ne pouvez pas simplement définir innodb_ft_enable_stopword = 0 , vous devez créer et lier une table.

Assurez-vous que votre table est innodb et ajoutez une colonne appelée value , varchar(?), utf8_general_ci. Vous pouvez le laisser vide ou ajouter des valeurs au tableau.

innodb_ft_enable_stopword = 1  
innodb_ft_server_stopword_table = settings/innodb-stopwords

Redémarrez votre serveur mysql.

Supprimez et recréez vos index de texte intégral.

Si vous ne souhaitez pas redémarrer le serveur, vous pouvez définir dynamiquement les variables avec (également mettre à jour le fichier cnf/ini pour le prochain redémarrage du serveur)

--innodb_ft_enable_stopword=1
--innodb_ft_server_stopword_table=db_name/table_name

Je ne vois aucune solution pour recréer l'index... mais vous pouvez le faire en une seule commande pour que la table soit verrouillée tout le temps et que vos utilisateurs n'obtiennent pas d'erreur :

ALTER TABLE `tablename` DROP INDEX indexname, ADD FULLTEXT(`columnname`);