Lucene para ASP.NET (Parte I). Introducción.

16 jun. 2008
Tras hablar de la necesidad de un buscador avanzado para Web, comentamos que en Todoexpertos.com usamos Lucene para ASP.NET.

En este artículo vamos a introducir qué es exactamente Lucene y los puntos maestros de cómo funciona. Lo primero de todo, obviamente, es descargarse el .sln de Lucene, para poder trabajar con él.

En general, cualquier motor de búsqueda tiene dos elementos clave: la indexación y la búsqueda. Primero hay que definir sobre qué se quiere buscar y cómo, y luego ya buscaremos. Ya anticipo que la parte de indexación es mucho más compleja que la de búsqueda, y es en la que más tiempo nos pasaremos pensando.

Lo bueno de Lucene, es que tanto la indexación como la búsqueda giran entorno a lo mismo: el Document, que es sin duda uno de los elementos más importante. Entendiendo qué es el Document ya tenemos muchísimo ganado.

Además, acostumbrados como estamos a lo que es una Base de Datos, usaremos paralelismos, con la premisa de que sólo sirven para hacernos a una idea:

  • La "tabla" de la base de datos tiene su analogía en Lucene con el "index". Un "index" acaba siendo un directorio con varios archivos determinados, de los cuales no queremos saber nada. Sólo nos interesa saber su nombre y que todo el directorio debe tener permisos de lectura y escritura.
  • La "estructura de la tabla" de la base de datos es el "Document". El Document no se define de forma fija desde un principio. Lo vamos a generar en código, "al vuelo".
  • Los "campos de la tabla" son los "Fields" del Document. Igual que en una base de datos definiríamos el tipo de datos del "Field" o si es Nullable o no, los Fields de Lucene requieren una serie de definiciones que veremos en artículos posteriores.
Expresándolo en pseudocódigo:

Indexación
Función Indexar(parámetros)
{
Indice = AbrirIndice();

Document doc = new Document();
doc.AñadirField(new Field(parametros1));
doc.AñadirField(new Field(parametros2));

Indice.AñadirDocument(doc);

Indice.Cerrar();
}

Búsqueda
Función Buscar(parámetros)
{
Indice = AbrirIndice();

DocumentCollection docs = Indice.Buscar(parámetros);

Indice.Cerrar();
}

En próximos artículos veremos exactamente cómo se hace la indexación y como la búsqueda.
comments powered by Disqus
subir