JOSE MANUEL ORTEGA CANDEL
DESARROLLO DE MOTORES DE BUSQUEDA UTILIZANDO HERRAMIENTAS OPEN SOURCE
ALFAOMEGA GRUPO EDITOR
Páginas:
Formato:
Peso: 0.764 kgs.
ISBN: 978-607538857-1
Encuadernación: TAPA SUAVE
Año de edición: 2022
Colección:
El desarrollo de motores de búsqueda ha crecido en los últimos años gracias al uso de herramientas y frameworks open source, pues facilitan una base sobre la cual realizar nuestras aplicaciones orientadas a la extracción y búsqueda de diferentes fuentes de datos.
Si desea adquirir los conocimientos necesarios para dominar las principales herramientas open source, las librerías y los frameworks, ha llegado al libro indicado. Este manual le proporciona, desde un enfoque teórico-práctico, todos los conceptos e instrucciones que le permitirán construir desde cero motores de búsqueda utilizando los lenguajes de programación Java y Python.
Gracias a los contenidos del libro:
Conocerá la estructura y naturaleza de un motor de búsqueda, así como la importancia de los sistemas de búsqueda y recuperación de la información.
Aprenderá los principales motores de búsqueda open source y su funcionamiento interno.
Dominará las diferentes herramientas para desarrollar motores de búsqueda utilizando frameworks de desarrollo dentro de los ecosistemas de programación Java y Python.
Además, con el objetivo de obtener el máximo provecho de las herramientas y facilitar el seguimiento de las prácticas del libro, en la primera página se proporciona el acceso al repositorio con el código de los ejemplos desarrollados.
Hágase con el libro y descubra las principales herramientas que todo desarrollador e ingeniero de software debe dominar para desarrollar sus propios motores de búsqueda.
INTRODUCCIÓN. 1
CAPÍTULO 1
INTRODUCCIÓN A LOS MOTORES DE BÚSQUEDA 3
1.1 Definición de motores de búsqueda.. 4
1.2 ¿Por qué necesito un motor de búsqueda? 5
1.2.1 Extracción de texto en documentos. 5
1.2.2 Operaciones de lectura. 6
1.2.3 Esquema flexible 6
1.3 Funcionamiento de un motor de búsqueda.. 7
1.3.1 Buscadores de directorios 8
1.3.2 Buscadores jerárquicos.. 8
1.3.3 Spiders (arañas o crawlers) 8
1.4 Proceso de indexación. 10
1.4.1 Rendimiento en la indexación de documentos 10
1.4.2 Stopwords.. 11
1.4.3 Steamming. 11
1.5 Recuperación de la información 12
1.5.1 Extracción de información. 14
1.5.2 Sistema de búsqueda/respuesta.. 15
1.6 Motores de búsqueda e indexadores. 15
1.6.1 Lucene.. 17
1.6.2 Índice invertido. 19
1.6.3 Apache Solr 19
1.6.4 ElasticSearch 19
1.6.5 Otros motores de búsqueda 20
1.7 Herramientas de procesamiento de lenguaje natural (PLN)21 CAPÍTULO 2
APACHE LUCENE.. 25
2.1 Introducción a Apache Lucene.. 25
2.2 Módulos y funcionalidades de Apache Lucene.. 28
2.3 Arquitectura de Apache Lucene 31
2.3.1 Proceso de tokenización y búsqueda en Apache Lucene 34
2.4 Trabajar con Apache Lucene. 36
2.4.1 Configuración del entorno. 36
2.4.2 Crear un índice 40
2.4.3 Crear y escribir documentos en un índice.. 43
2.5 Realizar búsquedas en Apache Lucene. 47
2.5.1 Obtención de un IndexSearcher. 47
2.5.2 Proceso de búsqueda con IndexSearcher.. 48
2.5.3 Crear consultas con Lucene QueryParser. 49
2.5.4 Sintaxis de las consultas en Apache Lucene.. 53
2.6 Búsqueda de información con Apache Lucene.. 55
2.7 Búsqueda en múltiples índices de Lucene. 58
2.8 Herramientas de administración de Lucene 60
2.9 Herramientas de búsqueda que usan Apache Lucene 61
2.9.1 Krugle 61
2.9.2 Google Dataset Search 62
2.9.3 Otros repositorios y portales. 63
CAPÍTULO 3
APACHE SOLR 65
3.1 Introducción a Apache Solr.. 65
3.2 Arquitectura de Apache Solr 67
3.3 Indexación e índice invertido en Apache Solr. 69
3.3.1 Relevancia y filtro en las búsquedas 69
3.4 Instalación de Solr.. 70
3.5 Configurar Apache Solr.. 75
3.5.1 Ficheros de configuración y esquema. 77
3.5.2 Proceso de indexación 82
3.5.3 Indexación de datos con SimplePostTool. 84 3.5.4 Esquema administrado en Apache Solr. 88
3.5.5 Añadir información al índice 90
3.6 Búsqueda de documentos. 92
3.6.1 Usar la API REST 94
3.6.2 Consultas básicas de Solr. 97
3.6.3 Componente stats (estadísticas) 102
3.7 Consultas avanzadas de Solr 103
3.7.1 Paginación y clasificación 103
3.7.2 Navegación facetada en Solr.. 105
3.7.3 Búsqueda de facetas en Solr.. 109
3.8 Componentes de una petición en Solr. 114
3.8.1 Controladores Request Handler. 114
3.9 Analizadores en Apache Solr.. 116
3.9.1 Definir campos personalizados 117
3.9.2 Configuración de los tipos de campos 120
3.9.3 Propiedad score.. 123
3.10 Monitorización del rendimiento de Apache Solr.. 124
3.10.1 Página de plugins/estadísticas de Apache Solr.. 124
3.11 Ejecución en modo Cloud.. 127
3.11.1 Terminología usada en SolrCloud 128
3.11.2 SolrCloud. 130
3.11.3 Ejecutar SolrCloud. 130
3.11.4 Indexación distribuida 131
3.11.5 Ventajas de SolrCloud. 133
3.12 Arrancar Apache Solr desde Docker134
3.13 Interactuar con Solr desde Java.. 137
3.13.1 Añadir Solrj a un proyecto Maven.. 138
3.13.2 Conexión con el servidor Solr desde Java.. 140
3.14 Crawling con Apache Nutch y conexión con Apache Solr.. 147
3.15 Conclusiones de Apache Solr152
CAPÍTULO 4
ELASTICSEARCH.. 155
4.1 Introducción a ElasticSearch. 155
4.1.1 Ventajas de ElasticSearch sobre Apache Solr. 159 4.2 Uso de ElasticSearch para proyectos de Big Data.. 159
4.3 Arquitectura de ElasticSearch 160
4.3.1 Nodos en ElasticSearch. 163
4.4 ElasticSearch como solución distribuida. 164
4.5 Fragmentos y réplicas en ElasticSearch 166
4.6 Instalación de ElasticSearch. 170
4.7 Crear un índice en ElasticSearch. 174
4.8 API REST de ElasticSearch. 176
4.8.1 Mapping o estructura de los datos del índice 184
4.8.2 Recuperar parte de un documento 187
4.8.3 Asignar un mapeo a un índice. 188
4.8.4 Query DSL (solicitudes DSL). 191
4.8.5 Búsquedas en ElasticSearch.. 196
4.8.6 La consulta multi_match. 206
4.8.7 Navegación facetada en ElasticSearch 208
4.8.8 Agregaciones en documentos.. 209
4.8.9 Autocompletado en ElasticSearch. 210
4.8.10 Analizadores en ElasticSearch.. 214
4.9 Relevancia de documentos en ElasticSearch 216
4.9.1 Puntuación y relevancia de los documentos.. 216
4.9.2 Mejorar la relevancia de los resultados de búsqueda 219
4.10 Estadísticas e información sobre el clúster, índices y nodos 222
4.10.1 Estado del clúster.. 222
4.10.2 Métricas del clúster.. 225
4.10.3 Estadísticas de los índices 226
4.11 Herramientas de monitorización en ElasticSearch. 228
4.11.1 ElasticSearch Head 229
4.11.2 ElasticSearch query client 233
4.11.3 Cerebro.. 235
CAPÍTULO 5
CLIENTES ELASTICSEARCH.. 239
5.1 Clientes de conexión en Java. 239
5.2 Conexión al clúster de ElasticSearch. 242 5.3 Gestionar índices. 244
5.4 Indexación de documentos en el índice. 246
5.5 Búsqueda de documentos en el índice. 247
5.6 Integración con Spring Data. 252
5.7 Seguridad en ElasticSearch 287
5.8 Conclusiones de ElasticSearch.. 293
CAPÍTULO 6
VISUALIZACIÓN DE DATOS CON KIBANA. 295
6.1 Introducción a Kibana 295
6.2 Stack ELK.. 297
6.2.1 Principales usos de ELK 298
6.2.2 Stack ELK en contenedores Docker.. 298
6.3 Instalación de Kibana.. 301
6.4 LogStash.. 308
6.4.1 Instalación de LogStash 309
6.4.2 Configuración de LogStash. 310
6.4.3 Otros servicios de Elastic. 317
6.5 Monitorización de LogStash desde Kibana 318
6.6 Seguridad en Kibana. 321
CAPÍTULO 7
MOTORES DE BÚSQUEDA CON PYTHON.. 325
7.1 Conectando con Solr desde Python 325
7.2 Integración de ElasticSearch con Python 327
7.2.1 Crear un índice e insertar documentos usando Python. 329
7.2.2 Realizar búsquedas usando Python.. 331
7.3 Consultar ElasticSearch a través de la API RESTen Python 341
7.4 Optimizar un índice en ElasticSearch.. 350
7.5 Indexar documentación de Django 351
7.6 Whoosh como motor de búsqueda en Python 359
7.6.1 Whoosh schema. 360
7.6.2 Realizar búsquedas en Whoosh y scoring. 362 7.7 Django-haystack 365
7.7.1 Integrar haystack en una aplicación Django.. 366
CAPÍTULO 8
GLOSARIO DE TÉRMINOS 371