对不起这个简单的问题,但似乎没有任何明显的方法.根据文档,建议IndexWriter在内存中保留一个可以反复使用以进行更新的单个实例,而不是为每个更改打开和关闭一个实例(这要花费更多).
但是,文档还指出,IndexWriter如果发生异常(例如OutOfMemoryException),应该关闭.
因此,我需要一些方法来检查我的实例IndexWriter是否有效,假设它可以被其他一些操作关闭.
我意识到如果我在关闭时尝试使用它会得到异常,但是我想检查是否需要IndexWriter在需要之前创建一个新的,所以不会发生故障.
在我看来,一个简单的IsOpen属性/方法将是一个明显的补充.
思考:
我想如果我能确保我的班级是唯一能够关闭它的东西IndexWriter,我可以简单地将它设置null为关闭它时只需检查以确保它不是null每当我使用它时,但这不会处理案例其中IndexWriter关闭本身(如果这样的情况下是可能的现在或将来).
另一个想法是我可以尝试在try/catch块中使用它并使用异常来指示它需要重新打开,但这似乎不是非常有效/优雅.我会用什么方法来测试IndexWriter?的有效性?
如果您遇到内存不足异常(或任何类型的异常,实际上),这可能是一个大问题。您尝试写入的更改可能不会被写入,您的索引甚至可能已损坏,具体取决于异常发生的时间/方式。
因此,IndexWriter处于错误状态是一种特殊情况,我想说它肯定需要使用异常,即 try/catch。
(我不认为你的问题是“重新打开编写器”。根据异常情况,你可能需要重新索引内容,可能从头开始。当然,你不应该期望在编写器中经常出现异常。)
| 归档时间: |
|
| 查看次数: |
2582 次 |
| 最近记录: |