3.3.4. Tokenizers(分词器)

一个tokenizer(分词器)接收一个字符流,将之分割为独立的 tokens(词元,通常是独立的单词),然后输出tokens流。

例如,whitespacetokenizer遇到空白字符时分割文本。它会将文本 "Quick brown fox!" 分割为 [Quick,brown,fox!]。

tokenizer(分词器)还负责记录各个term(词条)的顺序或position位置(用于phrase 短语和wordproximity 词近邻查询),以及term(词条)所代表的原始word(单词)的start(起始)和end(结束)的character offsets(字符偏移量)(用于高亮显示搜索的内容)。

Elasticsearch提供了很多内置的分词器,可以用来构建custom analyzers(自定义分词器)。

Word Oriented Tokenizers(整词分词器)

下列的分词器通常是将整个文本分为独立的单词 :

Standard Tokenizer (标准分词器)

standard tokenizer根据Unicode文本分割算法,以单词边界分割文本。它删除大多数标点符号。 它是大多数语言的最佳选择。

Letter Tokenizer

letter tokenizer遇到非字母时分割文本。

Lowercase Tokenizer(小写分词器)

lowercase tokenizer类似 letter tokenizer,遇到非字母时分割文本,同时会将所有分割后的词元转为小写。

Whitespace Tokenizer

whitespace tokenizer遇到空白字符时分割位文本。

UAX URL Email Tokenizer

uax_url_email tokenizer类似 standard tokenizer,只不过它会把URLemail 地址当成一个词元。

Classic Tokenizer

classic tokenizer是一个基于英语语法的分词器。

Thai Tokenizer(泰语分词器)

thai tokenizer将泰文文本分成单词。

Partial Word Tokenizers(局部单词分词器)

这些分词器将文本或者单词分割为小片段,用于 partialword(局部单词)的匹配 :

N-Gram Tokenizer

ngram tokenizer遇到指定的字符(如 : 空白、标点)时分割文本,然后返回各个单词的n-grams(连续字符的滑动窗口)。例如 quick → [qu,ui,ic,ck]。

Edge N-Gram Tokenizer

edge_ngram tokenizer 遇到指定的字符(如 : 空白、标点)时分割文本,然后它返回锚定到单词开头的n-gram。例如 quick → [q,qu,qui,quic,quick]。

Structured Text Tokenizers(结构化文本分词器)

下列的分词器通常用于结构化文本,如 身份证、邮箱、邮政编码、文件路径 :

Keyword Tokenizer

keyword tokenizer什么都没做,它将整个文本当成一个 词元。一般和token过滤器(例如 lowercase)一起使用,规范分词后的词元。

Pattern Tokenizer(正则分词器)

pattern tokenizer使用正则表达式,在遇到单词分隔符时分割文本,或者将捕获到的匹配文本当成一个词元。

Path Tokenizer(路径层次分词器)

path_hierarchy tokenizer把分层的值看成是文件路径,用路径分隔符分割文本,输出树上的各个节点。例如 /foo/bar/baz → [/foo,/foo/bar,/foo/bar/baz]。

Last updated