共用方式為


在 Azure AI 搜尋服務中將拼字檢查新增至查詢

重要

根據增補使用條款,拼字校正為公開預覽版。 可透過 Azure 入口網站、預覽版 REST API 和 Azure SDK 程式庫的 Beta 版取得此功能。

您可以先藉由查詢中的拼字更正字組改善重新叫用,再存取搜尋引擎。 所有文字 (非向量) 查詢類型都支援 speller 參數。

必要條件

  • 任何區域中,基本層或更高層級的搜尋服務。

  • 內容以所支援語言表示的現有搜尋索引。

  • 已將 speller=lexiconqueryLanguage 設定為支援語言查詢要求。 拼字檢查適用於在 search 參數中傳遞的字串。 不支援篩選、模糊搜尋、萬用字元搜尋、規則運算式或向量查詢。

在查詢要求上使用支援預覽 API 的搜尋用戶端。 您可以使用 REST 用戶端 或 Azure SDK 的技術預覽版。

用戶端程式庫 版本
REST API 版本 2020-06-30-Preview 和更新版本。 我們建議使用最新的預覽版 API。 2024-05-01-preview
Azure SDK for .NET 版本 11.5.0-beta.5
Azure SDK for Java 版本 11.6.0-beta.5
適用於 JavaScript 的 Azure SDK 版本 11.3.0-beta.8
Azure SDK for Python 版本 11.4.0b3

下列範例會使用內建的 hotels-sample 索引,示範如何對簡單的文字查詢進行拼字校正。 若沒有拼字校正,查詢會傳回零個結果。 透過更正,查詢會針對 Johnson 的家庭度假勝地傳回一個結果。

POST https://[service name].search.windows.net/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 查詢。

  • 略過文字分析的不相容查詢形式包括:萬用字元、RegEx、模糊
  • 相容的查詢形式包括:欄位搜尋、鄰近性、字詞提升

此範例會對具有完整 Lucene 語法且查詢字詞拼錯的類別欄位使用欄位搜尋。 藉由包括拼字檢查,會更正 "Suiite" 中的錯字,且查詢成功。

POST https://[service name].search.windows.net/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
}

使用語意排名進行拼字校正

除一個字詞外每個字詞中都有錯字,因此這個查詢會進行拼字修正以傳回相關結果。 若要深入了解,請參閱設定語意排名工具

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2024-05-01-preview    
{
    "search": "hisotoric hotell wiht great restrant nad wiifi",
    "queryType": "semantic",
    "speller": "lexicon",
    "queryLanguage": "en-us",
    "searchFields": "HotelName,Tags,Description",
    "select": "HotelId,HotelName,Description,Category,Tags",
    "count": true
}

支援的語言

您可以在下表中找到 queryLanguage 的有效值,此表格是從支援的語言 (REST API 參考) 清單中複製而來的。

語言 queryLanguage
英文 [EN] EN、EN-US (預設)
西班牙文 [ES] ES、ES-ES (預設)
法文 [FR] FR、FR-FR (預設)
德文 [DE] DE、DE-DE (預設)
荷蘭文 [NL] NL、NL-BE、NL-NL (預設)

注意

先前,雖然語意排名工具處於公開預覽狀態,但 queryLanguage 參數也用於語意排名。 語意排名工具現在與語言無關。

語言分析器考量

包含非英文內容的索引通常會在非英文欄位上使用語言分析器,以套用原生語言的語言規則。

將拼字檢查新增至同樣經過語言分析的內容時,您可以在每個索引編製和查詢處理步驟使用相同的語言,藉此實現更好的結果。 例如,如果欄位的內容是使用 "fr.microsoft" 語言分析器編制索引,則查詢和拼字檢查都應該使用某種形式的法文語彙或語言庫。

若要回顧如何在 Azure AI 搜尋服務中使用語言庫:

  • 語言分析器可以在編制索引和查詢執行期間叫用,且是 Apache Lucene (例如,"de.lucene") 或 Microsoft ("de.microsoft")。

  • 拼字檢查期間叫用的語言語彙會使用支援語言表格中的其中一個語言代碼來指定。

在查詢要求中,指派給 queryLanguage 的值會套用至 speller

注意

只在您使用語言分析器時,才需要考慮跨各種屬性值的語言一致性。 如果您使用與語言無關的分析器 (例如關鍵字、簡單、標準、停止、空白字元或 standardasciifolding.lucene),則 queryLanguage 值可以是您想要的任何值。

雖然搜尋索引中的內容可以以多種語言撰寫,但查詢輸入很可能只使用一種語言。 搜尋引擎不會檢查 queryLanguage、語言分析器及內容撰寫語言的相容性,因此請務必視需要設定查詢範圍,以避免產生不正確的結果。

下一步