Article publié dans Linux Magazine 78, décembre 2005.
La perle de ce mois-ci a été rédigée par Emmanuel Di Prétoro
<manu@bjornoya.net>
, un habitué du canal #perlfr
(serveur irc.mongueurs.net
).
Peut-être vous êtes vous déjà retrouvés dans la situation de devoir rechercher des informations sur un sujet particulier. Vous êtes donc allés sur votre moteur de recherche préféré, et saisi votre requête. Et en consultant les résultats de recherche, vous vous êtes rendu compte que la majorité des modules répondant à votre question étaient déjà installés sur votre machine. Il aurait donc été utile de pouvoir en premier lieu interroger un moteur de recherche local pour votre documentation Perl. Et bien, ce moteur de recherche existe déjà, et il est l'œuvre d'Ulrich Pfeifer, et se nomme tout naturellement perlindex. Ce dernier est bien entendu disponible sur le CPAN, à l'adresse suivante http://search.cpan.org/dist/perlindex/.
Après avoir installé ce script (avec l'incantation classique perl
Makefile.PL
, make test
, make install
), il est nécessaire de
construire l'index. Pour cela, il suffit de taper, en tant que root
la commande suivante perlindex -index
. Cette commande va parcourir
les répertoires où se trouve la documentation et en indexer les fichiers
.pm et .pod.
L'utilisation classique de ce programme est donc l'interrogation, qui
s'effectue en passant les mots-clés en argument au
programme. Ainsi, si je souhaite trouver un moyen d'obtenir le texte
d'un fichier HTML, je peux interroger le système de la manière
suivante perlindex strip tag html
. Cela nous donne l'écran suivant :
$ perlindex strip tag html 1 5.454 share/perl5/HTML/TokeParser/Simple.pm 2 4.051 share/perl5/HTML/LinkExtractor.pm 3 4.034 share/perl5/HTML/TokeParser/Simple/Token/Tag/Start.pm 4 4.034 share/perl5/HTML/TokeParser/Simple/Token/Tag/End.pm 5 4.017 share/perl5/HTML/Tree/Scanning.pod 6 3.867 share/perl5/HTML/TokeParser/Simple/Token/Tag.pm 7 3.562 share/perl5/HTML/TreeBuilder.pm 8 3.316 bin/dh_strip 9 3.282 share/perl5/MARC/File/USMARC.pm a 3.282 share/perl5/Mail/Header.pm b 3.191 share/perl5/HTML/TokeParser/Simple/Token/Text.pm c 3.093 share/perl5/HTTP/Proxy/BodyFilter/tags.pm d 2.856 share/perl5/HTML/Parse.pm e 2.841 share/perl5/HTML/Tagset.pm f 2.770 share/perl5/HTML/TokeParser/Simple/Token/ProcessInstruction.pm Enter Number or 'q'>
Et en consultant la documentation du premier module, donc,
HTML::TokeParser::Simple
, j'obtiens un exemple sur la manière de
procéder.
Comme vous pouvez le constater, les résultats sont classés en fonction de leur pertinence (utilisation du TF-IDF, Term Frequency - Inverse Document Frequency, classique dans le domaine de l'information retrieval).
Les options suivantes sont également disponibles, bien que non documentées par le programme :
-maxhits n
Permet de limiter le nombre de résultats de recherche à n documents.
-verbose
En combinaison avec l'option index, demande au programme d'être plus bavard.
-idir path
Cette option spécifie le chemin où les index voivent être créés lors
de l'indexation. Par défault, les index se trouvent dans le répertoire
/usr/share/man, mais cela nécessite que cela soit l'utilisateur
root qui se charge de la mise à jour de cet index (si vous
installez régulièrement des nouveaux modules, il est nécessaire de
lancer perlindex -index
régulièrement également). Si vous décidez
d'utiliser cette option, ne pas oublier de la spécifier également lors
de la recherche.
dict n
Cette option permet d'afficher les mots-clés présent dans l'index. Si
vous spécifiez un seuil n à l'option, il filtrera les mots-clés, et
n'affichera que les termes dont la fréquence est supérieure à
n. Ainsi, sur ma machine, perlindex -dict 1500
affiche
head 2480 author 1829 cut 2021
Cela illustre un problème lors de l'indexation des fichiers POD.
Ce programme n'est pas parfait, mais il est d'une aide certaine lorsqu'il s'agit de se débrouiller avec ce que l'on a. Il m'est souvent bien utile pour retrouver la bonne page dans toute la documentation disponible.
Envoyez vos perles à perles@mongueurs.net
, elles seront peut-être
publiées dans un prochain numéro de Linux Magazine.
Copyright © Les Mongueurs de Perl, 2001-2011
pour le site.
Les auteurs conservent le copyright de leurs articles.