Utilizaremos el analizador desarrollado por Apache-POI, que nos permitirá analizar sintácticamente documentos Word de Office 97, 2000 y XP. Los documentos de Office 2007 no son por el momento compatibles.
El procedimiento para hacerlo es el siguiente:
- Descargamos los ficheros de la web de Apache-POI, buscaremos una versión estable (FINAL).
- Descomprimimos el fichero. Buscamos en el archivo descomprimido y encontraremos unos ficheros .JAR.
- Añadimos estos ficheros al classpath de el IDE que utilicemos y el uso es inmediato al igual que en el caso de los PDF.
Etiquetas: Lucene
Para indexar documentos PDF tenemos varias alternativas: Se puede usar PDFBox, una API hecha en Java que permite el acceso al contenido textual de un PDF. PDFBox incluye la integración con Lucene para traducir un PDF a un documento Lucene. Para usar PDFBox, lo descargamos de la web (http://pdfbox.org/), lo descomprimimos y añadimos el fichero/s .JAR al classpath. Esta es la opción que se eligió para la clase de prueba de ejemplo (ver código) a continuación. Otras soluciones para indexar PDF pueden ser: ·XPDF (http://www.foolabs.com/xpdf/): herramienta de código abierto con licencia GPL. No es una herramienta de Java, pero hay una utilidad llamada pdftotext que puede traducir documentos PDF a documentos de texto en la mayoría de las plataformas desde la línea de comandos. Basado en xpdf, existe una utilidad llamada pdftohtml (http://pdftohtml.sourceforge.net/) que puede traducir documentos PDF a documentos HTML. Igualmente no es una aplicación Java. Jpedal (http://www.jpedal.org/) es una API de Java para extraer texto e imágenes de los documentos PDF.
Etiquetas: Lucene
Para realizar la indexación de los documentos RTF utilizaremos una biblioteca incluida en Java, llamada RTFEditorKit, la cual nos servirá para extraer el texto plano de los documentos. Al igual que en la indexación de documentos TXT, no hay que hacer uso de otra herramienta adicional.
A pesar de esto, es posible que este editor/extractor de tokens no sea 100% efectivo, ya que hay se han detectado algunos errores por omisión de palabras en la indexación.
Código de ejemplo de uso:
Etiquetas: Lucene
Realizar la indexación de documentos de texto plano (txt) con Lucene es muy sencillo en la versión de Lucene original (Java) ya que usa las funciones predefinidas de entrada/salida de Java, simplemente hay que incluir la biblioteca java.io.
Un ejemplo de cómo sería el código:
Document doc = new Document();
Reader r = new FileReader(f);
doc.add(new Field("contents", r));
doc.add(new Field("filename", f.getAbsolutePath(), Field.Store.YES, Field.Index.ANALYZED));
writer.addDocument(doc);
Etiquetas: Lucene
Como Lucene sólo trabaja con texto plano, para indexar otro tipo diferente de fichero, habrá que hacer una preparación previa para obtener el texto a partir de ellos. Esto se lleva a cabo utilizando distintos tipos de herramientas.
A continuación, repartido en diferentes post, iremos explicando la extracción de texto plano para una serie de documentos específicos, comenzando por los documentos .txt que son los más sencillos de indexar, para posteriormente estudiar cómo trabajar con otro tipo de documentos (.PDF, .XML, ...).
Todo esto será siempre utilizando Java y la herramienta requerida para la extracción del texto plano en cada caso.
Etiquetas: Lucene
Instalar Lucene es extremadamente simple:
- Descargamos Lucene en formato comprimido de la web: http://apache.rediris.es/lucene/java/
- Lo extraemos usando ant o cualquier otro descompresor.
- Una vez extraído, en el archivo deberían aparecer (entre otras cosas) un par de ficheros .JAR. Uno de ellos es el core de Lucene y el otro contiene ejemplos.
- Para hacer uso de Lucene, simplemente incluimos estos ficheros en el classpath del IDE que vayamos a utilizar para generar el código.
El código de ejemplo ha sido generado haciendo uso de Eclipse, con la versión de Java 1.5 y haciendo uso de Lucene 2.4.0.
Etiquetas: Lucene
A Lucene se le pasa un fichero que se quiere indexar. Si dicho fichero es de texto plano, la indexación será automática (la lleva a cabo la biblioteca de Java java.io). En otro caso, se debe extraer el texto plano del fichero realizando un análisis sintáctico con ayuda de otra herramienta.
A partir de esta entrada, Lucene analiza el texto, lo tokeniza y crea un índice que almacena en memoria RAM o en disco según se especifique. Los autores indican que Lucene trabaja muy bien con la indexación en memoria RAM, pues permite realizar búsquedas más rápidas. Normalmente, se usará el almacenamiento en disco.
A continuación vemos un gráfico que ilustra el proceso:
Una vez creados los índices, se puede hacer búsquedas sobre ellos. Para realizar las consultas se puede optar por codificar una aplicación que lo haga (ver códigos de ejemplo), o bien utilizar alguna herramienta gráfica de tipo LuKE, que generalmente permiten consultar y editar los documentos de forma gráfica.
El inconveniente de esta elección es la versión que usamos de Lucene y de Java, si son muy nuevas, pueden no ser compatibles con las herramientas gráficas.
A continuación un gráfico que ilustra el funcionamiento:

Etiquetas: Lucene
Entradas más recientes Entradas antiguas Inicio