Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 17/01/2012, 08h59   #1
Membre du Club
 
Avatar de PIEPLU
 
Inscription : avril 2003
Messages : 299
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : avril 2003
Messages : 299
Points : 40
Points : 40
Envoyer un message via MSN à PIEPLU Envoyer un message via Skype™ à PIEPLU
Par défaut Moteur de recherches

Bonjour,

Je suis en train d'essayer de mettre en place un moteur de recherches.
J'ai pour le moment une table avec des Entreprises (idEntreprise ; nomEntreprise).
Mon but étant de pouvoir faire différentes recherches comme par exemple :

"a la recherche du bonheur"
"recherche bonheur"
"a-la-recherche-du-bonheur"

Il faudrait pouvoir que ca ignore les termes "inutiles" comme a, de, la, les, du ... mais aussi les signes qui ne sont pas les caractères alphanumériques.

Donc, je pensais faire un Index dans une nouvelle table, mais je ne suis pas sûr que ce soit ce qu'il y a de mieux à faire.

J'attends vos conseils.

Merci
__________________
Vincent Pieplu
Développeur Site Internet
PIEPLU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 09h50   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

Les moteurs de base de données onte des outils spécifiques optimisant à mort ce genre de requête.
T'embarques pas dans la création d'un nouvel index séparé, avec mysql tu dois utiliser un index FULLTEXT sur ton champ et ensuite il ne te reste plus qu'à nettoyer ta chaine de recherche et de faire un MATCH() AGAINST(). Regardes ici
Et normalement le tour est joué.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 13h01   #3
Membre du Club
 
Avatar de PIEPLU
 
Inscription : avril 2003
Messages : 299
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : avril 2003
Messages : 299
Points : 40
Points : 40
Envoyer un message via MSN à PIEPLU Envoyer un message via Skype™ à PIEPLU
Je viens de lire et d'essayer de comprendre un peu le lien que tu m'as fourni.
le FULLTEXT, comment il se créé dans ma table existante ? Ensuite, lors de nouvelles insertions, cela se fera automatiquement ? Pareil pour les Update ?

Merci de ces informations qui pourront peut être m'aider a mieux comprendre.
__________________
Vincent Pieplu
Développeur Site Internet
PIEPLU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 13h22   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Ah, j'ai pas fait gaffe j'aurais dû te mettre la doc en français qui se trouve ici.
Cela concerne la version 5.0 mais ça devrait être impeccable pour la version 5.1
Yapuka comme dirait l'autre
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 14h19   #5
Membre du Club
 
Avatar de PIEPLU
 
Inscription : avril 2003
Messages : 299
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : avril 2003
Messages : 299
Points : 40
Points : 40
Envoyer un message via MSN à PIEPLU Envoyer un message via Skype™ à PIEPLU
C'est en gros ce que j'avais compris voire pas compris lol

Avec tes termes, tu saurais m'expliquer ce que je disais précédemment ?

"le FULLTEXT, comment il se créé dans ma table existante ? Ensuite, lors de nouvelles insertions, cela se fera automatiquement ? Pareil pour les Update ?"

Ensuite, lorsque je faisais un "chez marcel"
Code :
SELECT champ from Table where (nomEntreprise like '% chez %' and nomEntreprise like '% marcel %') or (tag like '% chez %' and tag like '% marcel %')
Ca deviendrait
Code :
SELECT champ from Table where match (nomEntreprise,tag) against ('chez marcel')
Merci beaucoup de tes précisions.
__________________
Vincent Pieplu
Développeur Site Internet
PIEPLU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 11h56   #6
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Salut,

Tu peux également regarder ce tutoriel : MYSQL et la recherche textuelle.
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 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 21h28.


 
 
 
 
Partenaires

Hébergement Web