在 Azure AI 搜索中向查询添加拼写检查

重要

拼写更正根据补充使用条款处于公开预览状态。 它通过 Azure 门户、预览版 REST API 和 beta 版本的 Azure SDK 库提供。

在查询到达搜索引擎之前,可以通过对查询中的单词进行拼写更正来改善召回率。 所有文本(非矢量)查询类型都支持 speller 参数。

先决条件

  • 基本层或更高层的搜索服务(任何区域中)。

  • 现有搜索索引,其中包含使用支持的语言的内容。

  • 一个查询请求,具有 speller=lexiconqueryLanguage 设置为某种受支持的语言。 拼写检查适用于在 search 参数中传递的字符串。 筛选器、模糊搜索、通配符搜索、正则表达式或矢量查询不支持它。

对查询请求使用支持预览版 API 的搜索客户端。 可以使用 REST 客户端或已修改的代码对预览版 API 发出 REST 调用。 你还可以使用 Azure SDK 的 beta 版本。

客户端库 版本
REST API 版本 2020-06-30-Preview 及更高版本。 当前版本为 2023-10-01-Preview
用于 .NET 的 Azure SDK 版本 11.5.0-beta.5
用于 Java 的 Azure SDK 版本 11.6.0-beta.5
用于 JavaScript 的 Azure SDK 版本 11.3.0-beta.8
用于 Python 的 Azure SDK 版本 11.4.0b3

下面的示例使用内置的 hotels-sample 索引演示了如何对一个简单的文本查询进行拼写更正。 在不进行拼写更正的情况下,该查询返回零个结果。 更正后,该查询返回一条结果(Johnson 家庭度假村)。

POST https://[service name].search.azure.cn/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview
{
    "search": "famly acitvites",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "queryType": "simple",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

对完整 Lucene 的拼写更正

拼写更正是针对接受文本分析的单个查询字词进行的,正因如此,你可以对某些 Lucene 查询(但不能是其他查询)使用拼写检查器参数。

  • 绕过文本分析的不兼容查询格式包括:通配符、正则表达式、模糊
  • 兼容的查询格式包括:字段搜索、接近性、字词提升

此示例对采用完整 Lucene 语法并包含一个拼错的查询字词的“类别”字段使用字段搜索。 通过包含拼写检查器,“Suiite”中的拼写错误已得到更正,查询将会成功。

POST https://[service name].search.azure.cn/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview
{
    "search": "Category:(Resort and Spa) OR Category:Suiite",
    "queryType": "full",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "select": "Category",
    "count": true
}

后续步骤