Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1730 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  moteur de recherche sans création de bdd

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

moteur de recherche sans création de bdd

n°975448
zeal21
Posté le 08-02-2005 à 14:54:20  profilanswer
 

bonjour,
 
pour le site que je suis en train de réaliser, on m'a demandé de faire un moteur de recherche interne au site.
Celui ci permettrait de recenser des données qui se retrouvent dans mes champs d'une de mes tables de ma base de données :pt1cable:  
Cependant, je ne veux pas créer une autre table où seront rentrées des mots clés....
Je sais pas si vosu m'avez compris mais voici un exemple : ;)  
 
EXEMPLE:
 
   j'ai une table où sont rentré des incidents informatiques. mes utilisateurs peuvent consulter ces incidents selon le réparateur, la catégorie, la sous catégorie, le statut(en cours, clos, a traiter)(affichage sous forme d'un tableau)
   Ce moteur de recherche servira pour la sous categorie
   donc l'utilisateur tapera un mot clé(ex:pilote ou outlook....) et je voudrais que cela affiche les incidnets avec ces mots clés sous la meme forme que le tableau déjà établi.
________________________________________________________________________
 
j'ai essayé de chercher sur le net mais la plupart des liens que je trouve mettent en place une base de données avec des mots clés.
 
Si quelqu'un peut me donner des conseils, je suis a son écoute ;)
 
a biento
 
merci.... :hello:  

mood
Publicité
Posté le 08-02-2005 à 14:54:20  profilanswer
 

n°975614
Dj YeLL
$question = $to_be || !$to_be;
Posté le 08-02-2005 à 16:50:16  profilanswer
 

SELECT * FROM ma_table WHERE champ_incident LIKE '%mot_cle%'
 
Si je ne dis psa de bêtise...
 
++


Message édité par Dj YeLL le 08-02-2005 à 16:50:37

---------------
Gamertag: CoteBlack YeLL
n°975705
kalex
Posté le 08-02-2005 à 18:04:43  profilanswer
 

Les tables myisam de mysql supportent les index fulltext. C'est le principe de la table de mots clefs en automatisé. Cependant, si tu ne peux pas toucher à la structure de ta base tu es condamné à faire des like comme explique par Dj YeLL, l'inconvénient c'est que c'est très lent.

n°976039
zeal21
Posté le 09-02-2005 à 08:56:21  profilanswer
 

kalex a écrit :

Les tables myisam de mysql supportent les index fulltext. C'est le principe de la table de mots clefs en automatisé. Cependant, si tu ne peux pas toucher à la structure de ta base tu es condamné à faire des like comme explique par Dj YeLL, l'inconvénient c'est que c'est très lent.


 
en gros la tu me dis que je suis obligé de rajouter uen table avec des mots clés comme la plupart des moteurs de recherche? :??:  :(  
puis j'ai essayé de faire la requête je me doutais qu'il fallait faire comme ca, on me l'avait expliqué.Cependant, je ne vois pas trop où la mettre...
 
++
 
merci :hello:   ;)

n°977031
dwogsi
Défaillance cérébrale...
Posté le 09-02-2005 à 21:24:35  profilanswer
 

Via un formulaire tu définie $mot_recherche.

Code :
  1. $query = "SELECT * FROM `ma_table`
  2.           WHERE `champ_incident`
  3.           LIKE '%".$mot_recherche."%'";
  4. $mysql_query = mysql_query($query);
  5. while ( $result = mysql_fetch_array($mysql_query) ) {
  6.    echo "La page ".$result['page']." contient le mot clé recherché.<br>";
  7. }


 
Je sais pas si c'est bien clair mais ca devrait aider je pense.
 
On va encore me dire "c'est du sql sur mysql et ya pas que mysql" je sais je sais je suis aussi pour la défense des autres SGBDR mais bon comme MySql est le plus répendu je pense qu'il fait de bon exemples. Après chacun son clan lol.


Message édité par dwogsi le 09-02-2005 à 21:33:12

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°977038
Berceker U​nited
PSN : berceker_united
Posté le 09-02-2005 à 21:31:11  profilanswer
 

kalex a écrit :

Les tables myisam de mysql supportent les index fulltext. C'est le principe de la table de mots clefs en automatisé. Cependant, si tu ne peux pas toucher à la structure de ta base tu es condamné à faire des like comme explique par Dj YeLL, l'inconvénient c'est que c'est très lent.


Il faut pas abuser non plus quand même ;) c'est lent par rapport à la moyenne mais ca va pas durer 10 seconds quoi que ça dépend de la quantité de données mais il y a quand mêmes des petites astuces pour optimiser le résultat.

n°977042
kalex
Posté le 09-02-2005 à 21:34:11  profilanswer
 

zeal21 a écrit :

en gros la tu me dis que je suis obligé de rajouter uen table avec des mots clés comme la plupart des moteurs de recherche? :??:  :(  

C'est ça, mais avec un index fulltext tu délègues tout à mysql.
Tuto : http://omiossec.developpez.com/mysql/fulltext/
La doc :http://dev.mysql.com/doc/mysql/fr/fulltext-search.html

n°977046
dwogsi
Défaillance cérébrale...
Posté le 09-02-2005 à 21:36:30  profilanswer
 

Ouai mais bon en même temps si tu a déjà une BDD avec des tonnes de données, laisse tomber la création d'une nouvelle table et adopte le LIKE du sql qui rend certe la procédure plus lente mais ca reste tout a fait acceptable.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°977049
kalex
Posté le 09-02-2005 à 21:39:04  profilanswer
 

dwogsi a écrit :

Ouai mais bon en même temps si tu a déjà une BDD avec des tonnes de données, laisse tomber la création d'une nouvelle table et adopte le LIKE du sql qui rend certe la procédure plus lente mais ca reste tout a fait acceptable.

Je ne comprends pas pourquoi. Avoir des tonnes de données c'est justement une bonne raison pour créer un index !

n°977051
dwogsi
Défaillance cérébrale...
Posté le 09-02-2005 à 21:42:47  profilanswer
 

Bon ok aprés ca depend du niveau du gars!
Maintenant reste à savoir si il est en mesure de créer un script pour indexer tout ca, parceque mauellement c'est quand même chaud..
 
En fait je me suis dit que vu les questions qu'il pose il ne devait pas avoir les compétances pour créer un tel script (ce n'est pas du tout un reproche).
 
Voila je reconnais que comme j'ai dit les choses ca apparaissait comme étant monumentalement con! lol


Message édité par dwogsi le 09-02-2005 à 21:43:22

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
mood
Publicité
Posté le 09-02-2005 à 21:42:47  profilanswer
 

n°977061
kalex
Posté le 09-02-2005 à 21:51:38  profilanswer
 

J'utilise pas ces index (cause innodb, je gère ça à la main ;)) mais il me semble qu'il suffi d'un "ALTER TABLE ... ADD FULLTEXT ..." pour en ajouté un. :)

n°977064
dwogsi
Défaillance cérébrale...
Posté le 09-02-2005 à 21:53:48  profilanswer
 

Effectivement ouai.
Bon de toute facon c'est lui qui voit!


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°977228
zeal21
Posté le 10-02-2005 à 08:48:49  profilanswer
 

Merci pour votre attention je vais essayer tout ça....
a biento ;)

n°977301
sircam
I Like Trains
Posté le 10-02-2005 à 09:55:39  profilanswer
 

berceker united a écrit :

Il faut pas abuser non plus quand même ;) c'est lent par rapport à la moyenne mais ca va pas durer 10 seconds quoi que ça dépend de la quantité de données mais il y a quand mêmes des petites astuces pour optimiser le résultat.


C'est tout de même pas juste 'un peu lent' par rapport au reste, c'est excessivement lent, non ? Table scan et, pour chaque record, une recherche d'une sous-chaîne. Le genre de truc qui met la pression sur le système, potentiellement un single point of failure.
 
Tu penses à quelle astuce, dans le cas d'un LIKE %x% bête et méchant ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°977736
Berceker U​nited
PSN : berceker_united
Posté le 10-02-2005 à 15:36:29  profilanswer
 

sircam a écrit :

C'est tout de même pas juste 'un peu lent' par rapport au reste, c'est excessivement lent, non ? Table scan et, pour chaque record, une recherche d'une sous-chaîne. Le genre de truc qui met la pression sur le système, potentiellement un single point of failure.
 
Tu penses à quelle astuce, dans le cas d'un LIKE %x% bête et méchant ?


J'ai pas lu le topic en détail mais je sais que nous avons recontré ce genre de problème dans mon ancienne boite. Nous avons fait un test sur une table de plusieurs méga.  
Test 1 : Demander a SQL de faire la recherche LIKE.
Test 2 : Retourner toute les informations et faire la recherche via php.
Au final c'est Test 2 qui a gagné. Pourquoi?  je ne sais pas cela m'étonne aussi !

n°977785
zeal21
Posté le 10-02-2005 à 16:17:29  profilanswer
 

Berceker United a écrit :

Test 2 : Retourner toute les informations et faire la recherche via php.
Au final c'est Test 2 qui a gagné.


euh....ca te derangeré de me donner la méthode stp :ange: lol
qu'est ce que tu appelle par retourner les informations?
tu peux me donner des pistes stp?
 
merci si tu le fais ;) :jap:  
 :hello:  

n°977787
omega2
Posté le 10-02-2005 à 16:19:29  profilanswer
 

J'imagines qu'ils avaient fait un simple "select * from table".

n°977833
sircam
I Like Trains
Posté le 10-02-2005 à 16:55:30  profilanswer
 

Berceker United a écrit :

J'ai pas lu le topic en détail mais je sais que nous avons recontré ce genre de problème dans mon ancienne boite. Nous avons fait un test sur une table de plusieurs méga.  
Test 1 : Demander a SQL de faire la recherche LIKE.
Test 2 : Retourner toute les informations et faire la recherche via php.
Au final c'est Test 2 qui a gagné. Pourquoi?  je ne sais pas cela m'étonne aussi !


Très étrange, mais je ne crois pas que cela soit généralisable !  :ouch:  
 
- Si le serveur PHP n'est physiquement sur la même machine que le serveur DB, le temps réseau prendra le dessus et la recherche PHP ne peut être que plus lente - je parie que les deux serveurs étaient sur la même machine lors de tes tests, ou bien étaient très "proches";
- Tu retournes potentiellement un nombre invraissemblable de lignes à PHP, alors qu'au final, il n'y a que peu de résultat. Si la bécane est déjà memory-bound, voire CPU-bound, ça va chier dans le ventilo et c'est chercher les ennuis;
- Ca se bouscule inutilement sur le rézo;
- Ton DBMS était peut-être anémique lors du test par rapport à un serveur PHP dopé aux hormones.
 
Mais ça prouve bien qu'il ne faut pas se fier aux a priori, et que rien ne remplace un benchmark!


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°977887
Berceker U​nited
PSN : berceker_united
Posté le 10-02-2005 à 18:04:04  profilanswer
 

sircam a écrit :

Très étrange, mais je ne crois pas que cela soit généralisable !  :ouch:  
 
- Si le serveur PHP n'est physiquement sur la même machine que le serveur DB, le temps réseau prendra le dessus et la recherche PHP ne peut être que plus lente - je parie que les deux serveurs étaient sur la même machine lors de tes tests, ou bien étaient très "proches";
- Tu retournes potentiellement un nombre invraissemblable de lignes à PHP, alors qu'au final, il n'y a que peu de résultat. Si la bécane est déjà memory-bound, voire CPU-bound, ça va chier dans le ventilo et c'est chercher les ennuis;
- Ca se bouscule inutilement sur le rézo;
- Ton DBMS était peut-être anémique lors du test par rapport à un serveur PHP dopé aux hormones.
 
Mais ça prouve bien qu'il ne faut pas se fier aux a priori, et que rien ne remplace un benchmark!


 
2(cluster) x Quadruple CPU Intel 2Go MHz 4Go Ram. Bon j'avous que c'est pas une machine de surcouf. Nous avons utilisé des fonctions telle que mysql_unbuffered_query() qui est reduit de pas mal la charge mais il ne faut pas l'utiliser n'importe comment.  
Ha j'ai oublié un truc, c'est à refroidissement liquide !


Message édité par Berceker United le 10-02-2005 à 18:06:37
n°977899
sircam
I Like Trains
Posté le 10-02-2005 à 18:14:38  profilanswer
 

Berceker United a écrit :

Ha j'ai oublié un truc, c'est à refroidissement liquide !


Je le savais  :D  


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  moteur de recherche sans création de bdd

 

Sujets relatifs
creation d un compteur en jsprecherche algo pour expansion d'une structure.
Recherche script de mailing list evolué !Problemes Creation site Internet
Creation fichier excel a partir d'un txtrecherche site langage html livre d'or compteur etc
recherche interactive comme dans les dictionnaires en VBAMOTEUR DE RECHERCHE COMME GOOGLE [ OU? ]
création d'un moteur de recherche interneBesoin d'aide pour creation de moteur de recherche
Plus de sujets relatifs à : moteur de recherche sans création de bdd


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR