【电商项目】商品搜索开发复盘(1):根据需求拆解搜索接口的设计逻辑
目录一、搜索功能整体实现思路1. 为什么不用MySQL全程基于ES做搜索2. 整体核心逻辑传参 → 处理 → 出参1.1 传参构造ES查询条件1.2 处理执行ES搜索1.3 出参封装返回前端的完整数据二、核心代码流程总览核心复盘小结前言搜索功能的编写比较复杂首先搜索条件繁多有关键字、价格、品牌、规格等。其次返回的结果除了搜索到的商品还要返回搜索面板包含关键字对应的品牌、品类、规格等还要将搜索条件回显回去供前端操作。本篇先对大体实现思路进行回顾然后再细复盘每一处的实现。我们要实现的样式可以参考京东的面板。一、搜索功能整体实现思路1. 为什么不用MySQL全程基于ES做搜索MySQL正排索引查词要翻所有文档只适合简单 CRUD。面对商品关键字分词、模糊检索、多条件筛选、数据聚合场景性能极差、无法实现分词匹配。而 Elasticsearch 基于倒排索引设计它会先拆词再记这个词在哪些文档里专门适用于解决全文检索场景。因此项目将商品搜索单独抽离基于ES实现。2. 整体核心逻辑传参 → 处理 → 出参1.1 传参构造ES查询条件关于传参就看一个接收后是否需要处理。前端传入GoodsSearchParamJSON参数和MySQL的Goods实体一样是面向业务存储设计的只保存商品主表字段而ES是面向搜索场景需要品牌、分类、规格等多表的冗余字段。我们需要把前端可读的业务参数转换成ES可识别的检索语法适配ES的查询规则。所以首先我们要把前端传过来的数据构造成ES搜索条件。1.2 处理执行ES搜索我们的处理就是实现商品的搜索。ES实现商品搜索通过注入ElasticsearchTemplate调用search方法传入构造好的ES查询条件指定映射实体GoodsES即可完成ES数据查询。1.3 出参封装返回前端的完整数据这是整个接口的核心也是区别于普通查询的关键。ES原始查询结果不能直接返回前端需要二次封装对应两个核心需求1、分页商品数据将ES查询的原始数据封装为Page分页对象提供商品列表、总条数、页码等用于前端渲染商品列表2、搜索聚合面板数据遍历所有搜索结果聚合去重品牌、品类、规格数据生成筛选面板同时回显用户的搜索参数保证前端搜索条件不丢失。二、核心代码流程总览// 搜索产品 Override public GoodsSearchResult search(GoodsSearchParam goodsSearchParam) { // 1.构造ES搜索条件 // 2.搜索 // 3.将查询结果封装为Page对象 // 4.封装结果对象 // 4.1 查询结果 // 4.2 查询参数 // 4.3 查询面板 return null; }核心复盘小结1、1、2步是内部查询过程只负责和ES交互无对外返回数据2、3、4步是最终出参核心所有给前端展示的列表、分页、筛选框、参数回显全部来自这两步也是搜索功能的业务核心。

相关新闻

【COMSOL】全流程实践与解析 Demo2-流固耦合

【COMSOL】全流程实践与解析 Demo2-流固耦合

目录 一、模型向导 二、建模 1. 参数 2. 几何 3. 物理场 (1)层流 (2)固体力学 4. 材料 5. 网格划分 三、计算 四、后处理 1. 速度流线 2. 流场动画 3. 变形网格与几何 4. 网格速度箭头 5. 流体速度箭头 6. 入口流…

2026/10/30 2:28:20 阅读更多 →
大疆校园招聘C++开发类笔试题目

大疆校园招聘C++开发类笔试题目

客观题 第1题 单选题(4.00分) 题干 某打印服务系统仅配备2台可用打印机接口,使用初值为2的计数信号量S进行资源管理。系统中有5个打印任务线程,其中4个线程几乎同时执行P(S)操作申请打印机接口,此时信号量S的值以及处于…

2026/10/25 15:32:27 阅读更多 →
c语言续4(比特)

c语言续4(比特)

memecpy(void*dest,const void* source,siez_t num);函数memcpy(arr2,arr1,10);从数组arr1拷贝10个字符到arr2空间内。一、为什么使用文件?使数据的持久化。二、什么是文件?磁盘上的文件是文件;程序文件、数据文件。三、程序文件,…

2026/10/25 19:40:20 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/13 22:08:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/14 2:41:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻