首页->FAQ->显示文章

Google
 

如何写Lucene的分析器?

译自:原文地址

只有一个例子:

public class MyAnalyzer extends Analyzer
{
    private static final Analyzer STANDARD = new StandardAnalyzer();

    public TokenStream tokenStream(String field, final Reader reader)
    {
        // do not tokenize field called 'element'
        if ("element".equals(field)) {
            return new CharTokenizer(reader) {
                protected boolean isTokenChar(char c) {
                    return true;
                }
            };
        } else {
            // use standard analyzer
            return STANDARD.tokenStream(field, reader);
        }
    }
}

综上所述,自定义分析器代码中,真实的实现是通过调用自定义的TokenFilter派生类实现的。
如果你希望自定义的分词类似StandardAnalyzer的调用行为,参照那么如下代码:

return new NameFilter(
        CaseNumberFilter(
                new StopFilter(
                        new LowerCaseFilter(
                                new StandardFilter(
                                        new StandardTokenizer(reader)
                        )
                ), StopAnalyzer.ENGLISH_STOP_WORDS)
        )
);

所属分类: [lucene] [Java]
tag: 分析器,

tinyfool发布于2009年12月04日 15:30