在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()
会丢弃分析器吗?如果没有,为什么呢?
答案 0 :(得分:1)
IndexWriter不会丢弃分析器。
它不会丢弃分析仪,因为它不能确保您不会在其他地方使用分析仪。它是通过构造函数获得的参考,其他IndexWriter实例可以在不知道的情况下使用它。
这与所有权有关;您创建了分析器,并允许编写者使用它。因此,处置分析仪是您的责任。