Apache Lucene

Introducción


Lucene es un software de recuperación de información (IR) de código abierto. Es una API flexible que permite añadir capacidades de indexación y búsqueda a cualquier sistema que se esté desarrollando.
Inicialmente fue implementado en Java por Doug Cutting. Después se crearon versiones en otros lenguajes como Delphi, Perl, C#, C++, Python, Ruby y PHP.

Historia

Lucene surge como respuesta al creciente interés por los sistemas de clasificación automática de datos a raíz del desarrollo masivo de las redes de computadoras y medios de almacenamiento. Originalmente escrita por Doug Cutting, en Septiembre de 2001 pasó a formar parte de la familia de código abierto de la fundación Jakarta. Desde entonces, debido a su mayor disponibilidad, ha atraído a un gran número de desarrolladores, incluso empresas como Hewlett Packard, FedEx, etc. lo usan, o al menos lo han evaluado.
Hasta ahora, incluía varios subproyectos como Lucene Java, Droids, Lucene.net, Lucy, Mahout, Solr, Nutch, Open Relevance Proyect, PyLucene y Tika. Sin embargo, actualmete Solr se ha fusionado con el propio proyecto Lucene y Mahout, Nutch y Tika se han convertido en proyectos independientes.

Características

  • Indexación incremental.
En la indexación incremental se pueden añadir documentos a un índice ya creado con anterioridad de forma fácil, frente a la indexación por lotes en la que, una vez que ha sido creado el índice para un conjunto de documentos, el añadir algunos documentos nuevos es una tarea difícil, por lo que se opta por reindexar todos los documentos de nuevo. Lucene soporta ambos tipos de indexación.
  • Origen de datos.
Lucene permite indexar tanto documentos y páginas web como el contenido procedente de una base de datos.
  • Contenido Etiquetado.
Lucene permite dividir el contenido de los documentos en campos y así poder realizar consultas con un mayor contenido semántico, en vez de tratar los documentos como simples flujos de palabras. Esto es, se pueden buscar términos en los distintos campos del documento concediéndole más importancia según el campo en el que aparezca. Por ejemplo, si se dividen los documentos en dos campos, título y contenido, puede concederse mayor importancia a aquellos documentos que contengan los términos de la búsqueda en el campo título.
  • Técnica de indexación.
Al eliminar palabras como a, unos, el, la, etc., poco representativas del documento, se reduce considerablemente el tamaño del índice así como el tiempo de indexación. Estas palabras están contenidas en lo que se denomina lista de parada, que es la técnica de indexación contemplada por Lucene.
  • Concurrencia.
Lucene gestiona que varios usuarios puedan buscar en el índice de forma simultánea así como también que un usuario modifique el índice al mismo tiempo que otro lo consulta.
  • Elección del idioma
  • Multiplataforma
  • Permite organizar los resultados por relevancia
  • Stemming
El stemming es un método para reducir una palabra a su raíz
  • Soporta la indexación de documentos con formato TXT, PDF, DOC, RTF, XML, PPT, HTML

Licencia

La licencia Apache (Apache License o Apache Software License para versiones anteriores a 2.0) es una licencia de software libre creada por la Apache Software Foundation (ASF). La licencia Apache requiere la conservación del aviso de copyright y el disclaimer, pero no es una licencia copyleft, ya que no requiere la redistribución del código fuente cuando se distribuyen versiones modificadas.

Usuarios de Lucene

  • Wikipedia.com
  • Monster.com
  • search.wikia.com
  • technorati.com
  • Fotocasa.com
  • Infojobs.com.br
  • Laboris.net

Versiones

  • Lucene4c - C
  • CLucene - C++
  • MUTIS - Delphi
  • NLucene - .NET
  • Lucene.Net - .NET
  • Plucene - Perl
  • Pylucene - Python
  • Ferret y RubyLucene - Ruby
  • Zend Framework (búsquedas) - PHP
  • Nutch - Java (Buscador web, tipo Google)
  • Montezuma - Lisp