Indexation de texte intégral conviviale?


37

Existe-t-il un moteur d'indexation de texte intégral pouvant être interrogé à partir de la ligne de commande et ne nécessitant idéalement pas l'utilisation d'une interface graphique?

Je suis particulièrement intéressé par l'indexation de mes livres électroniques et de mes documents. Il s'agit donc d'un mélange de pdf, d'epub et de quelques djvu. Les documents Office (ouverts) seraient bien, mais beaucoup plus bas sur ma liste.


1
Pouvez-vous être plus précis sur le format de l'index?
ixtmixilix

Bon point, édité.
Julien

-1 Comme indiqué ci-dessous, Lucene ou Tracker sont de bons choix, mais quel est votre problème avec "use gtk, ou même pire qt"? Utiliser uniquement la ligne de commande est correct, mais je ne vois pas l'intérêt de critiquer un ensemble de bibliothèques ...
lundi

2
@tmow: prise de point, question modifiée. N'a pas voulu saper le travail de quiconque, désolé si c'est comme ça que ça s'est passé ...
julien

Réponses:


11

Avez-vous regardé Lucene ou Sphinx? Bien que vous deviez initialement analyser les documents que vous souhaitez indexer, une fois l’opération terminée, l’un ou l’autre peut effectuer une recherche à partir de la cli.

Pour Lucene, il y a quelques informations sur cette manipulation disponible .

Sphinx, est un peu plus vague, mais il existe également une documentation disponible . Vous pouvez transmettre des données XML structurées de votre choix à sphinx via la source de données xmlpipe2.

Lucene repose sur Java, tandis que Sphinx est construit en C ++ sans aucune dépendance extérieure nécessaire.

L’un ou l’autre nécessitera un peu de travail pour faire ce que vous voulez, mais cela semble être une solution tout à fait viable.


1
Soit dit en passant, si vous voulez indexer des données qui se trouvent dans une base de données (postrgres, mysql), l’un ou l’autre de ces deux outils fonctionnera également très bien.
Gabe.

hmm, j'avais rejeté sphinx pour son niveau trop bas, mais en regardant xmlpipe2, il semble qu'un script wrapper pour pdf2txt ou similaire serait assez facile ...
julien

+1 pour mention dans Lucene. J'ai passé de bons moments avec Lucene, c'est une tuerie !!
Nikhil Mulley

Je pense qu'elasticsearch est basé sur lucene et pourrait être plus pratique à utiliser (étant une chose de plus haut niveau).
offby1

5

Découvrez xapian . Il possède une interface de ligne de commande et peut indexer de nombreux formats.


xapian est un excellent index, mon préféré, et il est écrit en C ++ natif !. Quelque chose qui utilise xapian serait l'idéal, pour de nombreux projets nécessitant l'indexation +1.
JM Becker

4

Recoll peut être construit sans interface graphique et recherchera vos types de documents à partir de la ligne de commande.

Il utilise Xapian sous le capot.


3

Tracker peut être appelé à partir de la ligne de commande et gtk + n'est pas une dépendance difficile pour un projet (mais peut l'être pour des packages).


Eh bien, si je ne me trompe pas, il va toujours essayer de tirer (une grande partie de) gnome comme dépendance.
Julien

1
Comme je l'ai dit - project (dans la version 0.9.x au moins la seule dépendance dure de GNOME est la glib). Les paquetages peuvent compiler le personnel sain par défaut comme une interface graphique, vous devrez donc peut-être le compiler à la main.
Maciej Piechotka

3

Cette réponse recommande d'utiliser la recherche de code de Google ,

La recherche de code est un outil permettant d'indexer, puis d'effectuer des recherches d'expression régulière sur des corps volumineux de code source.

Les super-utilisateurs de Debian / dérivés peuvent essayer: sudo apt-get install codesearch


1
cette réponse a quelques détails sur l'installation à partir des sources; au cas où il ne
serait

2

Il existe actuellement deux flux de suivi, stable (0.8) et instable (0.9). Votre système d'exploitation a probablement la version 0.8, donc si vous pouvez vous le permettre (il a des dépendances logicielles à la pointe de la technologie), récupérez le dernier fichier .tar (0.9.x). Il présente de nombreuses améliorations par rapport à 0,8 et est en cours de stabilisation pour atteindre 0,10 (les chiffres pairs représentent la stabilité). Si vous choisissez cette route, utilisez cette commande pour configurer:

./configure --disable-tracker-needle --disable-tracker-preferences --disable-tracker-explorer --disable-tracker-status-icon

Les dépendances ne seront probablement pas installées, il est donc préférable d’installer simplement 0.8 depuis votre distribution et d’éviter les bits de l’interface graphique. Sur Debian Squeeze, Ubuntu 10.10 et Ubuntu 11.04, ceux-ci sont bien séparés. Donc (en tant que root ):

apt-get install --no-install-recommends tracker-utils tracker-miner-fs

L'outil CLI pour cela est tracker-search, alors lancez-le avec l' --helpoption pour voir comment en tirer parti :-)

notes :

  • Sur Fedora 14, le progiciel Tracker a des dépendances sur GTK +. Je suppose que c'est parce qu'il inclut des choses comme tracker-appletet tracker-preferences. Ils ont cependant un paquet séparé pour tracker-search-tool, l'interface de recherche d'interface graphique.
  • DjVu et ePUB ne sont pas (encore) pris en charge. Voici une liste de ce qui est .

0

J'ai travaillé sur l'écriture d'un outil de recherche de texte intégral (un nouvel apropos) pour indexer et rechercher des pages de manuel pour NetBSD cet été à l'aide de Sqlite3. Il se compose de deux outils de ligne de commande:

  • makemandb: qui analyse et construit un index du contenu des pages de manuel.
  • apropos: L'outil pour interroger cet index.

Vous pourriez facilement écrire un outil similaire pour vous-même. Pour les pdf, vous aurez besoin d'une bibliothèque pour analyser des documents pdf et, de la même manière, d'un utilitaire pour analyser les documents ouverts.

Vous pouvez en savoir plus sur le projet ici

Le code est ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.