Disculpe la simple pregunta, pero no parece haber ninguna manera obvia. De acuerdo con la documentación, se recomienda mantener una sola instancia de IndexWriter
en memoria que pueda usarse una y otra vez para las actualizaciones, en lugar de abrir y cerrar una para cada cambio (que es mucho más costoso).¿Cómo puedo verificar si una instancia de Lucene IndexWriter es válida/abierta?
Sin embargo, la documentación también indica que el IndexWriter
se debe cerrar si se produce una excepción (por ejemplo, OutOfMemoryException
).
Por lo tanto, necesito alguna forma de comprobar si mi instancia de IndexWriter
es válida o no, suponiendo que pueda cerrarse con alguna otra operación.
realizo que conseguiré una excepción si trato de usarlo cuando está cerrado, pero en lugar de fallar, me gustaría comprobar para ver si necesito para crear un nuevo IndexWriter
antes de lo necesario que para que se produzca ningún fallo.
Me parece que una propiedad/método simple de IsOpen
sería una adición tan obvia.
Pensamientos:
supongo que si yo podría asegurar que mi clase es el único capaz de cerrar la IndexWriter
, yo podría simplemente configurarlo para null
cuando estaba cerrado y sólo comprobar para asegurarse de que es no null
cada vez que voy a usarlo, sin embargo esto no manejaría casos donde el IndexWriter
se cierra solo (si tal caso es posible ahora o en el futuro).
Otra idea es que podría envolver un intento de usarlo en un bloque try/catch y usar la excepción para indicar que debe volver a abrirse, pero esto no parece muy eficiente/elegante. ¿Qué método usaría para probar la validez del IndexWriter
?