サーチ…
カスタムアナライザの作成
ほとんどの分析のカスタマイズは、TokenizerとTokenFiltersが定義されているcreateComponents
クラスにあります。
CharFiltersは、 initReader
メソッドで追加できます。
Analyzer analyzer = new Analyzer() {
@Override
protected Reader initReader(String fieldName, Reader reader) {
return new HTMLStripCharFilter(reader);
}
@Override
protected TokenStreamComponents createComponents(String fieldName) {
Tokenizer tokenizer = new StandardTokenizer();
TokenStream stream = new StandardFilter(tokenizer);
//Order matters! If LowerCaseFilter and StopFilter were swapped here, StopFilter's
//matching would be case sensitive, so "the" would be eliminated, but not "The"
stream = new LowerCaseFilter(stream);
stream = new StopFilter(stream, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
return new TokenStreamComponents(tokenizer, stream);
}
};
分析されたトークンを使って手動で反復する
TokenStream stream = myAnalyzer.tokenStream("myField", textToAnalyze);
stream.addAttribute(CharTermAttribute.class);
stream.reset();
while(stream.incrementToken()) {
CharTermAttribute token = stream.getAttribute(CharTermAttribute.class);
System.out.println(token.toString());
}
stream.close();
いくつかの属性が利用可能です。最も一般的なのはCharTermAttribute
で、分析された用語をStringとして取得するために使用されます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow