商品详情页可以直接打开,后台也显示启用,但站内搜索始终找不到。执行 catalogsearch_fulltext 重建没有报错,于是大家开始反复 reindex。真正原因往往在商品是否应进入当前商店的搜索文档。
先检查商品资格
确认商品属于当前 Website,状态启用,可见性包含 Search,目标 Store View 的名称、SKU 或搜索属性有值。配置商品还要确认子商品状态与库存。不要只在 Default Scope 看字段。
新建属性勾选 Use in Search 后需要索引更新;如果期望用字段筛选,还要检查 layered navigation 与搜索权重。
证明文档是否进入搜索引擎
php bin/magento indexer:status catalogsearch_fulltext
php bin/magento indexer:reindex catalogsearch_fulltext
curl -sS 'http://search-host:9200/_cat/indices?v'核对 Magento 配置的引擎地址、索引前缀和别名。多环境共用集群时,前缀配错会导致你查看另一个环境。生产查询应限制返回量,不要随意对大索引执行通配搜索。
有文档但前台没结果,再看查询上下文
Store ID、Customer Group、库存状态和请求参数会影响最终集合。抓取 GraphQL 或搜索请求,比较关键词分词结果。中文、连字符 SKU 与特殊字符尤其容易受 analyzer 影响。
验收选完整 SKU、商品名普通词和需要分词的中文词。每个词在目标 Store View 返回正确商品,并确认新增、禁用和改名后计划索引能自动更新,才算恢复。

