引言

本文代码已提交至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) -商品搜索服务功能的实现(集成拼音分词器)相关推荐

  1. 淘东电商项目(79) -项目Github开源

    1. 项目介绍 Github地址:https://github.com/ylw-github/taodong-shop 众所周知,目前主流的电商企业就是 "淘宝" 和 " ...

  2. 淘东电商项目(35) -SSO单点登录(登录功能完善)

    引言 本文代码已提交至Github(版本号:725238a1d0c829ee28cdef0ffe49e5f1c0020a2b),有兴趣的同学可以下载来看看:https://github.com/ylw ...

  3. 淘东电商项目(27) -门户登出功能

    引言 本文代码已提交至Github(版本号:42c2ed4af58dac7388e399a1f3606baf4c57744e),有兴趣的同学可以下载来看看:https://github.com/ylw ...

  4. 淘东电商项目(68) -互联网安全架构设计(黑名单拦截及MD5加签)

    引言 本文代码已提交至Github(版本号:d439ec96b39dc0adf0d697cbc6bfc87c1c3b7dc8),有兴趣的同学可以下载来看看:https://github.com/ylw ...

  5. 淘东电商项目(14) -公众号获取注册码功能

    引言 在上一节<淘东电商项目(13) -项目整合WxJava>,主要讲解如何把WxJava框架整合到我们的电商项目,并完成了"鹦鹉学舌"的功能. 代码已提交至Githu ...

  6. 淘东电商项目(26) -门户登录功能

    引言 本文代码已提交至Github(版本号:8f3a993f0f9b92071437d16ed290e27ac1c64cde),有兴趣的同学可以下载来看看:https://github.com/ylw ...

  7. 淘东电商项目(20) -会员唯一登录

    引言 在上一节<淘东电商项目(19) -日志打印>,主要讲解「淘东项目」slf4j日志框架的基本使用方法. 本文代码已提交至Github(版本号:e2b2700c36fdaef263681 ...

  8. 电商项目day11(商品搜索功能实现排序结果分页)

    今日目标: 完成关键字搜索功能     能够实现高亮显示效果     完成查询分类列表的功能     完成条件过滤构建功能     完成分页动态页码展示 一.完成关键字搜索 1.首先构建工程    p ...

  9. HH SaaS电商系统的商品营销服务功能模块设计

    商品营销服务 1.服务只属于商城,自营店铺共享商城的服务,第三方店铺可以申请服务 2.服务跟着素材模板走,关联素材模板id,多对多关系

最新文章

  1. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor
  2. Java动态代理代码案例:使用cglib实现对无接口的类进行动态代理
  3. Java 成员变量和局部变量
  4. PBS_HAS_CHANGED ~ GET_SAP_MENU_INFO
  5. DIY自行车测速测距仪
  6. Python为什么要self
  7. MATLAB系统辨识工具箱学习
  8. java之mybatis之缓存
  9. Want To Say Something
  10. 运算符in和not in
  11. 【预测模型】基于Elman神经网络预测电力负荷matlab代码
  12. 卸载VS2005 安装VS2008
  13. 年度Sweb绩效考评表
  14. 第5章 演绎推理与归纳推理
  15. MV88DE3010之ffmpeg与m3u8
  16. python产生一个1到10的列表_python-列表生成式(一)
  17. java+图片高保真压缩_java对图片进行“高保真”压缩
  18. CSS——网易云音乐首页之热门推荐歌单的制作
  19. 娃娃乐学拼音软件许可及服务协议
  20. stm32 cubemx 新建项目一直报错的问题终于解决了

热门文章

  1. 大学生都在哪里看大学课后习题答案
  2. 配置SQLServer允许远程连接
  3. 超级详细Ubuntu20.04.5系统下编译安装OpenCV with ffmpeg4.2.7、NVIDIA显卡驱动515、cuda11.5、cudnn8.3.3并编译使用darknet-yolov4
  4. 圆周率 php算法,PHP坐标圆周率计算
  5. 第一次作业:阅读与准备工作
  6. 倍福 BECKHOFF CX9020 是一款适合 DIN 导轨安装的紧凑型以太网控制器,如何做CAN隔离
  7. arduino loar_采用ESP8266和Arduino设计基于IoT的患者健康监测系统
  8. CCF CSP——行车路线(行车路线)【Dijkstra算法】
  9. 利用XAG在RAC环境下实现GoldenGate自动Failover
  10. C++ 多态介绍详解