导读(3行收益):商城搜索最常见的问题:搜个词什么都搜不到、搜完没记录、排序乱。本文给一套做法:搜索词处理、结果筛选、空结果引导与搜索历史,附关键逻辑。看完搜索框不会再搜了没结果。
一、搜索为什么搜不到
三个高发问题:
- 只做 like:搜「苹果手机」要全名才匹配;
- 空结果不引导:搜不到就让用户走了;
- 不记搜索词:热门词统计不了。
根源是搜索框只拼了个 LIKE %词%,没分词、没引导、没记录。
二、搜索词怎么处理
function buildSearchQuery(keyword) {
const kw = keyword.trim();
if (!kw) return {
where: '1=1' };
// 简单分词:按空格拆
const terms = kw.split(/\s+/).filter(Boolean);
// 每个词都要命中
const conds = terms.map(t => `name LIKE '%${
t}%'`);
return {
where: conds.join(' AND ') };
}
关键点:先 trim 再拆词;多词用 AND。避坑:不 trim——前后空格搜不到;多词用 OR——结果太杂。
三、结果怎么排
| 排序 | 规则 |
|---|---|
| 默认 | 综合:销量+上架时间 |
| 价格 | 升/降序 |
| 销量 | 从高到低 |
| 上新 | 最近上架 |
关键点:默认别按 id——旧商品一直排前面。避坑:不区分升价降价——点两次一样;无销量排序——用户找不到热门。
四、空结果怎么办
- 提示「没找到相关商品」;
- 推荐热门搜索词或热销商品;
- 记录这个搜索词反馈给运营。
避坑:空结果白屏——用户直接走;不记录空词——不知道用户搜什么没货。
五、搜索历史
- 本地存最近 10 条;
- 点历史词直接搜;
- 可一键清空。
避坑:不存历史——每次重输;历史太多——占满屏。
六、踩坑清单
- [ ] 搜索只拼 LIKE;
- [ ] 不 trim 搜索词;
- [ ] 多词用 OR;
- [ ] 默认按 id 排序;
- [ ] 空结果不引导;
- [ ] 不记录搜索词;
- [ ] 不存搜索历史。
七、工程落地建议
商品搜索建议按「分词处理+多词 AND+多维排序+空结果引导+搜索历史」落地。若团队用成型商城平台(如乔拓云商城)起步,重点核对搜索分词、排序与空结果引导是否可用。
八、复盘清单(可直接抄走)
- [ ] 搜索词是否 trim 拆词;
- [ ] 多词是否 AND;
- [ ] 是否有价格/销量/上新排序;
- [ ] 空结果是否推荐引导;
- [ ] 是否记录搜索词;
- [ ] 是否存搜索历史。
结语
搜索框不是一个 LIKE,而是词要拆、结果要排、空结果要引导、搜索词要记。这几步做对,用户才搜得到想买的。本文仅作技术分享,具体功能以各平台官方实时信息为准。