首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要在StandardAnalyzer上调用StandardAnalyzer(),还是调用IndexWriter上的.Dispose()处理它的后代?

我需要在StandardAnalyzer上调用StandardAnalyzer(),还是调用IndexWriter上的.Dispose()处理它的后代?
EN

Stack Overflow用户
提问于 2018-11-16 16:22:51
回答 1查看 174关注 0票数 2

在IndexWriter中初始化Lucene.Net如下所示:

代码语言:javascript
复制
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。因此,我希望在.Dispose()上调用IndexWriter会释放它的子程序,包括分析器。然而,浏览代码,我没有看到这种情况发生-到目前为止。我错过了吗?

那么:在.Dispose()上调用IndexWriter是否会释放分析器,如果没有,原因何在?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-24 19:49:38

IndexWriter不处理分析器。

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53341781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档