280 likes | 408 Views
Paradigma Tecnológico Servicios de formación. Índice. Paradigma Tecnológico Servicios de formación. Introducción (I): Lucene. Solr : Motor de búsqueda basado en Lucene . Lucene : Proyecto de código abierto escrito en java.
E N D
Paradigma Tecnológico Servicios de formación
Paradigma Tecnológico Servicios de formación
Introducción (I): Lucene • 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 (II): Índice Invertido vs. Índice Directo Índice Directo Índice Invertido
Introducción (III): 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). • Distribución de servidores.
Arquitectura de Solr (I) • 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 (II): Arquitectura Distribuida Solr permite búsquedas distribuidas: Uno de los servidores actúa como maestro, consultando al resto y componiendo la respuesta.
Instalación de Solr • Requisitos: • Java 1.5+ • Servidor de aplicaciones • Descarga: • http://apache.rediris.es/lucene/solr/ • Pasos: • Copia de índice. • Despliegue de servidor sobre el servidor de aplicaciones. • Configuración de enlace entre servidor e índice. (Modificación del fichero web.xml)
Paradigma Tecnológico Servicios de formación
Indexación de Contenidos (I): Esquema de datos • 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. <field name=“nombre de campo" type=“tipo de dato" />
Indexación de Contenidos (II) • 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).
Paradigma Tecnológico Servicios de formación
Búsquedas (I) • 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.
Búsquedas (II): Parámetros de Búsqueda • 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. • facets: Indica si se desean mostrar facetas. Parámetros adicionales para indicar el campo por el que realizarlas, límite, ordenación, etc. • 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. • …
Búsquedas (III): Búsqueda Avanzada • 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. • OperadoresLó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 (IV): Búsqueda Avanzada • 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”
Paradigma Tecnológico Servicios de formación
Analizadores de Texto (I) • 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 (II): Tokenización, Stemming, Sinónimos • 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. <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
Analizadores de Texto (III): Stop Words, N-Gramas • 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. <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="15"/>
Paradigma Tecnológico Servicios de formación
Componentes de Búsqueda (I) • 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. • SpellChecker: Corrección ortográfica. • More LikeThis: Resultados similares.
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. <spanclass=“bold”> término </span>)
Componentes de Búsqueda (III): Corrección Ortográfica • SpellChecker: 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: <searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <str name="queryAnalyzerFieldType">textSpell</str> <lst name="spellchecker"> <str name="name">default</str> <str name="classname">solr.IndexBasedSpellChecker</str> <str name="field">corrector</str> <str name="spellcheckIndexDir">./spellchecker</str> </lst> </searchComponent>
Componentes de Búsqueda (IV): More LikeThis • More LikeThis: 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. • …
Paradigma Tecnológico Servicios de formación
Referencias y Enlaces de Interés • Enlaces de Interés: • Página Oficial: http://lucene.apache.org/solr/ • Wiki: http://wiki.apache.org/solr/ • Mailinglist: http://mail-archives.apache.org/mod_mbox/lucene-solr-user/ • Manuales: • Smiley, D. y Pugh, E. (2009). Solr 1.4 Enterprise Search Server. Packt Publishing