拼音搜索在中文搜索环境中是经常使用的一种功能,用户只需要输入关键词的拼音全拼或者拼音首字母,搜索引擎就可以搜索出相关结果。在国内,中文输入法基本上都是基于汉语拼音的,这种在符合用户输入习惯的条件下缩短用户输入时间的功能是非常受欢迎的。

在ES中可以使用拼音分析器插件进行拼音搜索,插件的项目地址为https://github.com/medcl/elasticsearch-analysis-pinyin,该插件对较新的ES版本并不支持,需要用户自行进行编译安装。

拼音分析器插件的安装

首先使用Git命令从互联网中复制该项目,命令如下:

git clone  https://github.com/medcl/elasticsearch-analysis-pinyin  

然后进入该项目,修改目录中的pom.xml文件,将elasticsearch.version选项的值修改成当前ES版本的值,如下图所示:

修改完成后保存文件并退出,使用mvn命令进行编译:

mvn install

安装完成后会在${PROJECT_PATH}/target/releases/目录下生成目标文件elasticsearch analysis-pinyin-7.13.2.zip。

在{ES_HOME}/plugins/目录下创建一个名称为pinyin-analysis的子目录,然后将上面的文件复制到该目录下,命令如下:

cp target/releases/elasticsearch-analysis-pinyin-7.13.2.zip /home/es/elasticsearch-7.13.2/plugins/ pinyin-analysis/    

进入{ES_HOME}/plugins/pinyin-analysis目录,将elasticsearch-analysis-pinyin-7.10.2.zip文件解压缩。

重启ES,如果输出如下图所示的日志,表示安装成功。

拼音分析器插件的使用

拼音分析器提供的分析器为pinyin,另外还提供了与其同名的分词器和分词过滤器。安装完成后,可以使用pinyin分析器或分词器进行验证。

下面使用pinyin分析器对待测试文本进行分析,DSL如下:

POST _analyze
{"analyzer": "pinyin","text":"天安门"
}

也可以将拼音分析器应用到索引的字段中。以下示例中将自定义的ik_pinyin_analyzer分析器设置为旅馆索引中title字段的默认分析器,DSL如下:

PUT /hotel
{"settings": {"analysis": {"analyzer": { //自定义分词器"ik_pinyin_analyzer":{"tokenizer":"ik_max_word",//设置分词器"filter":["pinyin_filter"] //设置分词过滤器}},"filter": {"pinyin_filter":{ //定义分词过滤器"type":"pinyin",//封装拼音分词过滤器"keep_first_letter":true,//设置保留拼音的首字母"keep_full_pinyin":false,//设置保留拼音的全拼"keep_none_chinese":true//设置不保留中文}}}},"mappings": {"properties": {"title":{"type":"text","analyzer": "ik_pinyin_analyzer"//设置使用自定义分析器}}}
}

搜索关键词wy,目的是想搜索“文雅”相关的旅馆,DSL如下:

GET /hotel/_search
{"query": {"match": {"title": "wy"}}
}

使用带有拼音词语过滤器的分析器后,就可以匹配查询词中的拼音首字母了。正如上面的一些示例,使用拼音分析器时,有很多的选项可以设置。例如,是否显示单字拼音的首字母、是否显示组合词的首字母、是否显示查询词的全部拼音等,具体的设置内容可以参考官网说明

Elasticsearch之拼音搜索(十五)相关推荐

  1. Elasticsearch教程---高亮搜索(十二)

    6.1 高亮介绍 许多应用都倾向于在每个搜索结果中 高亮 显示搜索的关键词,比如字体的加粗,改变字体的颜色等.以便让用户知道为何该文档符合查询条件.在 Elasticsearch 中检索出高亮片段也很 ...

  2. 畅购商城(五):Elasticsearch实现商品搜索

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 畅购商城(一):环境搭建 畅购商 ...

  3. ELK系列(十五)、Elasticsearch核心原理一篇全搞定

    目录 Lucene 介绍 核心术语 如何理解倒排索引? 检索方式 分段存储 段合并策略 Elasticsearch 核心概念 节点类型 集群状态 3C和脑裂 1.共识性(Consensus) 2.并发 ...

  4. elasticsearch实现基于拼音搜索

    1.背景 一般情况下,有些搜索需求是需要根据拼音和中文来搜索的,那么在elasticsearch中是如何来实现基于拼音来搜索的呢?可以通过elasticsearch-analysis-pinyin分析 ...

  5. 混合索引java代码,Elasticsearch 实现拼音,中文,首字母混合搜索

    在实际搜索需求中,常常需要对中文做拼音搜索,首字母搜索或者中文拼音首字母混合搜索. 比如要对 "广发聚财信用" 这几个中文进行拼音搜索,我们可能的搜索关键字是:"广发&q ...

  6. 商城项目(五)整合Elasticsearch实现商品搜索

    商城项目(五)整合Elasticsearch实现商品搜索 环境配置 Elasticsearch Elasticsearch 是一个分布式.可扩展.实时的搜索与数据分析引擎. 它能从项目一开始就赋予你的 ...

  7. Android 天气APP(十五)增加城市搜索、历史搜索记录

    上一篇:Android 天气APP(十四)修复UI显示异常.优化业务代码逻辑.增加详情天气显示 添加城市 新版------------------- 一.推荐城市数据 二.推荐城市item布局和适配器 ...

  8. 数学之美 系列十五 繁与简 自然语言处理的几位精英

    数学之美 系列十五 繁与简 自然语言处理的几位精英 我在数学之美系列中一直强调的一个好方法就是简单.但是,事实上,自然语言处理中也有一些特例,比如有些学者将一个问题研究到极致,执著追求完善甚至可以说完 ...

  9. Lucene5学习之拼音搜索

    今天来说说拼音检索,这个功能其实还是用来提升用户体验的,别的不说,最起码避免了用户切换输入法,如果能支持中文汉语拼音简拼,那用户搜索时输入的字符更简便了,用户输入次数少了就是为了给用户使用时带来便利. ...

最新文章

  1. 【数字孪生】关于数字孪生的冷思考及其背后的建模和仿真技术
  2. GIT常用基础命令总结
  3. onnx.onnx_cpp2py_export.checker.ValidationError
  4. Linux 文本界面转到图形界面
  5. 用c语言编辑房间长和宽求面积_房间地砖规格怎么选?
  6. 2015年4月8日主从不同步故障解决(字符集导致)
  7. C#-数组定义及使用数组的好处 046
  8. Linux 引导管理器 grub2 使用简介
  9. 东电计算机考研大概分数,2019年各学院硕士研究生拟录取名单公示
  10. 访问数据库需要注意的问题 c#
  11. vue-cli 该如何正确打包iconfont?
  12. Android技术知识点:如何添加字体资源
  13. 007 定位明文封包call
  14. games101 作业4
  15. 【单片机开发】智能小车工程(寻迹)
  16. jQuery Ajax 实例 全解析(转载)
  17. html 实体编码转换成原字符
  18. 迄今4代大数引擎概述
  19. 能率热水器存在严重质量隐患!千万不要购买!买了之后每年都需要自费维修!...
  20. 雅虎黯然离场 但我们并没有因此怀念它

热门文章

  1. cas java_什么是CAS?JAVA中哪些地方用到来CAS?
  2. 计算机视觉基础 图像滤波器
  3. html 输入框联动显示,js下拉选择框与输入框联动实现添加选中值到输入框的方法...
  4. 第8章 对象引用、可变性和垃圾回收
  5. 【matlab学习笔记】安装
  6. SOJ 4590 简单模拟
  7. Stay Hungry,Stay Foolish!Steve Jobs 毕业演讲的三点感悟
  8. ssd的smt_联合评测 | Intel Optane SSD 有效加速 SmartX 超融合在 Oracle 等场景下的系统性能...
  9. Deep Learning for Image and Point Cloud Fusion in Autonomous Driving: A Review(自动驾驶图像点云融合深度学习综述)论文笔记
  10. 数据分析处理库——Pandas