begin process at 2008 05 16 21:43:30
1 173 760 membres
567 nouveaux aujourd'hui
13 972 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

REQUETE DE TEXTE INTEGRAL AVEC MYSQL


Information sur la source

Description

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

  • 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;
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...
  • signaler à un administrateur
    Commentaire de GiUsTiNo le 08/02/2005 22:22:21

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

    Giustino, Admin Vegagames

  • signaler à un administrateur
    Commentaire de fmicros le 16/02/2005 15:11:54

    source inaccessible
    Titre peu precis
    Commentaire incomprehensible
    ...

  • signaler à un administrateur
    Commentaire de GiUsTiNo le 16/02/2005 21:32:23

    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

  • signaler à un administrateur
    Commentaire de rahou le 19/02/2005 14:30:00

    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/.

  • signaler à un administrateur
    Commentaire de Zlub le 24/07/2005 14:18:01

    vous pouvez aller voir http://www.elliptic.fr/doc/mysql/fulltext-search.html pour un autre exemple d'utilisation...

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS