基于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 商品搜索- 实现分类搜索商品查询

阶段一-02.分类,推荐,搜索,评价,购物车开发-第2章 商品推荐+搜索功能实现-2-3 搜索 - 商品详情功能分析

使用微搭实现搜索功能

使用微搭实现搜索功能

商城系统购物车功能分析实现