Comment coder un moteur de recherche sur mon site ? [PHP] - PHP - Programmation
Marsh Posté le 27-12-2009 à 17:34:45
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
Marsh Posté le 28-12-2009 à 15:16:22
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
Marsh Posté le 28-12-2009 à 18:55:16
ReplyMarsh Posté le 29-12-2009 à 21:34:59
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
Marsh Posté le 07-02-2010 à 11:10:55
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...
Marsh Posté le 07-02-2010 à 20:01:45
Même avec des index fulltext ?
Si tu ne comptes pas faire de jointures, tu peux essayer le moteur d'indexation Sphinx.
Marsh Posté le 08-02-2010 à 11:06:38
Ne vaudrait-il pas mieux utilisé un moteur de recherche type Lucène ?
Qui va indexé le tout régulièrement.
Marsh Posté le 08-02-2010 à 13:25:21
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...
Marsh Posté le 08-02-2010 à 13:42:37
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.)
Marsh Posté le 15-02-2010 à 13:27:19
vérifie la mémoire, le cache etc que tu donnes a mysql dans la config. meme php
Marsh Posté le 27-12-2009 à 16:28:04
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