seminario apache solr

30
1 Apache Solr Paradigma Tecnológico Servicios de formación Apache Solr

Upload: paradigma-tecnologico

Post on 12-Jun-2015

262 views

Category:

Technology


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Seminario Apache Solr

1 Apache Solr

Paradigma Tecnológico

Servicios de formaciónApache Solr

Page 2: Seminario Apache Solr

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

Page 3: Seminario Apache Solr

3 Apache Solr

Paradigma Tecnológico

Servicios de formaciónIntroducción

Page 4: Seminario Apache Solr

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

Page 5: Seminario Apache Solr

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)

Page 6: Seminario Apache Solr

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

Page 7: Seminario Apache Solr

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)

Page 8: Seminario Apache Solr

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

Page 9: Seminario Apache Solr

9 Apache Solr

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

Page 10: Seminario Apache Solr

10 Apache Solr

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

Page 11: Seminario Apache Solr

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

Page 12: Seminario Apache Solr

12 Apache Solr

Paradigma Tecnológico

Servicios de formaciónIndexación

Page 13: Seminario Apache Solr

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" />

Page 14: Seminario Apache Solr

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)

Page 15: Seminario Apache Solr

15 Apache Solr

Paradigma Tecnológico

Servicios de formaciónBúsqueda

Page 16: Seminario Apache Solr

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)

Page 17: Seminario Apache Solr

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

Page 18: Seminario Apache Solr

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

Page 19: Seminario Apache Solr

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

Page 20: Seminario Apache Solr

20 Apache Solr

Paradigma Tecnológico

Servicios de formaciónAnalizadores de Texto

Page 21: Seminario Apache Solr

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

Page 22: Seminario Apache Solr

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"/>

Page 23: Seminario Apache Solr

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"/>

Page 24: Seminario Apache Solr

24 Apache Solr

Paradigma Tecnológico

Servicios de formaciónComponentes de Búsqueda

Page 25: Seminario Apache Solr

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)

Page 26: Seminario Apache Solr

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

Page 27: Seminario Apache Solr

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>

Page 28: Seminario Apache Solr

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

Page 29: Seminario Apache Solr

29 Apache Solr

Paradigma Tecnológico

Servicios de formaciónReferencias

Page 30: Seminario Apache Solr

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