8791 sujets

Développement web côté serveur, CMS

Bien le bonjour tout le monde,

Je suis entrain de finir un site, et je doit installer un moteur de recherche interne. Après des recherches sur le net j'en ai trouver quelqu'un mais je pensait crée le mien pour optimisé au mieux mon site. Et il faut que suivant certaine recherche une page spécifique arrive en tête.( cela est optionnelle )

Malheureusement plusieurs questions viennent à moi. Je voudrai avoir votre avis.

Première méthode la plus simple Crée la rêquete sql directement et chercher dans la bdd le problème sera de la crée mais elle sera sans doute un peu lourde. Car il faut compter le nombre de fois que le mots apparait dans chaque contenu de page...

Deuxième, requete recuperant tout les pages dans un tableau et traitement en php, avantage, simple de configuration mais je ne sais pas la vitesse d'execution.

Derniere parcourir le ftp (comme ma recherche actuel ) et regarder le contenu de chaque page. Temps d'une recherche environ 0.5 à 1.5 pour 142 fichier. (Je crée une page pour chaque contenu ) Mais certain page ne sont pas crée car il demande des automatismes en php.

Je ne sais pas si certain on déjà tester mais j'aimerai bien avoir votre avis.

Merci d'avance.
Modifié par Halindel (09 Oct 2007 - 10:12)
Bonjour,

à mon avis le plus performant serait de stocker ça sous la forme:
mot/id_page/nombre_occurences

la recherche consiste alors à trouver tous les enregistrements pour le mot "x" et les renvoyer en les classants par nombre d'occurences.


Après il faut le remplire, quelques pistes:
-si c'est un CMS, possible de l'appliquer à chaque enregistrement d'une page (à ce moment id_page = id dans la base).
-si c'est un site en html, un robot qui passe une fois par jour et suis tous les liens internes puis traite chaque page (à ce moment id_page = url).

En espérant que ça aide Smiley murf
Modifié par Necromantik (04 Oct 2007 - 17:16)
Bonjour,

Si tu utilises MySQL, regardes du côté des index FULL_TEXT et des requêtes SELECT MATCH_AGAINST(). Je ne sais pas à partir de quelle version c'est disponible, cependant.

C'est fait pour ça, et ça attribue un poids aux résultat en fonction de leur pertinence. Attention, les tables doivent être au format MyISAM et non pas INNODB.
Merci bien pour vos réponse.

J'ai regardé vos dire idée.

Pour Necromantik, je l'ai crée moi même les pages et non pas avec un CMS, j'ai crée spécialement la parti administration. En se qui concerne le robot, j'ai lu que la base de donnée se trouver assez vite grossis et que le robot demander pas mal de ressource, l'hebergement se ferai sur place, et le serveur est sous NT4 donc Smiley biggol

Lanza, merci bien pour cette solution, mes tables sont en INNODB mais je pourrai les changer, mais je ne sais pas la vrai différences entre les deux.

Et je viens de penser a un système sans doute plus à ma porter je pense. Faire d'abord une recherche avec un like basique pour récupéré seulement les textes et ensuite je fait une fonction en php pour compter les occurences et les classer suivant le resultat.
Pour l'essentiel, les tables InnoDB supportent les transactions, pas les tables MyISAM. Si tu n'utilise pas les transactions, tu peux sans problème passer en MyISAM.

L'index full_text et la requete match_against(), même si ça fait un peu peur, est à mon sens moins complexe que la requête like, plus rapide à l'éxecution et à mettre en place. Cela dit il y a des limites tout de même, sur le nombre de champs qui peuvent être inclus dans l'index et je ne sais plus si es jointures fonctionnent.
Modifié par Lanza (05 Oct 2007 - 14:06)
Merci bien Lanza, je viens de voir que avec un Alter table je peux modifier facilement tout mes tables. Et permettre de rajouter un full text. Seulement je viens de voir que cela fait grossir pas mal la table de donnée. Je pense que cela ne posera pas de problème.

Je vais faire des testes pour voir si je peux faire des jointures sinon pas grave je devrai avoir un autre moyen de me debrouiller pour refaire mes jointures. Je fais mes testes. Et je redit si cela marche bien ou non.
Bon Lanza ta solution est la meilleur, niveau vitesse d'execution et pour l'affichage y a pas mieux car je peux facilement modifier le code ( vu que c'est moi qui les fait Smiley biggol )

Merci bien, je pense que maintenant fait utiliser cela souvent quand j'aurai pas de transactions a faire pour des sites Smiley cligne