基于es的商品搜索功能实现(上)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于es的商品搜索功能实现(上)相关的知识,希望对你有一定的参考价值。
参考技术A公司的电商app需要做搜索功能,分析整理后列出如下需求点:
接下来就是愉悦(tongku)的设计和coding了
商品表已经在业务库中存在直接用,只需要设计出es索引就可以。es安装后顺带装上jk、pinyin插件,因为后续要用到拼音功能,不过在本阶段先不管拼音的事儿。
产品表定义:
产品类对应Repository定义:
maven-pom文件增加引用
application.yml文件添加es相关配置
以上定义完成后,启动项目,成功后可以看到如下提示(debug级别下):
如果没有伴随出现报错信息(es索引配置有误,不能创建索引时会给出相应提示),此时es中的 product 索引应该已经成功创建了。
使用es GET /demo-product/_mapping 命令可查看索引结构已经完整创建:
索引表的插入,可使用spring-boot的@Schedule定时器,以指定间隔扫描产品表的新增数据,以es对应product表的字段封装后,插入es索引即可
此时索引表结构和数据已经准备就绪,可以开始写查询方法了!
我们先准备一些测试商品数据:
此处有一点需要注意,由于商品品牌名称大多为互相无关联意义的字组成,如果使用默认分词,会被分的很散,不符合要求,所以需要将品牌名中文部分列出来,加入到ik分词插件的扩展词典中去,此处不展开。
分析一下搜索需求,当用户传入搜索关键词后,需要在商品名称、描述、类目名称和品牌名称四个字段中做match操作,暂定互相之间的权重比为0.5:0.1:0.2:1,可使用NativeSearchQuery创建查询方法:
打开浏览器,输入 /product/风衣%20毛衣/1/10 ,可以得到如下结果:
至此,第一步工作算是暂时完成。
阶段一-02.分类,推荐,搜索,评价,购物车开发-第2章 商品推荐+搜索功能实现-2-3 搜索 - 商品详情功能分析
首页的分类、轮播图、下方根据一级分给,类别加载最新的6条记录
点击查看商品的详情
根据商品的id
商品的展示图片就是图片表
商品表
不同口味价格不同
这是商品的规格表
不同口味优惠力度也是不一样的
没有折扣促销价就不需要计算。有折扣才需要计算。
产品参数
数据库内的表
详情页面的请求,在一次请求内完成。避免用户过多的重复刷新页面。导致后端可能会有很多的请求。
让用户在一次请求里面,把用户的信息都查询出来。
另外一种方式是四类信息,分别查询,发送四次请求。单词请求更快,分别展示。对用户更友好。
本课程是请求一次的方式。
结束
以上是关于基于es的商品搜索功能实现(上)的主要内容,如果未能解决你的问题,请参考以下文章
阶段一-02.分类,推荐,搜索,评价,购物车开发-第4章 商品搜索功能开发-4-2 商品搜索 - 实现商品搜索功能
阶段一-02.分类,推荐,搜索,评价,购物车开发-第4章 商品搜索功能开发-4-4 商品搜索- 实现分类搜索商品查询