elasticsearch(三)分词器

Analysis 与 Analyzer

  • Analysis - 文本分析是把全文本转化为一系列单词(token/term)的过程,也叫分词
  • Analysis 是通过 Analyzer 实现的
    • 可以使用 elasticsearch 自己内置的,也可以配置第三方的
  • 除了在数据写入的时候转换词条,匹配 Query 语句的时候也需要使用相同的分析器进行查询

Analyzer的组成

  • 分词器是专门处理分词的组件,由三部分组成
    • Character Filters(针对原始文本进行处理,如去除 html)
    • Tokenizer(按照规则切分为单词)
    • Token Filter(将切分的单词进行加工/小写/删除分割词/增加同义词 )

Elasticsearch 的内置分词器

  • Standard Analyzer - 默认分词器,按词切分,小写处理
  • Simple Analyzer - 按照非字母切分(符号被过滤),小写处理
  • Stop Analyzer - 停用词过滤(the/a/is),小写处理
  • Whitespace Analyzer - 按照空格切分,不转小写
  • Keyword Analyzer - 不分词,输入即为一个 term 输出
  • Patter Analyzer - 正则表达式,默认 \W+(非字符分割)
  • Language - 提供30+种常见语言的分词器
    • Customer Analyzer - 自定义分词器

使用_analyzer API

  • 直接指定 Analyzer 进行测试
GET /_analyze
{
  "analyzer": "standard",
  "text":"es is nb"
}

得到结果:

{
  "tokens" : [
    {
      "token" : "es",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "is",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "<ALPHANUM>",
      "position" : 1
    },
    {
      "token" : "nb",
      "start_offset" : 6,
      "end_offset" : 8,
      "type" : "<ALPHANUM>",
      "position" : 2
    }
  ]
}
  • 指定索引的字段进行测试
POST movies/_analyze
{
	"field":"title",
	"text":"Love Live! The School Idol Movie"
}

得到结果:

{
  "tokens" : [
    {
      "token" : "love",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "live",
      "start_offset" : 5,
      "end_offset" : 9,
      "type" : "<ALPHANUM>",
      "position" : 1
    },
    {
      "token" : "the",
      "start_offset" : 11,
      "end_offset" : 14,
      "type" : "<ALPHANUM>",
      "position" : 2
    },
    {
      "token" : "school",
      "start_offset" : 15,
      "end_offset" : 21,
      "type" : "<ALPHANUM>",
      "position" : 3
    },
    {
      "token" : "idol",
      "start_offset" : 22,
      "end_offset" : 26,
      "type" : "<ALPHANUM>",
      "position" : 4
    },
    {
      "token" : "movie",
      "start_offset" : 27,
      "end_offset" : 32,
      "type" : "<ALPHANUM>",
      "position" : 5
    }
  ]
}
  • 自定义分词器进行测试
POST /_analyze
{
	"tokenizer":"standard",
	"filter":["lowercase"],
	"text":"Matering Elasticsearch"
}

得到结果:

{
  "tokens" : [
    {
      "token" : "matering",
      "start_offset" : 0,
      "end_offset" : 8,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "elasticsearch",
      "start_offset" : 9,
      "end_offset" : 22,
      "type" : "<ALPHANUM>",
      "position" : 1
    }
  ]
}

Standard Analyzer

  • 默认分词器
  • 按词切分
  • 小写处理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9OBHOjTv-1612083615162)(/Users/felix/Library/Application Support/typora-user-images/image-20210131162243567.png)]

中文分词器

ICU Analyzer

  • 提供了 Unicode 的支持,更好的支持了亚洲语言
sudo bin/elasticsearch-plugin install analysis-icu

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u6SPpGIj-1612083615163)(/Users/felix/Library/Application Support/typora-user-images/image-20210131163416151.png)]

IK

  • 支持自定义词库,支持热更新分词字典

THULAC

  • 清华大学实验室开发
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值