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

如何构造Azure Search指定字段的通配符搜索查询?

问题根因

你使用$filter=Title eq 'Full Stack*'的写法不符合Azure Search的语法规则:$filter下的eq运算符执行的是精确字符串匹配,本身不支持通配符解析,该语句实际是在匹配Title字段完全等于Full Stack*(包含星号)的记录。你看到的前20条符合结果属于巧合,后续无关内容是未限定检索范围时,Azure Search默认触发全局全文检索返回的结果。

注意:如果需要完全限定检索范围仅为Title字段,可以额外添加searchFields=Title参数,避免其他字段匹配到查询词返回无关结果。

正确的通配符/包含查询写法

有两种常用实现方案:

方案1:使用search参数(性能最优,推荐全文检索场景使用)

首先要指定queryType=full开启完整Lucene查询模式,同时限定检索字段为Title:

  • 匹配Title中**包含完整短语「Full Stack」**的所有记录(无需通配符,短语查询性能更高):
search=Title:"Full Stack"&queryType=full&$count=true
  • 匹配Title中以「Full Stack」开头的所有记录(前缀通配符):
search=Title:"Full Stack"*&queryType=full&$count=true
  • 匹配Title中**任意位置包含「Full Stack」**的所有记录(正则通配符,适合模糊匹配场景):
search=Title:/.*Full Stack.*/&queryType=full&$count=true

方案2:使用search.ismatch函数(适合需要和其他过滤条件结合的场景)

如果需要把包含查询和其他数值过滤、分类过滤条件组合,可以把查询逻辑写在$filter中:

$filter=search.ismatch('Title:"Full Stack"', 'full')&$count=true

多条件OR查询语法

以匹配Title包含「Full Stack」或者「Backend Developer」为例:

  • 写在search参数中:
search=Title:"Full Stack" OR Title:"Backend Developer"&queryType=full&$count=true
  • 写在$filter中:
$filter=search.ismatch('Title:"Full Stack" OR Title:"Backend Developer"', 'full')&$count=true

如果需要同时加其他过滤条件,比如薪资大于15K,直接用and拼接即可:

$filter=search.ismatch('Title:"Full Stack" OR Title:"Backend Developer"', 'full') and Salary ge 15000&$count=true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:27:02