ElasticSearch分词器应用

分词器的使用

类型为keyword表示不分词,要想分词,字段类型必须为text

一、指定分词器

  • 设置mapping,新建一个索引article并且指定字段使用的分词器
<!--设置指定分词器的索引,字段的类型必须为text-->
PUT article
{
  "mappings":{
    "properties":{
      "content":{
        "type":"text",
        <!--hanlp_index是安装了hanlp分词器插件后自带的分词器-->
        "analyzer":"hanlp_index"
      }
    }
  }
}
查询
  • 查询
GET article/_search
{
    "query":{
        "match":{
            "content":"查询内容"
        }
    }
}
查看分词效果
  • 查看索引使用的分词器分词效果(第一种)
GET article/_analyze
{
    "field":"content",
    "text":["将这一句话进行分词","看看效果如何"]
}
  • 直接使用分词器查看分词效果(第二种)
GET _analyze
{
    "analyzer":"分词器",
    "text":["将这一句话进行分词"]
}

二、自定义拼音分词器

1.新建索引,设置settings

新建一个索引stars,并且设置settings。

anaylzer是由三部分组成:

  1. Character Filter:将文本的html标签剔除
  2. Tokenizer:按照规则进行分词,在英文中按照空格分词
  3. Token Filter:去掉stop word(停顿词,a,the,is),然后转小写
PUT stars
{
  "settings":{
    "analysis":{
      "analyzer":{
      <!--自定义的分词器名称-->
        "my_analyzer":{
         <!--定义分词器的tokenizer部分-->
          "tokenizer":"my_token_filter"
        }
      },
      "tokenizer":{
        "my_token_filter":{
          "type":"pinyin",
         <!--可选参数-->
          "keep_original":true,
          "keep_joined_full_pinyin":true,
          "keep_full_pinyin":"false"
        }
      }
    }
  }
}

此时定义好了一个my_analyzer的分词器,是基于pinyin分词器,其中的可选参数的作用参考github文档

1.1 查看自定义的分词器效果

第三种

GET stars/_analyze
{
	"analyzer":"my_analyzer",
	"text":["测试分词的效果"]
}
2.设置mapping
PUT stars/_mapping
{
  "properties":{
    "name":{
      "type":"text",
      <!--指定分词器-->
      "analyzer":"my_analyzer"
      
    }
  }
}

此时设置mapping的方式不能使用一中的方式,因为在设置完settings以后,索引的结构已经存在maping(使用GET stars/_mapping查看如下)
在这里插入图片描述
如果依然采用一中的方式会显示错误
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值