Xin lỗi vì câu hỏi đơn giản, nhưng dường như không có cách nào rõ ràng. Theo tài liệu, bạn nên giữ một ví dụ đơn lẻ là IndexWriter
trong bộ nhớ có thể được sử dụng lặp đi lặp lại để cập nhật, thay vì mở và đóng một cho mỗi thay đổi (điều này tốn kém hơn nhiều).Làm thế nào tôi có thể kiểm tra xem một dụ Lucene IndexWriter là hợp lệ/mở?
Tuy nhiên, tài liệu cũng nêu rõ rằng IndexWriter
sẽ bị đóng nếu có ngoại lệ xảy ra (ví dụ: OutOfMemoryException
).
Vì vậy, tôi cần một số cách để kiểm tra xem phiên bản IndexWriter
của tôi có hợp lệ hay không, giả sử nó có thể bị đóng bởi một số thao tác khác.
Tôi nhận ra mình sẽ bị ngoại lệ nếu tôi cố gắng sử dụng khi nó đóng, nhưng thay vì thất bại, tôi muốn kiểm tra xem tôi có cần tạo IndexWriter
mới trước khi tôi cần nó để không xảy ra lỗi.
Dường như đối với tôi một thuộc tính/phương pháp đơn giản là IsOpen
sẽ là một bổ sung rõ ràng.
Suy nghĩ:
Tôi giả sử rằng nếu tôi có thể đảm bảo rằng lớp học của tôi là điều duy nhất có khả năng đóng IndexWriter
, tôi chỉ đơn giản có thể thiết lập nó để null
khi nó được đóng lại và chỉ cần kiểm tra để chắc chắn rằng nó không phải null
bất cứ khi nào tôi sử dụng nó, tuy nhiên điều này sẽ không xử lý các trường hợp trong đó IndexWriter
đóng cửa chính nó (nếu trường hợp đó có thể xảy ra ngay bây giờ hoặc trong tương lai).
Một ý nghĩ khác là tôi có thể quấn một nỗ lực để sử dụng nó trong khối try/catch và sử dụng ngoại lệ để cho biết rằng nó cần phải được mở cửa trở lại, nhưng điều này không có vẻ rất hiệu quả/thanh lịch. Tôi sẽ sử dụng phương pháp nào để kiểm tra tính hợp lệ của IndexWriter
?