Maison  >  Article  >  base de données  >  Introduction à la recherche en texte intégral dans MySQL

Introduction à la recherche en texte intégral dans MySQL

巴扎黑
巴扎黑original
2017-05-12 14:18:291540parcourir

Comprendre la recherche en texte intégral

Tous les moteurs ne prennent pas en charge la recherche en texte intégral Comme mentionné au chapitre 21, MySQL prend en charge plusieurs moteurs de base de données de base. Tous les moteurs ne prennent pas en charge la recherche en texte intégral comme décrit dans ce livre. Les deux moteurs les plus couramment utilisés sont MyISAM et InnoDB. Le premier prend en charge la recherche en texte intégral, tandis que le second ne la prend pas en charge. C'est pourquoi, bien que la plupart des exemples de tables créés dans ce livre utilisent InnoDB, un exemple de table (la table productnotes) utilise MyISAM. Vous devez garder cela à l’esprit si votre application nécessite une fonctionnalité de recherche en texte intégral.

Mot-clé LIKE, qui correspond au texte (et à des parties de texte) à l'aide d'opérateurs génériques. En utilisant LIKE, vous pouvez rechercher des lignes contenant des valeurs spéciales ou des valeurs partielles, quel que soit leur emplacement dans la colonne.

Une introduction supplémentaire à l'utilisation des recherches textuelles comme expression régulière pour faire correspondre les valeurs des colonnes. À l’aide d’expressions régulières, vous pouvez écrire des modèles de correspondance très complexes qui trouvent les lignes requises.

Bien que ces mécanismes de recherche soient très utiles, il existe plusieurs limitations importantes.

1. Performances - La correspondance des caractères génériques et des expressions régulières nécessite généralement que MySQL essaie de faire correspondre toutes les lignes de la table (et ces recherches utilisent rarement des index de table). Par conséquent, ces recherches peuvent prendre beaucoup de temps à mesure que le nombre de lignes recherchées augmente.

2. Contrôle explicite - Avec les caractères génériques et la correspondance d'expressions régulières, il est difficile (et pas toujours possible) de contrôler explicitement ce qui correspond et ce qui ne correspond pas. Par exemple, spécifiez qu'un mot doit correspondre, qu'un mot ne doit pas correspondre et qu'un mot peut correspondre ou ne pas correspondre uniquement si le premier mot correspond.

3. Résultats intelligents - Bien que les recherches basées sur des caractères génériques et des expressions régulières fournissent des recherches très flexibles, aucune d'elles n'offre un moyen intelligent de sélectionner les résultats. Par exemple, une recherche d'un mot particulier renverra toutes les lignes contenant ce mot, sans faire de distinction entre les lignes contenant une seule correspondance et les lignes contenant plusieurs correspondances (en les organisant dans l'ordre qui est susceptible d'être une meilleure correspondance). De même, une recherche d'un mot particulier ne trouvera pas les lignes qui ne contiennent pas ce mot mais contiennent d'autres mots apparentés.

Toutes ces limitations et bien d’autres peuvent être résolues grâce à la recherche en texte intégral. Lors de l'utilisation de la recherche en texte intégral, MySQL n'a pas besoin d'examiner chaque ligne séparément, ni d'analyser et de traiter chaque mot séparément. MySQL crée un index pour chaque mot de la colonne spécifiée et des recherches peuvent être effectuées sur ces mots. De cette façon, MySQL peut décider rapidement et efficacement quels mots correspondent (quelles lignes les contiennent), quels mots ne correspondent pas, à quelle fréquence ils correspondent, et ainsi de suite.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn