lucene.net - 我需要在 StandardAnalyzer 上调用 .Dispose(),还是在 IndexWriter 上调用 .Dispose() 处理其后代?
问题描述
在 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。所以,我希望调用.Dispose()
IndexWriter 会处理它的孩子,包括分析器。但是浏览代码我没有看到这种情况发生 - 到目前为止。我错过了吗?
那么:调用.Dispose()
IndexWriter 是否会释放分析器,如果没有,为什么不呢?
解决方案
IndexWriter 不会处理分析器。
它不会处理分析仪,因为它不能确定您不会在其他地方使用分析仪。它是通过构造函数获得的引用,它可以在它不知道的情况下被其他 IndexWriter 实例使用。
这是关于所有权;您创建了分析器并让作者使用它。因此,您有责任处理分析仪。
推荐阅读
- php - laravel livewire - 更新电线时无效的列名“id”:模态
- python - 针对某类矩阵优化Crout算法
- mongodb - 使用 queryString 的 mongodb 地图集搜索中的日期范围不起作用
- excel - 对多行使用求解器
- typescript - Office 脚本“无法加载 [代码] [库]”错误
- powershell - PowerShell - 表达式只允许作为管道中的第一个元素
- php - 如何在php(多维数组)中从api解码json
- laravel - 给出目标类路由器的 PHP 代码覆盖率命令不存在错误
- c# - 在结构图中注入 IHttpClientFactory
- python - 使用 For Loop 运行多个功能/模型属性(python)