首页 > 其他分享 >elasticsearch添加拼音分词搜索

elasticsearch添加拼音分词搜索

时间:2023-03-18 18:11:38浏览次数:51  
标签:拼音 token start ik elasticsearch 分词器 offset 分词 es

分词器是es当中的一个组件,通俗来讲,就是将搜索的条件按照语义进行拆分,分词为多个词语,es会讲text格式的字段按照分词器的结果进行分词,并编排成倒排索引,正因为如此,es的查询速度才会很快,es当中本身就内置了很多分词器

分词器 作用
Standard ES的默认分词器,按单词分类并进行大小写处理
Simple 按照非字母区分,然后去除非字母并按小写进行处理
Stop 按照停顿词进行过滤并进行小写处理,停用词包括the a is
Whitespace 按照空格进行拆分
Patter 按照正则进行拆分,默认是\W+ ,代表非字母
Keyword 不进行分词,作为一个整体输出
es的默认分词器为Standard,对中文分词时会全部拆分为单个字并过滤掉特殊字符
说到分词器,不得不提及中文分词器ik,这里只描述es中的ik分词器

ik分词器

ikAnalyzrer是一个开源的,基于java语言开发的轻量级的中文分词工具包,新版本的ik分词器发展为面向java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认实现
ik分词器默认有两种分词模式:
ik_max_word(常用模式)将文本做最细粒度拆分
ik_smart 将文本做粗粒度拆分
ik_smart分词

GET book/_analyze
{
  "analyzer": "ik_smart",
  "text": ["武当山上张三丰"]
}
{
  "tokens" : [
    {
      "token" : "武当",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "山上",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "张三丰",
      "start_offset" : 4,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 2
    }
  ]
}

使用ik_max_word分词

GET book/_analyze
{
  "analyzer": "ik_max_word",
  "text": ["武当山上张三丰"]
}
{
  "tokens" : [
    {
      "token" : "武当山",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "武当",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "山上",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "张三丰",
      "start_offset" : 4,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "张三",
      "start_offset" : 4,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 4
    },
    {
      "token" : "三",
      "start_offset" : 5,
      "end_offset" : 6,
      "type" : "TYPE_CNUM",
      "position" : 5
    },
    {
      "token" : "丰",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "CN_CHAR",
      "position" : 6
    }
  ]
}

可以明显的看到ik_max_word拆分的更细一些,实际使用时一般写入数据时使用ik_max_word,查询数据时使用ik_smart(如果没有search_analyzer,默认使用analyzer)
一般安装了ik中文分词器可以满足大部分的场景,但是很多使用用户并不一定搜的是中文,输入法的原因可能输入的拼音,为了满足用户也为了搜索更加精准,扩展的分词器有拼音分词器、同义字分词器、繁体字转简体字等等,这里总结一下es使用拼音分词器
项目地址:https://github.com/medcl/elasticsearch-analysis-pinyin
源码大致原理为调用nlp工具包https://github.com/NLPchina
1、下载完项目之后需要根据自己当前的es版本选择代码分支

这里我的版本是7.17.4所以使用7.x这个分支的代码
2、修改pom.xml中的elasticsearch.version为自己的版本

3、mvn install之后在target文件夹elasticsearch-analysis-pinyin-xxx.jar复制到es安装目录plugins目录底下,解压之后后看到elasticsearch-analysis-pinyin-7.17.4.jar、 plugin-descriptor.properties和nlp-lang-1.7.jar

4、重启es,线上环境要注意
安装完成我们可以重构索引,使用pinyin分词器

标签:拼音,token,start,ik,elasticsearch,分词器,offset,分词,es
From: https://www.cnblogs.com/LiuFqiang/p/17231398.html

相关文章

  • elastic search ik分词器安装
    目录elasticsearchik分词器安装ik安装下载地址安装ik分词器elasticsearchik分词器安装ik安装下载地址下载ES版本对应的分词器即可https://github.com/medcl/elast......
  • elasticsearch 安装常见报错
    目录elasticsearch安装常见报错报错信息问题解决系统安装场景下解决docker-compose安装场景下解决elasticsearch安装常见报错报错信息memorylockingrequestedfore......
  • ElasticSearch 实现分词全文检索 - filter查询
    目录ElasticSearch实现分词全文检索-概述ElasticSearch实现分词全文检索-ES、Kibana、IK安装ElasticSearch实现分词全文检索-Restful基本操作ElasticSearch......
  • Springboot 整合 elasticsearch 8.x版本冲突
    Springboot整合elasticsearch版本冲突Springboot整合elasticsearchmaven依赖应与elasticsearch服务端版本一致java.lang.IllegalStateException:Failedtoloa......
  • elasticsearch设置/修改密码
    elasticsearch设置密码1.进入到lelasticsearch目录下的config目录,找到elasticsearch.yml文件,在里面添加如下命令并重启:xpack.security.enabled:truexpack.license.sel......
  • elasticSearch配合go基本使用
    一。连接packagemodelimport("fmt""github.com/olivere/elastic/v7")varEsClient*elastic.Clientfuncinit(){//注意IP和端口EsClient,err=elastic.......
  • springboot中配置elasticSearch
    1.1.1 在build.gradle中添加需要的jar包   我创建的gradle工程,对应的maven工程也是一样,添加对应的jar包即可//添加SpringDataElasticsearch的依赖comp......
  • windows下安装elasticsearch
    下载地址:https://www.elastic.co/downloads/elasticsearch下载head地址:https://codechina.csdn.net/mirrors/mobz/elasticsearch-head?utm_source=csdn_github_accelerato......
  • ElasticSearch 实现分词全文检索 - delete-by-query
    目录ElasticSearch实现分词全文检索-概述ElasticSearch实现分词全文检索-ES、Kibana、IK安装ElasticSearch实现分词全文检索-Restful基本操作ElasticSearch......
  • ElasticSearch 实现分词全文检索 - Scroll 深分页
    目录ElasticSearch实现分词全文检索-概述ElasticSearch实现分词全文检索-ES、Kibana、IK安装ElasticSearch实现分词全文检索-Restful基本操作ElasticSearch......