Có vẻ như câu hỏi của bạn nhiều hơn về việc hợp nhất chỉ mục hơn là về việc lập chỉ mục chính nó.
Quá trình lập chỉ mục khá đơn giản nếu bạn bỏ qua các chi tiết cấp thấp. Lucene hình thành cái được gọi là "chỉ mục ngược" từ các tài liệu. Vì vậy, nếu tài liệu có văn bản "Có hay không" và id = 1 xuất hiện, chỉ mục đảo ngược sẽ trông giống như:
[to] → 1
[be] → 1
[or] → 1
[not] → 1
Về cơ bản đây là nó - chỉ mục từ từ đến danh sách các tài liệu có chứa từ đã cho. Mỗi dòng của chỉ mục (từ) này được gọi là danh sách đăng. Chỉ số này vẫn tồn tại khi lưu trữ lâu dài.
Trong thực tế, tất nhiên mọi thứ phức tạp hơn:
- Lucene có thể bỏ qua một số từ dựa trên Trình phân tích cụ thể đã cho;
- các từ có thể được xử lý trước bằng cách sử dụng thuật toán gốc để giảm độ linh hoạt của ngôn ngữ;
- danh sách đăng không chỉ có thể chứa số nhận dạng của tài liệu, mà còn có thể chứa từ đã cho bên trong tài liệu (có thể là một số trường hợp) và một số thông tin bổ sung khác.
Có nhiều biến chứng khác không quá quan trọng đối với sự hiểu biết cơ bản.
Tuy nhiên, điều quan trọng cần hiểu là chỉ mục Lucene chỉ là phần phụ . Trong một số thời điểm ứng dụng quyết định cam kết (xuất bản) tất cả các thay đổi trong chỉ mục. Lucene hoàn thành tất cả các hoạt động dịch vụ bằng chỉ mục và đóng nó, vì vậy nó có sẵn để tìm kiếm. Chỉ số sau khi cam kết về cơ bản là không thay đổi. Chỉ mục này (hoặc phần chỉ mục) được gọi là phân đoạn . Khi Lucene thực hiện tìm kiếm cho một truy vấn, nó sẽ tìm kiếm trong tất cả các phân đoạn có sẵn.
Vì vậy, câu hỏi đặt ra - làm thế nào chúng ta có thể thay đổi tài liệu đã được lập chỉ mục ?
Tài liệu mới hoặc phiên bản mới của tài liệu đã được lập chỉ mục được lập chỉ mục trong các phân đoạn mới và các phiên bản cũ bị vô hiệu trong các phân đoạn trước bằng cách sử dụng cái gọi là danh sách hủy . Danh sách hủy là phần duy nhất của chỉ mục đã cam kết có thể thay đổi. Như bạn có thể đoán, hiệu quả lập chỉ mục giảm dần theo thời gian, vì các chỉ mục cũ có thể chứa hầu hết các tài liệu đã bị loại bỏ.
Đây là lúc hợp nhất xuất hiện. Hợp nhất - là quá trình kết hợp một số chỉ mục để tạo chỉ mục tổng thể hiệu quả hơn. Điều cơ bản xảy ra trong quá trình hợp nhất là các tài liệu trực tiếp được sao chép sang phân đoạn mới và phân đoạn cũ bị xóa hoàn toàn.
Sử dụng quy trình đơn giản này Lucene có thể duy trì chỉ mục ở trạng thái tốt về hiệu suất tìm kiếm.
Hy vọng nó sẽ hữu ích.