Comment installer et configurer HtDig
pour la langue française
Ht://Dig


Qu'est ce que Ht://Dig ?

Ht://Dig est un logiciel d'indexation et de recherche de documents par mots-clefs dans un site web. C'est typiquement le genre de logiciel qui est utilisé lorsqu'un site offre des fonctionalités du type "rechercher sur ce site" ou "search this site", etc... Ht://Dig se distingue des autres logiciels du même genre en étant un logiciel libre distribué sous licence GPL (GNU General Public Licence) et aussi en étant l'un des plus performants. Il est de ce fait le moteur de recherche favori des distributions de Linux, FreeBSD, etc... et est utilisé par de nombreux sites, dont quelques très gros sites. Voir http://www.htdig.org/ pour en savoir plus.

Qu'est ce qui fait qu'Ht://Dig est adapté à une langue ou à une autre ?

Le moteur d'indexation et de recherche d'Ht://Dig est indifférent au langage utilisé, mais sa configuration ne l'est pas. Ht://Dig utilise en effet quelques fichiers annexes et des paramètres de configuration qui permettent de l'adapter à une langue ou à une autre. Pour qu'Ht://Dig puisse fonctionner correctement avec la langue française, il faut substituer une version française de certains fichiers à ceux de la version anglaise par défaut et adapter le fichier de configuration.

Où se procurer les fichiers nécessaires ?

Lorsque j'ai voulu utiliser Ht://Dig sur un site en français, je me suis aperçu que ce n'étais pas si simple que ça et qu'il n'existait pas de kit de francisation établi qui puisse être utilisé tel quel. Etant du genre têtu et curieux, j'ai entrepris de creuser la question en explorant les mailing-lists, en rassemblant divers fichiers et en faisant des essais sous Linux ... et la persévérance a fini par être avantageuse, puisque je suis effectivement arrivé au bout de quelques essais à faire fonctionner correctement Ht://Dig en français. Grâce à ce challenge de mon ego d'informaticien par une nature récalcitrante, vous pouvez désormais bénéficier d'un kit de francisation dûment documenté:

Alternativement, il existe une version RPM, qui facilite l'installation sous Linux.

Pour quelle version d'Ht://Dig le kit a t'il été conçu ?

Le kit a été initialement conçu et testé pour la version 3.1.4, qui était la dernière version stable à cette époque. Son bon fonctionnement a été re-vérifié depuis avec les versions 3.1.5 et 3.1.6. Il est cependant possible qu'il fonctionne également avec d'autres versions, tel quel ou moyennant quelques adaptations.

Appel à contribution: si quelqu'un réalise des adaptations de ce kit pour d'autres versions, je contribuerai volontiers à les diffuser.

Que contient le kit de francisation ?

Fichiers à substituer dans ./installdir avant la compilation et l'installation:

  • htdig.conf (fichier de configuration adapté pour le français - remplace le fichier du même nom)
  • rundig (script de lancement de la procédure d'indexation - remplace le fichier du même nom)
  • footer.html, header.html, long.html, nomatch.html, search.html, short.html, syntax.html, wrapper.html (gabarits d'affichage en français - remplacent les fichiers de même nom)

Fichiers à rajouter après l'installation, avant de lancer l'indexation:

  • ./common/francais.0 (dictionnaire des mots français - équivalent de english.0)
  • ./common/francais.aff (dictionnaire des terminaisons françaises - équivalent de english.aff)
  • ./common/bad_words.fr (liste de mots à exclure: articles, adverbes, etc... adaptée au français - équivalent de bad_words)
  • ./common/_synonyms.fr (dictionnaire des synonymes - équivalent de synonyms)
  • ./bin/_trans.pl (script de création d'un dictionnaire de synonymes non accentués - fichier ajouté)
  • ./htdocs/lisezmoi.html: le présent document, qui tient lieu de documentation du kit

Comment installer Ht://Dig pour le français ?

  1. Télécharger et déployer le package de la distribution d'Ht://Dig standard
  2. Télécharger et déployer le kit de francisation
  3. Substituer les fichiers du kit de francisation aux fichiers de la distribution standard qui sont dans le sous-répertoire ./installdir
  4. Hormis cette substitution de fichiers, l'installation de la version française est en tous points identique à celle de la version anglaise (se référer à la documentation d'Ht://Dig).
  5. Rajouter les fichiers du kit de francisation qui ne se sont pas automatiquement installés dans les bons répertoires
  6. Lancer rundig pour créer les bases de données d'indexation

ATTENTION ! Versions antérieures à 3.1.6:
Pour que les caractères accentués soient correctement reconnus, Ht://Dig doit avoir été (re)compilé avec le paramètre locale:fr_FR, qui est spécifié dans la version modifiée d'htdig.conf. Cela suppose donc que le fichier htdig.conf du kit de francisation ait été substitué à celui de la distribution standard AVANT la (re)compilation. Cela n'est plus nécessaire depuis la version 3.1.6.

A propos de certaines variantes de LOCALE

Ci-après extraits de mails de personnes qui ont résolu les problèmes relatifs à leurs variantes de locale:

"... J'ai bien tout recompilé, mais ça ne marchait toujours pas. J'ai exécuté la commande locale sur mon Unix et la j'ai vu que je n'avais pas fr_FR tout seul mais fr_FR.iso88591 ou fr_FR.roman, j'ai donc mis fr_FR.iso88591 dans le paramètre et là ça fonctionne au niveau de htdig, htmerge et htfuzzy, par contre j'ai encore des problèmes avec htsearch dans certains cas. J'ai résolu le problème en positionnant la variable dans le fichier htdig.conf à fr_FR.iso88591 pour les phases htdig, htmerge et htfuzzy, mais je la mets en commentaire pour htsearch, et là tout fonctionne. Je tourne sous HP-UX 10.20 ..."
(François Soupault <
fs@sigu7.jussieu.fr>)

"... J'ai réussi et c'était un problème de "locale" en desaccord entre le système (SUN/Solaris) et htdig, dans notre cas il fallait locale : fr (tout court) ..."
(Nicolas MARIE <
nicolas.marie@meteo.fr>)

Le kit de francisation fonctionne t'il lorsqu'on fait tourner Ht://Dig sous Win32 ?

Il est possible de faire fonctionner Ht://Dig sous Win32 grâce à Cygwin, qui émule un environnement de type Unix sous Win32, mais certaines fonctions spécifiques de l'environnement Unix ne sont pas reconnues par Cygwin. C'est notamment le cas de "locale", dont l'absence empêche la prise en compte des caractères accentués. Cette limitation a peut-être été levée avec la version 3.1.6, qui intègre une gestion plus poussée des accents, et/ou avec les versions plus récentes de Cygwin, mais je n'ai pas encore eu connaissance de portage qui soit réellement opérationnel sous Win32. Ca parait de toute façon bien compliqué pour un résultat d'un intérêt douteux !

Qui a fourni les dictionnaires ?

Les dictionnaires des mots et des terminaisons proviennent du dictionnaire "ispell" d'IREQ (ftp://ftp.robot.ireq.ca/ispell/francais-IREQ.tar.gz). Les dictionnaires de la distribution ispell ont été compilés au moyen de la syntaxe: cat *.dico | sort | uniq > francais.0. Le fichier des terminaisons francais.aff est réutilisé tel quel.

Le dictionnaire des synonymes a été fourni par Sébastien Brize suite à un appel à contribution de ma part. Ce dictionnaire est "brut de décoffrage", mais utilisable en l'état par ceux qui veulent s'en servir.

Appel à contribution: si quelqu'un apporte des améliorations à ce dictionnaire des synonymes, merci de me les communiquer pour en faire profiter tout le monde.

Comment à été composé le fichier bad_words.fr ?

Le fichier bad_words.fr a été composé empiriquement par tests successifs sur un site de taille moyenne, jusqu'à ce que le fichier db.wordlist ne contienne plus que des mots utiles:

  1. lancement de rundig -> indexation
  2. observations des mots indésirables récupérés dans db.wordlist
  3. ajouts de ces mots dans le fichier bad_words.fr
  4. lancement de rundig -> ré-indexation
  5. etc...

Appel à contribution: ce fichier est vraisemblablement améliorable. Toutes les suggestions allant dans ce sens sont bienvenues.

Quid des synonymes ?

Le dictionnaire des synonymes peut être employé de trois manières:

  1. pour étendre automatiquement la recherche à des synonymes des mots qui ont été entrés; c'est à cela que peut servir le fichier synonyms.fr du kit; pour activer ce type d'utilisation, enlever le '_' en tête du nom de fichier ("_synonyms.fr" -> "synonyms.fr")
  2. pour étendre la recherche à des mots qui s'orthographient de plusieurs manières; cette approche n'a pas été implémentée pour l'instant, mais elle mériterait de l'être
  3. pour étendre la recherche aux équivalents non-accentués des mots entrés; c'est à cela que servait le script trans.pl, jusqu'à ce que cette fonctionalité soit incluse dans le programme lui-même; pour activer ce type d'utilisation, enlever le '_' en tête du nom de fichier ("_trans.pl" -> "trans.pl")

Comment faire en sorte que les caractères accentués ou non soient équivalents ?

Un patch de Robert Marchand a été intégré dans la version 3.1.6, qui réalise automatiquement l'équivalence entre caractères accentués/non accentués dans le code source d'htfuzzy. Cf: option accents du paramètre search_algorithm.

Pour les versions antérieures, cela peut être accompli en constituant un dictionnaire des synonymes où les mots sans accents figurent en tant que synonymes des mots comportant des accents. Répondant à mon appel à contribution, Stéphane Marzloff a réalisé un script (trans.pl) qui compose un dictionnaire des synonymes non accentués à partir de db.wordlist. Ce script peut être exécuté automatiquement grâce à une version adaptée de rundig (inclus dans le kit).

Que faire des fichiers synonyms.db, word2root.db et root2word.db en anglais ?

Ces fichiers doivent être remplacés par leur équivalent en français. Pour cela, il faut effacer ces fichiers *.db d'origine et lancer une réindexation une fois que les fichiers du kit de francisation ont été mis dans les bons répertoires. Le script rundig comporte une procédure qui détecte l'absence des fichiers *.db et qui les reconstitue automatiquement à partir des dictionnaires spécifiés.

Pourquoi mes gabarits personnalisés long.html et short.html ne sont pas pris en compte ?

Les paramètres francisés de template_map dans le fichier htdig.conf sont positionnés par défaut pour utiliser les fonctions internes compilées dans le code (builtin-long, builtin-short). Pour utiliser les gabarits externes à la place de celles-ci, il convient d'adapter le paramètrage de template_map en conséquence.

Comment utiliser Ht://Dig sur un site multilingue ?

Dès lors que l'ensemble des caractères utilisés par les différentes langues est contenu dans un même jeu de caractères définissable par un même paramètre de locale, il est théoriquement possible d'utiliser une même configuration d'Ht://Dig pour l'ensemble du site, toutes langues confondues (c'est par exemple le cas de l'anglais et du français, les caractères non-accentués de l'anglais étant un sous-ensemble des caractères utilisés par le français). La recherche peut ensuite être conduite dans les répertoires spécifiques à un langage donné en utilisant la variable CGI "restrict" dans les pages (ex: <INPUT TYPE="HIDDEN" NAME="restrict" VALUE="/fr/">).

Par contre, ça se complique fortement lorsqu'il s'agit de gérer le dictionnaire, les terminaisons (affix), le fichier bad_words en concordance avec le paramètre valid_punctuation, et les synomymes. En pratique, cela semble beaucoup plus difficile à réaliser que de mettre en place une configuration dédiée à chaque langue, avec ses paramètres et fichiers spécifiques.

Comment faire fonctionner Ht://Dig dans un sous-système Jail ?

FreeBSD dispose d'une fonctionalité appelée Jail, qui permet d'emprisonner des sous-systèmes FreeBSD dans un répertoire du système hôte, ce qui est bien adapté aux hébergements de sites en serveur virtuel dédié. Les serveurs sous Jail se comportent "presque" comme des serveurs à part entière. En ce qui concerne Ht://Dig, le "presque" réside dans l'impossibilité d'adresser des requêtes HTTP à son adresse IP depuis l'intérieur du sous-système Jail. Pour contourner cette petite difficulté, il suffit d'adresser les requêtes à l'adresse de loopback (127.0.0.1) au lieu de l'adresse externe du sous-système Jail. Cela peut se faire simplement en mettant les noms d'hôtes utilisés par le serveur HTTP en aliases de localhost dans la table /etc/hosts, ce qui est de toute façon plus performant, indépendamment des contraintes de Jail, et résoud accessoirement d'autres problèmes similaires (libwww de Perl notamment). Ex:

127.0.0.1 localhost www.example.org myhost.example.org ...

Ht://Dig francisé en version RPM

Pour faciliter l'installation d'Ht://Dig francisé sous Linux, Sébastien Gallet a réalisé une version RPM qui auto-installe l'ensemble:

"... Pour ce qui est de l'installation des rpm, rien de plus simple :

  • On installe les deux rpm de binaires
  • On choisit le dictionnaire des synonymes (_synonims.fr ou _trans.pl)
  • On met à jour l'URL du site dans le fichier /etc/htdig/htdig.conf. (mise à jour automatique dans le cas d'une configuration simple)
  • rundig et c'est parti

Toute la partie : copie des fichiers, installation du patch et compilation est gèrée automatiquement par le rpm source...."

Comment proposer des améliorations du kit de francisation ?

Vous m'écrivez en décrivant les améliorations que vous suggérez et en joignant éventuellement les fichiers illustrant le propos (pas trop gros SVP). Dès que j'ai le temps de m'en occuper, j'essaie d'évaluer l'utilité et la faisabilité de la proposition et je vous répond pour dire ce que j'en pense. Si besoin est, on demande au Ht://Dig Group ce qu'il en pense. Une fois que nous sommes tombés d'accord sur les améliorations à apporter au kit, je les incorpore dans une nouvelle version du kit, en mentionnant votre contribution dans la présente FAQ, et je transmet au d'Ht://Dig Group la nouvelle version du kit pour qu'elle soit rendue disponible sur le serveur d'Ht://Dig et dans le CVS.

Qui a contribué à ce kit de francisation ?

  • Le Ht://Dig Group, en fournissant un logiciel bien conçu et paramétrable à souhait, et en faisant en sorte que la documentation et les archives des mailing-lists soient aisés à consulter
  • L'auteur du kit de germanisation, en donnant l'exemple
  • Didier Lebrun, en assemblant ce kit et en rédigeant la présente FAQ
  • Gilles Detillieux, en servant d'interface avec le Ht://Dig Group et en prodiguant quelques bons conseils
  • François Soupault et Nicolas Marie, en relatant leurs déboires avec locale
  • Stéphane Marzloff, en fournissant le script qui automatise la création d'un dictionnaire des équivalents non-accentués
  • Sébastien Brize, qui a fourni un dictionnaire des synonymes
  • Sébastien Gallet, qui a réalisé la version RPM
  • Tous ceux qui ont adressé des questions, en suscitant des améliorations à apporter

Historique des modifications

  1. Version 1.0.1: ajout version adaptée de rundig et explications concernant la francisation des fichiers *.db
  2. Version 1.0.2: francisation des options de recherche (variables $(METHOD), $(FORMAT) et $(SORT)); clarifications et compléments d'explications (lisezmoi.html)
  3. Version 1.0.3: ajout du script de création du dictionnaire des synonymes non accentués (_trans.pl)
  4. Version 1.0.4: ajout d'un dictionnaire des synonymes "brut de décoffrage" (_synonyms.fr)
  5. Version 1.0.5: petite correction dans rundig et compléments apportés à la présente documentation
  6. Version 1.0.6: modifications pour tenir compte des nouveautés de la version 3.1.6 d'Ht://Dig

Didacticiel complémentaire

Christian Paulus a réalisé un didacticiel qui apporte quelques conseils complémentaires pour configurer Ht://Dig: http://www.quesaco.org/astuces/astuce-htdig.php

 

 


Contact: Didier Lebrun - Mise à jour : 21 juillet 2005