gpt4 book ai didi

java - 有关 IndexSearcher/IndexReader 和 Directory 的问题

转载 作者:行者123 更新时间:2023-12-01 12:02:07 24 4
gpt4 key购买 nike

我正在对使用 Lucene 版本 3.6.1 的现有代码库进行一些更改。

IndexSearcher 已针对每个搜索请求进行实例化。

 IndexReader reader = IndexReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);

已使用 RAMDirectory 并且 close方法尚未调用。

发生这种情况时,会定期重新索引并创建 RAMDirectory 的新实例。但现有的IndexReader#close方法还没有被调用。

以下是我的问题。

  1. 不调用 IndexReader 的 close 方法有什么影响?
  2. 不对 RAMDirectory 调用 close 方法有什么影响?
  3. 对索引阅读器的引用不会保存在任何地方。那么为了关闭它,我可以执行 IndexSearcher.ggetIndexReader().close() 吗?
  4. 是否有类似的方法来访问目录,以便我可以在重新索引时将其关闭?

最佳答案

问> 不调用 IndexReader 的 close 方法有什么影响?
A> 对于基于文件系统的索引,您可能会运行文件描述符。但如果所有 IndexSearcherIndexReader 都成为 GCable,那么这应该不是什么大问题。也就是说,如果您不关心偶尔的内存峰值,但这取决于您的使用模式。

问> 不调用 RAMDirectory 的 close 方法有什么影响?
A> 内部 map 不会被清除。同样,如果您丢弃 RAMDirectory 实例并重新创建它,也没什么大不了的。但我仍然会关闭它以避免隐秘的错误并可能帮助 GC。

问> 对索引阅读器的引用没有保存在任何地方。那么为了关闭它,我可以执行 IndexSearcher.getIndexReader().close() 吗?
A> 是的,IndexSearcher 创建后,它始终保留对原始 IndexReader 的引用,可以使用上述方法访问该原始 IndexReader

问>是否有类似的方法来访问目录,以便我可以在重新索引发生时将其关闭?
A> 不。您应该保留此引用。

关于java - 有关 IndexSearcher/IndexReader 和 Directory 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27918276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com