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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Comment coder un moteur de recherche sur mon site ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Comment coder un moteur de recherche sur mon site ?

n°1953291
Dawa
www.shootmeagain.com
Posté le 27-12-2009 à 16:28:04  profilanswer
 

Bonjour à tous,  
 
Je m'occupe de ce site : http://www.shootmeagain.com  
 
Pour l'instant, sur le site j'ai sur chaque section (groupes, chroniques, etc.) une fonction "recherche" qui fait donc une recherche dans la table MySQL concernée.  
 
J'aimerais avoir, comme sur la plupart des sites actuels, une fonction "recherche" sur la page principale qui ira rechercher le terme entré dans tous les recoins du site et pourra même afficher les résultats par ordre de pertinence, en % par exemple.
 
Mais la seule chose que j'imagine pour ça, pour l'instant, ce serait de faire une requête dans chaque table de la DB. Mais ce serait méga lourd bien sûr.
 
Alors, comment m'y prendre ?
Merci beaucoup !


---------------
SHOOT ME AGAIN WEBZINE
mood
Publicité
Posté le 27-12-2009 à 16:28:04  profilanswer
 

n°1953293
stealth35
Posté le 27-12-2009 à 16:42:43  profilanswer
 

ta base est en innoDB ou MyIsam  ?

n°1953295
Dawa
www.shootmeagain.com
Posté le 27-12-2009 à 17:14:29  profilanswer
 

MyIsam !

n°1953300
stealth35
Posté le 27-12-2009 à 17:34:45  profilanswer
 

tu pourras faire une recherche avec la fonction SQL MATCH,  
pour tout ce qui est pourcentage, ca se construit en fonction du clique du client, et dependra des liens trouvé, faudras inscrire tout ca dans la base aussi

n°1953414
pop-pan
yay!
Posté le 28-12-2009 à 15:16:22  profilanswer
 

SELECT MATCH(champ1,champ2) AGAINST('motclef') AS `pertinence` FROM table where MATCH(champ1,champ2) AGAINST('motclef');
 
L'ordre par defaut est la pertinence.
 
Plus d'infos la :
http://dev.mysql.com/doc/refman/5. [...] earch.html


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°1953469
Dawa
www.shootmeagain.com
Posté le 28-12-2009 à 18:55:16  profilanswer
 

Merci beaucoup, me réjouis d'essayer ça !


---------------
SHOOT ME AGAIN WEBZINE
n°1953768
CyberDenix
Posté le 29-12-2009 à 21:34:59  profilanswer
 

Je confirme, toutes mes tables sont en innoDB pour les clefs primaires/étrangères et chaque table susceptible d'induire une recherche est doublée en MyISAM avec un système de MATCH si j'ai une chaine statique à chercher, sinon avec un LIKE si ma chaine est dynamique. En effet, tu ne peux pas construire de chaine dynamique avec un MATCH
Ex : MATCH (...) AGAINST ( CONCAT(...) ) ne fonctionne pas :/


Message édité par CyberDenix le 29-12-2009 à 21:35:36

---------------
Directeur Technique (CTO)
n°1963687
Dawa
www.shootmeagain.com
Posté le 07-02-2010 à 11:10:55  profilanswer
 

Petit feedback, ça marche très bien mais c'est TRES lourd (serveur planté) à appliquer sur une table avec beaucoup d'entrées !  
 
Sur une table avec 80 entrées ça passe tout seul mais sur une autre qui compte 1800 entrées c'est peine perdue on dirait...


---------------
SHOOT ME AGAIN WEBZINE
n°1963760
CyberDenix
Posté le 07-02-2010 à 20:01:45  profilanswer
 

Même avec des index fulltext ?
 
Si tu ne comptes pas faire de jointures, tu peux essayer le moteur d'indexation Sphinx.


---------------
Directeur Technique (CTO)
n°1963850
MEI
|DarthPingoo(tm)|
Posté le 08-02-2010 à 11:06:38  profilanswer
 

Ne vaudrait-il pas mieux utilisé un moteur de recherche type Lucène ?
Qui va indexé le tout régulièrement.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
mood
Publicité
Posté le 08-02-2010 à 11:06:38  profilanswer
 

n°1963885
rufo
Pas me confondre avec Lycos!
Posté le 08-02-2010 à 13:25:21  profilanswer
 

dawa, je trouve ça très bizarre. Je fais ce genre de requête sur des tables de plus de 20000 entrées et sur 3 ou  4 champs dans ces tables, ça passe très bien. Mediawiki fait ça aussi et ça marche, pas de pb de charge. Donc à mon avis, doit y avoir un autre pb...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1963888
pop-pan
yay!
Posté le 08-02-2010 à 13:42:37  profilanswer
 

truc a verifier de suite :
- champs indexés ?
- encoding des tables et de la query identiques?  (si c'est pas le cas tu vas morfler.)


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°1966089
d@kn1ko
Posté le 15-02-2010 à 13:27:19  profilanswer
 

vérifie la mémoire, le cache etc que tu donnes a mysql dans la config. meme php


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

  [PHP] Comment coder un moteur de recherche sur mon site ?

 

Sujets relatifs
[PHP] Extraire automatiquement une image d'un site (cf.Facebook share)Comment publier une vidéo de son propre site sur Facebook ?
mettre en lien des services web avec un site webRecuperer donnée sur site web.
Neige sur site internet[PHP/MYSQL] Impossible de faire plusieurs update
URL Rewriting complexe avec variable PHP dans l'URL[Résolu] Copier la structure d'un site
PHP : Création d'étoiles réalistes avec GD 
Plus de sujets relatifs à : [PHP] Comment coder un moteur de recherche sur mon site ?


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