2015-06-22 72 views
3

我正在研究一個應用程序,該應用程序可以在大型數據存儲庫中對索引進行索引搜索。這是而不是服務器客戶端應用程序,其中服務器始終處於運行狀態,但是本機應用程序,每次按需求啓動Apache Lucene:如何將索引保存到文件中?

我想索引存儲庫中的文件一次,並將我的工作保存到文件中。然後,我希望我的應用程序的每個用戶都能夠從保存的文件中加載已創建的索引。

我看到「Lucene的在5分鐘內」索引創建的下列基本代碼:

StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_40); 
Directory index = new RAMDirectory(); 

IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_40, analyzer); 

IndexWriter w = new IndexWriter(index, config); 
addDoc(w, "Lucene in Action", "193398817"); 
addDoc(w, "Lucene for Dummies", "55320055Z"); 
addDoc(w, "Managing Gigabytes", "55063554A"); 
addDoc(w, "The Art of Computer Science", "9900333X"); 
w.close(); 


private static void addDoc(IndexWriter w, String title, String isbn) throws IOException { 
    Document doc = new Document(); 
    doc.add(new TextField("title", title, Field.Store.YES)); 
    doc.add(new StringField("isbn", isbn, Field.Store.YES)); 
    w.addDocument(doc); 
} 
  • 如何我現在可以保存到一個文件中的變量分析,指數配置
  • 我怎樣才能從保存的文件中加載它們,並將它們用於查詢?

回答

3

我有一個解決辦法 - 我將在這裏與你分享:

整個變化應採取,是不是使用RAMDirectory指數,只是用FSDirectory

實施例:

FSDirectory index = FSDirectory.open(Paths.get("C:\\temp\\index.lucene")); 

在上面的例子中,目錄C:\temp\index.lucene將被創建和索引將被寫入到其中。

現在我可以按以下步驟進行查詢索引,如圖中的「Lucene的5分鐘」: http://www.lucenetutorial.com/lucene-in-5-minutes.html

所以,如果我想運行其他應用程序的查詢,我應該只是在打開索引同樣的方式,我可以立即在其上運行查詢...無需再次索引文件...