Storefront 搜索传 query 却搜不到商品怎么写
现象#
前端把用户输入直接塞进 products(query: "红色 连衣裙"),结果为空;换成单个英文单词能搜到,带空格或冒号就完全没结果。
原因#
- products(query:) 走的是 Shopify 搜索语法,空格默认表示 AND,多个词必须同时命中
- 冒号会被解析成字段前缀,用户输入里的裸冒号或引号会让整个表达式解析失败
- 中文召回依赖标题与 tags 的索引,未做翻译或 tags 为空时命中率很低
- 搜索框场景应使用 search 查询或 predictiveSearch,而不是 products 连接
处理步骤#
- 区分场景:列表页用
products(query:),搜索框用search(query:, types: [PRODUCT], first: 10) - 给特殊字符做转义,把输入里的冒号和引号去掉再拼接
- 多词查询改成
title:连衣裙 OR tag:连衣裙,或直接用 search 的全文匹配 - 价格、颜色等结构化条件放进
productFilters,不要都塞进 query - 在 GraphiQL 里先用固定字符串复现,再替换成变量验证
验收标准#
同一关键词在 search 与主题原生搜索页返回的首个商品一致,空结果时 totalCount 为 0 而不是报错。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。