您的位置首页生活百科

Elasticsearch 十三、分词器Tokenizer

Elasticsearch 十三、分词器Tokenizer

的有关信息介绍如下:

Elasticsearch 十三、分词器Tokenizer

全文搜索引擎对文档进行分析,首先通过Tokenizer得到Token,Token通过Token Filter获得Term。

Token有称为标记、词元,Term称为词。ES中Tokenizer大都认为是分词器。这里我们主要说Tokenizer,不看Filter,所以本文中的Token我们就称为是词。

1、标准分词器 Standard Tokenizer

一个标准的分词器提供基于语法的分词器,那是一个适合大部分欧洲语言文档的很好的分词器。分词器实现Unicode文本分割算法,该分割算法在Unicode Standard Annex #29中指定。

2、连词分词器 NGram Tokenizer

如果词的长度大于最短词长度则分词,则依次分成最小长度递进到最大长度的词。

例如:中华人民共和国min_gram=2,max_gram=3。结果:中华、中华人、华人、华人民、人民、人民共、民共、民共和、共和、共和国、和国。

3、边际连词分词器 Edge NGram Tokenizer

该分词器和nGram分词器很类似,但是分的词仅仅包含该词的开始部分。

分词属性和NGram Tokenizer的一样。

例如:中华人民共和国 全国人大min_gram=2,max_gram=5,"token_chars":["letter","digit"]

结果:中华、中华人、中华人民、中华人民共、全国、全国人、全国人大

注意:单个词'中华人民共和国'的长度大于5,'和国'不会出现在分词结果中。

4、关键字分词器Keyword Tokenizer

keyword分词器输出和它接收到的相同的字符串。即不分词,可以设置关键字的长度buffer_size默认256。

5、字符分词器Letter Tokenizer

字符(letter)类型分词器将文本按非字符(non-lentter)进行分词。这就是说,它定义临近的最大长度的字符为一个词。注意,这个适合大部分欧洲的语言,但是对一些亚洲的语言来说就很糟糕了,它们的词不是以空格来分割的。

6、小写分词器Lowercase Tokenizer

lowercase将词全部转换成小写,其他的同letter Tokenizer

7、空格分词器Whitespace Tokenizer

以空格来分词

8、模式分词器/正则分词器 Pattern Tokenizer

根据正则表达式的匹配规则来分词。

groupset to-1(the default) is equivalent to "split". Using group >= 0 selects the matching group as the token. For example, if you have:

pattern = '([^']+)'group = 0input = aaa 'bbb' 'ccc'

the output will be two tokens:'bbb'and'ccc'(including the'marks). With the same input but using group=1, the output would be:bbbandccc(no'marks).

9、标准Email URL分词器 UAX Email URL Tokenizer

和标准分词器一样,但是把email和url当作一个词。

UAX Email URL Tokenizer有人翻译为'不拆分email、url的分词器',觉得不太恰当,UAX个人认为是Unicode Standard Annex,见标准分词器中。

10、路径层次分词器 Path Hierarchy Tokenizer

例如:/something/something/else

结果:/something、/something/something、/something/something/else

默认定界符: /

11、典型的编译器Classic Tokenizer

classic分词器提供基于语法的分词器,这对英语文档是一个很好的分词器。

12、泰语分词器 Thai Tokenizer

对泰文进行分词,如果用在其他语言上同标准分词器。