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. 1 Apache Solr
    Paradigma Tecnológico
    Servicios de formación
    Apache Solr

    View Slide

  2. 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

    View Slide

  3. 3 Apache Solr
    Paradigma Tecnológico
    Servicios de formación
    Introducción

    View Slide

  4. 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

    View Slide

  5. 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)

    View Slide

  6. 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

    View Slide

  7. 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)

    View Slide

  8. 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

    View Slide

  9. 9 Apache Solr
    Arquitectura de Solr (III): Indexación y Búsqueda Distribuida

    View Slide

  10. 10 Apache Solr
    Arquitectura de Solr (IV): Replicación Automática

    View Slide

  11. 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

    View Slide

  12. 12 Apache Solr
    Paradigma Tecnológico
    Servicios de formación
    Indexación

    View Slide

  13. 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

    View Slide

  14. 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)

    View Slide

  15. 15 Apache Solr
    Paradigma Tecnológico
    Servicios de formación
    Búsqueda

    View Slide

  16. 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)

    View Slide

  17. 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

    View Slide

  18. 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

    View Slide

  19. 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

    View Slide

  20. 20 Apache Solr
    Paradigma Tecnológico
    Servicios de formación
    Analizadores de Texto

    View Slide

  21. 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

    View Slide

  22. 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

    protected="protwords.txt"/>
    ignoreCase="true" expand="true"/>

    View Slide

  23. 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
    ignoreCase="true"/>
    maxGramSize="15"/>

    View Slide

  24. 24 Apache Solr
    Paradigma Tecnológico
    Servicios de formación
    Componentes de Búsqueda

    View Slide

  25. 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)

    View Slide

  26. 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. término )

    View Slide

  27. 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

    spell

    general
    spell
    solr.DirectSolrSpellChecker
    internal
    0.5


    View Slide

  28. 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

    View Slide

  29. 29 Apache Solr
    Paradigma Tecnológico
    Servicios de formación
    Referencias

    View Slide

  30. 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

    View Slide