Azure Search使用microsoft.nl语言分析器的变音符号双向匹配问题
解决方案
核心思路是基于官方荷兰语分析器的处理逻辑,新增带变音符号折叠能力的自定义分析器,完全保留原分析器的分词、词干提取等能力的同时,实现所有变音符号的双向兼容。
具体操作步骤
- 在索引的配置中新增自定义分析器,复用微软官方荷兰语分词器和语言过滤器,额外加入
asciifolding词元过滤器统一处理所有变音符号:
"analyzers": [ { "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer", "name": "nl.microsoft_with_asciifolding", "tokenizer": "microsoft_language_tokenizer", "tokenFilters": [ "microsoft_language_filter", "asciifolding", "lowercase" ], "parameters": { "language": "dutch" } } ]
这个配置和原生nl.microsoft分析器的唯一区别是新增了asciifolding,会自动把所有带变音符号的字符转换为对应的无重音ASCII字符,覆盖荷兰语所有变音场景,无需单独配置单词映射。
2. 修改目标字段的分析器配置,替换为新建的自定义分析器:
{ "name": "Contents_nlnl", "type": "Edm.String", "facetable": false, "filterable": false, "key": false, "retrievable": false, "searchable": true, "sortable": false, "analyzer": "nl.microsoft_with_asciifolding", "indexAnalyzer": null, "searchAnalyzer": null, "synonymMaps": [], "fields": [] }
生效说明
修改分析器配置后需要重建索引,重新导入所有文档生成新的词元标记即可生效。生效后:
- 文档录入时,不管内容带不带变音符号,都会统一转换为无重音形式再生成索引标记
- 用户搜索时,不管搜索词带不带变音符号,也会统一转换为无重音形式再匹配索引,实现双向完全匹配
- 原
nl.microsoft分析器的分词、词干提取、停用词过滤等所有能力完全保留,没有兼容性问题
内容的提问来源于stack exchange,提问作者PaulVrugt
相关产品推荐
相关产品推荐

