Parece que sua pergunta é mais sobre a mesclagem de índices do que sobre a própria indexação.
O processo de indexação é bastante simples se você ignorar os detalhes de baixo nível. Lucene forma o que é chamado de "índice invertido" de documentos. Portanto, se o documento com o texto "Ser ou não ser" e id = 1 vier, o índice invertido ficará assim:
[to] → 1
[be] → 1
[or] → 1
[not] → 1
É basicamente isso - o índice da palavra à lista de documentos que contêm determinada palavra. Cada linha deste índice (palavra) é chamada de lista de postagem. Esse índice é persistido no armazenamento de longo prazo.
Na realidade, é claro que as coisas são mais complicadas:
- Lucene pode pular algumas palavras com base no Analisador específico fornecido;
- palavras podem ser pré-processadas usando algoritmo de lematização para reduzir flexia do idioma;
- A lista de postagem pode conter não apenas identificadores dos documentos, mas também o deslocamento da palavra dada dentro do documento (potencialmente várias instâncias) e algumas outras informações adicionais.
Existem muitas outras complicações que não são tão importantes para o entendimento básico.
É importante entender, porém, que o índice Lucene é apenas anexo . Em algum ponto no tempo, o aplicativo decide confirmar (publicar) todas as alterações no índice. O Lucene termina todas as operações de serviço com índice e fecha-o, para que fique disponível para pesquisa. Após o índice de confirmação basicamente imutável. Este índice (ou parte do índice) é denominado segmento . Quando Lucene executa a pesquisa de uma consulta, ela pesquisa em todos os segmentos disponíveis.
Então surge a pergunta - como podemos alterar um documento já indexado ?
Novos documentos ou novas versões de documentos já indexados são indexados em novos segmentos e versões antigas invalidadas em segmentos anteriores usando a chamada lista de eliminação . A lista de eliminação é a única parte do índice confirmado que pode ser alterada. Como você pode imaginar, a eficiência do índice cai com o tempo, porque os índices antigos podem conter a maioria dos documentos removidos.
É aqui que entra a fusão. Mesclagem - é o processo de combinar vários índices para tornar o índice geral mais eficiente. O que basicamente acontece durante a mesclagem são os documentos ativos copiados para o novo segmento e os segmentos antigos totalmente removidos.
Usando este processo simples, o Lucene é capaz de manter o índice em boa forma em termos de desempenho de pesquisa.
Espero que ajude.