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

Apache Solr

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Paradigma 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

Avatar for Paradigma

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