Première rédaction de cet article le 6 novembre 2007
Cela fait longtemps que je me dis que je devrais indexer les giga-octets de textes ou de programmes qui occupent mon disque dur. Je viens de tester Namazu, mais qui ne convient pas.
Je cherche un programme simple, pas une usine à gaz nécessitant l'installation et la maintenance de plusieurs composants. Je ne suis pas convaincu de la nécessité d'installer et de maintenir un SGBD juste pour cette tâche. Autrefois, j'utilisais glimpse mais il était non-libre et semble de toute façon avoir complètement disparu, sans mainteneur.
Mes fichiers sont des documents LaTeX, Docbook, des sources de programme en divers langages, uniquement des formats ouverts, a priori relativement faciles à analyser (pas de MS-Word ni même d'obésiciels libres comme OpenOffice).
Je viens de tester Namazu mais c'est un échec. Namazu est un logiciel libre, développé par un programmeur japonais et dont la principale fonction mise en avant est la capacité à bien traiter les textes en japonais, une langue dont j'ignore tout.
Namazu est disponible facilement pour la plupart des systèmes. Sur
Ubuntu, par exemple, c'est un paquetage existant. Une fois
installé, on programme l'indexation, par exemple
quotidienne. J'utilise cron et je crée donc un
/etc/cron.daily/index-blog
qui indexe, pour
tester, une partie de mon disque dur (celle où je garde les fichiers
de ce blog). Le fichier
index-blog
contient :
#!/bin/sh HOME=/home/stephane INDEX=$HOME/Index-Blog if [ ! -d $INDEX ]; then mkdir $INDEX fi sudo -u stephane mknmz --all \ --exclude '_darcs|\.(html|txt|tex|ps|pdf|rng|dvi|xml|atom|full_atom|bak)|~' \ --meta --decode-base64 --check-filesize --output-dir=$INDEX $HOME/Blog
mknmz
indexe donc le répertoire tous les jours
et il le fait intelligemment. Seuls les nouveaux fichiers sont
traités :
Looking for indexing files... /home/stephane/Blog/RFC/2663-NOT-YET.rfc_xml was updated! /home/stephane/Blog/RFC/3107-NOT-YET.rfc_xml was updated! /home/stephane/Blog/RFC/3330.rfc_xml was updated! /home/stephane/Blog/entries/signaler-a-signal-spam.entry_xml was updated! /home/stephane/Blog/Makefile was updated! 14 files are found to be indexed. ...
Une fois les fichiers indexés, on peut chercher avec la commande
namazu
, à qui on doit indiquer le truc qu'on
cherche et l'index :
% namazu TRUC ~/Index-Blog Total 12 documents matching your query. 1. namazu-NOT-YET.entry_xml (score: 2) Author: unknown Date: Sun, 21 Oct 2007 23:34:29 +0000 http://www.namazu.org/ Indexer avec exclusion ? Tester sur horcrux Voir ~/bin/index* namazu TRUC ~/Index-Blog Autre rigolo : % nmzgrep 'DB8' ~/Index-Blog /home/stephane/Blog/entries/registre /home/stephane/Blog/entries/namazu-NOT-YET.entry_xml (876 bytes) ...
Namazu peut extraire des métadonnées de certains fichiers (comme la date ci-dessus) et permet les recherches via ces métadonnées.
Namazu est livré avec une grande quantité de filtres qui permettent d'analyser de nombreux formats (y compris les RFC). Un des ces filtres lit les courriers au format RFC 2822 et, combiné avec les métadonnées, cela permet de chercher un message par son expéditeur, ici, les messages qui viennent de Bush :
% namazu +from:bush ~/Index-Mail Total 3 documents matching your query. ... 2. Re: anycast stability experiment (score: 1) Author: Randy Bush <randy@psg.com> Date: Thu, 24 Feb 2005 15:43:36 +0900 we promised to report results. well, there were fun events, such as northern-hemisphere winter holidays etc, which got in the way. but i just presented some *very* preliminary results at the apnic me /homme/stephane/Mail/system/afnog-2005-02.gz (3,567 bytes)
Une autre commande pratique est nmzgrep
qui lance
grep sur les fichiers trouvés, donnant ainsi un
affichage plus habituel :
% nmzgrep 'DB8' ~/Index-Blog /home/stephane/Blog/entries/registre-temps-reel.entry_xml: 'AAAA', '2001:DB8::1035:1'); /home/stephane/Blog/entries/registre-temps-reel.entry_xml: VALUES (1,'ns1.nic.example','2001:DB8::1035:1','AAAA',120,NULL); /home/stephane/Blog/RFC/3849.rfc_xml:<computer>2001:DB8::/32</computer> a été réservé et que les adresses /home/stephane/Blog/RFC/5006.rfc_xml:<computer>2001:DB8:BEEF:42::/64</computer>). Le routeur diffuse ses ...
Mais Namazu ne semble pas encore très au point. Le nombre de bogues
et le trafic quasi-nul sur la liste de diffusion semble indiquer que
le logiciel n'a pas une communauté d'utilisateurs. Certains bogues
sont vraiment très visibles, pourtant, comme le fait que, si on met
plusieurs options identiques, les premières sont silencieusement
ignorées, ou comme le cas de
--include
, qui prend en argument un nom de
fichier et ne produit aucun message d'erreur si le fichier n'existe
pas...
Chose plus étonnante, aucun filtre n'existe pour XML... Un de mes fichiers XSL a été pris pour du LaTeX simplement parce que le nom de ce système apparaissait dans un commentaire XML...
Les développeurs répondent bien sur la liste, mais dans un anglais pratiquement illisible. Eh oui, le monde est vaste et Babel est une réalité dès qu'on sort de quelques « élites » mondialisées.
Je continue donc mes recherches, sur d'autres logiciels. J'ai noté
les candidats potentiels sur del.icio.us :
http://del.icio.us/bortzmeyer/index
.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)