2017-03-04 17 views
0

我正在使用Lucene創建一個基於概念的圖像搜索引擎。首先,我打開我的數據庫並將其複製到RAM索引中。然後我編寫一個分析器來查找用戶輸入詞及其同義詞。最後,我想打開索引來獲得結果。在RAMDirectory中找不到任何分段*文件

getImage() - 用於呼叫addDoc()拷貝數據庫到我的索引

這是getImageResult()我想用得到的結果。我想也許這是錯誤。

但是,如果我刪除:

StandardAnalyzer analyzer = new StandardAnalyzer(); 
IndexWriterConfig config = new IndexWriterConfig(analyzer); 

IndexWriter iwriter = new IndexWriter(index, config); 
iwriter.commit(); 

這將引發一個異常:無段*在RAMDirectory找到的文件。 如果我保留這部分,我不能得到任何結果。

+0

請不要在屏幕截圖中提供您的代碼。將其複製到問題中。 – femtoRgon

回答

0

我不完全確定,但我假設你正試圖用第一個片段寫入索引,然後用第二個片段搜索它,對嗎?

您的getImageResult()方法在全新目錄中打開全新索引。以前寫入不同RAMDirectory的任何內容都無法在此處搜索。

您應該:

  • 利用兩地相同RAMDirectory,或
  • FSDirectory,與它將會被保存到文件系統中打開你的索引,可以重新打開。請參閱FSDirectory.open
相關問題