Ci scusiamo per la semplice domanda, ma non sembra esserci alcun modo ovvio. Secondo la documentazione, si consiglia di conservare una singola istanza di IndexWriter
in memoria che possa essere utilizzata più e più volte per gli aggiornamenti, anziché aprirla e chiuderne una per ogni modifica (che è molto più costosa).Come posso verificare se un'istanza di Lucene IndexWriter è valida/aperta?
Tuttavia, la documentazione indica anche che IndexWriter
deve essere chiuso se si verifica un'eccezione (ad esempio OutOfMemoryException
).
Pertanto, ho bisogno di un modo per verificare se la mia istanza di IndexWriter
è valida o meno, supponendo che potrebbe essere chiusa da qualche altra operazione.
Mi rendo conto che otterrò un'eccezione se provo ad usarlo quando è chiuso, ma piuttosto che fallire, vorrei verificare se ho bisogno di creare un nuovo IndexWriter
prima che ne abbia bisogno quindi non si verifica alcun errore.
Mi sembra un semplice IsOpen
proprietà/metodo sarebbe un'aggiunta così ovvia.
Pensieri:
suppongo che se avessi potuto garantire che la mia classe è l'unica cosa in grado di chiudere il IndexWriter
, potrei semplicemente impostarlo a null
quando è stato chiuso e basta controllare per assicurarsi che sia non null
ogni volta che vado a utilizzarlo, tuttavia questo non gestirà i casi in cui lo IndexWriter
si chiude da solo (se tale caso è possibile ora o in futuro).
Un'altra idea è che potrei avvolgere un tentativo di usarlo in un blocco try/catch e usare l'eccezione per indicare che deve essere riaperto, ma questo non sembra molto efficiente/elegante. Quale metodo utilizzerei per testare la validità dello IndexWriter
?