Indexar Datos utilizando Apache Solr

  • Posted on: 23 October 2014
  • By: ReYDeS

Solr es una popular plataforma empresarial de búsqueda open source del proyecto Apache Lucene. Su principal característica incluye una poderosa búsqueda de texto completo, resaltado de coincidencias, búsqueda por facetas, indexación casi en tiempo real, clustering dinámico, integración con base de datos, manejo de documentos enriquecidos (como Word, PDF, etc.), y búsqueda geoespacial. Solr es altamente confiable, escalable y tolerante a fallos, proporcionando indexación distribuida, replicación y consulta con balanceo de carga, conmutación por error y recuperación automática, configuración centralizada y más. Solr da poder a las funcionalidades de navegación y búsqueda a varios de los sitios de Internet más grandes del mundo.

Solr está escrito en Java y se ejecuta como un servidor de búsqueda completo independiente dentro de un contenedor servlets como Jetty. Solr utiliza la librería de búsqueda Java Lucene en su núcleo para indexar y buscar texto completo, y tiene un HTTP/XML similar a REST y APIs JSON lo cual facilita su uso desde virtualmente cualquier lenguaje de programación. La poderosa configuración externa de Solr permite adaptarse a casi cualquier tipo de aplicación sin codificación Java, y tiene una amplia arquitectura de plugins cuando se requieres personalizaciones más avanzadas.

A continuación se expondrá un sencillo ejemplo para ejecutar Solr utilizando un esquema de ejemplo y algunos datos de ejemplo.

Se requiere tener instalado Java 1.7 o una versión superior. Además de Solr.

$ java -version

Descomprimir el archivo descargado.

$ sudo unzip -q sol-4.10.1.zip
$ cd solr-4.10.1/
$ ls-l

Solr puede ejecutarse en cualquier contenedor Servlet Java a elección, pero para simplificar el presente escenario, el indice de ejemplo incluye una pequeña instalación de Jetty.

Para lanzar Jetty con Solr WAR y configuración de ejemplo, ejecutar.

$ cd example/
$ ls -l
$ sudo java -jar start.jar

Lo anterior iniciará el servidor de aplicación Jetty en el puerto TCP 8983, y utilizará el terminal para mostrar la información de los registros desde Solr.

Para visualizar el funcionamiento de Solr cargar un navegador web e ingresar a la URL respectiva. Este es el punto de inicio principal para administrar Solr.

El servidor Solr está levantado y funcionando, pero no contiene ningún dato. Se puede modificar el indice de Solr enviando comandos hacia Solr para añadir (o actualizar) documentos, borrar documentos, y comprometer pendientes de adición y borrado. Estos comandos pueden estar en una diversidad de formatos.

El directorio de nombre “exampledocs” contiene archivos de ejemplos mostrando los tipos de comandos que Solr acepta, como también una utilidad en Java para enviarlos desde la línea de comando (un script shell “post.sh” también está disponible, pero se utilizará un cliente Java).

Abrir una nueva terminal, ingresar al directorio de nombre “exampledocs” y ejecutar “post.jar” sobre algunos de los archivos XML en este directorio.

$ cd exampledocs/
$ ls
$ sudo java -jar post.jar solr.xml monitor.xml

Ahora se tienen indexados dos documentos en Solr, y comprometido estos cambios. Ahora buscar por “solr” cargando la pestaña de nombre “Query” en la interfaz de administración, ingresando “solr” en la caja de texto “q”. Luego hacer clic en el botón de nombre “Execute Query”.

Los resultados serán expuestos en el lado derecho, antecedidos por la URL utilizada para la consulta.

Se puede también indexar todos los datos de ejemplo.

$ sudo java -jar post.jar *.xml

Ahora se puede buscar por todo tipo de cosas utilizando la sintaxis de consultas de Solr (un superconjunto de la sintaxis de consulta de Lucene).

  • video
  • name:video
  • +video +price:[* TO 400]

Existen otras diversas maneras de importar datos a Solr.

  • Importar registros desde una base de datos utiilzando DIH (Data Import Handler)
  • Cargar un archivo CSV (valores separados por comas), incluyendo aquellos exportados por Excel o Mysql
  • Enviar documentos JSON
  • Indexar documento binarios somo Word y PDF con Solr Cell (ExtractingRequestHandler).
  • Utilizar SolrJ para Java y otros clientes Solr para crear programáticamente documentos a enviar a Solr.

Es factible también actualizar datos, borrar datos, consultar datos de manera más elaborada, entre otra gran diversidad de acciones muy poderosas. Sugiero la lectura de la copiosa y buena documentación sobre Solr desde su sitio web oficial.

¿Porque escribir algo sobre Apache Solr?. Autopsy 3 utiliza este poderoso motor para la indexación de texto, el cual proporciona una rápida y robusta funcionalidad para la búsqueda de palabras claves.

Fuentes:

http://lucene.apache.org/solr/
http://wiki.apache.org/solr/
http://lucene.apache.org/solr/4_10_1/tutorial.html
http://www.sleuthkit.org/autopsy/keyword.php

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero


Suscribete