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分词相关推荐

  1. ES集群添加IK分词器

    ES集群添加IK分词器 ES : 7.5.0 官方文档其实已经够优秀了,毕竟是中文的,这里只给出一些建议. IKAnalyzer.cfg.xml 建议放到插件的目录下,要不然有可能会有一些问题 {pl ...

  2. elasticsearch扩展ik分词器词库

    操作步骤 1.进入elasticsearch的plugin,进入ik.进入config. 2.在config下面建立以.dic为后缀的字典.在建立的时候一定要注意文本的报错格式,请保存为utf-8格式 ...

  3. es安全组端口_从零开始在远程服务器(Linux)上搭建es,eshead和ik分词器

    一.资源准备 远程服务器一个(本教程为CentOS 64位) 注:ik分词器版本需与es版本统一 jdk1.8.0 elasticsearch-head-master.zip 二.开放端口 注:本例采 ...

  4. ES入门学习:ElasticSearch、Kibana、ik分词器的安装、简单使用及SpringBoot集成

    前言 es是采用Java语言开发,因此,想要安装运行es需要提前准备好jdk环境,关于linux配置jdk在前文linux配置jdk 本文主要介绍es的安装.kibana的安装和简单使用及ik分词器的 ...

  5. Elasticsearch(二) ik分词器的安装 以及 自定义分词

    ik分词器作为elasticsearch的一个插件,则是安装在es插件中. ik分词器的安装 1,创建ik分词目录上传与es相同版本的ik分词器插件,不同版本可能es启动 报错 在elasticsea ...

  6. 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 ...

  7. es ik分词插件安装

    es ik分词插件安装 1.ik下载(下载es对应版本的ik分词包) https://github.com/medcl/elasticsearch-analysis-ik/releases 2.解压下 ...

  8. ElasticSearch + IK分词 + 拼音分词

    Docker 安装 ES 因为是测试需要,所以跟公司版本保持一致即可 sudo docker pull elasticsearch:7.4.2sudo mkdir -p /data/es_home/c ...

  9. elasticsearch学习(六):IK分词器

    1.IK分词器简介 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始IKAnalyzer已经推出 了3个大版本.最初,它是以开源项目L ...

最新文章

  1. 爬取30亿人脸被600家执法机构使用,这家公司揭美国数据隐私老底
  2. 中青旅:在线旅游行业如何选型数据分析平台?
  3. python多级目录import_你真的会用Python模块与工具包吗?
  4. 【POJ - 1050】To the Max (dp)
  5. 凌乱的yyy(洛谷-P1803)
  6. js对象(Object)和字符串(String)互转 - 代码篇
  7. socket.io html5 聊天,socket.io实现在线聊天页面
  8. 代码换行符_Excel办公技巧:如何定位、替换、清除单元格中的换行符?
  9. 5ecsgo正在发送客户端_MQTT X 桌面客户端使用指南
  10. 弘辽科技:直通车测款的必备技巧
  11. 纹理(讲得比较详细的文章)
  12. git 如何下载单个文件夹或者单个文件
  13. pdf图片转换成word文字
  14. Python爬虫技巧--selenium解除webdriver特征值
  15. 动态图解实例 ConstraintLayout Chain
  16. 刮刮奖效果的简单实现
  17. 抽象类DateFormat
  18. 晶体三极管的主要参数
  19. WiFi定频操作一:TX测试-rtwpriv-----WIFI2.4G测试指令
  20. Efficient Use Of Tmux

热门文章

  1. Hololens模拟器的安装配置
  2. Matlab——数组与矩阵
  3. 存储(一):阿里云对象存储OSS2,python_SDK
  4. java之封装,继承,多态
  5. inno setup 卸载注册表_inno setup 自定义生成的卸载程序
  6. 顺序表基本操作实现(详细)
  7. latex的恒等于怎么写?
  8. PMBOK指南第六版—项目成本管理总结
  9. C#由指定数据生成灰度位图或者彩色位图
  10. 黑客在 Windows 95 邮件应用中发现彩蛋