Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apache Solr

Paradigma
October 06, 2014

Apache Solr

Solr es un motor de búsqueda open source que proporciona unas herramientas muy potentes a la hora de realizar búsquedas sobre campos de texto. En esta charla se tratarán las características básicas y las principales funcionalidades, ya sean básicas (indexación y búsqueda) o avanzadas (resaltado, corrección ortográfica y resultados similares)
Impartido por Alejandro Marqués

Paradigma

October 06, 2014
Tweet

More Decks by Paradigma

Other Decks in Programming

Transcript

  1. 2 Apache Solr Índice  Introducción  Lucene  Solr

     Instalación  Indexación  Esquema de Datos  Búsqueda  Parámetros de Búsqueda  Búsqueda Avanzada  Analizadores de Texto  Tokenización  Stemming  Sinónimos  Stop Words  N-Gramas  Componentes de Búsqueda  Highlighting  Corrección ortográfica  More like this
  2. 4 Apache Solr  Solr: Motor de búsqueda basado en

    Lucene.  Lucene : Proyecto de código abierto escrito en java.  Librería que proporciona búsquedas de texto de alto rendimiento haciendo uso de índices invertidos.  Mayor velocidad en la búsqueda de cadenas de texto.  Menor dependencia del tamaño del índice.  Mayor flexibilidad en las búsquedas de texto: Búsquedas por término, mediante N-Gramas, búsquedas fonéticas…  Mayor facilidad para ordenaciones por score y ponderaciones.  Características adicionales: Analizadores de texto, resaltado de coincidencias, corrector ortográfico, etc. Introducción (I): Lucene
  3. 5 Apache Solr Índice Directo Índice Invertido Introducción (II): Índice

    Invertido vs. Índice Directo 1 que es esto 2 esto es un texto 3 este texto es otro texto que 1 es 1, 2, 3 esto 1, 2 un 2 texto 2, 3 este 3 otro 3 que (1,1) es (1,2) (2,2) (3,3) esto (1,3) (2,1) un (2,3) texto (2,4) (3,2) (3,5) este (3,1) otro (3,4)
  4. 6 Apache Solr Solr es un proyecto de código abierto

    escrito en java que proporciona un recubrimiento de Lucene añadiendo características adicionales:  Acceso HTTP a Lucene.  Cachés para lograr mayor velocidad en las búsquedas.  Interfaz de administración web.  Configuración del esquema de datos y del servidor mediante archivos XML.  Facetado de resultados (Agrupación de resultados con contadores).  Replicación y distribución de servidores.  … Introducción (III): Solr
  5. 7 Apache Solr  Solr se divide en dos partes:

     Índice: Sistema de ficheros que almacenan la información. Contiene la configuración de Solr y la definición de la estructura de datos.  Servidor: Proporciona el acceso a los índices y las características adicionales. Admite plugins para añadir funcionalidades. Arquitectura de Solr (I)
  6. 8 Apache Solr Solr permite búsquedas e indexaciones distribuidas y

    gestiona la replicación de índices haciendo uso de Zookeeper. Arquitectura de Solr (II): Solr Cloud
  7. 11 Apache Solr  Requisitos:  Java 1.6+ (Java 1.7+

    a partir de la versión 4.8)  Servidor de aplicaciones  Descarga:  http://lucene.apache.org/solr/  Pasos:  Copia de índice.  Despliegue de servidor sobre el servidor de aplicaciones y configuración de logs.  Configuración de enlace entre servidor e índice. (Definir variable solr.home) Instalación de Solr
  8. 13 Apache Solr  schema.xml: Archivo XML que define las

    estructura de datos a indexar.  Estructura de campo:  Tipos de Datos: Definidos por clases java.  Parámetros opcionales:  default: Valor a usar si no se recibe ninguno  required: Define si un campo es obligatorio.  indexed: Determina si un campo es buscable u ordenable.  stored: Determina si un campo se puede recuperar en una consulta.  multiValued: El campo contiene más de un valor. Indexación de Contenidos (I): Esquema de datos <field name=“nombre de campo" type=“tipo de dato" />
  9. 14 Apache Solr  Canales para el envío de documentos:

     Petición HTTP: Envío de instrucción y datos asociados vía HTTP POST.  Cliente Solrj: Cliente java. Permite realizar las diferentes operaciones sobre el índice y enviar la información en diferentes formatos.  Fuentes de datos para la indexación:  XML: Coherente con la estructura de datos definida.  Objetos Java: Representación binaria del documento XML.  CSV: Documento de texto con valores separados.  Documentos enriquecidos: PDF, XLS, DOC, PPT, …  Base de Datos: Adaptador intermedio (DataImportHandler). Indexación de Contenidos (II)
  10. 16 Apache Solr  Canales de búsqueda:  Petición HTTP:

    Envío de instrucción de búsqueda y parámetros mediante HTTP GET.  Administrador de Solr: proporciona un recubrimiento para simplificar la petición HTTP.  Cliente Solrj: Posee también los métodos necesarios para realizar búsquedas sobre los índices.  Respuesta como estructura XML, JSON, javabin... Búsquedas (I)
  11. 17 Apache Solr  q: Petición con formato “campo:valor” 

    start: Documento inicial a partir del cual se van a mostrar los resultados.  rows: Indica el número máximo de resultados a mostrar.  sort: Define la ordenación de los resultados. Ordenaciones combinadas. Formato de ordenaciones: “precio desc, nombre asc”  fl: Campos que se devuelven en la respuesta  fq: Mismo formato que “q”. Limita la query (actúa como filtro). Los resultados se cachean.  facets: Indica si se desean mostrar facetas. Parámetros adicionales para indicar el campo por el que realizarlas, límite, ordenación, etc.  … Búsquedas (II): Parámetros de Búsqueda
  12. 18 Apache Solr  Wildcards: Solr no permite wildcards iniciales

     word*: * sustituye a cualquier número de caracteres.  w?rd: ? sustituye a un único carácter.  w?*d: Pueden componerse ambos comodines.  Operadores Lógicos  AND: word1 AND word2 = word1 && word2 = +word1 +word2  OR: word1 OR word2 = word1 || word2 = word1 word2  NOT: word1 NOT word2 = word1 -word2 Búsquedas (III): Búsqueda Avanzada
  13. 19 Apache Solr  Rangos: Se expresan como “campo:[A TO

    B]”  Boosting: Se pueden ordenar resultados dando más importancia a ciertos campos  nombre:jose^2 AND alias:pepe^0.7  Fuzzy: Busca términos similares basándose en número de inserciones, borrados o intercambios de caracteres. Puede definirse el grado de proximidad.  nombre: sony~0.9 -> Devuelve resultados con nombre “sony”  nombre: sony~0.4 -> Devuelve resultados con nombre “coby” Búsquedas (IV): Búsqueda Avanzada
  14. 21 Apache Solr  Procesadores propios de Solr o posibilidad

    de implementar nuevos analizadores.  Configurables por XML (schema.xml). Aplicables a campos específicos.  Aplicables en tiempo de indexación, durante la búsqueda o en ambos.  Existen múltiples analizadores y se pueden definir analizadores propios, algunos de los que proporciona Solr: Analizadores de Texto (I)  Tokenización  Stemming  Sinónimos  Stop Words  N-Gramas
  15. 22 Apache Solr  Tokenización: División de texto mediante diferentes

    expresiones (Espacios en blanco, etiquetas html, signos de puntuación, expresiones regulares…)  Stemming: Reducción de términos derivados a su forma raíz.  Sinónimos: Transformación de texto mediante definición explícita de relaciones de sinonimia. Analizadores de Texto (II): Tokenización, Stemming, Sinónimos <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
  16. 23 Apache Solr  Stop words: Eliminación de palabras no

    significativas para el proceso de búsqueda.  N-Gramas: Separación de texto en los diferentes grupos de caracteres que lo componen. Analizadores de Texto (III): Stop Words, N-Gramas <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="15"/>
  17. 25 Apache Solr  Los componentes de búsqueda proporcionan funciones

    adicionales a la recuperación de resultados.  Son configurables en tiempo de consulta (Algunos pueden necesitar configuración adicional en los archivos xml).  Algunos de los componentes de búsqueda que proporciona Solr:  Highlighting: Resaltado de términos.  Spell Checker: Corrección ortográfica.  More Like This: Resultados similares. Componentes de Búsqueda (I)
  18. 26 Apache Solr Componentes de Búsqueda (II): Highlighting  Highlighting:

    Ofrece el resaltado de términos buscados dentro de una cadena de texto.  Algunos parámetros de configuración:  hl=true: Activa el resaltado de términos  hl.fl=[fieldnames]: Campo o campos sobre los que se realizará el resaltado.  hl.simple.pre / hl.simple.post=[etiqueta]: Etiqueta que se añadirá antes y después del término resaltado (Ej. <span class=“bold”> término </span>)
  19. 27 Apache Solr  Spell Checker: Proporciona sugerencias para errores

    ortográficos basadas en el contenido indexado o en un diccionario.  Para sugerencias por contenido indexado es recomendable crear un campo para corrección ortográfica (De tipo “textSpell” o “textSpellPhrase”).  Configuración: Componentes de Búsqueda (III): Corrección Ortográfica <searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <str name="queryAnalyzerFieldType">spell</str> <lst name="spellchecker"> <str name="name">general</str> <str name="field">spell</str> <str name="classname">solr.DirectSolrSpellChecker</str> <str name="distanceMeasure">internal</str> <float name="accuracy">0.5</float> </lst> </searchComponent>
  20. 28 Apache Solr  More Like This: Componente de sugerencia

    de documentos similares. Se basa en los términos que aparecen en el documento recuperado y la frecuencia de los mismos.  Configuración por parámetros de búsqueda:  mlt=true: Activa la utilidad de resultados similares.  mlt.fl=[fieldnames]: Campo o campos analizados.  mlt.count=[número]: Número de resultados devueltos.  mlt.qf=[field1^2.0 field2^5.0]: Configuración de ponderación sobre diferentes campos para el cálculo de similitud.  … Componentes de Búsqueda (IV): More Like This
  21. 30 Apache Solr  Enlaces de Interés:  Página Oficial:

    http://lucene.apache.org/solr/  Wiki: http://wiki.apache.org/solr/  Mailing list: http://mail-archives.apache.org/mod_mbox/lucene-solr-user/  Manuales:  Smiley, D. y Pugh, E. (2011). Apache Solr 3 Enterprise Search Server. Packt Publishing Referencias y Enlaces de Interés