begin process at 2012 02 04 20:01:41
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > REQUETE DE TEXTE INTEGRAL AVEC MYSQL

REQUETE DE TEXTE INTEGRAL AVEC MYSQL


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


 Sources du même auteur

VÉRIFIER QU'UN OBJECT (TABLE, PROCÉDURE STOCKÉE) EXISTE

 Sources de la même categorie

Source avec Zip Source avec une capture SQL SERVER - GENERATION AUTOMATIQUE D'UNE RETRO-DOCUMENTATIO... par FENETRES
[SQL SERVEUR] VÉRIFIER L'ESPACE OCCUPÉ DANS UNE BASE DE DONN... par Hyperion
TROUVER LES PROCHAINS ANNIVERSAIRES par zefo
REQUÊTE SQL POUR DÉTERMINER L'ESPACE OCCUPÉ DANS LES TABLESP... par sgoriaud
SQL SERVER - OBTENIR LES VALEURS CORRESPONDANT A DES UNICODE par fabrice69

 Sources en rapport avec celle ci

INTERPRETEUR BRAINFUCK par coucou747
NO HTML BALISE [MYSQL] par abdoulax
MYSQL : CRÉATION D'UN GUID par maitredede
MYSQL : FONCTION POUR GÉRER DES COMPTEURS ÉQUIVALENT AUX SÉQ... par maitredede
SQL SERVER 2005 : RECHERCHE DE CHAMPS PAR LEURS NOMS MULTI B... par skweeky

Commentaires et avis

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

Commentaire de fmicros le 16/02/2005 15:11:54

source inaccessible
Titre peu precis
Commentaire incomprehensible
...

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

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

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


Discussions en rapport avec ce code source dans le forum

indexation mysql [ par dibouched ] bojour , j'ai une base de données mysql et je cherceh comment  indexer des colonne pour une recherche fulltext ensuite mon probleme est que Recherche dans toute la base de données [ par RugbyOne ] Bonjour, Est-il possible de faire une recherche dans toute la base de données à l'aide d'une requête ? Je m'explique : j'ai une base SQL Server 2000 variable php dans une requête mysql [ par Xini28 ] Salut à tous, Je souhaiterais récupérer une variable que j'ai définit dans la page php, dans une requête mysql. Voici ma req Recherche [MySQL] [ par piep14 ] Bonjour, je n'arrive pas a trouver le moyen de recherche dans ma base de données selon : Par exempleDans ma base de données, j'ai :  id Rechercher une chaine similaire : Soundex, similar_text, Metaphone ? [ par audrey698 ] Bonjour,Je cherche à réaliser un petit moteur de recherche qui me permette de trouver des "titres" similaires à celui entré par l'utilisateur. C'est l Question requête Mysql [ par AgentSmith ] Bonjour à tout les programmeurs SQL... Je vous solicite pour une quéstion simple voir une question de debutant. Ma question ce porte sur une [MySQL] Requête premières valeurs [ par piep14 ] Bonjour tout le monde, Je cherche, en vain, a définir la requête qui pourrait me permettre la chose suivante : J'ai dans la base de données les avis Plantage Mysql sur requête [ par kohntark ] Salut,Voici mon problème :tables :a : ~478 305 enregistrementsb : ~465 813 enregistrementsc : ~460 070 enregistrementsJe cherche à trouver les ref pré Recherche mysql wysiwyg [ par fabinus ] Hello à tous, Je désire me lancer un peu dans le développement, j'ai des notions en VB et algo. Donc disons que je suis pas en terre totalement incon Recherche globale d'une chaine dans un schéma [ par mr_foxy ] Bonjour, Je cherche une requête permettant de parcourir toutes les tables d'un schéma à la recherche d'une chaine de caractère.En fait, je voudrais en


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,279 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales