Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2008, 13h02   #1
Membre habitué
 
Inscription : octobre 2005
Messages : 641
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 641
Points : 143
Points : 143
Par défaut Avis pour un moteur de recherche : MyISAM+FULLTEXT ou InnoDB+FOREIGN KEY ?

Bonjour à tous,

je suis en train de développer un moteur de recherche sur des personnes, nom, prénom, coordonnées, etc... (comme un annuaire).
Je viens de m'apercevoir que MyISAM géré le FULLTEXT mais pas les FOREIGN KEY et inversement avec InnoDB.

Donc, j'aimerais avoir votre avis sur l'élaboration d'un p'tit moteur de recherche avec gestion (ajout, modification et suppression) des enregistrements sur 5 tables (personne, ville, société, appartenance, etc...).
Normalement, il devrait y avoir plus de lecture que d'écriture.
J'aurais bien aimé utiliser l'index FULLTEXT pour les requêtes (AJAX) mais également les clés étrangères pour les contraintes d'intégrités et les jointures.

Qu'en pensez-vous ? MyISAM+FULLTEXT ou InnoDB+FOREIGN KEY ?
Un avis là dessus ?
Merci d'avance pour vos commentaires.
Tchupacabra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2008, 14h56   #2
Membre habitué
 
Inscription : octobre 2005
Messages : 641
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 641
Points : 143
Points : 143
D'après mes tests, FULLTEXT ne permet pas la recherche de semi-mots... comme un LIKE '%ris' pour trouver 'Paris'.
Etant donné que j'effectue un requête de recherche AJAX à chaque touche relachée, FULLTEXT ne me convient pas. Ou alors je ne connais pas encore l'astuce...
Tchupacabra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 08h34   #3
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
1/ tu peux sans problème mélanger InnoDB et MyISAM dans la même base. Donc mettre toutes tes tables en InnoDB pour profiter des clés étrangères, sauf celle qui contient les texte où rechercher (appelons-là blabla), que tu laisses en MyISAM. Une variante consiste à tout mettre en InnoDB, et d'utiliser des trigers pour que blabla mette à jour dynamiquement une copie en MyISAM.

2/ Le FULL-TEXT en mode booléen te permet de rechercher sur le début d'un mot (mais pas sur la fin). Par exemple :

Code :
WHERE MATCH(Ville) AGAINST ('Par*' IN BOOLEAN MODE)
3/ si tu as besoin de faire des recherches sur le début d'un mot, tu peux aussi utiliser une expression régulière :

Code :
WHERE Ville REGEXP '[[:<:]][[:alpha:]]+ris[[:>:]]'
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2008, 12h37   #4
Futur Membre du Club
 
Inscription : novembre 2004
Messages : 64
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 64
Points : 17
Points : 17
Tu as peut etre deja regardé mais il y a des outils concu pour les recherches genre lucene.
pittacos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h30.


 
 
 
 
Partenaires

Hébergement Web