lucene segment

¿Qué son los segmentos en Lucene?



(3)

El índice de Lucene se divide en trozos más pequeños llamados segmentos. Cada segmento es su propio índice. Lucene los busca a todos en secuencia.

Se crea un nuevo segmento cuando se abre un nuevo escritor y cuando un escritor se compromete o se cierra.

Las ventajas de utilizar este sistema son que nunca tendrá que modificar los archivos de un segmento una vez que se haya creado. Cuando agrega nuevos documentos en su índice, se agregan al siguiente segmento. Los segmentos anteriores nunca se modifican.

La eliminación de un documento se realiza simplemente indicando en un archivo qué documento de un segmento se elimina, pero físicamente, el documento siempre permanece en el segmento. Los documentos en Lucene no están realmente actualizados. Lo que sucede es que la versión anterior del documento está marcada como eliminada en su segmento original y la nueva versión del documento se agrega al segmento actual. Esto minimiza las posibilidades de corromper un índice al tener que modificar constantemente su contenido cuando hay cambios. También permite copias de seguridad fáciles y sincronización del índice en diferentes máquinas.

Sin embargo, en algún momento, Lucene puede decidir fusionar algunos segmentos. Esta operación también se puede activar con una optimización.

¿Qué son los segmentos en Lucene ?

¿Cuáles son los beneficios de los segmentos?


Los beneficios del segmento ya han sido respondidos por otros. Incluiré un diagrama de ascii de un índice de Lucene.

Segmento Lucene

Un segmento de Lucene es parte de un Índice. Cada segmento se compone de varios archivos de índice. Si miras dentro de cualquiera de estos archivos verás que contiene 1 o más documentos Lucene .

+- Index 5 ------------------------------------------+ | | | +- Segment _0 ---------------------------------+ | | | | | | | +- file 1 -------------------------------+ | | | | | | | | | | | +- L.Doc1-+ +- L.Doc2-+ +- L.Doc3-+ | | | | | | | | | | | | | | | | | | | field 1 | | field 1 | | field 1 | | | | | | | | field 2 | | field 2 | | field 2 | | | | | | | | field 3 | | field 3 | | field 3 | | | | | | | | | | | | | | | | | | | +---------+ +---------+ +---------+ | | | | | | | | | | | +----------------------------------------+ | | | | | | | | | | | | +- file 2 -------------------------------+ | | | | | | | | | | | +- L.Doc4-+ +- L.Doc5-+ +- L.Doc6-+ | | | | | | | | | | | | | | | | | | | field 1 | | field 1 | | field 1 | | | | | | | | field 2 | | field 2 | | field 2 | | | | | | | | field 3 | | field 3 | | field 3 | | | | | | | | | | | | | | | | | | | +---------+ +---------+ +---------+ | | | | | | | | | | | +----------------------------------------+ | | | | | | | +----------------------------------------------+ | | | | +- Segment _1 (optional) ----------------------+ | | | | | | +----------------------------------------------+ | +----------------------------------------------------+

Referencia

Lucene en acción Segunda edición - Julio de 2010 - Publicación Manning


Un segmento es muy simplemente una sección del índice . La idea es que pueda agregar documentos al índice que se está sirviendo actualmente creando un nuevo segmento con solo documentos nuevos. De esta manera, no tiene que preocuparse por el costoso problema de reconstruir su índice completo con frecuencia para agregar nuevos documentos al índice.