Tracker, recherche et indexation

Tracker

Tracker, c’est un projet GNOME de recherche et d’indexation évolué (qui n’est pas installé par défaut) sous Ubuntu. C’est bien pratique pour retrouver très rapidement un mot clef dans un document.

C’est un équivalent de Google Desktop (que j’utilise au bureau sous Windows, et qui existe aussi pour Linux)), sauf que ce dernier est sous licence propriétaire et qu’il vous faut donc croire Google sur parole. Et puis il est forcément moins bien intégré que Tracker au bureau GNOME.

Sauf que Tracker n’est pas encore parfait : par exemple, il n’indexe pas les mails de Thunderbird 3. Mais bon, l’outil de Thunderbird a été complètement refait et est très puissant en lui-même :

la recherche dans Thunderbird

Mais Tracker n’indexe pas tout ce que je croyais… par exemple le contenu des fichiers PHP qui ne sont pourtant finalement que des fichiers texte.  Alors j’ai passé un peu de temps à comprendre ce qui se passait, et voilà le résultat de mes recherches.

Les types MIME

Il m’arrive donc de rechercher un nom de fonction dans des fichiers .php (pour zenphoto ou wordpress par exemple) ; ces fichiers sont de simples fichiers texte que l’on peut éditer très facilement. Je m’attendais donc à ce que Tracker en indexe le contenu, or il n’en est rien.

Tracker se base sur le  type MIME de chaque fichier. A la différence de Windows qui utilise l’extension du fichier pour déterminer son type, Linux utilise l’information stockée dans l’en-tête du fichier lui-même. On peut la voir en affichant les propriétés :

Propriétés d'un fichier et son type

Maintenant comment procéder pour savoir si Tracker indexe tel ou tel type de fichier ?

Installation

Une fois Tracker installé (via les dépots officiels, Ubuntu Maverick 10.10 installe la version 0.8.17 de Tracker), on le paramètre via le menu Système – Préférences – Recherche et indexation.

Un seul répertoire

Pendant les tests, il est préférable de régler Tracker pour n’indexer qu’un seul répertoire (et pas ses sous-répertoires), ce sera beaucoup plus simple pour surveiller les logs.

Indexing Preferences

Les logs

Il y a trois logs différents que l’on peut activer :

  • tracker-miner-fs.log (scan des fichiers)
  • tracker-extract.log (extraction des données)
  • tracker-store.log (stockage des données)

-> Dans mon cas, nous allons activer le log pour tracker-extract pour voir ce qui se passe sur un fichier de type PHP. Pour ce faire, aller dans :

/home/USER/.config/tracker

(dans l’exemple, je remplace USER par pascal)

-> Editer le fichier tracker-extract.cfg, et changer Verbosity=3.

-> Les logs eux-mêmes sont générés dans :

/home/USER/.local/share/tracker

-> Et l’on surveillera le fichier tracker-rextract.log.

Les commandes

Nous allons avoir besoin d’arrêter, redémarrer Tracker, ou encore de réinitialiser l’index. Voilà les commandes à connaître :

  • Démarrage : tracker-control -s
  • Arrêt : tracker-control -k
  • Arrêter ET effacer l’index : tracker-control -r
  • Voir le status : tracker-status et/ou tracker-control

Le test

Maintenant je copie un fichier php quelconque dans mon répertoire HOME. Disons qu’il s’appelle header.php.

Tracker l’indexe immédiatement, puisqu’il est prévenu qu’un nouveau fichier existe dans le répertoire qu’il doit surveiller. Il ne suffit plus qu’à aller voir ce que nous dit le fichier tracker-extract.log :

Tracker: <— [1] tracker_extract_get_metadata(uri:’file:///home/pascal/header.php‘, mime:application/x-php)

Tracker: —- [1]   Could not find any extractors to handle metadata type

Les deux lignes sont claires :

  1. Le fichier /home/pascal/header.php a bien été analysé et le type MIME également.
  2. Tracker ne connait pas d’extractor pour ce type de fichier.

Les extractors

Tracker utilise donc pour chaque type MIME un extractor spécifique. Ils se trouvent dans le répertoire suivant :

liste des librairies

C’est facile de lire quels sont les formats supportés, et c’est assez complet. On remarque par exemple qu’il va lire les fichiers audio (et indexer le nom d’artiste) ou encore les images (les données EXIF). L’extractor « libextract-oasis.so » sera utilisé pour les documents Open Office.

Et donc rien de prévu pour les fichiers « php » … 🙁

Conclusion

Comme on parle de logiciel libre, on peut bien sûr développer soi-même de nouveaux extractors. On trouve de l’information ici à ce sujet. Mais ce n’est pas si simple à faire ! De plus, je me dis qu’il suffirait que l’extractor TEXT prenne en compte le type MIME php  (puisqu’il contient du texte) et voilà…

Bref, j’ai posé la question sur Launchpad et sur le forum Ubuntu, on va voir si j’ai des réponses. Je mettrai cet article à jour en fonction des réponses.

6 réflexions sur « Tracker, recherche et indexation »

  1. je voulais l’utiliser au boulot mais je trouve dommage que le resultat ne soit pas presenté dans un browser 🙁
    merci pour ta réponse 😉

  2. Google Desktop existe pour Linux, même s’il n’est pas intégré à Gnome… et lui va tout t’indexer… et te présenter les résultats dans un browser !

  3. Bon alors j’abuse de ta gentillesse, j’aimerai indexe un repertoire sur un server et proposer les resultats a mon groupe soit 10 personnes.
    Peut etre que je peux indexer le repertoire reseau avec google desktop et proposer un page pour tout le monde ??
    je vais cherche de ce coté, encore merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *