一、插件简介

elasticsearch-analysis-lc-pinyin是一款elasticsearch拼音分词插件,可以支持按照全拼、首字母,中文混合搜索。

首先举个栗子说明下,我们在淘宝搜索框中输入“jianpan” 可以搜索到关键字包含“键盘”的商品。不仅仅输入全拼,有时候我们输入首字母、拼音和首字母、中文和首字母的混合输入,比如:“键pan”、“j盘”、“jianp”、“jpan”、“jianp”、“jp”  等等,都应该匹配到键盘。通过elasticsearch-analysis-lc-pinyin这个插件就能做到类似的搜索

二、安装插件

elasticsearch-analysis-lc-pinyin一共有两个版本分别是1.4.5和2.2.2,和es的版本对应

1.4.5 这个版本对应ES1.X

2.2.2这个版本对应ES2.X

请根据需要安装对应的版本,下面地址中压缩包已经包含了这两个版本

es2.x的安装请参考:Elasticsearch2.x 拼音分词插件lc-pinyin安装教程_飞奔的代码的博客-CSDN博客

下载地址:elasticsearch-analysis-lc-pinyin拼音分词器-Java代码类资源-CSDN下载

当然也可以自己下载elasticsearch-analysis-lc-pinyin的源码自己maven  build出来,这样可以避免版本冲突

git 地址:http://git.oschina.net/music_code_m/elasticsearch-analysis-lc-pinyin

如下,我已将下载下来的包放在 /home/chennan/soft 目录下,下面我将以elasticsearch1.4.5为例安装elasticsearch-analysis-lc-pinyin-1.4.5拼音分词器

进入到es的plugins目录,下面是未安装时的样子

接着打开终端命令行执行如下命令安装插件

./../bin/plugin --install analysis-lc-pinyin --url file:/home/chennan/soft/elasticsearch-analysis-lc-pinyin-1.4.5.zip

粗线上面结果就表示安装成功了 ^ ^,安装完成后会在plugins目录下生成一个 analysis-lc-pinyin的目录,如下

接下来配置elasticsearch.yml,在末尾加上如下配置,如下因为我也安装了IK分词器所以配置这样,如果你没有安装IK可以将下面ik的部分删除

index:analysis:analyzer:ik:alias: [ik_analyzer]type: org.elasticsearch.index.analysis.IkAnalyzerProviderik_max_word:type: ikuse_smart: falseik_smart:type: ikuse_smart: truelc:alias: [lc_analyzer]type: org.elasticsearch.index.analysis.LcPinyinAnalyzerProviderlc_index:type: lcanalysisMode: indexlc_search:type: lcanalysisMode: search

然后启动es,这里我启动两个节点。从启动日志中可以看到es成功加载了拼音插件,如下

到这里,插件就安装完成了。我们可以通过一个简单的curl命令来测试分词器时候正常工作

curl -XGET '192.168.0.107:9200/_analyze?analyzer=lc_search&pretty' -d 'dafeiji'

输入“dafeiji”可以切分出来“da”、“fei”、“ji” 证明一切都OK啦

接下来就来试试借助这个拼音分词器来执行搜索,看看效果

1、首先建立一个索引 ,然后执行putmapping , 这里的索引名叫index,type叫fulltext,其中content这个字段采用拼音分词。注意这里用到两个不同的分词器

索引过程采用:lc_index分词器

搜索过程采用:lc_search分词器

curl -XPUT http://localhost:9200/indexcurl -XPOST http://localhost:9200/index/fulltext/_mapping -d'
{"fulltext": {"_all": {"index_analyzer": "lc_index","search_analyzer": "lc_search","term_vector": "no","store": "false"},"properties": {"content": {"type": "string","store": "no","term_vector": "with_positions_offsets","index_analyzer": "lc_index","search_analyzer": "lc_search","include_in_all": "true","boost": 8}}}
}'

然后索引几条数据,这里索引的4个公司的名称,陆金所、阿里巴巴、腾讯、百度、如下:

接下来执行几个搜索,查询的DSL像这样

{"query": {"match": {"content": {"query": "bai度","analyzer": "lc_search","type": "phrase"}}},"highlight": {"pre_tags": ["<tag1>"],"post_tags": ["</tag1>"],"fields": {"content": {}}}
}

搜索“bai度”

搜索“阿li巴b”

搜索“ljs”

搜索“alibb”

搜索“lujinsuo”

下面使用es 客户端来做查询

@Testpublic void testPinyinSearch() {final String index = "index";final String type = "fulltext";SearchRequestBuilder requestBuilder = elasticIndexOperateHelper.getClient().prepareSearch(index).setTypes(type);QueryBuilder pinyinSearch = QueryBuilders.matchQuery("content", "lu金s").type(MatchQueryBuilder.Type.PHRASE).analyzer("lc_search").zeroTermsQuery(MatchQueryBuilder.ZeroTermsQuery.NONE);SearchResponse response = requestBuilder.setQuery(pinyinSearch).setHighlighterPreTags("</tag1>").setHighlighterPostTags("<tag1>").addHighlightedField("content").execute().actionGet();System.out.println(response);}

查询结果如下:

Elasticsearch1.x 拼音分词实现全拼首字母中文混合搜索相关推荐

  1. 汉字转拼音/全拼/首字母

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.Pinyin4j 简介 二.使用步骤 1.引入依赖 2.具体实现 总结 前言 项目中需要通过组织名称获取对应的简拼 ...

  2. ORACLE根据汉字获取拼音码:首字母/全拼/首字母截取

    create or replace package  GetHZPY is --oracle汉字转拼音 PACKAGE     --1.获得全拼  www.2cto.com   --SELECT GE ...

  3. 搜索功能(支持全拼,首字母,不区分大小写,关键字变色等)

    上次写的可能有人说阅读性太差,所以改成这种编辑了 用到的工具主要是pinyin4j(compile 'com.belerweb:pinyin4j:2.5.1'),将字符串转化成首字拼写或全拼,然后是计 ...

  4. Excel中文转换为拼音(大写首字母、小写首字母、全拼、全拼首首字母大写)

    很多时候我们需要处理一下汉字转换为拼音的需求,今天给大家分享一下标题包含的一下转换方法 1 .excel通过宏可以很好的处理汉字转换为拼音的    1.1下面的是转为全拼音的宏代码 Function ...

  5. npm包-js-pinyin获取中文拼音,实现按26个首字母展示城市

    npm包-js-pinyin获取中文拼音,实现按26个首字母展示城市 npm安装js-pinyin vue实现代码 城市展示效果图 你越是认真生活,你的生活就会越美好--弗兰克·劳埃德·莱特 < ...

  6. 输入框根据拼音首字母/中文字符联想补全

    输入框根据拼音首字母/中文字符联想补全 背景 工具 实现 H5 MySQL 创建中文转拼音函数 创建拼音缓存表&添加索引 创建触发器(同步project到拼音缓存表中) 查询语句 背景 在H5 ...

  7. 不使用pinyin4j, 通过字符串截取手段快速查询通讯录联系人的拼音(包括全拼和简拼)

    不使用pinyin4j, 通过字符串截取手段快速查询通讯录联系人的拼音(包括全拼和简拼) 刚开始我也是使用pinyin4j但是速度太慢8分钟还加载不完我的280个联系人数据,所以我选择另谋出路.发现有 ...

  8. python缩写转换成全拼_Python中文转拼音代码(支持全拼和首字母缩写)

    #!/usr/bin/env python # -*- coding:utf-8 -*- """ 原版代码:https://github.com/cleverdeng/p ...

  9. java中获取中文拼音(全拼)和中文首字母

    目录 一.引入依赖 二.代码 三.解释 1.创建格式化对象HanyuPinyinOutputFormat 2.设置输出结果的大小写格式 3.设置声调格式 4.进行汉字转拼音操作 四.作用 一.引入依赖 ...

  10. Java汉字转拼音工具类(支持首字母和全拼)

    工具类产生是因为个人业务需求需要根据中文汉字排序,而博主又对网上回答不满意,所以才根据相关资料写了该工具类,写入博客 以备不时之需.直接上代码: Java汉字转成汉语拼音工具类,需要用到pinyin4 ...

最新文章

  1. np.nan is an invalid document, expected byte or unicode string
  2. Hdu 4738 Caocao's Bridges (连通图+桥)
  3. POP缩小区域扩张导致的延迟差距—Vecloud微云
  4. 使用onenote记HTML笔记,如何在Windows 10中使用OneNote做笔记
  5. C/C++得到系统启动项
  6. 练习1:创建一个简单的银行程序包
  7. sql azure 语法_如何在SQL 2016中使用Azure Key Vault使用AlwaysOn配置TDE数据库
  8. shell自动交互之expect脚本_转
  9. Q96:PT(2):纹理的仿射变换(Textures And Transformations)
  10. 猜数游戏c语言编程while,【游戏编程】猜数字游戏(C语言)
  11. DOM drag 事件
  12. PostgreSQL视图和物化视图
  13. 用linux安装包装ftp,Linux 安装vsftpd和ftp客户端
  14. 从零搭建飞冰微前端项目《第一篇:优势分析》
  15. 高明领导不说狠话、不画大饼、不灌鸡汤,打造狼性团队就靠这9条
  16. 国家的mysql表_中国省份数据库+世界国家名数据库
  17. 阿里云手动更新dns解析
  18. 计算机软件工程专业心得,非计算机专业学软件工程的一点心得体会
  19. OOM异常的发生原因
  20. VS2015调试dump文件时提示未找到xxx.exe或xxx.dll

热门文章

  1. mysql data seek_mysql_data_seek函数详解
  2. Mediawiki 使用
  3. 如何有效规避程序化交易的滑点?
  4. 【GitHub前端练手项目--50天50个项目---商品加载效果-----day08】
  5. 离线强化学习(Offline RL)系列3: (算法篇) TD3+BC 算法详解与实现(经验篇)
  6. 升级mysql后zpanel无法进入_升级到mysql5.7无法启动问题解决
  7. OSS(一):OSS工具类
  8. 维语翻译_维语翻译中文转换器_维汉翻译通软件app下载安装
  9. C语言程序——用星号打印图案
  10. 【阿朱标红】参与感(3):新媒体营销篇