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遇到非字母时分割文本。
Lowercase Tokenizer(小写分词器)
lowercase tokenizer类似 letter tokenizer,遇到非字母时分割文本,同时会将所有分割后的词元转为小写。
whitespace tokenizer遇到空白字符时分割位文本。
uax_url_email tokenizer类似 standard tokenizer,只不过它会把URL和email 地址当成一个词元。
classic tokenizer是一个基于英语语法的分词器。
Thai Tokenizer(泰语分词器)
thai tokenizer将泰文文本分成单词。
Partial Word Tokenizers(局部单词分词器)
这些分词器将文本或者单词分割为小片段,用于 partialword(局部单词)的匹配 :
ngram tokenizer遇到指定的字符(如 : 空白、标点)时分割文本,然后返回各个单词的n-grams(连续字符的滑动窗口)。例如 quick → [qu,ui,ic,ck]。
edge_ngram tokenizer 遇到指定的字符(如 : 空白、标点)时分割文本,然后它返回锚定到单词开头的n-gram。例如 quick → [q,qu,qui,quic,quick]。
Structured Text Tokenizers(结构化文本分词器)
下列的分词器通常用于结构化文本,如 身份证、邮箱、邮政编码、文件路径 :
keyword tokenizer什么都没做,它将整个文本当成一个 词元。一般和token过滤器(例如 lowercase)一起使用,规范分词后的词元。
Pattern Tokenizer(正则分词器)
pattern tokenizer使用正则表达式,在遇到单词分隔符时分割文本,或者将捕获到的匹配文本当成一个词元。
Path Tokenizer(路径层次分词器)
path_hierarchy tokenizer把分层的值看成是文件路径,用路径分隔符分割文本,输出树上的各个节点。例如 /foo/bar/baz → [/foo,/foo/bar,/foo/bar/baz]。
Last updated