Revista Digital Universitaria
ISSN: 1607 - 6079 Publicación mensual
 
1 de noviembre de 2012 Vol.13, No.11
  Inicio Ejemplares Directorio Quiénes somos Busca artículos Vínculos Contacto Mapa de sitio
 
Documento sin título
 
Apache Solr, un motor de búsqueda de código abierto
Luis Miguel Estrada Ramos
CITA
PDF
   
Indexación y eliminación de documentos
APIs disponibles
Aumentar Letra Disminuir Letra Disminuir Letra   facebook
twitter
google
 

Introducción

Todo desarrollador de aplicaciones debe ser conciente de la importancia que tiene una buena experiencia de búsqueda para el usuario final. Factores como la demora o inexactitud en la entrega de resultados, la imposibilidad de realizar búsquedas complejas o la falta de opciones de navegación entre los resultados suelen ser causa de una mala recepción de la aplicación. En la actualidad es común que las aplicaciones estén respaldadas por una base de datos sobre la que se implementan las búsquedas. Sin embargo, con este enfoque, la implementación de funcionalidades complejas de búsqueda puede llegar a ser complicada debido a las limitantes de las bases de datos, sin mencionar que las búsquedas pueden ser ineficientes si el volumen de información es muy grande o la forma en que está estructurada la información no es la adecuada. Es en escenarios como estos cuando una plataforma de soporte para las búsquedas puede resultar una alternativa más práctica y eficiente.

En el mercado existen varias alternativas para este tipo de soluciones, en este artículo daré una breve introducción a una de las más populares y completas: Apache Sorl. Esta plataforma se utilizó en dos proyectos en los que participé activamente en el equipo de desarrollo, ambos dirigidos por el departamento de Publicaciones Digitales de la Dirección General de Tecnologías de la Información y Comunicación de la UNAM. Estos proyectos son: Portal de Portales Latindex y el Repositorio Institucional de la UNAM.
A grandes rasgos, estos sistemas recolectan metadatos de recursos académicos digitales disponibles en otros sistemas y los almacenan en una base de datos local sobre la que se implementan los servicios de búsqueda y recuperación de recursos digitales.

En el caso de Portal de Portales Latindex, a medida que la cantidad de información recolectada  se acercaba a medio millón de registros, la aplicación se volvía considerablemente más lenta. La solución a este inconveniente fue Apache Solr, plataforma sobre la que actualmente se implementa el servicio de búsquedas de Portal de Portales Latindex. A pesar de que el número de registros ha llegado a casi 1,300,000, el tiempo de respuesta es más que aceptable. En el caso del Repositorio Institucional de la UNAM, Solr permitió la implementación de mejoras para la interfaz de búsqueda con nuevas funcionalidades que facilitarían al usuario la localización de recursos de una manera más rápida y organizada.

¿Qué es Apache Solr?

Apache Solr o simplemente Solr (pronúnciese solar), es un popular motor de búsquedas de código abierto que proporciona potentes funcionalidades de búsqueda y navegación por facetas, es decir, explorar la información desde diversas perspectivas. Tales funcionalidades pueden ser difíciles de implementar sobre una base de datos relacional. Solr es capaz de manejar complejos criterios de búsqueda, corrige ortografía en las consultas, permite realzar resultados (highlighting), configurar la relevancia de términos,  entre otras funcionalidades. Solr funciona como un servidor independiente de búsquedas a texto completo dentro de un contendedor de servlets.

Solr es un producto maduro utilizado por grandes empresas en sus servicios de búsqueda. Tal es el caso de la popular plataforma de video bajo demanda, Netflix. Solr está implementado en Java, y este mismo lenguaje se puede utilizar para extender sus funcionalidades mediante la implementación de simples interfaces.

Características

Algunas de las características más sobresalientes de Solr son:


  • Servidor con interfaz tipo REST (interacción vía HTTP, XML, JASON, CSV, etc.)
  • Esquema de datos configurable.
  • Utiliza varios caches para agilizar las búsquedas.
  • Interface Web de administración.
  • Navegación de resultados por facetas.
  • Escalable a varios servidores para búsquedas distribuidas.
  • Módulos de importación de datos desde bases de datos, e-mail y archivos de texto enriquecido (PDF, Word, RTF).
  • Análisis de texto (Tokenización, normalización, etc.)

Ventajas sobre tecnología de base de datos

Es cierto que la tencnología de base de datos más reciente ya integra capacidades de indexado de texto, entonces, ¿por qué no usar esta misma tecnología para la implementación de búsquedas en vez de integrar un nuevo elemento en la arquitectura de nuestros sistemas haciéndolos más complejos? Las ventajas de delegar el manejo de búsquedas a Solr, en vez de a una base de datos, resultan más claras si se hace una comparación entre ambas tecnologías.

La principal diferencia entre estas dos tecnologías es el modelo de datos. La característica que define a las bases de datos relacionales es su modelo de datos basado en tablas y la posibilidad de relacionarlas entre sí mediante llaves. De este modo, para una consulta que involucre varías tablas, es necesario el uso de la operación JOIN para unir las tablas implicadas,aunque dicha operación puede ser muy lenta si las tablas son muy grandes. En contraste, Solr utiliza un modelo de datos orientado a documentos que pueden pensarse como una base de datos de una sola tabla, por lo que una operación análoga a JOIN es inexistente. Un documento en Solr es simplemente un conjunto de campos, como una túpla en una tabla de una base de datos, con la diferencia de que cada columna puede ser multi valuada. Otra diferencia importante entre Solr y una base de datos es que en Solr no existe la operación equivalente a la operación UPDATE. Si cierta parte de un documento necesita ser actualizada, el documento debe ser eliminado  y agregar en su lugar el documento actualizado.

Si bien el paso de un esquema relacional a un esquema no relacional requiere un cambio en la estructura de la información, en la mayoría de los casos este proceso es directo y consiste en un proceso de normalización de los datos.Sin embargo, en ocasiones puede resultar difícil o imposible, especialmente en casos donde existen relaciones “muchos a muchos” con múltiples campos susceptibles a búsqueda.

Para una base de datos, la búsqueda sobre texto no es tan importante en comparación a otros aspectos, como el manejo de transacciones ACID, eficiencia en la inserción, actualización y recuperación de la información o el control de acceso. Con tecnología de base de datos solo es posible realizar búsquedas de subcadenas, es decir, búsquedas del estilo: SELECT * FROM mitabla WHERE nombre LIKE '%Libros%' . Solr, en cambio, es capaz de realizar búsqueda de términos (palabras), por lo que tiene incluso la capacidad para encontrar variaciones de una palabra, plurales y singulares, por ejemplo.  También existe la posibilidad de calificar los resultados de acuerdo a un criterio configurable, lo cual permite identificar cuales son los resultados que mejor cumplen con el patrón de búsqueda, lo cual no es posible de con tecnología de base de datos, ya que el patrón de búsqueda simplemente se cumple o no.

Basta revisar la lista de características de Solr para darse cuenta de que un sistema manejador de base de datos carece de muchas de estas funciones o no es tan bueno realizándolas

 
  subir        
 
metadatos en la red
  Editorial
 





Licencia de Creative Commons
Esta obra está bajo una licencia de Creative Commons