La base de données MySQL vous permet d'effectuer des recherches en langage naturel sur n'importe quel champ en mode caractère grâce à l'utilisation d'un index FULLTEXT . A la recherche plein texte utilise les mots vides ( mots qui ne seront pas cherché , comme l' , et, et que ) , les recherches booléennes et les cotes de pertinence dans le retour des résultats qui correspondent davantage à ce que vous recherchez . Les bases
langage naturel signifie que la phrase ou le mot est recherché comme si elle parlait , avec aucun opérateur spéciales recherche . Pour un MySQL recherche en langage naturel les chaînes de recherche doivent avoir entre quatre et 254 caractères et les mots doivent être séparés par un délimiteur comme un espace, une virgule ou un point . L'analyseur MySQL ne peut pas séparer les mots sans un certain type de séparateur. L'analyseur va supprimer les mots vides de termes de recherche ( voir Ressources pour une liste de mots ) . Les mots vides ne feront pas partie de la recherche et s'il n'y a que des mots vides dans la recherche aucun résultat ne sera retourné.
Chaque ligne qui correspond aux paramètres de recherche sont donné une note de pertinence et les résultats sont retournés sur la base du note, du plus haut au plus bas. Recherches qui correspondent à plus de 50 pour cent des lignes ou moins de trois lignes de données ne sont pas retournés . C'est très différent de la fonction LIKE ( ) qui fonctionne comme une expression régulière, la recherche de la chaîne exacte indépendamment de placement et la fréquence d'occurrence .
La syntaxe
afin de soutenir la recherche plein texte , la table doit être créée avec un index de texte complet et les colonnes indexées doit avoir un type de données de caractères (CHAR , VARCHAR , ou TEXT) .
créer des articles tABLE (id INT ( 10 ) DEFAULT '0 ' AUTO_INCREMENT, DATE date_posted , catégorie RC (2) , le titre VARCHAR (255) NOT NULL, article TEXT NOT NULL, PRIMARY KEY (id) , FOREIGN KEY ( catégorie ) , FULLTEXT (titre, article) ) ;
Pour interroger les données , vous devez utiliser une instruction SELECT comme :
SELECT id , titre FROM articles WHERE MATCH (titre, article) AGAINST ( 'MySQL' ) ;
la clause de match doit être exactement le même que dans les domaines précisés dans l'index FULLTEXT .
Pour utiliser un lieu de recherche booléenne les mots "dans le mode booléen" après la chaîne de recherche .
SELECT id , Titre From articles WHERE MATCH (titre, article) AGAINST ( '+ MySQL -PHP ' IN BOOLEAN MODE ) ;
Cette requête trouvera tous les articles qui contiennent la chaîne "MySQL ", mais ne contiennent pas le chaîne " PHP ". Pour une liste complète des opérateurs booléens voir Ressources ci-dessous.