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

MySQL LIKE %string% n'est pas assez indulgent. Est-ce que je peux utiliser autre chose ?

Si vous utilisez MyISAM, vous pouvez utiliser l'indexation de texte intégral. Voir ce tutoriel

Si vous utilisez un autre moteur de stockage, vous pouvez utiliser un moteur de texte intégral tiers comme sphinx, qui peut agir comme un moteur de stockage pour mysql ou un serveur séparé qui peut être interrogé.

Avec MySQL indexant le texte intégral d'une recherche sur A J Kelly correspondrait à AJ Kelly (non pour confondre les choses mais A, J et AJ seraient ignorés car ils sont trop courts par défaut et cela correspondrait à Kelly.) Généralement, Fulltext est beaucoup plus indulgent (et généralement plus rapide que LIKE '%string%') car permet matchs qui peuvent ensuite être classés en fonction de leur pertinence.

Vous pouvez également utiliser SOUNDEX pour rendre les recherches plus indulgentes en indexant les équivalents phonétiques des mots et en les recherchant en appliquant SOUNDEX sur vos termes de recherche, puis en les utilisant pour rechercher dans l'index. Avec soundex mary , mary , et marry correspondront tous, par exemple.