Elastic Search个人学习(4) 分词器 2 tokenizer与token filter

尚宏硕
2023-12-01

Tokenizer与Token Filter

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个字符串一组

 类似资料: