混合索引java代码,Elasticsearch 实现拼音,中文,首字母混合搜索
在实际搜索需求中,常常需要对中文做拼音搜索,首字母搜索或者中文拼音首字母混合搜索。
比如要对 "广发聚财信用" 这几个中文进行拼音搜索,我们可能的搜索关键字是:“广发”,“聚财”,“guangfa”,“gfjc”,“guangfajucai”,“guangfjc”,“gfajcai”,“广发juc” 等等的混合搜索,本文主要使用elasticsearch-analysis-lc-pinyin 实现针对这种中文和拼音的混合或全拼、首字母的搜索。
该插件主要基于elasticsearch1.4.5开发出来,更高的版本是否支持请自行测试
一、安装插件
git 地址:http://git.oschina.net/music_code_m/elasticsearch-analysis-lc-pinyin
1、用git下载源码
git clone https://git.oschina.net/music_code_m/elasticsearch-analysis-lc-pinyin.git
2、编译
进入elasticsearch-analysis-lc-pinyin根目录执行如下命令
3、安装
执行编译完成后会在releases文件夹下生成elasticsearch-analysis-lc-pinyin-1.4.5.zip压缩包
将该文件拷贝到es的plugin目录下并解压
修改es的config目录下elasticsearch.yml文件声明pinyin插件,在文件末尾加上
接下来重启es就OK啦。
上面的配置定义了lc_pinyin分词器,其中
lc_index:这个分词器用来索引文档时指定的分词器
lc_search:这个分词器用在搜索时指定的分词器
现在就可以测试下分词效果了,
1).首先创建一个索引
2 ) 创建mapping
3) 索引一条数据
4)构造查询条件
搜索:guangfa
curl -XPOST http://localhost:9200/index/_search?pretty -d '
{
"query": {
"match": {
"content": {
"query": "guangfa",
"analyzer": "lc_search",
"type": "phrase",
"slop": 1,
"zero_terms_query": "NONE"
}
}
},
"highlight": {
"pre_tags": [
"",
""
],
"post_tags": [
"",
""
],
"fields": {
"content": {}
}
}
}'
返回结果:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 4.841117,
"hits" : [ {
"_index" : "index",
"_type" : "fulltext",
"_id" : "1",
"_score" : 4.841117,
"_source": {"content":"广发聚财信用"}
"highlight" : {
"content" : [ "广发聚财信用" ]
}
} ]
}
}
搜索:guang发ju财
curl -XPOST http://localhost:9200/index/_search?pretty -d '
{
"query": {
"match": {
"content": {
"query": "guang发ju财",
"analyzer": "lc_search",
"type": "phrase",
"slop": 1,
"zero_terms_query": "NONE"
}
}
},
"highlight": {
"pre_tags": [
"",
""
],
"post_tags": [
"",
""
],
"fields": {
"content": {}
}
}
}'
{
"took" : 15,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 3.6822338,
"hits" : [ {
"_index" : "index",
"_type" : "fulltext",
"_id" : "1",
"_score" : 3.6822338,
"_source":{"content":"广发聚财信用"}
"highlight" : {
"content" : [ "广发聚财信用" ]
}
} ]
}
}
搜索:j财xy
curl -XPOST http://localhost:9200/index/_search?pretty -d '
{
"query": {
"match": {
"content": {
"query": "j财xy",
"analyzer": "lc_search",
"type": "phrase",
"slop": 1,
"zero_terms_query": "NONE"
}
}
},
"highlight": {
"pre_tags": [
"",
""
],
"post_tags": [
"",
""
],
"fields": {
"content": {}
}
}
}'
{
"took" : 22,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 6.682234,
"hits" : [ {
"_index" : "index",
"_type" : "fulltext",
"_id" : "1",
"_score" : 6.682234,
"_source":{"content":"广发聚财信用"}
"highlight" : {
"content" : [ "广发聚财信用" ]
}
} ]
}
}
搜索:gfjc
curl -XPOST http://localhost:9200/index/_search?pretty -d '
{
"query": {
"match": {
"content": {
"query": "gfjc",
"analyzer": "lc_search",
"type": "phrase",
"slop": 1,
"zero_terms_query": "NONE"
}
}
},
"highlight": {
"pre_tags": [
"",
""
],
"post_tags": [
"",
""
],
"fields": {
"content": {}
}
}
}'
{
"took" : 6,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 6.682234,
"hits" : [ {
"_index" : "index",
"_type" : "fulltext",
"_id" : "1",
"_score" : 6.682234,
"_source":{"content":"广发聚财信用"}
"highlight" : {
"content" : [ "广发聚财信用" ]
}
} ]
}
}
混合索引java代码,Elasticsearch 实现拼音,中文,首字母混合搜索相关推荐
- 拼音中文首字母大写查询
最新的商城项目需要用到拼音首字母大写查询,首先想加个字段存中文拼音的,觉得太麻烦,还是用sql解决快一些,lz用的是mysql. 解决的思路就是创建个函数调用,如果用工具navicat,则可以建立如下 ...
- Java获取中文拼音、中文首字母缩写和中文首字母
我们有时候会遇到这样的情况,需要获取某些中文的拼音.中文首字母缩写和中文首字母,下面我将为大家介绍一下如何获取中文拼音的缩写. 1.项目建立和配置 首先,我们建立一个java项目,新建libs文件夹并 ...
- java怎么获取中文首字母_Java如何获取中文拼音首字母的方法介绍
下面小编就为大家带来一篇java获取中文拼音首字母的实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 如下所示: import net.sourceforge.pin ...
- java中获取中文拼音(全拼)和中文首字母
目录 一.引入依赖 二.代码 三.解释 1.创建格式化对象HanyuPinyinOutputFormat 2.设置输出结果的大小写格式 3.设置声调格式 4.进行汉字转拼音操作 四.作用 一.引入依赖 ...
- 联系人排序java代码_Android仿微信联系人按字母排序_脚本之家
App只要涉及到联系人的界面,几乎都是按照字母排序以及导航栏的方式.既然这个需求这么火,于是开始学习相关内容,此篇文章是我通过参考网上资料独立编写和总结的,希望多多少少对大家有所帮助,写的不好,还请各 ...
- 联系人排序java代码_Android仿微信联系人按字母排序
App只要涉及到联系人的界面,几乎都是按照字母排序以及导航栏的方式.既然这个需求这么火,于是开始学习相关内容,此篇文章是我通过参考网上资料独立编写和总结的,希望多多少少对大家有所帮助,写的不好,还请各 ...
- java获取首字母_【Java】获取中文首字母
获取中文首字母 有时候,比如微信上根据名字拼音首字母排序并检索.那么用Java获取中文首字母是怎么实现的呢? 代码 不多说,直接上代码:(写个工具类) public class FirstCharUt ...
- 记录一下:Java 汉字获取拼音或首字母工具类
记录一下:Java 汉字获取拼音或首字母工具类 Maven依赖配置 Java代码 本文主要记录一下在Java中,如何将字符串中的中文转化为拼音,获取汉字串拼音首字母,获取汉字串拼音的工具类,以及相关的 ...
- java首字母排序_Java实现按中文首字母排序的具体实例
这篇文章主要介绍了Java实现按中文首字母排序的具体实例,有需要的朋友可以参考一下 要实现"按中文首字母排序"操作,可以使用java.util包下的Arrays类的sort()函数 ...
最新文章
- python教程哪个版本好-终于清楚python入门最好的教程
- 人月神话阅读笔记02
- 【错误记录】BLE 蓝牙搜索失效 ( 关闭了 GPS 定位导致的问题 | 蓝牙串口工具推荐 )
- REST资源何时应获得其自己的地址?
- html中输出PHP的下拉列表,html中关于下拉列表select的图文代码详解
- 6 日期字符串转日期_山西省导游协会关于发放电子导游证的通知 (生成日期为2020年5月28日2020年6月3日)...
- VM安装ubuntu18.04完成时不能上网,显示cable unplugged
- YurunOAuthLogin v2.0.2,第三方 OAuth2 授权一把梭
- 敏捷开发中的测试金字塔(转)
- [转载] Java:简述Java中的自定义异常
- 搭建GTK+开发环境
- 三菱plc恒压供水程序+威纶触摸屏程序 以控制水泵一用一备、一拖二、一拖三、一拖四、一拖四带小泵恒压功能
- n+1天 吾日三省吾身
- 目前网页制作的基本语言html,第二讲网页制作基本语言HTML”.ppt
- 即插即涨2-3%!AC-FPN:用于目标检测的注意力引导上下文的特征金字塔网络
- 网络空间开源威胁情报分析的人机优化策略研究
- 音视频SDK封装截图
- SpringBoot集成SpringMVC
- python音频特征提取_音频特征提取方法和工具汇总
- 9-1 数据库管理员-工作任务有哪些
热门文章
- lgp970 安全问题,不能识别sim卡
- 提升ASO榜单排名优化主要方式有哪些?
- wps表格宏被禁用如何解禁_(wps表格怎么设置宏)为什么每次打开excel文件都要提示启用或者禁用宏?...
- 语义分割评估指标MIOU
- laydate日期时间插件实现不用点击确定
- python绘制不同风格的分级统计图(Choropleth map)
- JavaScript BOM和DOM部分
- Vue中el-table追加行后固定列滚动错位问题
- 几何光学学习笔记(3)- 2.1光线经过单个折射球面的折射
- 【智能无线小车系列七】在树莓派上使用USB网卡