您的位置:首页 > 其它

Lucene源码解析--Analyzer之Tokenizer

2014-07-03 11:55 441 查看
Analyzer包含两个核心组件,Tokenizer以及TokenFilter。两者的区别在于,前者在字符级别处理流,而后者则在词语级别处理流。Tokenizer是Analyzer的第一步,其构造函数接收一个Reader作为参数,而TokenFilter则是一个类似的拦截器,其参数可以是TokenStream、Tokenizer。
Tokenizer的类结构图:




各类的介绍:
1.Tokenizer

输入为Reader的TokenStream,其子类必须实现incrementToken()函数,并且在设置属性(attributes) 必须调用AttributeSource中的clearAttributes()方法。
2.CharTokenizer

一个简单的,基于字符(character)的tokenizers。

protected abstract boolean isTokenChar(int c);//判断是否应该加入token

 protected int normalize(int c) {

    return c;

  }//对每一个即将加入到token的字符进行处理,默认不进行任何操作,直接返回(

其子类可能使用此方法,比如lowercase tokens


3.LetterTokenizer

一个将文本在非字母的地方进行拆分的tokenizer,对于亚洲语系来说并不适合,因为其

大部分单词并不是以空格划分的。

  protected boolean isTokenChar(int c) {

    return Character.isLetter(c);//收集符合要求的字符

  }
4.LowerCaseTokenizer

一个将文本在非字母的地方拆分并转换成小写的Tokenizer,其作用类似于LetterTokenizer与LowerCaseFilter的组合。

  protected int normalize(int c) {

    return Character.toLowerCase(c);//字母转换成小写

  }

5.WhitespaceTokenizer

一个在空白处对文本进行拆分的tokenizer。

  protected boolean isTokenChar(int c) {

    return !Character.isWhitespace(c);//判断字符是否为空白

  }

6.KeywordTokenizer

将整个输入作为一个分词的tokenizer。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lucene solr solrj 源码
相关文章推荐