Azure AI搜索中如果要为全文搜索生成查询,本文提供了设置请求步骤本文介绍了查询结构,并说明字段属性语言分析器如何影响查询结果。

关注TechLead分享AI全维度知识作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员阿里认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

环境准备

全文查询请求示例

在 Azure AI 搜索中,查询是针对单个搜索索引文档集合发出的只读请求,其参数用于通知查询执行用于形成返回响应

全文查询在 search 参数指定,由字词、带引号的短语和运算符组成。 其他参数将更多定义添加到请求。 例如searchFields 将查询执行限制为特定字段select 指定在结果中返回字段count 返回索引中找到的匹配项数。

以下[搜索文档 REST API]调用说明使用上述参数的查询请求。

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30
{
    "search": "NY +view",
    "queryType": "simple",
    "searchMode": "all",
    "searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "top": "10",
    "count": "true"
}

要点

用于形成响应的参数:

选择客户端

对于早期开发概念证明测试,请从 Azure 门户或 Postman 应用开始进行 REST API 调用。 这些方法交互式的,可用于针对性的测试,有助于评估不同属性的影响,而无需编写任何代码

若要从应用调用搜索,请在适用于 .NET、Java、JavaScript 和 Python 的 Azure SDK 中使用 Azure.Document.Search 客户端库。

在门户中,打开索引时,可以使用搜索资源管理器以及并排选项卡中的索引 JSON 定义以便轻松访问字段属性。 检查字段”表以查看哪些字段在测试查询时可搜索、可排序、可筛选和可分面。

  1. 登录 Azure 门户查找搜索服务

  2. 打开索引”并选择索引。

  3. 索引将打开“[搜索资源管理]”选项卡以便可以立即查询。 查询字符串可以使用简单语法完整语法,并支持所有查询参数(filter、select 和 searchFields 等)。

    下面是适用于 Hotels 示例索引的全文搜索查询表达式

    search=pool spa +airport&$searchFields=Description,Tags&$select=HotelName,Description,Category&$count=true

    以下屏幕截图演示了查询和响应
    file
    请注意,如果需要特定版本的搜索行为可以更改 REST API 版本;如果要粘贴查询的 JSON 定义可以切换JSON 视图

Postman 应用可用于处理 REST API,例如[搜索文档 (REST)]。

以下示例调用 REST API 进行全文搜索:

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30
{
    "search": "NY +view",
    "queryType": "simple",
    "searchMode": "all",
    "searchFields": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "select": "HotelName, Description, Address/City, Address/StateProvince, Tags",
    "count": "true"
}

选择查询类型简单 | 完整

如果查询是全文搜索,查询分析器将用于处理作为搜索词和短语传递的任何文本。 Azure AI 搜索提供了两个查询分析器

虽然完整语法和简单语法存在重叠,都支持相同的前缀和布尔操作,但完整语法提供了更多的操作符。 在完整语法中,布尔表达式有了更多运算符高级查询(如模糊搜索、通配符搜索、邻近搜索和正则表达式)也有了更多运算符

选择查询方法

搜索本质上是一个用户驱动的活动,该活动从搜索框或页面上的单击事件收集术语或短语。 下表总结收集用户输入机制以及预期的搜索体验

输入 体验
[搜索方法] 用户在搜索框中键入术语或短语(不一定带运算符),然后单击“搜索”发送请求。 搜索可与筛选器一起用于同一请求,但不能与自动完成或建议一起使用。
[“自动完成”方法] 用户键入个字符然后键入每个字符启动查询。 响应是索引中的已完成字符串。 如果提供的字符串有效,则用户单击“搜索”将该查询发送服务
[“建议”方法] 自动完成一样,用户键入个字符生成增量查询。 响应是匹配文档的下拉列表,通常由几个唯一描述性字段表示。 如果任何一个选择有效,用户单击其中一个,就会返回匹配的文档。
[多面导航] 页面显示单击导航链接导航痕迹,缩小了搜索范围。 分面导航结构基于初始查询动态组合例如search=* 可用于填充每个可能的类别组成的分面导航树。 分面导航结构是从查询响应创建的,但它也是表示一个查询的机制。 在 REST API 引用中,facets 作为“搜索文档”操作的查询参数记录,但是它可以没有 search 参数的情况下使用。
[筛选方法] 筛选器与分面一起使用,以缩小结果范围。 你还可以在页面后面实现一个筛选器,例如用特定于语言的字段初始化页面。 在 REST API 引用中,$filter 作为“搜索文档”操作的查询参数记录,但是它可以在没有 search 参数的情况下使用。

字段属性对查询的影响

如果你熟悉[查询类型组合],可能还记得查询请求上的参数取决于字段在索引中的属性。 例如,查询和搜索结果中只能使用标记searchableretrievable 的字段。 在请求中设置 searchfilterorderby 参数时,应检查属性以避免意外结果。

在[酒店示例索引]下面的门户屏幕截图中,只有最后两个字段“LastRenovationDate”和“Rating”是 sortable,这仅是在 "$orderby" 子句中使用的要求。
file

标记对查询的影响

在索引过程中,搜索引擎字符串使用文本分析器,以最大程度地提高在查询时找到匹配项的可能性。 字符串至少是小写的,但根据分析器的情况,也可能需要进行词形还原和停用词删除。 较大的字符串复合词通常由空格、连字符或短划线分隔,并作为单独的标记编制索引。

这里要注意的一点是,你认为索引包含内容和索引实际包含内容可能会有所不同。 如果查询没有返回预期的结果,则可以通过[分析文本 (REST API)]检查分析创建标记。 有关词汇切分及其对查询的影响的详细信息,请参阅[具有特殊字符部分术语搜索和模式

关注TechLead分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员阿里认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

原文地址:https://blog.csdn.net/magicyangjay111/article/details/134758147

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_30300.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注