Introducción a Lucene

1
27342

Introducción a Lucene

En este tutorial, vamos a realizar una breve presentación del API de búsqueda Lucene y realizaremos un sencillo y completo ejemplo.

Lucene es una librería (no un producto) open source (con licencia de Apache) con que permite a los desarrolladores (Java, .Net, C++, et.) integrar funciones de indexación y búsquedas de información textual dentro de sus proyectos.

Lucene va mucho más alla que las búsquedas en BD a través de índices FullIndex, permitiéndonos indexar y realizar búsquedas sobre todo tipo de información que pueda representarse de forma textual.

Lucene se compone de dos procesos o fases para conseguir realizar búsquedas efectivas: Indexación y Búsqueda.

Indexación:

El proceso de indexación consiste en analizar y extraer de entre toda la disponible, la verdaderamente relevante. Posteriormente, con esa información se crea el índice a partir del cual se realizarán las búsquedas.
El índice es una estructura de datos que permite acceso rápido a la información, algo similar semánticamente a lo que podría ser el índice de un libro.

Búsqueda:

El proceso de búsqueda consiste en consultar el índice para obtener los documentos donde aparecen unas determinadas palabras o bien concuerdan con una determinada expresión de consulta.

Lucene: Un ejemplo

A continuación vamos a ver un sencillo ejemplo de indexación (LuceneCreateIndexApp.java) y consulta (LuceneSearchApp.java) sobre los archivos con extensión .txt de un directorio.

Indexación de información: LuceneCreateIndexApp.java

Introducción a las clases más comunes durante el proceso de indexación.

  • IndexWriter:

    Es el corazón del proceso de indexación. Encapsula el índice y contiene entre otras cosas cierta información de documentos que lo componen.

  • Directory:

    Es una clase abstracta que representa la ubicación del índice: memoria RAM, archivo, etc.
    En el ejemplo se usa FSDirectory, que es la implementación de la clase para guardar el índice en un archivo.

  • Analizer:

    Es una clase Abstracta cuya función es filtrar la información relevante con la cual se creará el índice y eliminar el resto.
    Por ejemplo, elimiminar las palabras cortas (stop word) o que aparecen con mucha frecuencia. Por ejemplo, eliminaría palabras (dependiendo del idioma) del tipo: en, la, los, etc.

  • Document:

    Es una clase que almacena campos (Field) con la meta información que queremos indexar y/o guardar en el índice (emails, rutas, autor, fecha, etc.).

  • Field:

    Son las fragmentos de información de cada documento que deseamos almacenar en el Document.

Búsqueda de información: LuceneSearchApp.java

Introducción a las clases más comunes durante el proceso de búsqueda.

  • IndexSeacher:

    Es el corazón del proceso de búsqueda a través del cual se pueden realizar consultas (Query) que devuelven resultados (Hits).

  • Term:

    Cuando querermos realizar una consulta definimos las condiciones de búsqueda a través de Term, es decir, una consulta es un conjunto de Term.

  • Query:

    Es una clase abstracta que permite definir la consulta sobre la que queremos realizar la búsqueda.
    TermQuery, es una de las muchas implementaciones de Query y que nos permite búscar consultando los Field.

  • Hits:

    Contiene los documentos (Document) que cumplen las condiciones de la búsqueda realiza.

Conclusiones

Bueno, para terminar cabe destacar que Lucene es mucho más de lo que se ve en este tutorial introductorio, si tienes inquietud de aprender más o necesitas más información puedes dirigirte al web oficial del proyecto Lucene.

También recordaros que Autentia tiene personal muy experimentado en este campo, así que si algún dia necesitais formación o algún tipo de colaboración podeis poneros en contacto con nosotros.

Carlos García Pérez. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.

cgpcosmad@gmail.com

1 Comentario

  1. Buenas, voy a empezar a trabajar con un motor de busqueda para un gestor de documentos digitales, me gustaria saber mas sobre como implementar la libreria lucene y hacer mis indexaciones. Necesito orientacion porfavor, estoy perdida en el tema

Dejar respuesta

Please enter your comment!
Please enter your name here