You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现支持空格分隔多关键词联合匹配的商品检索功能

多关键词联合检索改造方案

实现思路

你现有代码将整个搜索串作为单一值匹配字段,无法支持多关键词同时命中的需求。可先将搜索字符串按空格拆分为独立关键词,要求每个关键词都命中品牌名或通用名字段,多关键词之间用AND关联,即可实现类似Biogesic Paracetamol的联合检索效果:只要商品同时包含两个关键词,无论关键词分别在品牌名还是通用名字段,都会被检索到。

改造后代码示例

if ($cat_id != 0) {
    // 拆分搜索串为关键词数组,过滤空值去除无效条件
    $keywords = array_filter(explode(' ', trim($searchStr)));
    $matchConditions = [];

    foreach ($keywords as $kw) {
        // 关键词转义避免SQL注入,生产环境建议优先用预处理语句
        $safeKw = addslashes($kw);
        $matchConditions[] = "(PRODUCT_BRANDNAME LIKE '%$safeKw%' OR PRODUCT_GENERIC_NAME LIKE '%$safeKw%')";
    }

    // 拼接SQL条件
    $fullCondition = implode(' AND ', $matchConditions);
    $sqlProducts = "SELECT * FROM product  
        WHERE $fullCondition AND CATEGORY_ID = $cat_id 
        LIMIT $start_from, $num_per_page";
}

优化建议

  • 上述转义方案仅做示例,生产环境请使用PDO或mysqli的预处理语句传参,彻底规避SQL注入风险。
  • 若商品数据量较大,LIKE模糊查询性能偏低,可给PRODUCT_BRANDNAME和PRODUCT_GENERIC_NAME字段建立全文索引,改用MATCH AGAINST语法做全文检索,查询效率和匹配精度都会明显提升。

内容的提问来源于stack exchange,提问作者Julius Fernando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:06:03