ES拼音插件和es的众多插件一样,简单的说一下操作步骤就是

1,下载(https://github.com/medcl/elasticsearch-analysis-pinyin/releases  选择对应的版本,版本与ES版本一致,建议下载最新版本,然后idea打开适配当前自己使用的es版本号,然后maven打包)。

2,es安装插件,我的es是手动部署到linux服务器上的,es部署下有个目录/plugins/ 新建一个文件夹放进去/plugins/pinyin  然后需要重启es 看日志是否加载成功,当前es更新版本较快,需要适配自己的es版本,否则可能重启不成功。

3,定义新建自己的index索引,很重要,因为我是在已有的项目上去集成的pinyin插件,所以需要支持pinyin插件的同时需要适配之前的业务场景,这里列出es拼音插件的两种配置,希望读者在看到的时候要结合自己的业务逻辑 然后进行调整,拼音插件实现起来简单,但是要做到适合自己还是需要不停的调试

第一个pinyin插件的参数

keep_first_letter启用此选项时,例如:刘德华> ldh,默认值:true
keep_separate_first_letter启用该选项时,将保留第一个字母分开,例如:刘德华> l,d,h,默认:假的,注意:查询结果也许是太模糊,由于长期过频
limit_first_letter_length 设置first_letter结果的最大长度,默认值:16
keep_full_pinyin当启用该选项,例如:刘德华> [ liu,de,hua],默认值:true
keep_joined_full_pinyin当启用此选项时,例如:刘德华> [ liudehua],默认值:false
keep_none_chinese 在结果中保留非中文字母或数字,默认值:true
keep_none_chinese_together保持非中国信一起,默认值:true,如:DJ音乐家- > DJ,yin,yue,jia,当设置为false,例如:DJ音乐家- > D,J,yin,yue,jia,注意:keep_none_chinese必须先启动
keep_none_chinese_in_first_letter第一个字母保持非中文字母,例如:刘德华AT2016- > ldhat2016,默认值:true
keep_none_chinese_in_joined_full_pinyin保留非中文字母加入完整拼音,例如:刘德华2016- > liudehua2016,默认:false
none_chinese_pinyin_tokenize打破非中国信成单独的拼音项,如果他们拼音,默认值:true,如:liudehuaalibaba13zhuanghan- > liu,de,hua,a,li,ba,ba,13,zhuang,han,注意:keep_none_chinese和keep_none_chinese_together应首先启用
keep_original 当启用此选项时,也会保留原始输入,默认值:false
lowercase 小写非中文字母,默认值:true
trim_whitespace 默认值:true
remove_duplicated_term当启用此选项时,将删除重复项以保存索引,例如:de的> de,默认值:false,注意:位置相关查询可能受影响

这个需要调试调到自己合适的参数值:业务场景是结合IK分词器分出刘德华 -> liudehua ,刘德华(保留用户输入)

"full_pinyin" : {"keep_joined_full_pinyin" : "true","keep_none_chinese_in_first_letter" : "false","lowercase" : "true","none_chinese_pinyin_tokenize" : "false","keep_none_chinese_in_joined_full_pinyin" : "true","keep_original" : "true","keep_first_letter" : "false","keep_separate_first_letter" : "false","type" : "pinyin","keep_none_chinese" : "true","limit_first_letter_length" : "16","keep_full_pinyin" : "false"}

这个需要调试调到自己合适的参数值:业务场景是结合IK分词器分出刘德华 -> liudehua

"full_pinyin_letter" : {"keep_joined_full_pinyin" : "true","keep_none_chinese_in_first_letter" : "false","lowercase" : "true","none_chinese_pinyin_tokenize" : "false","keep_none_chinese_in_joined_full_pinyin" : "true","keep_original" : "false","keep_first_letter" : "false","keep_separate_first_letter" : "false","type" : "pinyin","keep_none_chinese" : "true","limit_first_letter_length" : "16","keep_full_pinyin" : "false"}

这两种能适配我现在的业务场景

pinyin的实现方式有很多种,这里介绍我自己的实现

pinyin结合自动补全completion suggester 自动补全

这里用的分析器的实现 还有一种用 filter的实现

  "suggest_v1" : {"settings" : {"index" : {"number_of_shards" : "1","blocks" : {"read_only_allow_delete" : "false"},"provided_name" : "suggest_v1","max_result_window" : "1000000","creation_date" : "164444429959","analysis" : {"analyzer" : {"test_ik" : {"filter" : ["lowercase"],"char_filter" : ["html_strip"],"tokenizer" : "ik_max_word"},"test_ik_search" : {"filter" : ["lowercase"],"char_filter" : ["html_strip"],"tokenizer" : "ik_smart"},"pinyin_analyzer" : {"tokenizer" : "pinyin_letter"}},"tokenizer" : {"pinyin_letter" : {"keep_joined_full_pinyin" : "true","keep_none_chinese_in_first_letter" : "false","lowercase" : "true","none_chinese_pinyin_tokenize" : "false","keep_none_chinese_in_joined_full_pinyin" : "true","keep_original" : "false","keep_first_letter" : "false","keep_separate_first_letter" : "false","type" : "pinyin","keep_none_chinese" : "true","limit_first_letter_length" : "16","keep_full_pinyin" : "false"}}}}}}
"mappings" : {"dynamic" : "false","properties" : {"qqqq" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword"},"pinyin_suggest" : {"type" : "completion","analyzer" : "pinyin_analyzer","preserve_separators" : true,"preserve_position_increments" : true,"max_input_length" : 50}},"analyzer" : "test_ik","search_analyzer" : "test_ik_search"},"aaaasearch" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword"},"pinyin_suggest" : {"type" : "completion","analyzer" : "pinyin_analyzer","preserve_separators" : true,"preserve_position_increments" : true,"max_input_length" : 50}},"analyzer" : "test_ik","search_analyzer" : "test_ik_search"},"title" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword"},"pinyin_suggest" : {"type" : "completion","analyzer" : "pinyin_analyzer","preserve_separators" : true,"preserve_position_increments" : true,"max_input_length" : 50}},"analyzer" : "test_ik","search_analyzer" : "test_ik_search"}}}

然后使用completion suggester 前缀匹配即可实现 搜索建议

第二种使用filter

analysis" : {"filter" : {"full_pinyin" : {"keep_joined_full_pinyin" : "true","keep_none_chinese_in_first_letter" : "false","lowercase" : "true","none_chinese_pinyin_tokenize" : "false","keep_none_chinese_in_joined_full_pinyin" : "true","keep_original" : "true","keep_first_letter" : "false","keep_separate_first_letter" : "false","type" : "pinyin","keep_none_chinese" : "true","limit_first_letter_length" : "16","keep_full_pinyin" : "false"}},"analyzer" : {"test_ik" : {"filter" : ["lowercase","full_pinyin"],"char_filter" : ["html_strip"],"tokenizer" : "ik_max_word"},"test_ik_search" : {"filter" : ["lowercase","full_pinyin"],"char_filter" : ["html_strip"],"tokenizer" : "ik_smart"}}}

都是结合ik实现

ES-pinyin插件配置和使用相关推荐

  1. ES pinyin 插件 拼音搜索 原理 match_phase

    背景 中文搜索很多时候都要用到pinyin搜索,基本绕不开这个插件:如搜索人名之类的: 介绍 插件github:地址 在README的最后,举的例子挺有意思:经过一系列操作之后,对刘德华建index, ...

  2. Elasticsearch 5 Ik+pinyin分词配置详解

    一.拼音分词的应用 拼音分词在日常生活中其实很常见,也许你每天都在用.打开淘宝看一看吧,输入拼音"zhonghua",下面会有包含"zhonghua"对应的中文 ...

  3. ElasticSearch 5.5 离线环境的完整安装及配置详情,附kibana、ik插件配置及安装包下载路径...

    此文针对局域网环境(非公网环境),提供ElasticSearch 5.5.2的完整安装及配置教程,包括ES的kibana插件.IK中文分词插件安装及配置. 另外,文章提供安装配置环境涉及到的所有安装包 ...

  4. Maven(插件配置和生命周期的绑定)

    1.这篇文章很好,介绍的maven插件的. 2.maven的source插件为例,可以把源代码打成包. Goals Overview就可以查看该插件下面所有的目标. 这里我们要使用的是source:j ...

  5. VS code 插件配置手册

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 VS code 插件配置手册 C/C++ Tools插件---C/ ...

  6. native2ascii插件配置

    native2ascii插件配置 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>n ...

  7. 【Flutter】Flutter 拍照示例 ( Flutter 插件配置 | Flutter 插件源码示例 | iOS 应用配置 | Android 应用配置 )

    文章目录 一.Flutter 插件配置 二.Flutter 插件源码示例 三.iOS 应用配置 四.Android 应用配置 五.相关资源 一.Flutter 插件配置 Flutter 拍照示例中 , ...

  8. Mybatis-Plus插件配置

    yml配置 1 # Mybatis-Plus 2 mybatis-plus: 3 # 配置mapper的扫描,找到所有的mapper.xml映射文件 4 mapper-locations: com.x ...

  9. vim学习、各类插件配置与安装

    vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...

最新文章

  1. 前后端分离业务逻辑常用封装函数(一)
  2. Mybatis 配置文件
  3. 承载千万级并发的分布式系统架构设计思想
  4. 四十一、Android Notification通知详解
  5. (二)java版spring cloud+spring boot 社交电子商务平台 - 整合企业架构的技术点
  6. 机器学习实战(用Scikit-learn和TensorFlow进行机器学习)(三)
  7. Linux 命令平时积累
  8. JNI开发笔记(八)--Java读取txt文件进行JNI测试
  9. dom vue 加载完 执行_前端面试题Vue
  10. [HTML] 关于DIV被Flash或表单遮盖的解决方法
  11. Greenplum installation guide
  12. QuartZ 配置第一次不执行后续正常执行
  13. Linux之unzip命令
  14. 高数 | 【一元函数积分学】常用广义积分及定积分汇总
  15. 红米note10 pro刷机
  16. Jiagu 自然语言处理工具
  17. 从4千/平到4.5万/平!南京房价10年血泪史 看哭所有人!
  18. 语法长难句之从句——名词性从句
  19. 华为HCNA实验操作之常用操作命令32-40
  20. error An unexpected error occurred “httpsregistry.npmjs.orgd3-geo-proje

热门文章

  1. C/C++编程学习 - 第1周 ⑦ 头文件、强制类型转换、递归
  2. 一步步带你做vue后台管理框架(二)——上手使用 系列教程《一步步带你做vue后台管理框架》第二课
  3. STM32课程设计--数字时钟+数字电压表+扩展功能--从零开始
  4. 01.NetLogo-命令学习
  5. 44-网上商城数据库-商品分类数据操作(一)
  6. pgsql新增主键自增流程
  7. [HNOI2017/AHOI2017]影魔
  8. vue的项目demo(asp.net mvc5+vue2.5)
  9. QFN封装芯片焊接过程
  10. vue仿今日头条_Vue实战篇(Vue仿今日头条)