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

Typesense Laravel Scout搜索:大小写与变音符号处理问题

解决Typesense + Laravel Scout越南语大小写/变音符号不敏感搜索问题

核心方案

Typesense通过字段级的索引配置,结合内置规范化规则和分词器,可直接实现越南语的大小写、变音符号不敏感匹配,无需额外第三方工具。

具体配置步骤

1. 配置字段索引规则

针对需要搜索的字段(比如商品名称name),在Typesense集合Schema或Laravel Scout模型配置中设置以下参数:

  • tokenizer:使用standard分词器(原生支持多语言,包含越南语)
  • symbols_to_index:设为空字符串,忽略无关符号
  • normalization:启用lowercase(统一小写)和remove_diacritics(移除变音符号)规则

手动定义Typesense集合Schema示例

{
  "name": "products",
  "fields": [
    {
      "name": "name",
      "type": "string",
      "tokenizer": "standard",
      "symbols_to_index": "",
      "normalization": ["lowercase", "remove_diacritics"]
    }
  ]
}

Laravel Scout模型内配置示例(Product.php)

public function searchableFields()
{
    return [
        'name' => [
            'type' => 'string',
            'tokenizer' => 'standard',
            'symbols_to_index' => '',
            'normalization' => ['lowercase', 'remove_diacritics'],
        ],
        // 其他需要搜索的字段同理配置
    ];
}

2. 重新生成索引

修改配置后,必须重新导入数据到Typesense,让新规则生效:

php artisan scout:import "App\Models\Product"

验证效果

配置完成后,执行你的示例代码:

// 无重音搜索会匹配所有带重音的对应内容
$results = Product::search('xit chong nang')->get();
// 大写搜索会匹配所有大小写形式的结果
$results = Product::search('XỊT CHỐNG NẮNG')->get();

两种搜索都会返回包含xịt chống nắng的目标数据,实现预期的不敏感匹配。

补充说明

  • Typesense的remove_diacritics规则原生支持越南语变音符号处理,无需自定义规则
  • standard分词器会自动适配越南语词汇分割逻辑,保证搜索准确性
  • 若需全局统一配置,可在config/scout.php的typesense.collections节点中设置默认规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:12:32