Parece que su pregunta más sobre la fusión de índices que sobre la indexación en sí.
El proceso de indexación es bastante simple si ignora los detalles de bajo nivel. Lucene forma lo que se llama "índice invertido" de los documentos. Entonces, si aparece un documento con el texto "Ser o no ser" e id = 1, el índice invertido se vería así:
[to] → 1
[be] → 1
[or] → 1
[not] → 1
Esto es básicamente: el índice de la palabra a la lista de documentos que contienen la palabra dada. Cada línea de este índice (palabra) se denomina lista de publicación. Este índice se conserva en el almacenamiento a largo plazo.
En realidad, por supuesto, las cosas son más complicadas:
- Lucene puede omitir algunas palabras en función del Analizador particular dado;
- las palabras se pueden preprocesar utilizando un algoritmo de derivación para reducir la flexibilidad del idioma;
- La lista de publicación puede contener no solo identificadores de los documentos, sino también un desplazamiento de la palabra dada dentro del documento (potencialmente varias instancias) y alguna otra información adicional.
Hay muchas más complicaciones que no son tan importantes para la comprensión básica.
Sin embargo, es importante comprender que el índice de Lucene solo se adjunta . En algún momento, la aplicación decide confirmar (publicar) todos los cambios en el índice. Lucene finaliza todas las operaciones de servicio con index y lo cierra, para que esté disponible para la búsqueda. Después de confirmar el índice básicamente inmutable. Este índice (o parte del índice) se llama segmento . Cuando Lucene ejecuta la búsqueda de una consulta, busca en todos los segmentos disponibles.
Entonces surge la pregunta: ¿cómo podemos cambiar un documento ya indexado ?
Los documentos nuevos o las versiones nuevas de documentos ya indexados se indexan en segmentos nuevos y las versiones antiguas se invalidan en segmentos anteriores utilizando la llamada lista de eliminación . La lista de muertes es la única parte del índice comprometido que puede cambiar. Como puede imaginar, la eficiencia de los índices disminuye con el tiempo, porque los índices antiguos pueden contener en su mayoría documentos eliminados.
Aquí es donde entra en juego la fusión. Fusión: es el proceso de combinar varios índices para hacer un índice más eficiente en general. Lo que ocurre básicamente durante la fusión es que los documentos activos se copian en el nuevo segmento y los segmentos antiguos se eliminan por completo.
Con este sencillo proceso, Lucene puede mantener el índice en buena forma en términos de rendimiento de búsqueda.
Espero que te ayude.