2013-03-18 126 views
1

想我保存了一組字符串(在Lucene的每個文件將是單個單詞),然後輸入一個詞W,我想檢索所有文件不僅匹配字W而且這些文件,其莖版本還W.使用Lucene搜索與詞幹啓用

匹配此外,假設輸入的詞W,我會想接這個案子的照顧那裏是這個詞的詞根版本相匹配W¯¯以及文檔。

會寫我自己的自定義分析,並返回一個PorterStemFilter足夠?我是否需要編寫這個類並在代碼中將其作爲分析器引用?

回答

2

寫有分析儀鏈中的詞幹應該足夠了一個自定義的分析。

下面是一個使用PorterStemFilter在Lucene的4.1

class MyAnalyzer extends Analyzer { 
    @Override 
    protected TokenStreamComponents createComponents(String fieldName, Reader reader) { 
    Tokenizer source = new LowerCaseTokenizer(version, reader); 
    return new TokenStreamComponents(source, new PorterStemFilter(source)); 
    } 
} 

請注意,您必須使用相同的自定義分析,同時查詢其用於索引以及示例代碼。

你可能會發現你的相應PorterStemFilter文檔中的Lucene版本的示例代碼。

+0

感謝。這有助於。我在這裏有一個疑問。如果兩個單詞出現在同一個單詞中,是不是會導致精度問題? – 2013-03-18 18:03:24

+1

是,利用所產生將改善的精確度爲代價召回。程序員/設計師應根據問題領域的特定要求作出決定。 – phani 2013-03-18 18:51:03