¿Indización de texto completo compatible con la línea de comandos?


37

¿Existe un motor de indexación de texto completo que pueda consultarse desde la línea de comandos y que idealmente no requiera el uso de una interfaz gráfica de usuario?

Estoy especialmente interesado en indexar mis libros electrónicos y documentos, por lo que es una mezcla de pdf, epub y algunos djvu. (Abierto) Los documentos de Office serían buenos, pero mucho más bajos en mi lista.


1
¿Puedes ser más específico sobre el formato que toma el índice?
ixtmixilix

Buen punto, editado.
julien

-1 Como se señala a continuación, Lucene o Tracker son buenas opciones, pero ¿cuál es su problema con "use gtk, o incluso peor qt"? Usar solo la línea de comando está bien, pero no veo el punto de criticar un conjunto de bibliotecas ...
hasta el

2
@tmow: punto tomado, pregunta editada. No quise socavar el arduo trabajo de nadie, lo siento si así fue como sucedió ...
julien

Respuestas:


11

¿Has mirado a Lucene o Sphinx? Si bien necesitará analizar inicialmente los documentos que desea indexar, una vez hecho esto, cualquiera puede buscar desde el cli.

Para Lucene, hay información sobre cómo hacer esto disponible .

Sphinx, es un poco más vago, pero también hay documentación disponible . Puede pasar datos XML estructurados de su elección a sphinx a través de la fuente de datos xmlpipe2.

Lucene se basa en Java, mientras que Sphinx está construido en C ++ sin dependencias externas necesarias.

Cualquiera de las dos requerirá un poco de trabajo para hacer lo que desea, pero parece una solución totalmente viable.


1
Por otro lado, si desea indexar datos que están en una base de datos (postrgres, mysql), entonces cualquiera de estos también funciona increíblemente bien.
Gabe.

hmm, me había despedido por ser demasiado esfinge de bajo nivel, pero mirando a xmlpipe2 parece un guión envoltorio para pdf2txt o similar sería bastante fácil ...
Julien

+1 por mencionar en Lucene. Pasé buenos momentos con Lucene, ¡es una cosa asesina!
Nikhil Mulley

Creo que elasticsearch se basa en lucene, y podría ser más conveniente de usar (siendo una cosa de nivel superior).
offby1

5

echa un vistazo a xapian . Tiene una interfaz de línea de comando y puede indexar muchos formatos.


xapian es un gran índice, mi favorito personal, y está escrito en C ++ nativo. Algo que use xapian sería lo más ideal, para muchos proyectos que requieren indexación +1.
JM Becker


3

El rastreador se puede invocar desde la línea de comandos y gtk + no es una dependencia difícil para un proyecto (pero puede ser para paquetes).


Bueno, si no me equivoco, aún tratará de extraer (grandes partes de) gnomo como una dependencia.
julien

1
Como dije: proyecto (en la versión 0.9.x, al menos, la única dependencia rígida de GNOME es glib). Los paquetes pueden compilar el personal predeterminado sano como GUI, por lo que es posible que deba compilarlo a mano.
Maciej Piechotka 13/10/10

3

Esta respuesta recomienda utilizar la búsqueda de código de Google ,

La búsqueda de código es una herramienta para indexar y luego realizar búsquedas de expresiones regulares en grandes cuerpos de código fuente.

Los superusuarios en Debian / derivados pueden probar: sudo apt-get install codesearch


1
esta respuesta tiene algunos detalles sobre la instalación desde la fuente; en caso de que no está disponible en repositorios para su sistema operativo: superuser.com/a/1263343/65975
ccpizza

2

Actualmente hay dos flujos de Tracker, estable (0.8) e inestable (0.9). Es probable que su sistema operativo tenga la versión 0.8, por lo que si puede permitírselo (tiene algunas dependencias de software de vanguardia ), vaya a buscar el último tarfile (0.9.x). Tiene muchas mejoras por encima de 0.8, y actualmente se está estabilizando aún más para ser 0.10 (los números pares representan estabilidad). Si elige seguir esta ruta, use este comando para configurar:

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

Es probable que no tenga instaladas las dependencias, por lo que debería ser más sencillo simplemente instalar 0.8 desde su distribución y simplemente evitar los bits de la GUI. En Debian Squeeze, Ubuntu 10.10 y Ubuntu 11.04, estos están muy bien divididos. Entonces ( como root ) ejecuta:

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

La herramienta CLI para esto es tracker-search, así que ejecútelo con la --helpopción para ver cómo aprovecharlo :-)

notas :

  • En Fedora 14, el paquete Tracker tiene dependencias en GTK +. Supongo que es porque incluye cosas como tracker-applety tracker-preferences. Sin embargo, tienen un paquete separado para tracker-search-toolla interfaz de búsqueda GUI.
  • DjVu y ePUB no son (todavía) compatibles. Aquí hay una lista de lo que es .

0

Trabajé en escribir una herramienta de búsqueda de texto completo (una nueva propuesta) para indexar y buscar páginas de manual para NetBSD este verano usando Sqlite3. Se compone de dos herramientas de línea de comandos:

  • makemandb: que analiza y crea un índice del contenido de las páginas man.
  • a propósito: La herramienta para consultar este índice.

Puede escribir fácilmente una herramienta similar para usted, para los archivos PDF necesitará una biblioteca para analizar documentos PDF y, de manera similar, una utilidad para analizar los documentos de oficina abierta.

Puedes leer más sobre el proyecto aquí

El codigo esta aqui

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.