ES自定义Analyzer扩展IK分词
IPS产品关键词搜索需求要对英文标题、品牌(英文)、规格属性(英文)、产品型号、描述属性、商品特征、关键搜索词等字段进行模糊匹配搜索
前期由于拿不到数据也不清楚具体数据是什么样的,并且线上集群也没有安装IK分词器,于是做了两套方案一是直接使用模糊查询,二是使用分词查询
后面因为开发进度问题,也一直拿不到正式数据,暂时使用第一套方案,若出现性能问题再做优化
由于线上ES没有安装IK分词器,也不确定数据中会不会有中英文混合的数据,所以先自己用虚拟机搭了集群做实验,方便后期优化:
因为仅使用英文分词器,或中文分词器,对这种中英文混合的数据都不是很友好,只用中文分词器对英文单词不会进行词干提取,会降低命中率,而用英文分词则会把一句中文仅仅分成一个一个字
所以要进行自定义分词
ElasticSearch的分析器实际上是将三个功能封装在一起,这三个功能按照顺序执行,而这三个功能都是能自定义的
①字符过滤器 (char_filter)
首先,字符串按顺序通过每个字符过滤器,他们的任务是在分词前整理字符串
②分词器 (tokenizer)
其次,字符串被分词器分爲单个的词条,一个简单的分词器遇到空格和标点的时候,可能会将文本拆分成词条
Hello, how are you?会被ES预设的分词器standard分成hello、how、are、you
③Token 过滤器 (filter)
最后,词条按顺序通过每个 token 过滤器,这个过程可能会改变词条(Quick -> quick)、删除词条(a、an、and、the…)、增加词条(jump和leap这种同义词)
这里我们在创建索引的时候要setting自定义分词器,这里自定义名字起为"optimizeIK",
由于观察到测试数据中会有带有HTML 标签的一些数据 所以增加了过滤这部分数据的char_filter : html_strip
并使用IK分词 tokenizer : ik_max_word
设置filter为 stemmer,这样就会对分出来的英文单词进行词干提取
设置完自定义Analyzer后 对字段进行mapping,需要使用到的这个分词器的字段 mapping上 analyzer : optimizeIK , 比如这里是对"father_type"下的"analysis_field"字段设定mapping
这样这个字段在写入时就会按照我们预设的自定义分词进行分词
需要注意的是如果还有父子mapping的话需要先对先对子type进行mapping 否则会报父type已存在的异常
使用默认分词器
使用自定义分词
只需要在对需要自定义分词的字段进行查询时指定相应的Analyzer,在搜索时就会用相同的分词方式对搜索关键词进行拆分检索
ES自定义Analyzer扩展IK分词相关推荐
- ES集群添加IK分词器
ES集群添加IK分词器 ES : 7.5.0 官方文档其实已经够优秀了,毕竟是中文的,这里只给出一些建议. IKAnalyzer.cfg.xml 建议放到插件的目录下,要不然有可能会有一些问题 {pl ...
- elasticsearch扩展ik分词器词库
操作步骤 1.进入elasticsearch的plugin,进入ik.进入config. 2.在config下面建立以.dic为后缀的字典.在建立的时候一定要注意文本的报错格式,请保存为utf-8格式 ...
- es安全组端口_从零开始在远程服务器(Linux)上搭建es,eshead和ik分词器
一.资源准备 远程服务器一个(本教程为CentOS 64位) 注:ik分词器版本需与es版本统一 jdk1.8.0 elasticsearch-head-master.zip 二.开放端口 注:本例采 ...
- ES入门学习:ElasticSearch、Kibana、ik分词器的安装、简单使用及SpringBoot集成
前言 es是采用Java语言开发,因此,想要安装运行es需要提前准备好jdk环境,关于linux配置jdk在前文linux配置jdk 本文主要介绍es的安装.kibana的安装和简单使用及ik分词器的 ...
- Elasticsearch(二) ik分词器的安装 以及 自定义分词
ik分词器作为elasticsearch的一个插件,则是安装在es插件中. ik分词器的安装 1,创建ik分词目录上传与es相同版本的ik分词器插件,不同版本可能es启动 报错 在elasticsea ...
- Docker 安装 ES 7.7.0 及 Head、Kibana、IK分词器、Logstash、Filebeat 插件
目录 环境信息 ES安装 ElasticSearch-Head安装 IK分词器安装 环境信息 Docker version 1.13.1, build 4ef4b30/1.13.1 CentOS Li ...
- es ik分词插件安装
es ik分词插件安装 1.ik下载(下载es对应版本的ik分词包) https://github.com/medcl/elasticsearch-analysis-ik/releases 2.解压下 ...
- ElasticSearch + IK分词 + 拼音分词
Docker 安装 ES 因为是测试需要,所以跟公司版本保持一致即可 sudo docker pull elasticsearch:7.4.2sudo mkdir -p /data/es_home/c ...
- elasticsearch学习(六):IK分词器
1.IK分词器简介 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始IKAnalyzer已经推出 了3个大版本.最初,它是以开源项目L ...
最新文章
- 爬取30亿人脸被600家执法机构使用,这家公司揭美国数据隐私老底
- 中青旅:在线旅游行业如何选型数据分析平台?
- python多级目录import_你真的会用Python模块与工具包吗?
- 【POJ - 1050】To the Max (dp)
- 凌乱的yyy(洛谷-P1803)
- js对象(Object)和字符串(String)互转 - 代码篇
- socket.io html5 聊天,socket.io实现在线聊天页面
- 代码换行符_Excel办公技巧:如何定位、替换、清除单元格中的换行符?
- 5ecsgo正在发送客户端_MQTT X 桌面客户端使用指南
- 弘辽科技:直通车测款的必备技巧
- 纹理(讲得比较详细的文章)
- git 如何下载单个文件夹或者单个文件
- pdf图片转换成word文字
- Python爬虫技巧--selenium解除webdriver特征值
- 动态图解实例 ConstraintLayout Chain
- 刮刮奖效果的简单实现
- 抽象类DateFormat
- 晶体三极管的主要参数
- WiFi定频操作一:TX测试-rtwpriv-----WIFI2.4G测试指令
- Efficient Use Of Tmux