Requete de texte integral avec mysql

Contenu du snippet

La recherche sur texte entier n'a malheureusement pas encore beaucoup de paramètres modifiables par l'utilisateur, même si l'ajout de certains apparaît très haut dans la liste de tâches. Si vous utilisez MySQL depuis les sources (« Installation de MySQL avec une distribution source ».), vous pouvez mieux contrôler le fonctionnement de la recherche sur texte entier.

La recherche sur texte entier a été paramétrée pour une efficacité de recherche maximale. La modification du comportement par défaut ne fera généralement que diminuer la qualité des résultats des recherches.

Quelques Restrictions:
-La recherche en texte intégral n'est supportée que par les tables MyISAM.

-Depuis MySQL 4.1.1, les recherches en texte plein peuvent être utilisées avec la plupart des jeux de caractères. L'exception est pour Unicode, le jeu de caractères utf8 peut être utilisé, mais pas ucs2.

-Depuis MySQL 4.1, l'utilisation de jeux de caractères multiples dans une table est supportée. Cependant, toutes les colonnes dans un index FULLTEXT doivent avoir le même jeu de caractères et collation.

-Les arguments de MATCH() doivent correspondre exactement à la liste de colonnes de certaines définitions d'index FULLTEXT pour la table, sauf si MATCH() est utilisé dans un contexte BOOLEAN.

-L'argument de AGAINST() doit être une chaîne constante.

Source / Exemple :


Exécuter le script suivant dans mysql. pour créer la table Info.

CREATE TABLE `info` (
  `Numero` int(11) unsigned NOT NULL auto_increment,
  `Nom` varchar(40) NOT NULL default '',
  `Prenom` varchar(40) NOT NULL default '',
  `DateDeNais` varchar(10) default '00/00/0000',
  `LieuDeNais` varchar(40) default NULL,
  `Pays` varchar(50) default NULL,
    PRIMARY KEY  (`Numero`),
  FULLTEXT KEY `Nom` (`Nom`,`Prenom`)
) TYPE=MyISAM;

Conclusion :


Ainsi pour faire une recherche de texte Integral , il créer un index de texte intégral avec lors de la Création de la table l'indexation des champs "Nom" et "Prenom" via le script :
FULLTEXT KEY `Nom` (`Nom`,`Prenom`)
Pour rechercher des données à l'aide de cette index faire
SELECT * FROM `test` WHERE MATCH(nom, prenom) AGAINST('$Parametre');

où $Parametre' peut être "Doudou Diop", "jean diop" ou n'importe quelle chaine de caractère permettant de recherche dans la table les personnes dont le nom et le prenom correspond à $Parametre.

Vous pouvez aussi utiliser la recherche de texte intégral pour mettre en place un moteur de recherche dans vos appli web aussi bien sous mysql, que sous oracle, sql server etc...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.