2016-08-24 23 views
0

我認爲分析器應該適用索引和搜索過程,是否正確?如果屬實,爲什麼在分析器中使用LowerCaseFilterFactory過濾器後,爲什麼我的文檔字段仍然有大寫字符?爲什麼在使用LowerCaseFilterFactory後文檔字段仍然具有大寫字符?

我使用Luke來檢查我的文檔字段。

這是我的相關代碼。

@Indexed 
@AnalyzerDef(name = "remarksAnalyzer", tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class) , filters = { 
     @TokenFilterDef(factory = LowerCaseFilterFactory.class), 
     @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = { 
       @Parameter(name = "language", value = "English") }) }) 
public class Book { 
    ... 
    @Field(store = Store.YES) 
    @Analyzer(definition = "remarksAnalyzer") 
    private String remarks; 
    ... 
} 

回答

3

您是否嘗試過使用小寫字母搜索您的索引?我很確定它會起作用。

事實是,如果您使用store = Store.YES,則會將未分析的字符串存儲在索引和分析的令牌中。例如,這可能允許您使用突出顯示:要獲得突出顯示的字符串,您需要原始值。

Luke可能向您顯示存儲的值而不是索引的令牌。

+0

是的,它確實有效,使用小寫和大寫的單詞搜索都會返回正確的結果。感謝您的解釋,它解決了我的困惑。 –

+0

我只是將索引導出到Luke中的一個文件中(_clicking菜單項Tools> Export index to XML_),並發現導出的文件包含分析值和原始值,如下所示:''和' mnY79bG2snM0Kq4QhCRR'。它應該驗證你的解釋。謝謝,紀堯姆。 –

相關問題