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

Azure Search自定义分析器调优:实现三种分词效果需求

Azure Search分析器调优实现三种分词方案

要实现同时生成带连字符的完整分词、去连字符合并分词、拆分后的独立分词这三种结果,核心是利用WordDelimiterTokenFilter的多参数配置,让它在分析阶段自动生成所需的所有分词形式。以下是具体实现思路和配置修改:

关键配置思路

放弃原有的MappingCharFilter(无需提前替换连字符),改用WordDelimiterTokenFilter并开启三个核心参数:

  • preserveOriginal: true:保留带连字符的原始分词(如123-456)
  • generateNumberParts: true:将连字符分隔的数字拆分为独立分词(如123、456)
  • catenateNumbers: true:将拆分后的数字重新合并为无连字符的分词(如123456)

同时搭配whitespace分词器确保整段带连字符的内容先被识别为一个整体,再交给WordDelimiterTokenFilter处理。

修改后的完整配置

scoringProfiles: [
  {
    name: "product_search",
    textWeights:{
      weights:{
        "title":5,
      }
    }
  },
],
analyzers:[
  {
    odatatype: "#Microsoft.Azure.Search.CustomAnalyzer",
    name: "multi-dash-analyzer",
    tokenizerName: 'whitespace',
    tokenFilters: [
      'lowercase',
      {
        odatatype: "#Microsoft.Azure.Search.WordDelimiterTokenFilter",
        name: "dash-handler",
        preserveOriginal: true,
        generateNumberParts: true,
        catenateNumbers: true,
        splitOnHyphens: true
      }
    ]
  }
]

配置解释

  1. 分词器选择:whitespace分词器仅按空格分割内容,确保123-456先被作为单个token传入后续过滤器
  2. WordDelimiterTokenFilter参数:
    • preserveOriginal 保证原始带连字符的token被保留
    • generateNumberParts 触发连字符分隔的数字拆分
    • catenateNumbers 将拆分后的数字片段重新拼接成无连字符的完整token
    • splitOnHyphens 明确指定按连字符作为拆分依据(对数字场景生效)
  3. lowercase过滤器:保持原配置的小写转换需求

验证方式

通过Azure Search的「测试分析器」功能,输入123-456即可验证输出,最终会得到123-456、123、456、123456四个分词,完全覆盖你需要的三种分词类型需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:55:09