Requete de texte integral avec mysql

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 386 fois - Téléchargée 31 fois

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

Ajouter un commentaire Commentaires
Messages postés
809
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
8
vous pouvez aller voir http://www.elliptic.fr/doc/mysql/fulltext-search.html pour un autre exemple d'utilisation...
Messages postés
12
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
28 octobre 2006

la recherche n'est pas limité aux seuls champs nom et prénom. Tu peux costumiser la requête avec droits champs, mais il faudra que tu les index avec fulltext.
Dans notre exemple, les paramètres de la recherche peuvent être récupérés par POST ou GET.
Pour plus de détails voir dans le site www.prytanee.com/annuaire/.
Messages postés
129
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
30 juin 2012

J'étais peut-être pas si fatigué que ca après réflexion ...
J'ai quand même réussi à comprendre l'utilité de ce bout de code mais je doute de son efficacité.
Merci de nous en dire plus sur ton code, rahou :)
> pour une recherche, c'est plus simple de récupérer les termes demandés par l'user (via php) de faire une fonction et de demander APRES à la base de donnée... car ici, si je ne me trompe, c'est limité à "nom + prenom" 2
Eclaire moi :p

Giustino, Admin VegaGames
Messages postés
8
Date d'inscription
lundi 14 juin 2010
Statut
Membre
Dernière intervention
14 juin 2010

source inaccessible
Titre peu precis
Commentaire incomprehensible
...
Messages postés
129
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
30 juin 2012

Salut, je suis vraiment trop fatigué ce soir ...
Tu peux me donner un exemple pour ton bout de code ?
Merci.

Giustino, Admin Vegagames

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.