我是新來的Lucene
在Java中。我遇到了一個很奇怪的問題:爲什麼我不能刪除索引目錄在Lucene之後我讓搜索器爲空?
該服務部署在tomcat(struts 2)
。當服務啓動時,它將創建索引和搜索器實例來提供搜索服務。
然後我想更新索引而不停止服務。所以我創建了另一個索引目錄,在此之後,我使用新的索引目錄前提到搜索者。然後刪除舊的目錄。但問題來了,我無法刪除舊的目錄。 The message says the directory is still being used by an application.
但是爲什麼?我已經切換了索引目錄並關閉了搜索者的前indexReader
。我錯過了什麼嗎? Lucene
的版本是4.3。
錯誤消息如下:
Unable to delete file: D:\Projects\.metadata\.me_tcat\webapps\nlp\WEB-INF\data\[email protected]\diag\_0.nvd
不過,我已經叫indexReader.close()
和indexDirectory.close()
。
順便說一句,有沒有什麼方法可以找到哪個線程在java中使用目錄?
如果我困擾你,我很抱歉我的英語。
實際上,當我完成索引文檔時,我調用IndexWriter.close(),然後使用新索引文件夾初始化搜索器。 –
然後,我想刪除舊的索引文件夾,出現消息:「文件夾中的文件正在被應用程序使用」。但搜索者正在使用新的索引文件夾,我不知道爲什麼我不能刪除舊的文件夾 –
你說當服務啓動時它會創建一個新的'IndexWriter'和'IndexSearcher',然後創建一個新的索引文件夾,並希望刪除舊的,所以你不能刪除舊的,除非你調用'IndexWriter.close()'和'IndexSearcher.close()' – Salah