ES-pinyin插件配置和使用
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插件配置和使用相关推荐
- ES pinyin 插件 拼音搜索 原理 match_phase
背景 中文搜索很多时候都要用到pinyin搜索,基本绕不开这个插件:如搜索人名之类的: 介绍 插件github:地址 在README的最后,举的例子挺有意思:经过一系列操作之后,对刘德华建index, ...
- Elasticsearch 5 Ik+pinyin分词配置详解
一.拼音分词的应用 拼音分词在日常生活中其实很常见,也许你每天都在用.打开淘宝看一看吧,输入拼音"zhonghua",下面会有包含"zhonghua"对应的中文 ...
- ElasticSearch 5.5 离线环境的完整安装及配置详情,附kibana、ik插件配置及安装包下载路径...
此文针对局域网环境(非公网环境),提供ElasticSearch 5.5.2的完整安装及配置教程,包括ES的kibana插件.IK中文分词插件安装及配置. 另外,文章提供安装配置环境涉及到的所有安装包 ...
- Maven(插件配置和生命周期的绑定)
1.这篇文章很好,介绍的maven插件的. 2.maven的source插件为例,可以把源代码打成包. Goals Overview就可以查看该插件下面所有的目标. 这里我们要使用的是source:j ...
- VS code 插件配置手册
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 VS code 插件配置手册 C/C++ Tools插件---C/ ...
- native2ascii插件配置
native2ascii插件配置 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>n ...
- 【Flutter】Flutter 拍照示例 ( Flutter 插件配置 | Flutter 插件源码示例 | iOS 应用配置 | Android 应用配置 )
文章目录 一.Flutter 插件配置 二.Flutter 插件源码示例 三.iOS 应用配置 四.Android 应用配置 五.相关资源 一.Flutter 插件配置 Flutter 拍照示例中 , ...
- Mybatis-Plus插件配置
yml配置 1 # Mybatis-Plus 2 mybatis-plus: 3 # 配置mapper的扫描,找到所有的mapper.xml映射文件 4 mapper-locations: com.x ...
- vim学习、各类插件配置与安装
vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...
最新文章
- 前后端分离业务逻辑常用封装函数(一)
- Mybatis 配置文件
- 承载千万级并发的分布式系统架构设计思想
- 四十一、Android Notification通知详解
- (二)java版spring cloud+spring boot 社交电子商务平台 - 整合企业架构的技术点
- 机器学习实战(用Scikit-learn和TensorFlow进行机器学习)(三)
- Linux 命令平时积累
- JNI开发笔记(八)--Java读取txt文件进行JNI测试
- dom vue 加载完 执行_前端面试题Vue
- [HTML] 关于DIV被Flash或表单遮盖的解决方法
- Greenplum installation guide
- QuartZ 配置第一次不执行后续正常执行
- Linux之unzip命令
- 高数 | 【一元函数积分学】常用广义积分及定积分汇总
- 红米note10 pro刷机
- Jiagu 自然语言处理工具
- 从4千/平到4.5万/平!南京房价10年血泪史 看哭所有人!
- 语法长难句之从句——名词性从句
- 华为HCNA实验操作之常用操作命令32-40
- error An unexpected error occurred “httpsregistry.npmjs.orgd3-geo-proje
热门文章
- C/C++编程学习 - 第1周 ⑦ 头文件、强制类型转换、递归
- 一步步带你做vue后台管理框架(二)——上手使用 系列教程《一步步带你做vue后台管理框架》第二课
- STM32课程设计--数字时钟+数字电压表+扩展功能--从零开始
- 01.NetLogo-命令学习
- 44-网上商城数据库-商品分类数据操作(一)
- pgsql新增主键自增流程
- [HNOI2017/AHOI2017]影魔
- vue的项目demo(asp.net mvc5+vue2.5)
- QFN封装芯片焊接过程
- vue仿今日头条_Vue实战篇(Vue仿今日头条)