2012-11-26 77 views
0

我正在使用Lucene在Android中創建一個字典應用程序。索引和搜索時,我是否需要提供StandardAnalyzer的相同實例,還是可以只爲這兩個實例提供新實例?索引和搜索時,Lucene是否需要相同的分析器實例?

例如,當我要創建一個索引,我這樣做:

Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36); 
IndexWriter writer = new IndexWriter(directory, 
        new IndexWriterConfig(Version.LUCENE_36, analyzer)); 

,然後在頂部的文件,讓搜索詞的最好的片段時,我這樣做:

TokenStream ts = TokenSources.getAnyTokenStream(indexSearcher.getIndexReader(), 
        hits[i].doc, "definition", analyzer); 

或者我可以只使用analyzer替換new StandardAnalyzer(Version.LUCENE_36)的所有用法嗎?我這樣問是因爲我的索引和搜索任務是在不同的類中,我想保留我通過實例傳遞的最小數量的對象。

回答

0

您絕對可以使用同一個分析器/標記器的不同實例。

的唯一要求是,以確保它們在搜索和索引期間表現完全相同相同的方式(例如,應使用相同的對象構造器,具有數據訪問等相同的水平)。

+0

要完成答案,除了線程安全性(我不確定)之外,還可以在索引和搜索中重複使用相同的分析器實例。我相信這是原來的問題。 –