Chúng tôi chạy toàn bộ chỉ mục lại cứ 7 ngày một lần (tức là tạo chỉ mục từ đầu) trên chỉ mục Lucene của chúng tôi và các chỉ mục gia tăng sau mỗi 2 giờ. Chỉ số của chúng tôi có khoảng 700.000 tài liệu và chỉ số đầy đủ mất khoảng 17 giờ (đó không phải là vấn đề).Một chỉ số có nên được tối ưu hóa sau các chỉ số gia tăng trong Lucene không?
Khi chúng tôi lập chỉ mục gia tăng, chúng tôi chỉ lập chỉ mục nội dung đã thay đổi trong hai giờ qua, vì vậy phải mất ít thời gian hơn - khoảng nửa giờ. Tuy nhiên, chúng tôi đã nhận thấy rằng rất nhiều thời gian này (có thể là 10 phút) được dùng để chạy phương thức IndexWriter.optimize().
Các LuceneFAQ đề cập rằng:
Lớp IndexWriter hỗ trợ một phương pháp tối ưu hóa() mà làm gọn cơ sở dữ liệu chỉ mục và tăng tốc độ truy vấn. Bạn có thể muốn sử dụng phương pháp này sau khi thực hiện một chỉ mục hoàn chỉnh của bộ tài liệu của bạn hoặc sau khi cập nhật gia tăng của chỉ mục. Nếu bản cập nhật gia tăng của bạn thêm tài liệu thường xuyên, bạn chỉ muốn thực hiện tối ưu hóa một lần trong một thời gian để tránh phải trả thêm chi phí cho việc tối ưu hóa.
... nhưng điều này dường như không đưa ra bất kỳ định nghĩa nào về ý nghĩa "thường xuyên". Tối ưu hóa là CPU chuyên sâu và VERY IO-chuyên sâu, vì vậy chúng tôi muốn không được làm điều đó nếu chúng ta có thể nhận được ngay với nó. Bao nhiêu là hit của các truy vấn đang chạy trên một chỉ mục chưa được tối ưu hóa (tôi đang suy nghĩ đặc biệt về hiệu năng truy vấn sau một chỉ mục đầy đủ so với sau 20 chỉ số gia tăng trong đó, 50.000 tài liệu đã thay đổi)? Chúng ta có nên tối ưu hóa sau mỗi chỉ số gia tăng hoặc là hiệu suất đạt được không đáng?
Các loại thay đổi này * là * ảnh trong bóng tối không có chúng. –
Chúc mừng, tôi đã tự hỏi liệu mọi người có trải nghiệm điều này trước khi tôi đi sâu vào và bắt đầu rối tung với hệ thống sản xuất không :) –
Mat: vâng, tôi nhận ra bạn đang tìm kiếm lời khuyên cụ thể, và tôi đã nói chung một chút. Theo kinh nghiệm của tôi (tôi đã sử dụng Lucene trong nhiều năm), bạn sẽ ổn mà không cần tối ưu hóa(). Tôi đã loại bỏ quyền tối ưu hóa() từ trên các hệ thống của chúng tôi vì chi phí của nó. –