我需要打电话吗.在StandardAnalyzer上执行Dispose(),或执行.IndexWriter上的Dispo



在Lucene中初始化IndexWriter。Net看起来是这样的:

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);

也就是说,没有Analyzer就无法实例化IndexWriter。因此,我希望在IndexWriter上调用.Dispose()会处理它的子级,包括Analyzer。然而,浏览代码时,我还没有看到这种情况发生——到目前为止。我错过了吗?

那么:在IndexWriter上调用.Dispose()会释放Analyzer吗?如果不是,为什么不呢?

IndexWriter不处理分析器。

它不会处理分析器,因为它不能确定你不会在其他地方使用分析器。它是通过构造函数获得的引用,它可以在不知情的情况下被其他IndexWriter实例使用。

这关乎所有权;您创建了分析器并让作者使用它。因此,您有责任处理分析器。

最新更新