在 Azure AI 搜索中向查询添加拼写检查
重要
拼写更正根据补充使用条款处于公开预览状态。 它通过 Azure 门户、预览版 REST API 和 beta 版本的 Azure SDK 库提供。
在查询到达搜索引擎之前,可以通过对查询中的单词进行拼写更正来改善召回率。 所有文本(非矢量)查询类型都支持 speller
参数。
先决条件
基本层或更高层的搜索服务(任何区域中)。
现有搜索索引,其中包含使用支持的语言的内容。
一个查询请求,具有
speller=lexicon
且queryLanguage
设置为某种受支持的语言。 拼写检查适用于在search
参数中传递的字符串。 筛选器、模糊搜索、通配符搜索、正则表达式或矢量查询不支持它。
对查询请求使用支持预览版 API 的搜索客户端。 可以使用 Azure SDK 的 REST 客户端 或 beta 版本。
客户端库 | 版本 |
---|---|
REST API | 版本 2020-06-30-Preview 及更高版本。 建议使用最新的预览版 API。 2024-05-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=2024-05-01-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=2024-05-01-preview
{
"search": "Category:(Resort and Spa) OR Category:Suiite",
"queryType": "full",
"speller": "lexicon",
"queryLanguage": "en-us",
"select": "Category",
"count": true
}