很抱歉这个简单的问题,但是似乎没有任何明显的方法。根据文档,建议在内存中保留一个IndexWriter
实例,该实例可以一次又一次地用于更新,而不是针对每个更改打开和关闭一个IndexWriter
(这会花费更多)。
但是,文档还指出,如果发生异常(例如OutOfMemoryException
),则应关闭IndexWriter
。
因此,我需要某种方法来检查我的IndexWriter
实例是否有效,并假设它可以被其他操作关闭。
我意识到,如果我尝试在关闭时使用它,将会得到一个异常,但不是失败,而是想检查是否需要在需要它之前创建一个新的IsOpen
,因此不会发生任何失败。
在我看来,简单的IndexWriter
属性/方法将是显而易见的补充。
想法:
我想如果可以确保我的类是唯一能够关闭null
的东西,则可以在关闭时将其简单地设置为null
,并在每次使用它时检查一下它是否不是IndexWriter
,但是这样做不处理IndexWriter
自身关闭的情况(如果现在或将来可能发生这种情况)。
另一个想法是,我可以将尝试使用它的尝试包装在try/catch块中,并使用异常来表示需要重新打开它,但这似乎不是很有效/优雅。我将使用哪种方法来测试ojit_code的有效性?
最佳答案
如果您遇到内存不足的异常(或确实存在任何异常),则可能是一个大问题。您尝试编写的更改可能不会被写入,并且索引甚至可能已损坏,具体取决于异常发生的时间/方式。
因此,处于错误状态的IndexWriter
是一种特殊情况,我会说肯定可以保证使用异常(即try/catch)。
(我认为您的收获不会是“重新打开编写器。”根据异常,您可能需要重新编制索引,可能是从头开始。当然,您不应该期望在编写器中经常出现异常。)