Tokenizer是自定义分词语,他将原始文本按照一定规则切分为单词,自带的有:
Standard 将单词转换为小写, 并去除标点符号
Simple 根据非字母字符来分割文本信息,然后转为小写,该分词器会去掉数字类型的字符
Whitespace 以空格来分割
Stop 在Simple的基础上增加了去掉英文中的常用单词,比如 The, a
Keyword 把整个输入作为一个单独词汇单元,不进行分词
Pattern 通过正则表达式分词
Language 解析特殊文本的分词器,比如阿拉伯语,没有中文
Token Filters
对Tokenizer输出的单词进行添加,删除,修改操作,自带的有:
Lowercase 将单词转换为小写
Stop 删除停词,比如The, a
ngram 切割单词 min_gram 最小切割 max_gram 最大切割
Synonym 添加近义词
例如下面语句:
POST _analyze
{
"text": "Thank you very much!",
"tokenizer": "standard",
"filter": [
"stop",
"lowercase",
{
"type":"ngram",
"min_gram":4,
"max_gram":4
}
]
}
返回结果为:
{
"tokens" : [
{
"token" : "than",
"start_offset" : 0,
"end_offset" : 5,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "hank",
"start_offset" : 0,
"end_offset" : 5,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "very",
"start_offset" : 10,
"end_offset" : 14,
"type" : "<ALPHANUM>",
"position" : 2
},
{
"token" : "much",
"start_offset" : 15,
"end_offset" : 19,
"type" : "<ALPHANUM>",
"position" : 3
}
]
}
可以看到 输入的字符串在根据tokenizer与filter被转为小写,去掉标点后,根据ngram被分割成4个字符串一组