NGram Tokenizer
ngram tokenizer 遇到指定的字符(如 : 空白、标点)时分割文本,然后返回指定长度的每个单词的 N-grams。
N-grams 就像一个滑动窗口在单词上移动,是一个连续的指定长度的字符序列。 通常用于查询不使用空格或具有较长复合词(如德语)的语言。
输出示例
使用默认设置,ngram tokenizer将初始文本视为单个词元,并生成最小长度为1且最大长度为2的 N-gram:
上面的句子会生成如下的词元:
配置
min_gram | 以 gram 为单位的最小字符长度。 默认为1。 |
max_gram | 以 gram 为单位的最大字符长度。 默认为2。 |
token_chars | 应包含在词元中的字符类。 Elasticsearch将分割不属于指定类的字符。 默认为[](保留所有字符)。字符类可能是以下任何一种: 单词 - 例如a,b,ï或京 数字 - 例如3或7 空格 - 例如“”或“ n” 标点符号 - 例如! 要么 ” 符号 - 例如$或√ |
提示:
通常,将min_gram和max_gram设为同样的值。值越小,匹配到的文档越多,但是匹配的质量越差。值越大,越能匹配到指定的文档。3 是一个不错的初始值。
配置示例
下面的例子中,我们配置 ngram tokenizer处理单词和数字,生成 tri-grams (grams 为 3
):
输出为:
Last updated