关于SearcherManager在IndexWriter中的用法,我有几个基本问题。在SearchManager中使用IndexWriter
我需要定期在应用程序中重新构建Lucene索引,目前它发生在除提供搜索请求的线程以外的其他线程中。
- 我可以在应用程序的生命周期中使用相同的IndexWriter实例来定期重建索引吗?目前,我在创业期间创建/打开一次,每当建立新索引时致电
IndexWriter#commit
。 - 我正在使用
SearcherManager
来为每个搜索请求获取并发布IndexSearcher
实例。在定期建立索引之后,我打算使用SearcherManager#maybeRefresh
方法来刷新IndexSearcher
实例.SearcherManager实例在启动过程中也会创建一次,并且我打算彻底维护它。 - 在整个应用程序的整个生命周期中,我都没有关闭
IndexWriter
或SearcherManager
。
现在的问题,
- 如果我每一次我需要重建索引的时间创建一个新的IndexWriter,将
SearcherManager#maybeRefresh
能够检测到,这是一个新的IndexWriter实例?或者我需要使用新创建的IndexWriter创建一个新的SearcherManager? - 什么用
IndexWriter
创建SearcherManager
例如,使用DirectoryReader
或使用Directory
创建它创造的区别吧?