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

Limitations de l'indexation de texte intégral MySQL ?

Ce n'est certainement pas le cas !

Tout terme de recherche composé uniquement de mots bloqués échouera silencieusement. Les mots peuvent être bloqués en raison de restrictions de longueur min/max et/ou du fichier de mots vides.

J'ai trouvé le fichier de mots vides par défaut beaucoup trop agressif, il empêchait de nombreuses recherches valides. De plus, la longueur minimale par défaut de 4 était très souvent utilisée pour les acronymes que les gens pourraient vouloir rechercher. J'ai réduit le ft_min_word_len à 3 et supprimé complètement la liste d'arrêt (ft_stopword_file=''). Doc :http://dev.mysql.com /doc/refman/5.1/en/fulltext-fine-tuning.html

Vous pouvez également examiner la requête de recherche pour voir si elle ne contient que des mots de moins de 4 lettres et revenir à une recherche LIKE dans ce cas. Il n'y a pas de moyen aussi simple de contourner la liste de mots vides au niveau de l'application.

La sélection de "caractères de mots" peut ne pas répondre à vos besoins et il est difficile de la modifier. Par exemple, la recherche de "Terry" ne correspondra pas à "Terry's". En général, aucun type de radical n'est pris en charge, donc "biscuit" ne correspondra pas non plus à "biscuits".

Enfin, comme cg l'a mentionné, il n'y a pas de support pour InnoDB. De nos jours, vous ne voulez pas mettre toutes vos données dans une table MyISAM.

Si vous avez suffisamment de stockage, vous pouvez placer la version canonique principale des données dans une table InnoDB, puis créer une table MyISAM distincte contenant une copie du contenu en texte libre, uniquement à utiliser comme appât de recherche. Vous devez mettre à jour les deux tables lors d'un changement, mais si la table MyISAM perd son intégrité, vous perdez au moins la possibilité de rechercher sur les lignes concernées, au lieu de détruire les données réelles en direct et d'obtenir des erreurs d'application.

Vous pouvez ensuite, si vous avez les cycles à revendre, implémenter votre propre traitement de texte sur le searchbait et interroger des mots pour contourner certaines des limitations ci-dessus. Par exemple, vous pouvez échapper les caractères que vous souhaitez utiliser comme caractères de mot, supprimer les caractères que vous ne souhaitez pas utiliser comme caractères de mot et effectuer une simple radicalation manuelle en anglais.