Red de conocimiento del abogados - Bufete de abogados - El directorio práctico de Lucene

El directorio práctico de Lucene

Tabla de contenidos

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

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

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

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

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

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

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

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

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

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>

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