Es提供了很多的分词方式,其中大家最常用的分词器应该是:
ik_max_word(精细分词)ik_smart(简易分词),我是es的初学者,工作中因为涉及到人名问题,领导提出想要把人名做同音词匹配处理(如:张三,张伞,张散),这三个人的名字的话都是zhangsan,这种情况,我们就需要用到拼音分词器。网上都有提供的,大家直接选择对应es版本的拼音分词器版本下载即可。直通车:拼音分词器链接。

1.下载成功之后呢,大家需要在Es的plugins文件夹下新建一个名字为pinyin的文件夹,然后把下载的拼音分词器的放入到pinyin文件夹下即可。放好之后重新启动es即可。

2.重启es后,大家可以先用kibana工具进行测试,如图:


大家可以看到,这是拼音分词器默认的分词方式。如果正常没有什么特殊需求的话其实这样的拼音分词器是可以直接这样使用的。但是因为我们工作需求,需要对人名进行全匹配,也就是说如说人名为张三的话,那么我的分词结果只有zhangsan。所以这个分词器无法满足工作需求,我也在网上查看了一些资料,找到一种办法,因为我的工作中,也用到了自定义的词库。如图:


这个词库的作用呢就是,如果某个词语在这个词库存在,我们就不进行拆分,进行全匹配,否则的话就显示暂无数据。当时也是在百度看到,可以先对你要搜索的词语进行汉字拆分,我用的是(ik_smart)再结合我们的词库使用,先用ik_smart分词之后如上图只有张三一个词语,随后我们再用拼音分词给他分词的话,同理只能得到zahngsan一个拼音了,上代码吧,大家一看代码就应该很清晰了。如下:
PUT my_index //创建索引
{
“index”: {
“number_of_replicas” : “0”, //设置索引分备份分片数量
“number_of_shards” : “5”, //设置索引的分片数量
“analysis”: {
“analyzer”: {
“ik_pinyin_analyzer”: { //自定义分词气的名称
“tokenizer”: “my_ik_pinyin”, //设置es的分词方式
“filter”: “pinyin_first_letter_and_full_pinyin_filter” //过滤器
},
“pinyin_analyzer”: { //设置拼音分词器的分词名称。
“tokenizer”: “my_pinyin” //设置他的分词方式
}
},
“tokenizer”: {
“my_ik_pinyin”: { //这就是ik_pinyin_analyzer(也就是首先要进行的分词方式)
“type”: “ik_smart”
},
“my_pinyin”: {
“type”: “pinyin”, //分词方式
“keep_first_letter”: false, //设置为true话如:张三 会分词为 zs
“keep_separate_first_letter”: false,//设置为true的话每个字的首字母都会进行分词
“keep_full_pinyin”: false,
“keep_joined_full_pinyin”: true,
“keep_none_chinese”: true,
“none_chinese_pinyin_tokenize”: false,
“keep_none_chinese_in_joined_full_pinyin”: true,
“keep_original”: false,
“limit_first_letter_length”: 16, //字符长度
“lowercase”: true,
“trim_whitespace”: true,
“remove_duplicated_term”: true
}
},
“filter”: {
“pinyin_first_letter_and_full_pinyin_filter”: {
“type”: “pinyin”,
“keep_first_letter”: false,
“keep_separate_first_letter”: false,
“keep_full_pinyin”: false,
“keep_joined_full_pinyin”: true,
“keep_none_chinese”: true,
“none_chinese_pinyin_tokenize”: false,
“keep_none_chinese_in_joined_full_pinyin”: true,
“keep_original”: false,
“limit_first_letter_length”: 16,
“lowercase”: true,
“trim_whitespace”: true,
“remove_duplicated_term”: true
}
}
}
}
}
基本就是上面这样,先ik分词,分词在之后再在ik分词器基础上使用拼音分词器进行分词。设置完之后呢如下图:


如果用java代码实现的话可以,使用
XContentBuilder xContentBuilder = XContentFactory.jsonBuilder();来实现,如下图所示:

设置完之后返回,通过createIndexRequest.settings(设置的xContentBuilder)即可。

还有一个问题就是es设置多个自定义的分词器,其实也挺简单的,例如同义词分词,只需要在"analyzer" 目录下添加自定义的分词方式即可如下图:

图中type:custom是指使用自定义的分词器。tokenizer:分词方式。filter:理解为过滤器。设置完之后在“filter”目录下设置即可,如下图:

在你的Es文件目录下,config文件夹下创建analysis,在analysis文件夹下穿件你自定义的同义词词典文件夹即可,注意,每个同意词一行,中间用逗号隔开否则不起作用,如下图:

初学者,大神勿喷。

ES设置自定义分词器相关推荐

  1. 【Es】ElasticSearch 自定义分词器

    1.分词器 转载:https://blog.csdn.net/gwd1154978352/article/details/83343933 分词器首先看文章:[Elasticsearch]Elasti ...

  2. ElasticSearch入门:ES分词器与自定义分词器

    ES入门:ES分词器与自定义分词器 分词器的简单介绍 不同分词器的效果对比 自定义分词器的应用 分词器的简单介绍 分词器是es中的一个组件,通俗意义上理解,就是将一段文本按照一定的逻辑,分析成多个词语 ...

  3. es自定义分词器对数字分词

    背景:就是一个搜索框,可以输入产品名称.产品code.产品拼音.产品缩写等内容来查询. 问题:就是像产品code这种,比如00034,分词完还是00034,直接查询00是查不到的. 一开始的方案一,就 ...

  4. Elasticsearch在docker下安装运行,ES查询、分词器

    目录 Elasticsearch的一点背景 数据输入 数据输出 集群 集群灾备 集群管理 Docker容器中运行ElasticSearch.Kibana.cerebro ElasticSearch K ...

  5. ElasticSearch03_Mapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器

    文章目录 ①. Mapping字段映射概述 ②. 常用类型如下 - text.keyword ③. 映射中对时间类型详解 ④. ES的keyword的属性ignore_above ⑤. 映射的查看.创 ...

  6. 商城项目18_esMapping字段映射、常用类型、数据迁移、ik分词器、自定义分词器

    文章目录 ①. Mapping字段映射概述 ②. 常用类型如下 - text.keyword ③. 映射中对时间类型详解 ④. ES的keyword的属性ignore_above ⑤. 映射的查看.创 ...

  7. ElasticSearch 自定义分词器Analyzer示例

    一.前提概述 接下来定义一个index,并在该index中使用自定义分词器. 假设在ES中有这么一个index,用来存储用户在什么时间调用了哪个接口,调用的入参是什么的这么一个信息(即服务网关日志), ...

  8. ElasticSearch教程——自定义分词器(转学习使用)

    一.分词器 Elasticsearch中,内置了很多分词器(analyzers),例如standard(标准分词器).english(英文分词)和chinese(中文分词),默认是standard. ...

  9. Elasticsearch 分布式搜索引擎 -- 自动补全(拼音分词器、自定义分词器、自动补全查询、实现搜索框自动补全)

    文章目录 1. 自动补全 1.1 拼音分词器 1.2.1 自定义分词器 1.2.2 小结 1.2 自动补全 1.3 实现酒店搜索框自动补全 1.3.1 修改酒店映射结构 1.3.2 修改HotelDo ...

最新文章

  1. exit(0) exit(1) return() 3个的区别
  2. 设计模式:中介者模式(Mediator)
  3. 移动web开发框架之我见
  4. ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析
  5. 4.Java 面试题整理(JSP 篇)
  6. @RunWith@ContextConfiguration进行Spring上下文测试报错
  7. 计算机毕业设计中用js+html+java实现文件预览
  8. Loadrunner之-VirtualUserGenerator录制web程序脚本
  9. Android攻城狮—TextView实现跑马灯
  10. 2、matplotlib中的 ax=fig.add_axes([0,0,1,1])详解
  11. 我看了全部文件的字符串资源
  12. hive 转拼音udf_Hive UDF编程:自己动手实现implode函数
  13. 《你不可不知的50个建筑学知识》之哥特式建筑 1
  14. mkv无损转换成mp4,方法步骤
  15. 无关业务:少年得到,产品创新工作坊的复盘
  16. 难说 | 新读了几本书
  17. 本地数据下,radiobutton和图片组合,利用adapter+listview进行单选
  18. 使用Kotlin+JetPack 从零开发自己的日记App
  19. pandas与csv的用法笔记
  20. PC epub阅读器推荐

热门文章

  1. yjp在jboss上的on-demand attach
  2. dae模型如何合并_DAE与COLLADA
  3. CodeForces - 768B Code For 1(找规律)
  4. html中计时器,计时器.html
  5. 谷款量子计算机用了多少光子,中国光量子计算机诞生 脑容量小的别看
  6. springboot之Actuator
  7. Python接口自动化测试实战详解,你想要的全都有
  8. C#-根据手机号获得相应的信息
  9. C语言考试知识点汇总(实践知识点)
  10. 浅谈jdk-spi与dubbo-spi