El directorio práctico de Lucene
1 Parte de Lucene Core
Capítulo 1 Conociendo a Lucene 3
1.1 Cómo afrontar la explosión de información 4
1.2 ¿Qué es Lucene 5
Qué puede hacer Lucene 6
1 2 2 Historia de Lucene 7
1.3 Lucene y el componente de búsqueda 9
. 1.3.1 Componentes del índice 10
1.3.2 Componente de búsqueda 13
1.3.3 Otros módulos del programa de búsqueda 16
1 3 . aplicaciones 18 de 1 El punto de integración entre >1.5 Comprender las clases principales del proceso de indexación 25
1.5.1 Redactor de índices 25
1.5.2 Directorio 25
1.5.3 Analizador 26
p>1.5.4 Archivo 26
1.5.5 Campo 27
1.6 Clases básicas para comprender el proceso de búsqueda 27 p>
1.6.1 Buscador de índice 27
1.6.2 Término 28
1.6.3 Consulta 28
1.6.4 TermQuery 28
1.6.5 TopDocs 29
1.7 Resumen 29
Capítulo 2 Índice arquitectónico 30
2.1 Cómo los modelos Lucene buscan contenido 31
2.1.1 Documentos y Dominio 31
2.1.2 Arquitectura flexible 32
2.1.3 Desnormalización) 32
2.2 Comprender el proceso de indexación 33 p>
2 2 . 1 Extraer texto y crear documentos 33
Análisis de archivos 34
2.2.3 Agregar documentos al índice 34
2.3 Operaciones básicas de índice 35
Agregar el documento 35 al índice
2.3.2 Eliminar el documento 38 en el índice
2.3.3 Actualizar el documento 39 en el índice
2.4 Opción de dominio 41
2.4.1 Opción de índice de dominio 41
2.4.2 Opción de almacenamiento de dominio 42
2.4.3 Vector de elementos opción de dominio 42
p>2.4.4 Lector, flujo de token y valor de campo byte[] 42.
2.4.5 Combinación de opciones de dominio 43
2.4.6 Opción de clasificación de dominio 44
2.4.7 Rango múltiple 44
2.5 Ponderación de documentos y campos 45
2.5.1 Operación de ponderación de archivos 45
2.5.2 Operación de ponderación de dominio 46
2.5.3 Criterios de ponderación) 47
2.6 Número de índice, fecha y hora 48
1 Número de índice 48
Fecha y hora de índice 49
2.7 Truncamiento de campos) 50
2.8 Búsqueda casi en tiempo real 51
2.9 Índice de optimización 51
2.10 Otras categorías de directorio 52
2.11 Concurrencia, seguridad de subprocesos y mecanismo de bloqueo 55 p>
2.11.1 Seguridad de subprocesos y seguridad de máquinas multivirtuales 55
2.11.2 Acceso a índices a través de sistemas de archivos remotos 56
2.11.3 Mecanismo de bloqueo de índices 57
2.12 Índice de depuración 59
2.13 Conceptos avanzados de índice 60
Uso de IndexReader para eliminar documentos 61.
2.13.2 Recuperar espacio en disco usado de documentos eliminados 62
2.13.3 Almacenamiento en búfer y actualización 62
2.13.4 Envío de índice 63
2.13.5 Transacciones ACID y continuidad del índice 65
2.13.6 Fusión de segmentos 66
2.14 Resumen 68
Capítulo 3 para aplicaciones Agregar función de búsqueda 70
3.1 Implementar una función de búsqueda simple 71
3.1.1 Buscar elementos específicos 72
3.1.2 Analizar la expresión de consulta ingresada por el usuario: QueryParser 73 p>
3.2 Uso de la categoría del buscador de índice 76
3.2.1 Creación de la categoría del buscador de índice 76
3.2.2 Implementación de la función de búsqueda 78
3.2.3 Utilice la clase TopDocs 78
3.2.4 Paginación de resultados de búsqueda
3.2.5 Búsqueda casi en tiempo real 79
3.3 Comprender la clasificación del mecanismo Lucene 81
3 . 3 . ¿Cómo obtiene Lucene una puntuación de 81?
3.3.2 Utilice explicar() para comprender la puntuación de los resultados de búsqueda 83
3.4 Las diversas consultas de Lucene 84
3.4.1 Búsqueda por proyecto: $ TermQuery Class 85
3.4.2 Buscar dentro del rango de proyecto especificado: TermRangeQuery Clase 86
3.4.3 Buscar dentro del rango de números especificado: NumericRangeQuery clase 87
3.4. 4 Búsqueda por cadena: Consulta de prefijo clase 88
3.4.5 Consulta combinada: BooleanQuery clase 88
3.4.6 Búsqueda por frase: Consulta de frase clase 91
Categoría de consulta comodín 93
3.4.8 Buscar elementos similares: categoría de consulta difusa 94
3.4.9 Coincidir con todos los documentos: categoría MatchAllDocsQuery 95
3.5 Consulta de análisis expresión: QueryParser 96
3.5.1 Método Query.toString 97
Consulta de términos 97
3.5.3 Consulta de rango de materiales 98
Búsqueda por rango de números y búsqueda por rango de fechas 99
3.5.5 Consulta de prefijo y consulta con comodín 99
Operador booleano 100
3.5.7 Consulta de frase 100
3.5.8 Consulta difusa 101
MatchAllDocsQuery 102
3.5.10 Consulta de grupo 102
3.5.11 Selección de dominio 103
3.5.12 Establezca el peso de 103 para la subconsulta.
3.5.13 ¿Tengo que usar QueryParse 103?
3.6 Resumen 104
Capítulo 4 Proceso de análisis de Lucene 105
4.1 Uso del analizador 106
4.1.107 Análisis de procesos
4.1.2 Análisis de QueryParser 109
4.1.3 Análisis vs análisis: ¿Cuándo deja de funcionar un analizador para 109?
4.2 Analizador de análisis 110
4.2.1 La composición de las unidades léxicas 111
4.2.2 Revelar el flujo de las unidades léxicas 112
4.2 .3 Analizador de observación 115
4.2.4 Filtrado de tokens: la importancia del orden de filtrado 119
4.3 Uso del analizador integrado 121
4.3.1 Detener Analizador 122
Analizador estándar 122
4.3.3 ¿Qué analizador central 123 se debe utilizar?
4.4 Consulta de palabras con sonido cercano 123
4.5 Sinónimos, alias y otras palabras con el mismo significado 126
4.5.1 Creación de un analizador de sinónimos 127 p >
4.5.2 Mostrar la posición de la unidad de vocabulario 131.
4.6 Derivación 132
4.6.1 StopFilter, espacio reservado 133.
4.6.2 Combinar la operación de derivación y la operación de eliminación de palabras de parada 134.
4.7 Análisis de dominio 134
4.7.1 Análisis multiintervalo 135
4.7.2 Análisis de dominio específico 135
4.7.3 Buscar dominio no resuelto 136.
4.8 Análisis del lenguaje 139
4.8.1 Unicode y codificación de caracteres 139
4.8.2 Análisis del lenguaje distinto del inglés 140
4.8 3 Procesamiento de normalización de caracteres 140
4.8.4 Análisis del idioma asiático 141
4.8.5 Otras cuestiones sobre el análisis del idioma distinto del inglés 143
4.9 Análisis de Nutch 144
4.10 Resumen 146
Capítulo 5 Tecnología de búsqueda avanzada 147
5.1 Caché de dominio de Lucene 148
5.1.1 Cargar dominios para todos los documentos Valor 149.
Corresponde al lector 149 del párrafo 5.1.2.
5.2 Ordenar resultados de búsqueda 150
5.2.1 Ordenar por valor de dominio 150
5.2.2 Ordenar por relevancia 153
5.2. 3 Ordenar por orden de índice 154
5.2.4 Ordenar por dominio 154
5.2.5 Ordenar inverso 155
5.2.6 Ordenar por múltiples campos 156 p>
5.2.7 Tipo de selección de campos de clasificación 157.
5.2.8 Ordenar 157 usando una configuración regional no predeterminada.
5.3 Uso de multiprasequery 158
5.4 Consulta única multidominio 160
5.5 Consulta de extensión 162
5.5.1 Consulta de extensión módulo de construcción: SpanTermQuery 165
5.5.2 Encuentre el tramo 166 al comienzo del dominio.
5.5.3 Intervalo adyacente 167
5.5.4 Excluir intervalos superpuestos de 169 de los resultados coincidentes.
Clase SpanOrQuery 170
Clase SpanQuery y clase QueryParser 171
5.6 Filtrado de búsqueda 172
5.6.1 Filtro de rango de terminal 173 p>
Filtro de rango de números 174
5 . 6 . 3 FieldCacheRangeFilter 174
5.6.4 Filtrado de elementos específicos 174
5.6.5 Usar la clase QueryWrapperFilter 175
Utilice la clase SpanQueryFilter 175.
Filtro de seguridad 176
5.6.8 Usar la clase BooleanQuery 177 para filtrar
Prefiltro 178
5.6.10 Resultados del filtrado de caché 178
5.6.11 Encapsular el filtro en una consulta 179.
5.6.12 Filtro Filtro 179
5.6.13 Filtro integrado que no es de Lucene 180
5.7 Utilice la consulta de función para implementar puntuación personalizada 180.
5.7.1 Consulta de función 180 de clases relacionadas
5.7.2 Utilice la consulta de función 182 para ponderar documentos modificados recientemente.
5.8 Buscar en múltiples índices 184
5.8.1 Usar múltiples clases de búsqueda 184.
5.8.2 Búsqueda multiproceso utilizando ParallelMultiSearcher 186
5.9 Uso de vectores de términos 186
5.9.1 Búsqueda de libros similares 187
5.9.2 ¿A qué categoría pertenece? 190.
5.9.3 Nivel terminal 193
5.10 Cargar dominio 194 con FieldSelector.
5.11 Detener la búsqueda lenta 195
5.12 Resumen 196
Capítulo 6 Búsqueda extendida 198
6.1 Usar un método de clasificación personalizado 199 .
6.1.1 Índice de documentos 199 basado en el método de clasificación por ubicación geográfica
6.1.2 Implementación del modo de clasificación por ubicación geográfica personalizado 200
6.1.3 Acceso desde Definición valores en la clasificación 203
6.2 Desarrollar recopiladores personalizados 204
Categorías básicas de recopiladores 205
6.2.2 Recopiladores personalizados: BookLinkCollector 206
Clase AllDocCollector 207
6.3 Ampliar la clase QueryParser 208
6.3.1 Personalizar el comportamiento de QueryParser 208
6.3.2 Deshabilitar consultas difusas y consultas comodín 209
6.3.3 Procesando la consulta de rango del campo numérico 210
6.3.4 Procesando el rango de fechas es 211.
6.3.5 Frase de orden de consulta 213
6.4 Filtro personalizado 215
6.4.1 Implementar filtro personalizado 215
6.4.2 Uso Filtros personalizados durante las búsquedas 216.
6.4.3 Otra opción: FilterQuery clase 217.
6.5 Carga útil)218)
6.5.1 Carga útil generada durante el análisis 219
6.5.2 Carga útil utilizada durante la búsqueda 220
6.5 .3 Consultas de carga útil y extensión 223
6.5.4 Reciclaje de posiciones de carga útil a través de $ 223
6.6 Resumen 223
Parte 2 de la aplicación Lucene
Capítulo 7 Usando Tika para extraer texto 227
7.1 ¿Qué es Tika 228?
7.2 Diseño lógico de tika y API 230
7.3 Instalando Tika 231
7.4 Herramienta de extracción de texto incorporada de Tika 232
7.5 Programación para implementar la extracción de texto 234
7.5.1 Indexación de documentos de Lucene 234
Nivel 237 Herramientas Tika
7.5.3 Selección del analizador personalizado 238
7.6 Limitaciones de tika 238
7.7 Indexación de archivos XML personalizados 239
7.7. 1 Análisis con SAX 239
7.7.2 Análisis e indexación utilizando el digestor Apache Commons 242
7.8 Otras opciones 244
7.9 Resumen 245
Capítulo 8 Extensiones básicas de Lucene 246
8.1 Luke: Caja de herramientas de índice de Lucene 247
8.1.1 Pestaña Descripción general: Vista global del índice 248
8.1.2 Navegación de documentos 249
8.1.3 Búsqueda con QueryParser 251
8.1.4 Pestaña Archivos y complementos 252
8.2 Analizadores, unidades léxicas y filtros de unidades léxicas 253
Analizador Bola de Nieve 255
Filtro Ngram 256
Filtro Watt Chip 258
8.2.4 Adquisición de analizador de donaciones 258
8.3 Resaltado de elementos de consulta 259
8.3.1 Módulo resaltado 259
p>8.3.2 Ejemplo de resaltado independiente 262
8.3.3 Uso de CSS para resaltar 263
8.3.4 Resaltar resultados de búsqueda 264
8.4 Resaltador FastVector 266 Categoría
8.5 Revisión ortográfica 269
8.5.1 Generar mensaje Lista 269
8.5.2 Seleccionar el mejor mensaje 271
8.5.3 Mostrar resultados de búsqueda a los usuarios 272
8.5.4 Algunas consideraciones sobre cómo fortalecer la revisión ortográfica 273
8.6 Llamativa función de expansión de consultas 274
8.6.1 Más información
8.6.2 Consulta de similitud difusa 275
8.6. 3 Consulta mejorada 275
Filtro de términos 276
8.6.5 Filtro duplicado 276
RegexQuery 276
8.7 Módulo de donación de software de construcción (contrib módulo) 277
8.7.1 Método de adquisición del código fuente 277
8 7 2 Complemento Ant en el directorio contrib 277
8.8 Resumen 278<. /p>
Capítulo 9 Extensiones avanzadas de Lucene 279
9.1 Filtro de fórmula de cadena 280
9.2 Uso del índice de almacenamiento de Berkeley DB 282
9.3 Sinónimos de WordNet 284
Construir un índice de sinónimos 285
9.3.2 Vincular sinónimos de WordNet a Analyzer 287
9.4 Indexación rápida basada en memoria 289
9.5 XML QueryParser: más allá de la interfaz de búsqueda de "un cuadro" 289
9.5Usando XmlQueryParser 291.
9.5.2 Sintaxis de consulta XML extendida 295
9.6 Lenguaje de consulta periférico 296
9.7 Espacio Lucene 298
9.7.1 Espacio de índice Datos 299
9.7.2 Buscar datos del espacio 302
9.7.3 Características de rendimiento de Lucene espacial 304
9.8 Búsqueda remota de múltiples índices 306
9.9 Flexible QueryParser 309
9.10 Otro contenido 312
9.11 Resumen 313
Capítulo 10 Otros lenguajes de programación utilizan Lucene 314.
10.1 Introducción a la portabilidad 315
10.1.1 Selección de portabilidad 316
10.1.2 Selección de una versión de portabilidad adecuada 317.
10.2 Cloroxina (C++) 317
Propósitos de portabilidad 318
10.2.2 Compatibilidad de índices y API 319
10.2.
10.2.4 Situación actual y perspectivas de futuro 321
10.3 Lucene-Net (lenguaje de programación C#, etc. NET) 321
10.3.1 Compatibilidad API 323
10.3.2 Compatibilidad de índices 324
10.4 KinoSearch y Lucy (Perl) 324
1 Kino Search 325
Lucy 327 p>
10.4.3 Otras opciones de Perl 327
10.5 Ferret (Ruby) 328
10.6 PHP 329
10.6 Zend Framework 329
10.6.2 PHP Bridge 330
10.7 PyLucene(Python) 330
10.7.1 Compatibilidad API 332
10.7.2 Otras opciones de Python 332
10.8 Solr (incluidos múltiples lenguajes de programación) 332
10.9 Resumen 334
Capítulo 11 Gestión de Lucene y ajuste del rendimiento 335
11.1 Ajuste de rendimiento 336
11.1.1 Pasos simples de ajuste de rendimiento 337
11.1.2 Método de prueba 338
11.1 .3 Ajuste del retraso de búsqueda de índice 339
11.1.4 Ajuste del rendimiento de la operación de índice 340
11.1.5 Retraso de búsqueda y ajuste del rendimiento de la búsqueda 344
11.2 Hilos más y procesamiento paralelo 346
11.2 .1 Uso de subprocesos múltiples para operaciones de índice 347.
11.2.2 Uso de operaciones de búsqueda multiproceso 351
11.3 Gestión del consumo de recursos 354
11.3.1 Gestión del espacio en disco 354
11.3 .2 Gestión de descriptores de archivos 357
11.3.3 Gestión de memoria 361
11.4 Índice de copia de seguridad en caliente 364
11.4.1 Creación de copia de seguridad de índice 365
11.4.2 Restaurar el índice 366
11.5 Errores comunes 367
11.5.1 Índice dañado 367
11.5.2 Reparar el índice 369
11.6 Resumen 369
Análisis de caso de la tercera parte
Capítulo 12 Análisis de caso 1: Kruger 373
Introducción a Kruger 374
12.2 Arquitectura de la aplicación 375
12.3 Rendimiento de la búsqueda 376
12.4 Análisis del código fuente 377
12.5 Búsqueda de subcadenas 378
12.6 Consulta versus búsqueda 381
12.7 Margen de mejora 382
12.7.1 Uso de la memoria caché de campo 382
12.7.2 Índice completo 382
12.8 Resumen 383
Capítulo 13 Análisis de caso 2: Bruja 384
13.1 Introducción a la sirena 385
Ventajas de la sirena 385
13.2.1 Búsqueda en todos los campos 387
Un diccionario eficiente 388
13.2.3 Campos variables 388
13.2.4 Campos multivalor Procesamiento eficiente 388
13.3 Índice entidades con alarmas 388
13.3.1 Modelo de datos 389
13.3.2 Problemas de implementación 389
13.3.3 Resumen del índice 390
13.3.4 Preparación de datos antes de la indexación 390
13.4 Búsqueda de entidades mediante alertas 392
13. 1 Buscar contenido 392
13.4.2 Limitar el rango de búsqueda. por celda 393
13.4.3 Combinar celdas en tuplas 393.
13.4.4 Consulta de descripción de entidad 394
13.5 Integración de alertas en Solr 394
13.6 Benchmark 395
13.7 Resumen 397
Capítulo 14 Estudio de caso 3: LinkedIn 398
14.1 Búsqueda grupal usando Bobo Browsing 398
Diseño 14.1.1 Bobo Browsing 400
14.1.2 Búsqueda profunda de grupos 403
14.2 Búsqueda en tiempo real usando Zoie 405
14.2.1 Arquitectura Zoie 406
Tiempo real y casi en tiempo real 409 p>
14.2.3 Solicitudes de archivos e índices 411
14.2.4 Lector de índices personalizado 411
14.2.5 Comparación de Lucene 412 búsqueda casi en tiempo real.
14.2.6 Búsqueda distribuida 413
14.3 Resumen 415
Apéndice A Instalación de Lucene 416
A.1 Instalación de archivos binarios 416
A.2 Ejecute el programa de demostración de la línea de comandos 417
A.3 Ejecute el programa de demostración de la aplicación web 418
A.4 Compile el código fuente 419 p> p>
A.5 Disposición incorrecta
Apéndice B Formato de índice Lucene 421
B.1 Vista de índice lógico 421
B.2 Acerca de la estructura del índice 422
B.2.1 Comprender la estructura del índice de múltiples archivos 422
B.2.2 Comprender la estructura del índice compuesto 425
B.2.3 Convertir el estructura del índice 426
B.3 Índice inverso 427
B.4 Resumen 430
Apéndice C Lucene/Contib Benchmark 431
C .1 Ejecución del script de prueba 432
C.2 Componentes de un script de prueba 435
C.2.1 Fuente de contenido y generador de documentos 438
C.2.2 Generador de consultas 439
C.3 Estructuras de control 439
C.4 Tareas integradas 441
C.4.1 Creación y uso de archivos de líneas 445
C.4.2 Tareas de informes integradas 446
C.5 Evaluación de la calidad de la búsqueda 446
C.6 Manejo de errores 449
C.7 Resumen 449
Apéndice d Recursos 450
D.1 Base de conocimientos de Lucene 450
D.2 Internacionalización
D.3 Detección de idioma 451
D.4 Vector de elementos 451
D.5 Versión adaptada de Lucene 451
D.6 Estudio de caso 452
D.7 Otros
D.8 Software de recuperación de información 452
D.9 Obras de Doug Kadin 453
D.9.1 Documentos de conferencias 453
D .9.2 Patente de Estados Unidos 454