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

Recherche de noms multi-colonnes MySQL

Votre meilleur pari ici est de créer un index FULLTEXT qui englobe les deux champs

Étape 1) Créez un fichier de mots vides avec seulement trois mots

echo "un"> /var/lib/mysql/stopwords.txt
echo "un">> /var/lib/mysql/stopwords.txt
echo "le">> /var/lib/ mysql/stopwords.txt

Étape 2) Ajoutez ces options à /etc/my.cnf

ft_min_word_len=2
ft_stopword_file=/var/lib/mysql/stopwords.txt

Étape 3) Créez un index FULLTEXT sur les colonnes du prénom et du nom

ALTER TABLE utilisateurs ADD FULLTEXT first_last_name_index (first,last);

Étape 4) Implémentez la fonction MATCH dans votre recherche

Quelque chose comme ça :

SELECT * FROM utilisateurs WHERE (MATCH(first,last) AGAINST ('John' IN BOOLEAN MODE)) AND (MATCH(first,last) AGAINST ('Doe' IN BOOLEAN MODE));

Cliquez ici pour en savoir plus sur l'indexation FULLTEXT