ElasticSearch使用Analyzer进行分词

ElasticSearch使用Analyzer进行分词

Analysis 与 Analyzer

  • Analysis:

    • 文本分析是把全文本转换成一系列单词(term / token) 的过程,也叫分词
    • Analysis 是通过Analyzer来实现的
      • 可使用ElasticSearch内置的分词器
      • 也可按需定制化分词器
    • 除了在数据写入时转换词条,匹配Query语句的时候也需要用相同的分词器对查询语句进行分词

    如:Elasticsearch Server 会被分成 ElasticsearchServer

  • Analyzer :

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

    比如:

    文档:Mastering Elasticsearch & Elastersearch in Action

    分词后: master,elastersearch,action

使用 _analyze API

Standard Analyzer

Standard Analyzer 是ES默认的分词器:

  • 按词切分
  • 小写处理
  • stop words 默认关闭
// 使用_analyze测试
GET /_analyze
{
  "analyzer": "standard",
  "text":"Mastering Elasticsearch,elasticsearch in Action"
}

分词结果:

{
  "tokens" : [
    {
      "token" : "mastering",
      "start_offset" : 0,
      "end_offset" : 9,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "elasticsearch",
      "start_offset" : 10,
      "end_offset" : 23,
      "type" : "<ALPHANUM>",
      "position" : 1
    },
    {
      "token" : "elasticsearch",
      "start_offset" : 24,
      "end_offset" : 37,
      "type" : "<ALPHANUM>",
      "position" : 2
    },
    {
      "token" : "in",
      "start_offset" : 38,
      "end_offset" : 40,
      "type" : "<ALPHANUM>",
      "position" : 3
    },
    {
      "token" : "action",
      "start_offset" : 41,
      "end_offset" : 47,
      "type" : "<ALPHANUM>",
      "position" : 4
    }
  ]
}

安装分词器

我的ElasticSearch是用docker部署的,下面说下安装analysis-icu 分词器的方法

docker exec -it elasticsearch7.6.0(你的服务名) /bin/bash
cd bin
elasticsearch-plugin install analysis-icu

然后重启服务即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值