你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure AI 搜索中查询

Azure AI 搜索支持用于各种场景(从自由格式文本搜索到高度指定的查询模式,还有矢量搜索)的查询构造。 所有查询都在存储可搜索内容的搜索索引上执行。

查询类型

查询表单 可搜索内容 说明
全文搜索 标记化术语的倒排索引。 全文查询会循环访问为快速扫描而构建的倒排索引,并可能在任何字段中、在任意数量的搜索文档中找到匹配项。 对文本进行分析和标记,以便进行全文搜索。
矢量搜索 生成的嵌入的矢量索引。 矢量查询循环访问搜索索引中的矢量字段。
混合搜索 上述所有内容,在单个搜索索引中。 在单个查询请求中合并文本搜索和矢量搜索。 文本搜索适用于“可搜索”和“可筛选”字段中的纯文本内容。 矢量搜索适用于矢量字段中的内容。
代理检索(预览版) 上述所有内容,在单个搜索索引中。 这是 Azure AI 搜索上的替代检索路径,它利用大型语言模型进行查询规划。 响应专为代理使用而设计,其中代理而不是搜索应用客户端代码协调向用户传递的响应。
其他 纯文本和人类可读内容。 原始内容,从源文档逐字提取,支持筛选器和模式匹配查询(如地理空间搜索、模糊搜索和字段搜索)。

本文的其余部分重点介绍最后一个类别:处理纯文本和人类可读内容的经典查询,从原始源中提取完好无损,用于筛选器和其他专用查询表单。 如果要创建不使用 AI 的传统搜索应用程序,本部分将介绍可在客户端代码中实现的查询方法。

自动完成和建议的查询

自动完成或建议的结果search 的替代方案,它们基于键入时搜索体验中的部分字符串输入(每个字符之后)来触发连续查询请求。 可以同时使用 autocompletesuggestions 参数,也可以单独使用它们,如此演练中所述,但不能将它们用于 search。 已完成的搜索词和建议的查询都派生自索引内容。 引擎永远不会返回索引中不存在的字符串或建议。 有关详细信息,请参阅自动完成 (REST API)建议 (REST API)

筛选器广泛应用于基于 Azure AI 搜索的应用。 在应用程序页面上,筛选器通常被可视化为用户定向筛选的链接导航结构中的平面。 筛选器还在内部用于公开索引内容的切片。 例如,如果索引包含英语和法语的字段,则你可以使用针对产品类别或语言的筛选器初始化搜索页面。

可能需要使用筛选器来调用专用查询窗体,如下表所述。 可以使用具有未指定搜索 (search=*) 的筛选器或具有查询字符串(其中包括搜索词、短语、运算符和模式)的筛选器。

筛选场景 说明
范围筛选器 在 Azure AI 搜索中,范围查询是使用筛选器参数生成的。 有关详细信息和示例,请参阅范围筛选器示例
多面导航 分面导航树中,用户可以选择分面。 在具备筛选器的情况下,每次单击都会缩小搜索结果的范围。 每个分面都具备一个筛选器,用于排除与分面所提供的条件不再符合的文档。

注意

查询处理过程中不会分析筛选器表达式中使用的文本。 文本输入假定为逐字区分大小写的字符模式,该模式在匹配时要么成功要么失败。 筛选器表达式是使用 OData 语法构造的,并传入索引中的所有可筛选字段中的 filter 参数中。 有关详细信息,请参阅 Azure AI 搜索中的筛选器

地理空间搜索可匹配位置的经度和纬度坐标,提供“查找我附近的位置”或基于地图的搜索体验。 在 Azure AI 搜索中,可以按照以下步骤实现地理空间搜索:

地理空间搜索使用公里作为距离单位。 坐标用以下格式指定:(longitude, latitude

下面是地理空间搜索筛选器的示例。 此筛选器在搜索索引中查找其他 Location 字段,这些字段的坐标在地理点(在本示例中为华盛顿特区)300 公里半径内。 它在结果中返回地址信息,并包括一个可选的 facets 子句,用于基于位置的自导航。

POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2024-07-01
{
    "count": true,
    "search": "*",
    "filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
    "facets": [ "Address/StateProvince"],
    "select": "HotelId, HotelName, Address/StreetAddress, Address/City, Address/StateProvince",
    "top": 7
}

有关详细信息和示例,请参阅地理空间搜索示例

文档查找

与前面描述的查询窗体相比,文档查找按 ID 检索单个搜索文档,没有相应的索引搜索或扫描。 仅请求并返回一个文档。 当用户在搜索结果中选择项目时,检索文档并使用字段填充详细信息页是典型的响应,文档查找是支持这一点的操作。

高级搜索:模糊、通配符、邻近、正则表达式

高级查询窗体取决于触发特定查询行为的 Full Lucene 分析程序和运算符。

查询类型 使用情况 示例和详细信息
字段化搜索 search 参数,queryType=full 针对单个字段生成复合查询表达式。
字段化搜索示例
模糊搜索 search 参数,queryType=full 匹配具有类似构造或拼写方式的字词。
模糊搜索示例
邻近搜索 search 参数,queryType=full 查找在文档中相互靠近的字词。
邻近搜索示例
术语提升 search 参数,queryType=full 如果某个文档包含提升的字词(相对于其他未提升的字词),则提高其排名。
字词提升示例
正则表达式搜索 search 参数,queryType=full 基于正则表达式的内容进行匹配。
正则表达式示例
通配符或前缀搜索 search 参数,使用 *~?queryType=full 基于前缀和波浪符 (~) 或单个字符 (?) 进行匹配。
通配符搜索示例

后续步骤

如需进一步了解查询实现,请查看每个语法的示例。 如果你不熟悉全文搜索,那么请详细了解查询引擎的用途,这可能也是一个不错的选择。