淘东电商项目(47) -商品搜索服务功能的实现(集成拼音分词器)
引言
本文代码已提交至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/taodong-shop
在上一篇博客《淘东电商项目(46) -商品搜索服务功能的实现》,实现了使用ES的技术实现商品搜索的功能,效果如下图:
但是只支持中文的搜索方式,在大型的购物网站,一般都支持拼音查询的,其实实现方式很简单,ES只要集成拼音分词器就可以了,本文就来讲解下。
本文目录结构:
l____引言
l____ 1. 拼音分词器的安装
l____ 2. 重新定义文档类型映射
l____ 3. 测试
l____ 4. 总结
1. 拼音分词器的下载与安装
目前使用的ES版本是5.6.12
,所以拼音分词器elasticsearch-analysis-pinyin
的版本必须和es一样也为5.6.12
。
首先下载拼音分词器,地址:https://github.com/medcl/elasticsearch-analysis-pinyin/releases
我的下载版本地址是:https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v5.6.12/elasticsearch-analysis-pinyin-5.6.12.zip
下在完成后,使用SSH工具上传文件到Linux服务器的user/local
目录:
拷贝到es容器的plugins目录:
docker cp elasticsearch-analysis-pinyin-5.6.12.zip es容器id或es容器名:/usr/share/elasticsearch/plugins
进入ES容器的plugins目录:
docker exec -it es容器id或es容器名 /bin/bash
解压并更改名字:
unzip elasticsearch-analysis-pinyin-5.6.12.zip
mv elasticsearch ik-pinyin
删除压缩包,退出并重启ES:
rm elasticsearch-analysis-pinyin-5.6.12.zip
exit
docker restart es容器id或es容器名
2. 重新定义文档类型映射
如果要使ES支持拼音分词和中文分词,那么需要重新定义文档类型:
1.首先自定义分词器 ,支持拼音和中文分词:
DELETE /product
PUT /product
{"settings": {"analysis": {"analyzer": {"ik_smart_pinyin": {"type": "custom","tokenizer": "ik_smart","filter": ["my_pinyin", "word_delimiter"]},"ik_max_word_pinyin": {"type": "custom","tokenizer": "ik_max_word","filter": ["my_pinyin", "word_delimiter"]}},"filter": {"my_pinyin": {"type" : "pinyin","keep_separate_first_letter" : true,"keep_full_pinyin" : true,"keep_original" : true,"limit_first_letter_length" : 16,"lowercase" : true,"remove_duplicated_term" : true }}}}}
2.重新指定文档类型映射拼音分词类型
POST /product/_mapping/product
{"product": {"properties": {"@timestamp": {"type": "date"},"@version": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"attribute_list": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"category_id": {"type": "long"},"created_time": {"type": "date"},"detail": {"type": "text","analyzer":"ik_smart_pinyin","search_analyzer":"ik_smart_pinyin"},"id": {"type": "long"},"main_image": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"name": {"type": "text","analyzer":"ik_smart_pinyin","search_analyzer":"ik_smart_pinyin"},"revision": {"type": "long"},"status": {"type": "long"},"sub_images": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"subtitle": {"type": "text","analyzer":"ik_smart","search_analyzer":"ik_smart"},"updated_time": {"type": "date"}}}
}
3.重新使用logstash导入数据:
3. 测试
1.启动项目Eureka,商品搜索服务
2.浏览器使用拼音搜索输入:http://localhost:8500/search?name=pg,可以看到能使用pg来实现搜索苹果商品:
本文完!
淘东电商项目(47) -商品搜索服务功能的实现(集成拼音分词器)相关推荐
- 淘东电商项目(79) -项目Github开源
1. 项目介绍 Github地址:https://github.com/ylw-github/taodong-shop 众所周知,目前主流的电商企业就是 "淘宝" 和 " ...
- 淘东电商项目(35) -SSO单点登录(登录功能完善)
引言 本文代码已提交至Github(版本号:725238a1d0c829ee28cdef0ffe49e5f1c0020a2b),有兴趣的同学可以下载来看看:https://github.com/ylw ...
- 淘东电商项目(27) -门户登出功能
引言 本文代码已提交至Github(版本号:42c2ed4af58dac7388e399a1f3606baf4c57744e),有兴趣的同学可以下载来看看:https://github.com/ylw ...
- 淘东电商项目(68) -互联网安全架构设计(黑名单拦截及MD5加签)
引言 本文代码已提交至Github(版本号:d439ec96b39dc0adf0d697cbc6bfc87c1c3b7dc8),有兴趣的同学可以下载来看看:https://github.com/ylw ...
- 淘东电商项目(14) -公众号获取注册码功能
引言 在上一节<淘东电商项目(13) -项目整合WxJava>,主要讲解如何把WxJava框架整合到我们的电商项目,并完成了"鹦鹉学舌"的功能. 代码已提交至Githu ...
- 淘东电商项目(26) -门户登录功能
引言 本文代码已提交至Github(版本号:8f3a993f0f9b92071437d16ed290e27ac1c64cde),有兴趣的同学可以下载来看看:https://github.com/ylw ...
- 淘东电商项目(20) -会员唯一登录
引言 在上一节<淘东电商项目(19) -日志打印>,主要讲解「淘东项目」slf4j日志框架的基本使用方法. 本文代码已提交至Github(版本号:e2b2700c36fdaef263681 ...
- 电商项目day11(商品搜索功能实现排序结果分页)
今日目标: 完成关键字搜索功能 能够实现高亮显示效果 完成查询分类列表的功能 完成条件过滤构建功能 完成分页动态页码展示 一.完成关键字搜索 1.首先构建工程 p ...
- HH SaaS电商系统的商品营销服务功能模块设计
商品营销服务 1.服务只属于商城,自营店铺共享商城的服务,第三方店铺可以申请服务 2.服务跟着素材模板走,关联素材模板id,多对多关系
最新文章
- Tensorflow学习笔记2:About Session, Graph, Operation and Tensor
- Java动态代理代码案例:使用cglib实现对无接口的类进行动态代理
- Java 成员变量和局部变量
- PBS_HAS_CHANGED ~ GET_SAP_MENU_INFO
- DIY自行车测速测距仪
- Python为什么要self
- MATLAB系统辨识工具箱学习
- java之mybatis之缓存
- Want To Say Something
- 运算符in和not in
- 【预测模型】基于Elman神经网络预测电力负荷matlab代码
- 卸载VS2005 安装VS2008
- 年度Sweb绩效考评表
- 第5章 演绎推理与归纳推理
- MV88DE3010之ffmpeg与m3u8
- python产生一个1到10的列表_python-列表生成式(一)
- java+图片高保真压缩_java对图片进行“高保真”压缩
- CSS——网易云音乐首页之热门推荐歌单的制作
- 娃娃乐学拼音软件许可及服务协议
- stm32 cubemx 新建项目一直报错的问题终于解决了
热门文章
- 大学生都在哪里看大学课后习题答案
- 配置SQLServer允许远程连接
- 超级详细Ubuntu20.04.5系统下编译安装OpenCV with ffmpeg4.2.7、NVIDIA显卡驱动515、cuda11.5、cudnn8.3.3并编译使用darknet-yolov4
- 圆周率 php算法,PHP坐标圆周率计算
- 第一次作业:阅读与准备工作
- 倍福 BECKHOFF CX9020 是一款适合 DIN 导轨安装的紧凑型以太网控制器,如何做CAN隔离
- arduino loar_采用ESP8266和Arduino设计基于IoT的患者健康监测系统
- CCF CSP——行车路线(行车路线)【Dijkstra算法】
- 利用XAG在RAC环境下实现GoldenGate自动Failover
- C++ 多态介绍详解