Tampaknya pertanyaan Anda lebih banyak tentang penggabungan indeks daripada tentang pengindeksan itu sendiri.
Proses pengindeksan cukup sederhana jika Anda mengabaikan detail tingkat rendah. Lucene membentuk apa yang disebut "indeks terbalik" dari dokumen. Jadi jika dokumen dengan teks "To be or not to be" dan id = 1 masuk, indeks terbalik akan terlihat seperti:
[to] → 1
[be] → 1
[or] → 1
[not] → 1
Ini pada dasarnya - indeks dari kata ke daftar dokumen yang berisi kata yang diberikan. Setiap baris indeks (kata) ini disebut daftar posting. Indeks ini bertahan pada penyimpanan jangka panjang.
Kenyataannya tentu saja hal-hal lebih rumit:
- Lucene mungkin melewatkan beberapa kata berdasarkan Analyzer khusus yang diberikan;
- kata-kata dapat diproses sebelumnya menggunakan algoritma stemming untuk mengurangi flexia bahasa;
- daftar posting tidak hanya berisi pengidentifikasi dokumen, tetapi juga offset dari kata yang diberikan di dalam dokumen (kemungkinan beberapa contoh) dan beberapa informasi tambahan lainnya.
Masih banyak lagi komplikasi yang tidak begitu penting untuk pemahaman dasar.
Namun penting untuk dipahami, bahwa indeks Lucene hanya ditambahkan . Di beberapa titik waktu aplikasi memutuskan untuk melakukan (mempublikasikan) semua perubahan dalam indeks. Lucene menyelesaikan semua operasi layanan dengan indeks dan menutupnya, sehingga tersedia untuk pencarian. Setelah komit, indeks pada dasarnya tidak dapat diubah. Indeks ini (atau bagian indeks) disebut segmen . Ketika Lucene menjalankan pencarian untuk sebuah query, ia mencari di semua segmen yang tersedia.
Jadi pertanyaannya muncul - bagaimana kita bisa mengubah dokumen yang sudah diindeks ?
Dokumen baru atau versi baru dari dokumen yang sudah diindeks diindeks di segmen baru dan versi lama tidak valid di segmen sebelumnya menggunakan apa yang disebut kill list . Kill list adalah satu-satunya bagian dari indeks yang berkomitmen yang dapat berubah. Seperti yang Anda duga, efisiensi indeks turun seiring waktu, karena indeks lama mungkin berisi sebagian besar dokumen yang dihapus.
Di sinilah masuknya penggabungan. Penggabungan - adalah proses menggabungkan beberapa indeks untuk membuat keseluruhan indeks lebih efisien. Apa yang pada dasarnya terjadi selama penggabungan adalah dokumen langsung disalin ke segmen baru dan segmen lama dihapus seluruhnya.
Dengan menggunakan proses sederhana ini Lucene mampu menjaga indeks dalam kondisi yang baik dalam hal kinerja pencarian.
Semoga bisa membantu.