Documentation de PhpDig

Dernière mise à jour : 2001-05-03

Installation

Pré - Requis
PhpDig nécessite un serveur web (Apache a ma préférence) doté de Php, et d'un serveur de bases de données MySql.
Les deux configurations suivantes ont été testées :
PHP 4.0.3pl1 cgi, Apache 1.3.14, MySql 3.23.28, Windows 2000 ;
PHP 4.0.5rc1 module, Apache 1.3.14, MySql 3.23.28, Windows 2000 ;
PHP 3.0.18 module, Apache 1.3.14, MySql 3.22.32, Linux noyau 2.4.

Php doit être configuré avec le Safe_mode positionné à OFF sur le serveur qui effectue l'indexation. En revanche, ce paramètre n'a aucune incidence sur le serveur qui répond aux requêtes de recherche.

Installer PhpDig
1. Décompresser l'archive dans un répertoire servi par Apache/php.
2. Créer une base de données dans MySql (le nom importe peu), ou choisir une base existante dans laquelle insérer les 5 tables de PhpDig.
3. Exécuter le script init_db.sql dans la base concernée afin de créer les tables. Par exemple :
  # mysql
  > create database phpdig ;   (or any other name)
  > \q
  # mysql phpdig < init_db.sql

Configuration

Deux fichiers sont à éditer pour configurer PhpDig.

config.php3
Ce fichier configure les options générales du moteur. Toutes les variables à éditer font l'objet d'un commentaire dans le fichier.

connect.php3
Ce fichier configure la connexion à la base MySql. N'oubliez pas que vous pouvez vous connecter à une base distante, si l'hébergement de votre site le permet. Dans le cas de ce site, l'indexation est réalisée par ma propre machine, qui remplit la base de données située chez mon hébergeur.

Recherche

Formulaire de recherche
Il est d'une simplicité extrême, et dispose de peu d'options. Le champ textuel admet un ou plusieurs mots séparés par des espaces, et est insensible à la casse.
On peut choisir d'effectuer la recherche sur des débuts de mots, des mots entiers ou des parties de mots. Cette option s'applique à tous les critères de recherche.
Pour exclure un terme de la recherche, il suffit de le faire précéder du signe "-".
Enfin, une liste déroulante propose d'afficher les résultats par groupe de 10, 30 ou 100 enregistrements.

Navigation dans les résultats
Les pages de résultat présentent la liste des pages qui correspondent aux critères de recherche, classées par "pertinence". Cette dernière correspond simplement à la somme des occurences des termes de recherche dans chaque page trouvée.
Une ligne de navigation en bas de la page permet de parcourir la liste des résultats.
En-dessous du titre des pages trouvées se trouvent deux liens permettant de limiter les résultats à un site donné, ou à une arborescence au sein de ce site.

Placer le formulaire n'importe où
Il suffit d'invoquer la fonction phpdig_form() contenue dans le fichier function_phpdig_form.php3. Le seul paramètre à positionner absolument est la variable $result_page qui indique où trouver la page qui effectue la recherche et affiche les résultats.

Indexation

Lancer l'indexation d'un site (ou d'un de ses sous-répertoires) s'effectue par le script admin.php3. Cette page d'administration permet également de maintenir l'ensemble du moteur.
Exploration d'un site
Il suffit de renseigner l'url racine, eventuellement avec la première page à indexer, la profondeur de recherche souhaitée et de cliquer sur le bouton "Dig This !".
A chaque niveau exploré, PhpDig renvoie au navigateur un état des liens trouvés à chaque niveau. Si aucun nouveau lien n'est trouvé, PhpDig arrête son exploration et affiche la liste des documents qu'il a trouvé.
Pendant l'exploration, la table MySql "tempspider" est remplie par les liens trouvés. A ce stade, le moteur ne teste que les doublons de noms de fichier et l'existence d'un contenu HTML pour chaque document.

Définir des exclusions
Une fois la page des documents découverts affichés, l'utilisateur a la possibilité d'exclure des répertoires de l'indexation. Il peut également décider de tout indexer tout de suite.

Indexation des résultats
C'est l'opération qui prend le plus de temps. Pour mémoire, l'exploration de la documentation du serveur Apache prend sur ma configuration 01:19 pour 101 URIs réparties sur 4 niveaux. L'indexation de ces pages prend 08:27.
A chaque nouvelle page indexée, PhpDig renvoie au navigateur le résultat de son indexation (temps, nombre de mots).

Des traitements assez nombreux sont effectués chaque page indexée pour éviter à la fois de remplir le dictionnaire de mots identiques mais codés de façon différente, d'indexer du code html, mais aussi de perdre de l'information :
- Le titre, le contenu des MetaTags Description et Keywords sont extraits ;
- Les attributs Alt des images sont extraits ;
- Les caractères codés en htmlentities sont remplacés par leur équivalent ascii ;
- Les balises Html sont supprimées du texte, la plupart des signes de ponctuation également ;
- Les 600 premiers caractères du document sont extraits en vue de l'affichage des résultats de recherche ;
- Une chaîne de hashage est extraite du document pour détecter des doublons qui auraient des noms différents (comme la racine d'un répertoire qui peut être "/" ou "index.html") ;
- Tout le texte est converti en minuscules non accentuées, sans ponctuation ;
- Les mots différents sont extraits avec leur occurence ;
- La table "engine" est remplie avec des enregistrements page/mot/occurences ;
- La table "spider" est remplie avec les informations du document.

Maintenance

A partir de la page d'administration, on accède à l'interface de mise à jour en choisissant un site, et en cliquant sur le bouton "update form".

Mise à jour d'une branche
Sur le volet de gauche de l'interface de mise à jour s'affiche l'arborescence du site vue côté client.
La croix rouge supprime récursivement tous les documents dans la branche supprimée du moteur de recherche.
Le coche vert réindexe les documents de la branche ayant été indexés depuis plus de 10 jours (par défaut).
La flèche bleue affiche le contenu du "répertoire" sélectionné et permet de mettre à jour les pages une par une.

Mise à jour d'une page
Sur le volet de droite de l'interface de mise à jour s'affiche une liste des documents situés dans un "répertoire" de l'arborescence du site.
La croix rouge supprime la page du moteur.
Le coche vert force la réindexation de cette page et seulement celle-là. La réindexation est inconditionnelle, même si le document a été indexé il y a cinq minutes.
La flèche bleue lance une nouvelle exploration de liens à partir de la page sélectionnée, sur trois niveaux. La procédure est la même que pour une nouvelle indexation.

Scripts de nettoyage
Trois scripts permettent de nettoyer les tables de PhpDig des données inutiles. Ils sont accessibles par trois liens dans l'interface d'administration.
Nettoyer l'index permet de supprimer les enregistrements de l'index qui ne correspondent à aucune page. Ce script est utile si des effacements manuels ont été effectués directement dans la base de données.
Nettoyer le dictionnaire supprime les mots qui ne sont pas référencés par l'index. Ce script sert à résuire la taille du dictionnaire aux données existantes. A lancer quand un grand site contenant des mots spécifiques a été supprimé du moteur.
Nettoyer les mots courants s'utilise quand de nouveaux mots ont été ajoutés dans le fichier common_words.txt. Il supprime du moteur toute référence à cette liste de mots courants.

Mise à jour automatique
Vous devez disposer d'un executable Php (compilation en cgi) pour disposer de cette fonctionnalité.
Placez une commande comme suit dans votre crontab :
php -q [absolute_path_to_script]auto_indexing_cgi.php3 [site_url] [path]
[site_url] est l'utl à mettre à jour, [path] limite la mise à jour à ce répertoire et ses sous-répertoires.
auto_indexing_cgi.php3 doit être dans le même répertoire que les autres scripts.