關於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
創建它創造的區別吧?