我需要在StandardAnalyzer上调用.Dispose(),还是在IndexWriter上调用.Dispose()处置其后代?

时间:2018-11-16 16:22:52

标签: lucene.net dispose idisposable

在Lucene.Net中初始化IndexWriter看起来像这样:

var analyzer = new Lucene.Net.Analysis.Standard.StandardAnalyzer(version);
var indexWriterConfig = new Lucene.Net.Index.IndexWriterConfig(version, analyzer);
Index = new Lucene.Net.Index.IndexWriter(luceneDir, indexWriterConfig);

也就是说,没有分析器就无法实例化IndexWriter。因此,我希望在IndexWriter上调用.Dispose()会释放其子项,包括分析器。但是浏览代码,到目前为止,我还没有看到这种情况。我错过了吗?

所以:在IndexWriter上调用.Dispose()会丢弃分析器吗?如果没有,为什么呢?

1 个答案:

答案 0 :(得分:1)

IndexWriter不会丢弃分析器。

它不会丢弃分析仪,因为它不能确保您不会在其他地方使用分析仪。它是通过构造函数获得的参考,其他IndexWriter实例可以在不知道的情况下使用它。

这与所有权有关;您创建了分析器,并允许编写者使用它。因此,处置分析仪是您的责任。