Lunece源码-Analyzer

分词器的核心类Analyzer,TokenStream,Tokenizer,TokenFilter.

Analyzer

Lucene中的分词器有StandardAnalyzer,StopAnalyzer,SimpleAnalyzer,WhitespaceAnalyzer.

TokenStream

分词器做好处理之后得到的一个流,这个流中存储了分词的各种信息.可以通过TokenStream有效的获取到分词单元

Tokenizer

主要负责接收字符流Reader,将Reader进行分词操作.有如下一些实现类

KeywordTokenizer,

standardTokenizer,

CharTokenizer

|----WhitespaceTokenizer

|----LetterTokenizer

|----LowerCaseTokenizer

TokenFilter

将分好词的语汇单元进行各种各样的过滤.

看一下官方给出的Analyer的定义

An Analyzer builds TokenStreams, which analyze text. It thus represents a policy for extracting
index terms from text.
首先为了提升效率,在同一个线程中的Tokenream是可以复用的。在新建一个Analyer时候会指定复用的策略。

 private final ReuseStrategy reuseStrategy;
 ......
 public Analyzer(ReuseStrategy reuseStrategy) {
    this.reuseStrategy = reuseStrategy;
  }

在ReuseStrategy中存在两个变量。其中通过Analyzer可以获取TokenStreamComponents,在TokenStreamComponents封装了TokenStream 以及Tokenzier。下面的fieldName为复用

analyzer: Analyzer from which to get the reused components. 
fieldName: Name of the field whose reusable TokenStreamComponents

现在我们看看TokenStream抽象类,其相当于Token的迭代器,获取token

TokenStream enumerates the sequence of tokens, either from Fields of a Document or from query text.

其中TokenStream存在以下几种:

  • LegacyNumericTokenStream: indexing numeric values
  • BinaryTokenStream: returns a BytesRef as single token
  • BytesRefIteratorTokenStream
  • CannedBinaryTokenStream: TokenStream from a canned list of binary (BytesRef-based)
    tokens.
  • CannedTokenStream: TokenStream from a canned list of Tokens.
  • CompletionTokenStream: converts a provided token stream to an automaton
  • EmptyTokenStream:An always exhausted token stream.

而Tokenizer也是一种TokenStream,在lucene中存在以下几种分词:

  • CharTokenizer
  • LetterTokenizer
  • LowerCaseTokenizer
  • WhitespaceTokenizer
  • SmartChineseAnalyzer/HMMChineseTokenizer
  • CJKTokenizer
  • EdgeNGramTokenizer
  • KeywordTokenizer
  • NGramTokenizer
  • SentenceTokenizer
  • StandardTokenizer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值