抱歉这个简单的问题,但似乎没有任何明显的方法。根据文档,建议保留单个实例IndexWriter
存储在内存中,可以一次又一次地用于更新,而不是为每次更改打开和关闭一个内存(这要昂贵得多)。
然而,文档还指出IndexWriter
如果发生异常(例如OutOfMemoryException
).
因此,我需要某种方法来检查我的实例是否IndexWriter
是否有效,假设它可以被其他操作关闭。
我意识到如果我尝试在关闭时使用它,我会得到一个异常,但我不想失败,而是想检查一下是否需要创建一个新的IndexWriter
在我需要它之前,这样就不会发生故障。
在我看来这是一个简单的IsOpen
属性/方法将是一个明显的补充。
想法:
我想如果我能确保我的班级是唯一能够关闭学校的IndexWriter
,我可以简单地将其设置为null
当它关闭时,检查一下以确保它没有关闭null
每当我去使用它时,但这不会处理以下情况IndexWriter
自行关闭(如果现在或将来可能出现这种情况)。
另一个想法是,我可以将使用它的尝试包装在 try/catch 块中,并使用异常来指示它需要重新打开,但这似乎不是很有效/优雅。我该用什么方法来检验该方法的有效性IndexWriter
?
如果您遇到内存不足异常(或任何类型的异常,实际上),这可能是一个大问题。您尝试写入的更改可能不会被写入,您的索引甚至可能已损坏,具体取决于异常发生的时间/方式。
So an IndexWriter
处于错误状态是一种特殊情况,我想说它肯定需要使用异常,即 try/catch。
(我不认为你的问题是“重新打开编写器”。根据异常情况,您可能需要重新索引内容,可能从头开始。当然,您不应该期望在编写器中经常出现异常。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)