2011-07-25 14 views
8

Lo que tengo es un montón de archivos PDF (unos 100). No tienen una estructura adecuada ni tienen campos particulares. Todo lo que tienen es mucho texto.¿Cómo indexo archivos PDF y busco palabras clave?

Lo que estoy tratando de hacer:

Índice de los archivos PDF y la búsqueda de algunas palabras clave contra el índice. Estoy interesado en encontrar si esa palabra clave en particular está en el documento PDF y si lo está, quiero la línea donde se encuentra la palabra clave. Si busqué 'Google' en un documento PDF que tiene ese término, me gustaría ver que 'Google es un gran motor de búsqueda', que es la línea del PDF.

como decidí hacer:

De cualquier uso o SOLR Whoosh pero SOLR se ve bien para el soporte de PDF incorporado. Prefiero codificar en Python y Sunburst es un contenedor de SOLR que me gusta. El proyecto de muestra/ejemplo de SOLR tiene algún archivo de esquema basado en la comparación de precios. Ahora no estoy seguro si puedo usar SOLR para responder mi problema.

¿Qué es lo que ustedes chicos sugieren? Cualquier aporte se agradecerá.

+1

¿Está proponiendo indexar cada PDF por cada palabra o frase que contiene? Si no, ¿cómo generará una lista de palabras clave? – smci

+0

Tengo una lista de palabras clave en realidad. Quiero indexar todo el contenido en el PDF y luego ejecutar una búsqueda contra ese índice usando mis palabras clave. – ThinkCode

Respuesta

5

Creo que Solr se ajusta a sus necesidades.

La función "Resaltar" es lo que estás buscando ... Para eso tienes que indexar y almacenar los documentos en el índice lucene.

La función de resaltado devuelve un recorte, donde se marca el texto buscado.

vistazo a esto: http://wiki.apache.org/solr/HighlightingParameters

+0

¿Cómo habilito/visualizo 'resaltando' en los resultados de búsqueda en la plantilla predeterminada? En este momento solo veo XML (author, content_type, id, last modified y title). ¡Gracias! – ThinkCode

+0

resaltando nedds los TermVecors http://wiki.apache.org/solr/TermVectorComponent - por lo que tiene que indexar otra vez que se activó TermVectorComponent –

+0

Muchas gracias, ahora está mostrando todo el texto del PDF. Copié todo el texto en un campo 'texto'. Ahora cuando busco, estoy mostrando todo el texto mientras quiero solo la línea de 'texto' que tiene la cadena correspondiente. Mi archivo de esquema: http://pastebin.com/Cp1CsZ9Z – ThinkCode

2

una vez que resolvieron este mediante la conversión de los archivos PDF a texto con utilidades como pdftotext (pdftohtml también funcionaría supongo), generando un 'caché' de algún tipo. Luego, usando un poco de grep busqué en el caché de archivos de texto las palabras clave.

Esto es ligeramente diferente de su solución propuesta, pero me imagino que puede llamar esto desde Python también.

+1

Gracias Tim. Su solución fue mi primer acercamiento hasta que encontré SOLR.SOLR hace esto bajo demanda y mucho más rápido. Solo me pregunto si SOLR puede usarse en mi contexto y ¡supongo que puedo! – ThinkCode

+0

ok que suena bien :) Tal vez esta solución 'fuera de línea' pueda ser útil para otra persona que lea esto ... – Tim

4

Otro/solución autónoma sin conexión: