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 } ] } ]
配置解释
- 分词器选择:
whitespace分词器仅按空格分割内容,确保123-456先被作为单个token传入后续过滤器 - WordDelimiterTokenFilter参数:
preserveOriginal保证原始带连字符的token被保留generateNumberParts触发连字符分隔的数字拆分catenateNumbers将拆分后的数字片段重新拼接成无连字符的完整tokensplitOnHyphens明确指定按连字符作为拆分依据(对数字场景生效)
- lowercase过滤器:保持原配置的小写转换需求
验证方式
通过Azure Search的「测试分析器」功能,输入123-456即可验证输出,最终会得到123-456、123、456、123456四个分词,完全覆盖你需要的三种分词类型需求。
内容的提问来源于stack exchange,提问作者Bonhart
相关产品推荐
相关产品推荐

