Azure Search自定义分析器:含特殊字符字符串的查询问题
我来帮你梳理下这个问题,结合你配置的自定义分析器,给你两种能精准匹配到目标文档的查询方式:
首先先明确你的分析器效果:你用的keyword_v2分词器会把整个输入字符串当作单一的完整token,不会拆分空格、连字符这些符号;再加上lowercase过滤器,最终索引里的lowerCustomerPONbr字段值会是全小写的完整字符串(比如原始内容是“Engg - Test - Umesh”的话,索引后就变成了“engg - test - umesh”)。
方式1:用$filter做精确匹配
这种方式最直接,通过相等判断精准匹配字段值,请求示例如下:
GET 请求格式
GET https://<你的搜索服务名称>.search.windows.net/indexes/branchorders-index/docs?api-version=2023-11-01&$filter=lowerCustomerPONbr eq 'engg - test - umesh'
POST 请求体格式
{ "filter": "lowerCustomerPONbr eq 'engg - test - umesh'", "select": "*" // 可以替换成你需要返回的具体字段 }
方式2:用search参数做短语精确匹配
因为你的字段用了keyword_v2分词器,用双引号包裹查询字符串可以触发短语匹配,确保匹配整个完整的token。请求示例:
GET 请求格式
GET https://<你的搜索服务名称>.search.windows.net/indexes/branchorders-index/docs?api-version=2023-11-01&search="engg - test - umesh"&$select=*
POST 请求体格式
{ "search": "\"engg - test - umesh\"", "select": "*" }
只要目标文档的lowerCustomerPONbr字段经过分析器处理后确实是engg - test - umesh,上面任意一种方式都能帮你返回这个单个文档。
内容的提问来源于stack exchange,提问作者Santosh
相关产品推荐
相关产品推荐

