3.3.4. Tokenizers(分词器)

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

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

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

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

Word Oriented Tokenizers(整词分词器)

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

Standard Tokenizerarrow-up-right (标准分词器)

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

Letter Tokenizerarrow-up-right

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

Lowercase Tokenizerarrow-up-right(小写分词器)

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

Whitespace Tokenizerarrow-up-right

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

UAX URL Email Tokenizerarrow-up-right

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

Classic Tokenizerarrow-up-right

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

Thai Tokenizerarrow-up-right(泰语分词器)

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

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

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

N-Gram Tokenizerarrow-up-right

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

Edge N-Gram Tokenizerarrow-up-right

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

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

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

Keyword Tokenizerarrow-up-right

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

Pattern Tokenizerarrow-up-right(正则分词器)

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

Path Tokenizerarrow-up-right(路径层次分词器)

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

Last updated

Was this helpful?