IMPORTANT: This documentation is no longer updated. Refer to Elastic's version policy and the latest documentation.

标准分词器

edit

分词器 接受一个字符串作为输入,将这个字符串拆分成独立的词或 语汇单元(token) (可能会丢弃一些标点符号等字符),然后输出一个 语汇单元流(token stream)

有趣的是用于词汇 识别 的算法。 whitespace (空白字符)分词器按空白字符 —— 空格、tabs、换行符等等进行简单拆分 —— 然后假定连续的非空格字符组成了一个语汇单元。例如:

GET /_analyze?tokenizer=whitespace
You're the 1st runner home!

这个请求会返回如下词项(terms): You'rethe1strunnerhome!

letter 分词器 ,采用另外一种策略,按照任何非字符进行拆分, 这样将会返回如下单词: Yourethestrunnerhome

standard 分词器使用 Unicode 文本分割算法 (定义来源于 Unicode Standard Annex #29)来寻找单词 之间 的界限,并且输出所有界限之间的内容。 Unicode 内含的知识使其可以成功的对包含混合语言的文本进行分词。

标点符号可能是单词的一部分,也可能不是,这取决于它出现的位置:

GET /_analyze?tokenizer=standard
You're my 'favorite'.

在这个例子中,You're 中的撇号被视为单词的一部分,然而 'favorite' 中的单引号则不会被视为单词的一部分, 所以分词结果如下: You'remyfavorite

uax_url_email 分词器和 standard 分词器工作方式极其相同。 区别只在于它能识别 email 地址和 URLs 并输出为单个语汇单元。 standard 分词器则不一样,会将 email 地址和 URLs 拆分成独立的单词。 例如,email 地址 joe-bloggs@foo-bar.com 的分词结果为 joebloggsfoobar.com

standard 分词器是大多数语言分词的一个合理的起点,特别是西方语言。 事实上,它构成了大多数特定语言分析器的基础,如 englishfrenchspanish 分析器。 它也支持亚洲语言,只是有些缺陷,你可以考虑通过 ICU 插件的方式使用 icu_tokenizer 进行替换。