Moteur de recherche

 

L'objectif est ici d'établir un moteur performant de recherche dans des tables d'une base de données MySQL.
Le moteur a été développé à partir du travail réalisé par Clay Johnson (PHPBuilder.com), et amélioré. Vous pouvez voir un exemple d'utilisation de ce moteur dans la page C++.

L'étape préliminaire consiste à réaliser des tables d'indexation constituées des mots rencontrés dans les tables avec le nombre d'occurrences.
Mais on se débarrasse au préalable des mots qui n'ont aucun intérêt et qui augmentent le temps de recherche.

Pour l'exemple développé ici, on supposera que toutes les tables à balayer sont bâties sur le modèle suivant :
( les tables ont des noms différents mais trois champs identiques )

CREATE TABLE matable0 (
idtable int(10) unsigned NOT NULL auto_increment,
titre varchar(255) NOT NULL default '',
contenu text NOT NULL,
fichier varchar(80) NOT NULL default '',
taille varchar(15) NOT NULL default '',
PRIMARY KEY (idtable),
KEY idtable (idtable)
) TYPE=MyISAM;

• Dans un premier temps, on crée autant de tables d'indexation que de tables dans lesquelles on désire effectuer une recherche. La structure est toujours la même.

CREATE TABLE tabindex0 (
word varchar(50) default NULL,
qid int(11) default NULL
) TYPE=MyISAM;

• Puis, on crée un fichier texte contenant les mots inutiles (un par ligne).
Extrait du fichier motsinutiles.txt :

          :
          ;
          !
          à
          accueil
          afficher
          au
          au-dessous
          au-dessus
          aucun
          aucune
          auquel
          auteur
          aux
          avec
          bien
          ce
          certains
          certaines
          ceux
etc....

Naturellement, pas question de recopier un dictionnaire. A vous d'adapter en fonction de ce que vous avez placé dans vos tables.

• Ensuite, on crée un fichier php (que vous nommerez comme vous voudrez).
Il a pour but de remplir les tables d'indexation en analysant les tables des données.
Celui-ci devra être exécuté par vos soins à chaque fois qu'une des tables initiales sera modifiée.
(adaptez-le de sorte que seule la table d'indexation qui correspond soit modifiée)
Le code est commenté au fur et à mesure.

• Maintenant voici le fichier recherche.php qui sera exécuté par le 'client'.

 


Page chargée en 0.015 sec.

Dernière Modification : Lun 13 Janvier 2025 14:22
Copyright © 1999-2025 Jean-Paul Molina Tous droits réservés.

 

to Google