Il semble que votre question concerne davantage la fusion d'index que l'indexation elle-même.
Le processus d'indexation est assez simple si vous ignorez les détails de bas niveau. Lucene forme ce qu'on appelle un «index inversé» à partir de documents. Donc, si le document avec le texte «Être ou ne pas être» et id = 1 entre, l'index inversé ressemblerait à:
[to] → 1
[be] → 1
[or] → 1
[not] → 1
C'est fondamentalement ça - l'index du mot à la liste des documents contenant un mot donné. Chaque ligne de cet index (mot) est appelée liste d'affichage. Cet index est alors conservé sur le stockage à long terme.
En réalité, bien sûr, les choses sont plus compliquées:
- Lucene peut sauter certains mots en fonction de l'analyseur donné;
- les mots peuvent être prétraités en utilisant un algorithme de dérivation pour réduire la flexie de la langue;
- La liste de publication peut contenir non seulement les identifiants des documents, mais également le décalage du mot donné à l'intérieur du document (potentiellement plusieurs instances) et d'autres informations supplémentaires.
Il y a beaucoup plus de complications qui ne sont pas si importantes pour la compréhension de base.
Il est important de comprendre cependant que l'index Lucene est uniquement ajouté . À un moment donné, l'application décide de valider (publier) toutes les modifications de l'index. Lucene termine toutes les opérations de service avec l'index et le ferme, il est donc disponible pour la recherche. Après l'index de validation, fondamentalement immuable. Cet index (ou partie d'index) est appelé segment . Lorsque Lucene exécute la recherche d'une requête, il recherche dans tous les segments disponibles.
Alors la question se pose - comment pouvons-nous changer un document déjà indexé ?
Les nouveaux documents ou les nouvelles versions de documents déjà indexés sont indexés dans de nouveaux segments et les anciennes versions invalides dans les segments précédents à l'aide de ce que l'on appelle la liste de mise à mort . La liste d'élimination est la seule partie de l'index validé qui peut changer. Comme vous pouvez le deviner, l'efficacité des index diminue avec le temps, car les anciens index peuvent contenir la plupart des documents supprimés.
C'est là que la fusion entre en jeu. Fusion - est le processus de combinaison de plusieurs index pour rendre l'index plus efficace dans l'ensemble. Ce qui se passe essentiellement lors de la fusion, ce sont les documents en direct copiés dans le nouveau segment et les anciens segments entièrement supprimés.
En utilisant ce processus simple, Lucene est capable de maintenir l'index en bon état en termes de performances de recherche.
J'espère que ça aidera.