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

  FORUM HardWare.fr
  Programmation
  PHP

  a propos de la programation d'un moteur de recherche

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

a propos de la programation d'un moteur de recherche

n°448623
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 04-07-2003 à 12:42:02  profilanswer
 

Bonjour tout le monde  [:taill]  
 
Je voudrais coder un moteur de recherche en php pour une base de donné assez importante avec plus de 100 000 enregistrement,donc je ne vois pas comment faire car si j'utilise un like dans ma requete j'en ai pour des plombe.
Est ce que vous avez des astuses pour avoir un truc optimisé et rapide ?
J'ai entendu parler de full text,c'est efficace ca ?
 
Merc d'avance pour vos futurs reponse :jap:


---------------
lecteur mp3 yvele's smilies jeux de fille
mood
Publicité
Posté le 04-07-2003 à 12:42:02  profilanswer
 

n°448627
gizmo
Posté le 04-07-2003 à 12:46:19  profilanswer
 

bah, l'idéal, c'est de te faire une sorte d'index. Exemple simple: Tu prends une table qui reprend tous les mots utilisés et leur attribut un id et une autre table qui met en relation id du mot avec id d'un message le contenant. Evidemment, ca booste considérablement la taille de ta db mais si tu veux rajouter des recherche phonétique c'est nettement plus pratique.
 
le full text, c'est pas terrible actuellement.

n°448628
redrat
Posté le 04-07-2003 à 12:46:27  profilanswer
 

gére un index et sa ira nickel
 
tain, tu m'a devancé de 8 secondes ..  :lol:


Message édité par redrat le 04-07-2003 à 12:46:56
n°448629
skylight
Made in France.
Posté le 04-07-2003 à 12:47:15  profilanswer
 

full texte = c'est bien si tu veux voir ta charge serveur monter en fleche.
 
Il faut que tu créés des tables d'index, que tu remplira a chaque message posté.
 
exemple, je poste dans le topic 11, un message "salut a tous !"
 
ton forum va ajouter dans une table words les mots > 3 lettres (un simple explode(" ",$msg); ) qui n'existent pas, et ainsi recuperer un identifiant PAR mot
 
exemple :  
ID    |   mot
12    |   salut
45    |   tous
 
 
ensuite, tu rajoute dans une table search (clé composée des 2 champs)
 
ID    |   topic
12    |   11
45    |   11
 
 
 
 
ainsi, quand tu va faire une recherche du mot "salut"
tu fais une requete pour recuperer l'id de ce mot
 
et tu fais un simple  
select topic from search where id = ID_DU_MOT;
 
A+

n°448645
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 04-07-2003 à 12:59:04  profilanswer
 

ben je vois que tout les trois avez eu la meme idée :D
j'avais pensé a ca mais je me disais que ca allait prendre une taille immense et que j'avais une idées de fou  :pt1cable:  
mais vu que je ne suis pas le seul a penser cela :)
par contre c'est vrai qu'au niveau espace de la bdd :/


---------------
lecteur mp3 yvele's smilies jeux de fille
n°448650
skylight
Made in France.
Posté le 04-07-2003 à 13:01:40  profilanswer
 

forummp3 a écrit :

ben je vois que tout les trois avez eu la meme idée :D
j'avais pensé a ca mais je me disais que ca allait prendre une taille immense et que j'avais une idées de fou  :pt1cable:  
mais vu que je ne suis pas le seul a penser cela :)
par contre c'est vrai qu'au niveau espace de la bdd :/

taille et rapidité sont liés inversement.

n°448673
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 04-07-2003 à 13:10:17  profilanswer
 

d'accord je garde cette solution et je testerais.
Sinon est ce que vous avez une solution qui prendrait moins de place ?
est ce que avec un select puis ensuite avec preg_match c'est rapide ?


---------------
lecteur mp3 yvele's smilies jeux de fille
n°448681
skylight
Made in France.
Posté le 04-07-2003 à 13:12:14  profilanswer
 

forummp3 a écrit :

d'accord je garde cette solution et je testerais.
Sinon est ce que vous avez une solution qui prendrait moins de place ?
est ce que avec un select puis ensuite avec preg_match c'est rapide ?


Non, ca augmenterai la charge serveur considérablement

n°448699
gizmo
Posté le 04-07-2003 à 13:20:21  profilanswer
 

Skylight a écrit :

taille et rapidité sont liés inversement.


Quand on parle français, on dit "taille et rapidité sont inversément proportionelles" [:aloy]

n°448707
skylight
Made in France.
Posté le 04-07-2003 à 13:29:16  profilanswer
 

gizmo a écrit :


Quand on parle français, on dit "taille et rapidité sont inversément proportionelles" [:aloy]

[:kiki] Mais moi je parle mon français dauphinois, pas le français belge :D [:aloy]

mood
Publicité
Posté le 04-07-2003 à 13:29:16  profilanswer
 

n°448713
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 04-07-2003 à 13:35:58  profilanswer
 

Skylight a écrit :


Non, ca augmenterai la charge serveur considérablement

ca veut dire qu'une requete like prend moins de resource ?


---------------
lecteur mp3 yvele's smilies jeux de fille
n°448736
skylight
Made in France.
Posté le 04-07-2003 à 13:50:59  profilanswer
 

forummp3 a écrit :

ca veut dire qu'une requete like prend moins de resource ?

je sais pas lequel prends plus de ressources que l'autre, mais un preg_match demande des ressources processeur, et un LIKE aussi...

n°448743
karamilo
Posté le 04-07-2003 à 14:01:13  profilanswer
 

je viens tester le full text. C'est impressionnant de rapidité :ouch:  
 
sur une table de 35 mo ( 30000 enregistrements ), il trouve un mot ( resultats classés par pertinence ) en 0.003s.
pour inserer, il met 8s pour inserer 30mo ( 10000 enregistrements )...
 
donc c'est sans probleme la recherche que je vais utiliser maintenant :)

n°448749
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 04-07-2003 à 14:12:13  profilanswer
 

karamilo a écrit :

je viens tester le full text. C'est impressionnant de rapidité :ouch:  
 
sur une table de 35 mo ( 30000 enregistrements ), il trouve un mot ( resultats classés par pertinence ) en 0.003s.
pour inserer, il met 8s pour inserer 30mo ( 10000 enregistrements )...
 
donc c'est sans probleme la recherche que je vais utiliser maintenant :)

c'est mysql qui classe par pertinence ?


---------------
lecteur mp3 yvele's smilies jeux de fille
n°448757
karamilo
Posté le 04-07-2003 à 14:20:40  profilanswer
 

ouais

n°448758
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 04-07-2003 à 14:21:19  profilanswer
 

n'empeche que c'est vrai que avec full text ca va hyper vite  :ouch:  
Je crois que j'ai trouver ma solution pour le moment :)
 
mais j'aimerai bien savoir comment classer par pertinence maintenant [:meganne]


---------------
lecteur mp3 yvele's smilies jeux de fille
n°448759
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 04-07-2003 à 14:21:35  profilanswer
 
n°448763
karamilo
Posté le 04-07-2003 à 14:29:20  profilanswer
 

oui c'est ecrit dans la doc

n°448793
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 04-07-2003 à 14:58:42  profilanswer
 

karamilo a écrit :

oui c'est ecrit dans la doc

je viens de tester et c'est pas trop par pertinence :/


---------------
lecteur mp3 yvele's smilies jeux de fille
n°448822
karamilo
Posté le 04-07-2003 à 15:21:04  profilanswer
 
n°449618
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 06-07-2003 à 11:05:39  profilanswer
 

ha ok,je savais pas qu'il fallais faire la requete comme ca :D


---------------
lecteur mp3 yvele's smilies jeux de fille
n°449640
Dost67
Posté le 06-07-2003 à 12:27:43  profilanswer
 

Ca doit faire 6 mois que j'ai pas touché à PHP mais je vais m'y remettre. En ce qui concerne le moteur de recherceh ça m'avait posé pas mal de pb.
Le meilleur rapport simplicité/performances que j'avais trouvé était le Full Text. Certes c pas ce qu'il y a de mieux mais c clairement mieux qu'un LIKE.
Sinon je te conseille ce lien :
http://www.onlamp.com/pub/a/php/20 [...] ngine.html

n°449641
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 06-07-2003 à 13:12:00  profilanswer
 

Skylight a écrit :

full texte = c'est bien si tu veux voir ta charge serveur monter en fleche.
 
Il faut que tu créés des tables d'index, que tu remplira a chaque message posté.
 
exemple, je poste dans le topic 11, un message "salut a tous !"
 
ton forum va ajouter dans une table words les mots > 3 lettres (un simple explode(" ",$msg); ) qui n'existent pas, et ainsi recuperer un identifiant PAR mot
 
exemple :  
ID    |   mot
12    |   salut
45    |   tous
 
 
ensuite, tu rajoute dans une table search (clé composée des 2 champs)
 
ID    |   topic
12    |   11
45    |   11
 
 
 
 
ainsi, quand tu va faire une recherche du mot "salut"
tu fais une requete pour recuperer l'id de ce mot
 
et tu fais un simple  
select topic from search where id = ID_DU_MOT;
 
A+
 

je viens de penser a un truc.Dans certain cas ton moteur de recherche n'est pas super,car imagine que tu a le mot "parisien" et que tu cherche "paris",le mot parisien ne sera pas pris en compte alors qu'il contient bien le mot paris,donc d'un coté c'est pas super :/


---------------
lecteur mp3 yvele's smilies jeux de fille
n°449659
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 06-07-2003 à 14:30:06  profilanswer
 

pour ceux qui ont un serveur dédié,vous avez le logiciel mngoseach http://search.mnogo.ru/download.html


---------------
lecteur mp3 yvele's smilies jeux de fille
n°453499
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 10-07-2003 à 12:46:32  profilanswer
 

je suis en train de tester un systeme,c'est a dire de faire une requete avec like et ensuite de stocker le resultat puis ensuite de faire un select.Vous en pensez quoi ?


---------------
lecteur mp3 yvele's smilies jeux de fille
n°453592
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 10-07-2003 à 14:10:52  profilanswer
 

c'est quoi la recherche Full Text ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°453600
*syl*
--> []
Posté le 10-07-2003 à 14:16:05  profilanswer
 

forummp3 a écrit :

pour ceux qui ont un serveur dédié,vous avez le logiciel mngoseach http://search.mnogo.ru/download.html  

Y'a aussi htdig : http://www.htdig.org
Je l'ai déjà utilisé et je l'ai trouvé pas mal :)

n°453601
gizmo
Posté le 10-07-2003 à 14:17:53  profilanswer
 

Harkonnen a écrit :

c'est quoi la recherche Full Text ?


c'est une sorte d'indexation automatique réalisée par MySQL. Ca accélère la recherche par rapport à un bête LIKE, mais ce n'est pas encore aussi performant qu'une bonne indexation manuelle.

n°453605
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 10-07-2003 à 14:20:10  profilanswer
 

*Syl* a écrit :

Y'a aussi htdig : http://www.htdig.org
Je l'ai déjà utilisé et je l'ai trouvé pas mal :)

et ca marche comment avec php ce genre de logiciel ?


---------------
lecteur mp3 yvele's smilies jeux de fille
n°453707
karamilo
Posté le 10-07-2003 à 15:18:59  profilanswer
 

franchement pour avoir testé le full text, je vois pas comment on peut faire plus rapide avec la pertinence.

n°453724
forummp3
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
Posté le 10-07-2003 à 15:26:17  profilanswer
 

karamilo a écrit :

franchement pour avoir testé le full text, je vois pas comment on peut faire plus rapide avec la pertinence.

c'est long pour les trés grande table.


---------------
lecteur mp3 yvele's smilies jeux de fille
n°453738
belgique
Posté le 10-07-2003 à 15:37:50  profilanswer
 

On gagne bcp à faire une table  
*nom-id
*id-post
en lieu d'une  
*nom-post

n°453795
karamilo
Posté le 10-07-2003 à 16:02:42  profilanswer
 

forummp3 a écrit :

c'est long pour les trés grande table.


 
perso 0.0004s pour une table de 1 300 000 enregistrements soit 330mo, je trouve pas ca long.
j'ai jamais vu de recherche aussi rapide ceci dit. Ne pas oublier aussi que la taille de la bdd est tres moindre par rapport a un index manuel


Message édité par karamilo le 10-07-2003 à 16:02:55
n°453803
Max Evans
Posté le 10-07-2003 à 16:07:04  profilanswer
 

karamilo a écrit :


 
perso 0.0004s pour une table de 1 300 000 enregistrements soit 330mo, je trouve pas ca long.
j'ai jamais vu de recherche aussi rapide ceci dit. Ne pas oublier aussi que la taille de la bdd est tres moindre par rapport a un index manuel


 
C'est un type de champ ?
C'est a mettre, pour un forum, pour le champ des messages ? :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°453814
karamilo
Posté le 10-07-2003 à 16:10:50  profilanswer
 

non c'est le fait de faire une table avec a chaque ligne un mot et les id des messages ou il se trouve.
Le but est de rechercher ce mot dans cette table puis de dire ce mot est dans les messages id=5 et id=17.
apres, y'a plus de probleme

n°453989
*syl*
--> []
Posté le 10-07-2003 à 18:10:51  profilanswer
 

forummp3 a écrit :

et ca marche comment avec php ce genre de logiciel ?

Faut un dédié pour pouvoir l'installer, après suffit juste de l'intégrer à ton site..

mood
Publicité
Posté le   profilanswer
 


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

  a propos de la programation d'un moteur de recherche

 

Sujets relatifs
[le vieux troll] A propos des Frames[sql] architecture pour mini-moteur de news
hacker un .o a la recherche d'une fonctionrecherche d'outil de developpement MacOSX / winXP
je recherche cet objet en vb6mettre son site dans le peloton de tête lors d'une recherche
Recherche les CLASS qui permettent de generer un exe...A propos de la progra d'un forum [UPDATE]
[IE] Rajoute au menu click droit pour faire une rechercherecherche script de trensition de couleur de lien
Plus de sujets relatifs à : a propos de la programation d'un moteur de recherche


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