(Avertissement à ceux que le titre n’aurait pas déjà fait fuir : ce billet est à haute teneur informatique de niveau geek).

L’utilité d’un moteur de recherche local était relative pour moi jusque récemment. Sur le Mac, je n’utilise quasiment pas Spotlight — j’ai certes peu de documents (hors films familiaux) en résidence sur le Mac.

Cependant, en additionnant ma décennie d’archives de mails, les PDFs d’une autre décennie de C’t (meilleur magazine d’informatique que je connaisse), et, cerise sur le gâteau, une autre décennie d’archives vendue avec le numéro 100 de GNU Linux Magazine, plus les ebooks qui s’accumulent, mes copies statiques de blogs... le besoin devenait réel.

Je n’ai pas évalué les concurrents. Citons-les quand même :

  • Strigi, livré avec KDE sur mon Ubuntu 7.04, a une interface web tellement minimaliste que je n’ai pas cherché plus loin.
  • Je me suis donné des contraintes supplémentaires : je préfère utiliser le même outil sur mon Ubuntu et sur ma Debian sur le petit serveur sans X (un 300 MHz), et si possible sans rien installer qui ne soit dans les dépôts officiels. Cela exclut donc Tracker absent de Etch bien que j’en lise ici ou là du bien dans la petite bibliographie internet préalable.

Debian Etch

L’installation est relativement simple :

  • aptitude install beagle sur la Debian. La moitié de Gnome veut venir avec Beagle, et pas mal de librairies X, uniquement à cause de certains programmes qui s’affichent graphiquement, ce que je ne veux pourtant pas. On fera avec.
  • La doc dit de rajouter l’option user_xattr dans le montage des systèmes de fichier. Mon /etc/fstab contient donc à présent :
    /dev/hda6 /home ext3 defaults,noatime,user_xattr 0 2
    Il faut également activer cette option, donc rebooter si on est bourrin, ou taper :
    mount -o remount /home
    qui ne doit pas renvoyer de message d’erreur.
  • Pour lancer l’indexation, c’est primaire : lancer la commande beagled.
    Attention : par défaut, beagled ne s’occupe que de ce qui est directement dans le répertoire de l’utilisateur qui l’a lancé, et quelques répertoires publics définis dans /etc/beagle/ et c’est bien comme ça.
  • La commande beagle-status permet de voir où en est l’indexation (forcément, elle est lente). À noter que je ne repère pas de ralentissement notable sur les deux machines (mais la charge résiduelle permanente est réelle ; on verra une fois l’indexation achevée).
  • Après quelques temps, je tente une requête en ligne de commande : beagle-query murphy
    Quelques secondes plus tard je me retrouve avec des URL de la copie locale de mon site web. Cool.
  • Pour savoir si un fichier est déjà indexé, il faut tout bêtement taper son nom :
    beagle-query toto.pdf
    On peut vérifier que l’indexation s’effectue bien partout où cela est désiré.
  • Je m’aperçois avec horreur que beagled ne suit pas les liens symboliques ! Le choix par défaut des concepteurs se défend (on peut faire des trucs crades et dangereux avec ces liens symboliques) mais l’option pour passer outre n’est pas évidente.
    Apparemment il suffirait de rajouter les répertoires manquants dans la config avec un ordre du genre :
    beagle-config indexing AddRoot /autredisque/repertoire
    Et pour en informer le démon qui travaille en arrière-plan : beagle-config --beagled-reload-config
    On peut vérifier la liste desrépertoires qui seront indexés avec :
    beagle-config indexing ListRoots
    (Je sais, c’est pas très convivial, mais je tiens à tout faire marcher en ligne de commande d’abord. Sur Etch, les pages de manuel manquent parfois cruellement.)
  • Finalement, il semble que le plus efficace pour un début soit de lancer le démon en avant-plan :
    beagled --fg - -replace
    On voit mieux ce qui se passe, ce que le démon parcoure, etc.

Kubuntu

La version dans Ubuntu 7.04 (Feisty Faw) est plus récente, mais ça ne change pas grand-chose. Par contre, sous Kubuntu, pour avoir une interface graphique à Beagle (qui lui est plutôt lié à Gnome), il faut installer :

  • Soit Kerry, qui permet de faire graphiquement ce que je faisais en ligne de commande ci-dessous, et retourne des résultats de recherche que l’on peut trier et filtrer par date, type... D’ailleurs, il faudra penser à changer le raccourci par défaut de Kerry (Alt-Espace) qui est déjà réservé par Katapult). Par contre, il est très pratique de sélectionner un mot ou une phrase, de taper ce raccourci, et d’avoir immédiatement la recherche.
    Ce qui sera moins pratique pour d’autres, c’est d’avoir un Kerry non francisé (quoique je n’ai pas la dernière Ubuntu).
  • Soit kio-beagle, qui permet de lancer une recherche dans Konqueror (ou par le classique Alt-F2 qui lance tout) juste en tapant beagle: mes mots clés... mais j’ai l’impression que ce système ramène bien moins de résultats que Kerry.

Les deux outils sont à portée d’un bête aptitude install beagle kerry kio-beagle.

Verdict

Il m’a fait tout drôle de voir dans les logs et messages divers des .exe et des .dll, choses que l’on pensait réservées au monde Windows. Oui, c’est du Mono derrière, ça déplaît à certains, je suis dubitatif pour ma part, en tout cas ça semble assez lourd.

Après un après-midi d’indexation, les répertoires de cache et index atteignent 65 Mo sur l’Etch (qui a quand même un miroir de toute la machine de travail), et presque 400 Mo sur la machine principale, et ce n’est pas fini... (Mise à jour du 19/12 : Au final, respectivement 1,6 Go et 464 Mo. De plus, l’impact sur la charge des deux machines est mesurable sur les graphes Munin : en moyenne moins de 0,1 de load avant, plus de 0,2 ensuite pour le vieux serveur ; une charge résiduelle faible mais réelle aussi sur l’autre machine.)

Mes PDF semblent correctement indexés, on verra à l’usage.

Quoi qu’il en soit, je suis un peu déçu. Inconsciemment, je m’attendais à ce que les résultats indiquent le contexte, comme une recherche Google. Alors que, comme avec Spotlight sur Mac d’ailleurs, seul le nom du document (mail, fichier PDF...) trouvé est indiqué, pas le contexte (page, extrait...) ; à soi ensuite de faire le tri et la recherche fine.

D’autre part, une recherche sur un mot clé, par exemple « duplicity », un outil de sauvegarde crypté, me ramène spontanément des pages ou courriers contenant « duplicated » ou des termes approchants. Je n’ai pas vu de moyen évident de rendre la recherche plus ou moins stricte.

Je reviens finalement sur Tracker, un concurrent qui monte. Je ne lis qu’à l’instant (zut !) qu’il est le moteur de recherche local par défaut sur Ubuntu 7.10, la version à laquelle je n’ai pas encore migré (faute de temps, de besoin urgent, et histoire de laisser les plus pressés que moi essuyer les plâtres et renseigner les forums). Il me faudra voir si par la suite je décide de garder Beagle ou de passer à Tracker, de monter définitivement certains répertoires de la Debian sur l’Ubuntu (tâche cent fois reportée, question de temps et de dilemme : par NFS ? Samba ? AFP ?) histoire d’avoir une recherche unifiée (pas du luxe mine de rien) sous Tracker, ou bien si je me mets à l’italien pour backporter Tracker sous Etch. Sans que ces options ne s’excluent vraiment...

Si quelqu’un a des expériences sur tous ces outils, je suis preneur…

Mise à jour du 29 juin 2008 : Six mois après, je me suis « fixé » sur le Tracker livré dans Ubuntu 8.04. Ça marche bien à un bémol près : pas d’indexation des mails de Thunderbird ou Kmail. La case est délibérément grisée... :(

Mise à jour de 2011 : Pour diverses raisons, je n’utilise plus le Linux tant que ça. Sur le Mac, j’utilise très peu Spotlight. Pas de temps pour quoi que ce soit de toute manière pour qu’une indexation quelconque serve réellement. D’ici à ce que ça resserve, l’OCR automatique permettra probablement d’indexer automatiquement les scans des factures, diplômes, bulletins… :-)