PhpDig.net
|
What is PhpDig?
PhpDig is a PHP MySQL based
Web Spider & Search Engine.
|
Périmé [visite ceci lien au lieu de ceci page]
Dernière mise à jour : 2003-04-06
1. Table des matières
2. Où trouver la dernière version de PhpDig ?
A l'url : http://www.phpdig.net/
3. Fonctionnalités
3.1. Exploration HTTP
PhpDig suit les liens contenus dans les documents fournis par un serveur web,
comme n'importe quel navigateur, afin de constituer sa liste de pages à indexer.
Les liens peuvent être contenus dans des AreaMap, résulter d'une redirection, ou être
contenus dans des frames. Toute écriture, même approximative, des liens HREF est supportée.
Les liens en javascript simple comme window.open() et window.location() sont détectés.
PhpDig ne suit pas les liens externes au site défini comme racine lors de la recherche (Cependant, voir plus bas : Indexation de domaine).
La profondeur de recherche dans le site peut être paramétrée.
Tout le contenu html servi par le site distant est parcouru,
que ce soit du html simple, ou des pages créées dynamiquement.
PhpDig se base sur le Mime-Type pour déterminer quel est
le type du document.
3.2. Indexation Full Text
PhpDig indexe exhaustivement les mots contenus dans un document,
exceptés ceux de moins de 3 lettres (par défaut), et ceux contenus
dans une liste de mots considérés comme courants.
Les nombres seuls ne sont pas indexés. En revanche, les mots contenant des
chiffres le sont. Les underscores dans les mots sont considérés faisant partie
des mots, comme des noms de fonctions dans une documentation technique.
Le nombre d'occurences d'un mot dans une page est conservé dans
l'index pour une meilleure pertinence des résultats.
Les mots du titre des pages peuvent être pondérés.
3.3. Types de fichiers pouvant être indexés
PhpDig indexe nativement les fichiers HTML et texte.
De plus, PhpDig est capable d'indexer les fichiers PDF, MS-Word et
MS-Excel si vous installez sur la machine qui effectue l'indexation
des exécutables externes capables d'extraire le contenu textuel
de ces documents.
PhpDig est configuré pour utiliser les utilitaires catdoc,
xls2csv et pstotext.
Vous trouverez catdoc et xls2csv à cette adresse :
http://www.45.free.net/~vitus/ice/catdoc/.
Vous trouverez pstotext à cette adresse :
http://research.compaq.com/SRC/virtualpaper/pstotext.html.
Aucun support n'est fourni par l'auteur sur ces outils. Veuillez vous
adresser en cas de problème de compilation ou d'utilisation aux auteurs
respectifs de ces programmes.
Cependant, rien ne vous empêche d'utiliser d'autres exécutables en
renseignant correctement les constantes appropriées dans le fichier de
configuration.
Le format de sortie doit impérativement être du texte brut.
3.4. Autres fonctions
PhpDig prend en compte un éventuel fichier robots.txt contenant les
chemins des répertoires à exclure de l'indexation. Les balises meta robots sont
aussi examinées.
PhpDig peut indexer des sites situés sur un port différent du port 80 par
défaut.
On peut spécifier un nom et un mot de passe au robot pour
indexer les sites protégés par mot de passe.
Attention ! Cette dernière fonction peut permettre à des personnes
non autorisées de lire des informations protégées. Il est recommandé de
créer une instance spécifique de PhpDig, protégée par les mêmes droits
d'accès que le site restreint, ainsi que de créer un compte pour le robot
lui-même.
Si le serveur renvoie un header Last-Modified, la valeur est mémorisée afin de
ne pas effectuer de réindexation inutile.
La balise <META> revisit-after est également prise en compte pour la
mise à jour de l'index.
Si le moteur est configuré pour le faire, les résultats affichent un extrait
des pages trouvées, contenant les termes de recherche surlignés ou mis en gras.
3.5. Modèles de présentation
Un système simple de modèles permet de personnaliser facilement la page de recherche
et de résultats. Il suffit d'insérer quelques balises spécifiques dans une page statique
servant de modèle.
3.6. Limitations
PhpDig ne gère pas la recherche par expression exacte. Cela impliquerait un index au moins
de la taille des documents indexés (ce qui n'est pas le but),
sans compter le ralentissement de la recherche.
Les instances de Php qui réalisent l'indexation ne peuvent être configurés en safe_mode,
sans quoi la limite de temps des scripts empêcherait le moteur de fonctionner.
Cette limite est toutefois contournable de deux manières : Soit en utilisant la possibilité
d'indexation distante (par les connexions TCP mysql et FTP), soit en lançant l'indexation
en ligne de commande sur le serveur, éventuellement par une tâche cron.
L'indexation est relativement lente. En revanche, la recherche, même sur un contenu
assez étendu, reste suffisament rapide pour ne pas gêner l'utilisateur.
4. Installation
4.1. 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 configurations suivantes ont été testées :
Php/4.1.1, Apache/1.3.20 (Win32), Windows 2000 ;
Php/4.1.2, Apache/1.3.23 (Unix) mod_ssl/2.8.7, Linux noyau 2.4.3 ;
Php/4.3.0, Apache/2.0.44 (Unix) OpenSSL/0.9.6g, Linux noyau 2.4.18;
Php/4.3.1, Apache/2.0.44 (Win32), Windows 2000 .
4.2. Installation des scripts
Il suffit de déplier le fichier d'archive dans un répertoire de votre choix.
(qui sera désigné ultérieurement par [PHPDIG_DIR]
Il n'est pas nécessaire de créer un VirtualHost Apache pour le moteur.
Vérifiez par la même occasion, si vous êtes sous un système Unix,
que L'utilisateur sous lequel est lancé le serveur Apache ait le
droit d'écrire dans les répertoires :
[PHPDIG_DIR]/text_content
[PHPDIG_DIR]/include
[PHPDIG_DIR]/admin/temp
4.3. Installation de la base MySql
Deux méthodes sont possibles pour installer la base.
Script php d'installation :
Dans votre navigateur, appelez le script
[PHPDIG_DIR]/admin/install.php
Et suivez les instructions.
Choisissez notamment si vous désirez créer la base de données, ou
uniquement les tables ; ou si vous désirer mettre à jour une base de
données de la version précédente de PhpDig.
Le script utilise les informations pour renseigner les champs du fichier
"[PHPDIG_DIR]/include/_connect.php" et pour en faire une copie sous le nom
"[PHPDIG_DIR]/include/connect.php".
Installation manuelle :
Il vous faut créer la base mysql (il n'est pas obligatoire de la nommer
"phpdig") :
#mysql mysql
mysql> CREATE DATABASE phpdig;
mysql> quit
#mysql phpdig < [PHPDIG_DIR]/sql/init_db.sql
Vérifiez l'existence de toutes les tables :
#mysql phpdig
mysql> SHOW TABLES;
La base de donnée doit vous répondre :
+------------------+
| Tables_in_phpdig |
+------------------+
| engine |
| excludes |
| keywords |
| logs |
| sites |
| spider |
| tempspider |
+------------------+
7 rows in set (0.00 sec)
mysql>
Une fois la base créée, copiez le fichier "[PHPDIG_DIR]/include/_connect.php"
vers le fichier "[PHPDIG_DIR]/include/connect.php" et éditez ce dernier.
Remplacez les valeurs "<host>", "<user>", "<pass>",
et "<database>" respectivement par l'URL de votre serveur MySql, le nom
d'utilisateur, son mot de passe, et le nom que vous avez donné à la base de
données.
Si vous désirer préfixer chaque table par une chaîne de
caractère de votre choix, remplacez "<dbprefix>" par la chaîne
et modifiez le nom des champs dans une interface MySql.
Si ce n'est pas le cas, mettez une chaîne vide.
Sur une installation locale, généralement les valeurs
"localhost", "root", et "" sont suffisantes pour la connexion.
Vous pouvez vérifier que l'installation s'est bien déroulée en ouvrant la
page principale [PHPDIG_DIR]/index.php.
Le formulaire de recherche doit s'afficher.
5. Configuration
Dès l'étape d'installation franchie, le moteur est opérationnel.
L'étape de configuration est optionnelle et dépend de vos besoins.
N'oubliez pas de modifier le login et le mot de passe d'administration
si vous utilisez Php compilé en module d'apache ou en module statique.
Note : l'authentification ne fonctionne pas avec php utilisé en CGI. Dans
ce cas, utilisez un fichier .htaccess pour protéger le répertoire
[PHPDIG_DIR]/admin
Tous les paramètres de configuration se trouvent dans le fichier
[PHPDIG_DIR]/include/config.php.
Chaque paramètre fait l'objet d'un commentaire explicitant son utilisation.
Dans les parties suivantes consacrées à la configuration, les lignes de code
se rapportent toutes au fichier config.php.
Les valeurs indiquées sont
les valeurs définies par défaut.
5.1. Configuration de l'accès à l'administration
Modifiez les constantes suivantes. Si vous ne voulez pas
que le mot de passe apparaîsse en clair quelque part, utilisez les
fonctions d'authentification d'apache.
define('PHPDIG_ADM_AUTH','1'); //active ou non l'authentification
define('PHPDIG_ADM_USER','admin'); //Nom d'utilisateur (login)
define('PHPDIG_ADM_PASS','admin'); //Mot de passe pour l'accès
5.2. Configuration du robot et du moteur
Modifiez les variables et constantes suivantes.
define('SPIDER_MAX_LIMIT',12); //Profondeur maximale sélectionnable pour l'indexation
define('SPIDER_DEFAULT_LIMIT',1); //Valeur séléctionnée par défaut dans le formulaire
define('RESPIDER_LIMIT',4); //Profondeur pour les mises à jour
define('LIMIT_DAYS',7); //Nombre de jours par défaut avant de revisiter une page
define('SMALL_WORDS_SIZE',2); //Taille des mots à ne pas indexer
define('MAX_WORDS_SIZE',30); //Taille maximale possible d'un mot
define('PHPDIG_EXCLUDE_COMMENT','<!-- phpdigExclude -->');
//commentaire HTML pour exclure une partie
//de page
define('PHPDIG_INCLUDE_COMMENT','<!-- phpdigInclude -->');
//commentaire HTML pour arrêter l'exclusion
//d'une partie de page
define('PHPDIG_DEFAULT_INDEX',true); //phpDig considère /index et /default
//html, htm, php, asp, phtml comme étant
//la même url que '/'
define('PHPDIG_SESSID_REMOVE',true); // enlève les SIDS des urls stockées
define('PHPDIG_SESSID_VAR','PHPSESSID');// nom de la variable SID
define('TITLE_WEIGHT',3); //Poids des mots du titre par rapport aux autres mots
define('CHUNK_SIZE',2048); //Taille du découpage pour le traitement des pages
(ce paramètre ne nécessite pas d'être modifié)
define('SUMMARY_LENGTH',500); //Longueur de texte pour le résumé des pages
define('TEXT_CONTENT_PATH','text_content/'); //répertoire des fichiers de contenu textuel
define('CONTENT_TEXT',1); //Active ou non le stockage des fichiers de contenu.
define('PHPDIG_IN_DOMAIN',false); //Permet à PhpDig de suivre les
//liens interne au domaine
//si vous indexez "www.mondomaine.tld",
//le domaine est "mondomaine.tld"
5.3. Configuration de l'encodage utilisé
Modifiez la constante suivante. Notez que PhpDig ne supporte
pas les encodages multiples : Les paramètres suivant s'appliquent
à tous les documents indexés ainsi qu'à l'interface.
define('PHPDIG_ENCODING','iso-8859-1'); // iso-8859-1 et iso-8859-2 supportés
Pour permettre à PhpDig de supporter des encodages supplémentaires,
il vous faut rajouter des index de tableaux aux variables suivantes,
en vous basant sur les index existants.
$phpdig_string_subst['iso-8859-1']
$phpdig_string_subst['iso-8859-2']
...
$phpdig_words_chars['iso-8859-1']
$phpdig_words_chars['iso-8859-2']
...
5.4. Configuration des exécutables externes
Chaque outil externe est défini par trois constantes :
- INDEX (true ou false) : Active l'indexation de ce type de document ;
- PARSE (chemin) : Chemin de l'exécutable traitant ce type de document ;
- OPTION (options) : Options à passer à l'exécutable.
define('PHPDIG_INDEX_MSWORD',true);
define('PHPDIG_PARSE_MSWORD','/usr/local/bin/catdoc');
define('PHPDIG_OPTION_MSWORD','-s 8859-1');
define('PHPDIG_INDEX_PDF',true);
define('PHPDIG_PARSE_PDF','/usr/local/bin/pstotext');
define('PHPDIG_OPTION_PDF','-cork');
define('PHPDIG_INDEX_MSEXCEL',true);
define('PHPDIG_PARSE_MSEXCEL','/usr/local/bin/xls2csv');
define('PHPDIG_OPTION_MSEXCEL','');
5.5. Configuration du modèle pour les résultats
Modifiez les variables et constantes suivantes.
$phpdig_language = "en"; //langue de l'interface
$template = "$relative_script_path/templates/phpdig.html";
//chemin du fichier de modèle
define('HIGHLIGHT_BACKGROUND','yellow'); //Couleur de fond du surlignage
//Seulement en mode 'classic'
define('HIGHLIGHT_COLOR','#000000'); //Couleur du texte surligné
//Seulement en mode 'classic'
define('LINK_TARGET','_blank'); //Target pour les liens de résultats
define('WEIGHT_IMGSRC','./tpl_img/weight.gif'); //chemin de l'image servant de baragraph
define('WEIGHT_HEIGHT','5'); //hauteur du baragraph
define('WEIGHT_WIDTH','50'); //largeur maximale du baragraph (pour 100%)
define('SEARCH_PAGE','index.php'); //Nom de la page de recherche
define('SUMMARY_DISPLAY_LENGTH','150'); //Nombre de caractères dans
//la description
define('DISPLAY_SNIPPETS',true); //Affiche les extraits
define('DISPLAY_SNIPPETS_NUM',4); //Nombre maximum d'extraits
define('DISPLAY_SUMMARY',false); //Affiche la description
define('PHPDIG_DATE_FORMAT','\1-\2-\3'); // Format de la date affichée
// \1 est l'année, \2 le mois et
// \3 le jour
define('SEARCH_DEFAULT_LIMIT',10); //resultats par page par défaut
define('SEARCH_DEFAULT_MODE','start'); //mode de recherche par défaut (start|exact|any)
5.6. Configuration FTP (si nécessaire)
A quoi diable peut-donc servir une connexion ftp dans PhpDig si
il n'indexe pas les sites FTP ?
Beaucoup d'utilisateurs de installent PhpDig sur des serveurs mutualisés, et
sur ces dernier, Php est toujours configuré en safe_mode. PhpDig ne peut effectuer
d'indexation en safe_mode, et dans le cas des hébergements mutualisés, l'accès aux
tâches cron est bien entendue exclue.
La solution est d'avoir une instance Php sur une autre machine. Dans mon cas,
c'est une machine Linux à mon domicile, branchée sur une connexion à haut débit
qui effectue ce travail.
Votre hébergement doit toutefois vous autoriser à vous connecter en TCP/IP
à votre serveur de bases de données MySql.
Et le FTP dans tout ça ? Il sert à envoyer au serveur les fichiers de contenu
textuel qui permettent d'afficher des extraits pertinents des documents trouvés
dans les pages de résultat.
Si vous désactivez la fonction FTP lors d'une indexation distante, les résultats
afficheront l'ancienne version de l'extrait ou les premiers mots du documents
stockés dans la base MySql, selon que le fichier de contenu existe ou non sur
le serveur.
Les paramètres concernés sont les suivants.
define('FTP_ENABLE',0); //Activation ou non de la connexion FTP
define('FTP_HOST','<ftp host dir>'); //nom du serveur FTP
define('FTP_PORT',21); //port ftp
define('FTP_PASV',1); //utiliser le mode passif (conseillé)
define('FTP_PATH','<phpdig root dir>'); //chemin du répertoire de phpdig sur le serveur ftp
define('FTP_TEXT_PATH','text_content'); //répertoire des fichiers de contenu (default)
define('FTP_USER','<ftp username>'); //utilisateur du compte FTP
define('FTP_PASS','<ftp password>'); //mot de passe pour le compte FTP
6. Mise à jour de PhpDig
6.1. Mise à jour de la base de données
Le script sql [PHPDIG_DIR]/sql/update_db_to[version].sql contient
les instructions SQL nécessaires pour mettre à jour votre installation
existante, version par version.
Vous pouvez également utiliser l'interface d'installation en choississant
l'option de mise à jour de la base. Cette fonction n'opère que pour la
version immédiatement précédente de la base de données.
6.2. Mise à jour des scripts
Remplacez les anciens scripts par les nouveaux, en ayant préalablement
effectué une sauvegarde de votre configuration.
7. Indexation par l'interface web
7.1. Indexer un nouveau site
A partir de l'interface d'administration [PHPDIG_DIR]/admin/index.php, un champ
de formulaire vous permet de renseigner un site à indexer. Vous pouvez également
indiquer un chemin et/ou un fichier à partir duquel le robot va commencer son
indexation.
Spécifiez une profondeur de recherche (combien de niveaux de liens va suivre le
robot avant d'arrêter son indexation, et cliquez sur le bouton [dig this!].
Une page s'ouvre montrant le processus de recherche de liens et d'indexation.
Une page correctement indexée est marquée d'un coche vert. Les '+' indiquent les
nouveaux liens trouvés à partir de cette page.
L'indication "doublon avec une page existante" indique que malgré une URL différente,
la page que PhpDig vient de trouver est identique à une autre page déjà indexée.
A la fin de l'indexation, une liste récapitule tous les liens trouvés par PhpDig.
7.2. Mettre à jour un site
Dans l'interface d'administration, une liste des sites déjà indexés permet de
les mettre à jour : Sélectionnez l'un des sites et cliquez sur le bouton
[update form].
Une interface à deux volets s'affiche. A gauche se trouve une liste des branches
du site indexé, à droite s'affiche la liste des fichiers d'une branche si on clique
sur la flèche bleue située à droite de chacune des branches.
Pour les deux volets, la croix rouge supprime la branche ou le fichier sélectionné,
le coche vert force la réindexation de la branche ou de la page ainsi que la
recherche de nouveaux liens sur une profondeur définie par le paramètre
RESPIDER_LIMIT.
7.3. Maintenance du moteur
Trois liens situés en bas de l'interface d'administration permettent de nettoyer
la base de donnée des enregistrements inutiles ou corrompus.
Le lien Nettoyer l'index supprime les entrées d'index qui sont ne sont plus
liées à aucun mot-clef.
Le lien Nettoyer les mots-clefs supprime les entrées de mots-clefs qui ne
sont plus liées à aucune entrée d'index. Ce lien permet de minimiser la
taille de la table des mots-clefs après de nombreuses indexations et mises
à jour.
Le lien Nettoyer les mots courants supprime les entrées d'index et de mots-clefs
devenues inutiles suite au rajout de mots dans le fichier des mots courants
[PHPDIG_DIR]/includes/common_words.txt.
8. Indexation en ligne de commandes
Le script [PHPDIG_DIR]/admin/spider.php peut être
lancé en ligne de commande afin de ne pas charger le serveur web.
Le script se lance ainsi :
#php -f [PHPDIG_DIR]/admin/spider.php [option]
Les options sont les suivantes :
- all (par défaut) : Met à jour tous les sites ;
- forceall : Met à jour tous les sites de manière forcée;
- http://mondomaine.tld : ajoute ou met à jour l'url ;
- path/file : ajoute ou met à jour les urls contenues dans le fichier spécifié.
Exemples d'utilisation :
#php -f [PHPDIG_DIR]/admin/spider.php http://hote.mondomaine.com
#php -f [PHPDIG_DIR]/admin/spider.php [Fichier contenant une liste d'urls]
Comme pour n'importe quelle commande, la sortie peut être redirigée
vers un fichier (pour tenir des logs par exemple.)
#php -f [PHPDIG_DIR]/admin/spider.php all >> /var/log/phpdig.log
Le script [PHPDIG_DIR]/admin/spider.php peut également être
programmé en tâche cron afin de procéder automatiquement
à la mise à jour du moteur. La périodicité conseillée est
de 7 jours, quitte à forcer la réindexation par l'interface web
des pages devant figurer dans le moteur immédiatement.
Ces dernières peuvent également comporter un Metatag
"revisit-after" spécifique.
9. Les templates
9.1. Généralités
Les templates consistent en fichiers html dans lesquels quelques
balises de style xml permettent de placer le contenu dynamique.
Les modèles fournis permettent de donner une petite idée de la
façon dont les pages de résultat peuvent être personnalisées.
Le couple de balises <phpdig:results></phpdig:results> sert
au tableau de résultats : Tout le contenu situé entre ces deux balises
sera répété autant de fois qu'il y a de résultats de recherche dans la
page.
Deux classes CSS sont utilisées par PhpDig dans les templates:
.phpdigHighlight : Classe de niveau <SPAN/> utilisée pour le surlignage
des termes de recherche.
a.phpdig : Classe de balise <A/> pour les liens de résultats et
de navigation.
Les balises sont toutes du style <phpdig:parametre/>.
A part la balise
<phpdig:results></phpdig:results>, ce sont toutes des
balises unitaires.
9.2. Balises en dehors de la table des résultats
phpdig:title_message Titre de la page
phpdig:form_head Début du formulaire
phpdig:form_title Titre du formulaire
phpdig:form_field Champ texte du formulaire
phpdig:form_button Bouton de soumission du formulaire
phpdig:form_select Liste déroulante du nombre de résultats par page
phpdig:form_radio Boutons radio sur l'interprétation des mots
phpdig:form_foot Fin du formulaire
phpdig:result_message Message sur le nombre de résulats
phpdig:ignore_message Message sur les mots trop courts
phpdig:ignore_commess Message sur les mots trop courants
phpdig:nav_bar Barre de navigation dans les pages de résultats
phpdig:pages_bar Barre de navigation sans les liens suivants/précédents
phpdig:previous_link src=[img src] Lien vers l'icône "précédents"
phpdig:next_link src=[img src] Lien vers l'icône "suivants"
9.3. Balises pour la table des résultats
phpdig:results Encadre les lignes de résultat
phpdig:img_tag Baragraph de pertinence
phpdig:weight Pertinence de la page (sur 100)
phpdig:page_link Titre du résultat et lien vers la page
phpdig:limit_links Liens limitant la recherche à un site/un chemin
phpdig:text Texte du résultat
phpdig:n Classement du résultat
phpdig:complete_path URL complète du document
phpdig:update_date Dernière mise à jour du document
phpdig:filesize Taille du document (Kilo Octets)
10. Intégrer PhpDig à un site web
10.1. Le script index.php
Le script index.php est juste un exemple d'utilisation de PhpDig avec
le template du même nom. Ce script peut être intégré à n'importe quel endroit
de votre site, du moment que les fichiers de configuration et les librairies
sont correctment incluses.
la variable $relative_script_path doit indiquer le chemin relatif de
la racine du répertoire phpdig par rapport au script courant.
La fonction phpdigSearch() doit également être appelée toujours de
la même façon :
extract(phpdigHttpVars(
array('query_string'=>'string',
'template_demo'=>'string',
'refine'=>'integer',
'refine_url'=>'string',
'site'=>'integer',
'limite'=>'integer',
'option'=>'string',
'search'=>'string',
'lim_start'=>'integer',
'browse'=>'integer',
'path'=>'string'
)
));
phpdigSearch($id_connect, $query_string, $option, $refine,
$refine_url, $lim_start, $limite, $browse,
$site, $path, $relative_script_path, $template);
Seul le dernier paramètre, $template a de l'importance pour l'intégration :
Utilisez 'classic' pour la présentation fixe de PhpDig (les balises d'en-tête
html sont incluses.)
Utilisez la variable $template pour utiliser un template.
La variable peut être définie dans le fichier config.php
ou ailleurs, afin de présenter un aspect différent selon la partie
du site où le moteur est appellé.
Utilisez 'array' pour exploiter vous-même les résultats de
recherche.
10.2. Utiliser le mode 'classic'
Vous n'avez rien à faire : Tout l'affichage est pris en compte par la
fonction phpdigSearch(). En revanche vous ne pourrez pas modifier
l'affichage.
10.3. Utiliser les templates
A l'aide des templates décrits plus haut, vous pouvez facilement intégrer
PhpDig à la charte graphique de votre site.
En effet, un template peut aussi bien être une page HTML entière, comme
les templates fournis avec PhpDig, qu'une seule partie de la page. Seule
cette partie sera décrite par le template et apparaîtra à l'endroit où
vous placerez l'appel de la fonction phpdigSearch().
Il vous suffira d'intégrer à votre css une classe .phpdigHighlight.
10.4. Utiliser PHP
En utilisant le mode 'array', la fonction phpdigSearch() renvoie
un tableau à la fois des résultats et des éléments du formulaire de recherche.
Pour afficher le contenu du tableau de recherche, modifiez l'appel de la
fonction ainsi et envoyez au script une url complète de résultat de recherche :
print '<pre>';
print_r(
phpdigSearch($id_connect, $query_string, $option, $refine,
$refine_url, $lim_start, $limite, $browse,
$site, $path, $relative_script_path, 'array')
);
print '</pre>';
Exploitez ensuite le contenu du tableau comme vous l'entendez.
11. Fonctionnement interne de PhpDig
11.1. Exploration et Indexation
PhpDig lit la page d'origine spécifiée pour l'indexation, et rajoute au fur et à mesure
de son exploration les liens trouvés dans une liste de liens à suivre.
Lorque aucun nouveau lien n'est trouvé par le moteur, il termine son indexation.
Afin de déterminer que faire d'un lien, PhpDig opère ainsi :
- Il demande au serveur l'en-tête (header HTTP) de l'URI en cours. Si le
mime-type du document renvoyé correspond à un document que PhpDig est capable
d'indexer, il continue le traitement.
Si le serveur renvoie une redirection, PhpDig analyse si la redirection renvoie
bien à une URI du même site (ou du même domaine).
Le moteur compare ensuite l'en-tête "last-modified" avec la date stockée dans
sa base de données en cas de ré-indexation. Si les deux dates sont identiques,
l'URI n'est pas traitée.
Enfin, PhpDig vérifie que l'URI ne fait pas partie de la liste d'exclusions
d'un fichier robots.txt ou d'exclusions définies par l'utilisateur.
- Dans le cas d'un document HTML, PhpDig lit les meta-tags robots pour savoir
si il lui est permis d'indexer et/ou de suivre les liens contenus dans le
document.
- PhpDig télécharge ensuite le document pointé par l'URI dans un fichier temporaire.
Le document est tout d'abord indexé : Le contenu textuel est stocké
dans un fichier servant à l'affichage des extraits, puis analysé afin d'en extraire
les mots-clef.
Pour un document HTML, les commentaires définis dans le fichier de configuration
(constantes PHPDIG_EXCLUDE_COMMENT et PHPDIG_INCLUDE_COMMENT) déterminent
des parties à exclure de l'indexation.
- Enfin, PhpDig relit le fichier temporaire dans le cas d'un document HTML
afin d'en extraire de nouveaux liens. Tous les liens sont analysés afin de
déterminer ceux à indexer, ceux qui mènent vers un document inexistant ou
protégé, vers un autre site, etc.
- La procédure d'indexation est exclusive par site : Un site est verrouillé
tant qu'une opération (indexation, suppression de branche, etc) est effectuée.
Aucune autre opération ne peut être effectuée tant que le verrou est en place.
11.2. Recherche
Même si le formulaire de recherche parle de lui-même, il n'est pas inutile de
rappeler que :
- Un opérateur AND est appliqué inconditionnellement à tous les termes de
recherche ;
- Un mot précédé d'un '-' (signe moins) est exclu de la recherche. Aucune
page contenant ce mot ne sera retournée en résultat ;
- La recherche est insensible à la casse et aux accents.
12. Obtenir de l'aide sur PhpDig
Un forum consacré à PhpDig est disponible à l'adresse
http://www.phpdig.net/
Vous pouvez y poser toutes les questions relatives au programme.