註
Azure AI 搜尋服務 可透過 Azure 入口網站、REST API 及 Azure SDK 取得。 它同時也是 Foundry IQ 的基礎,這是一個管理式知識層,能將企業內容轉化為可重複使用、權限感知的知識庫,供 Microsoft Foundry 入口網站中的代理使用。
重要
標記(預覽)的功能、能力或屬性不受服務等級協議涵蓋,也不建議用於生產工作負載,且在正式上架前可能會有所變動或受限。 Azure AI 搜尋服務 預覽條款適用於所有預覽功能,無論是獨立功能還是正式推出功能的一部分。
你可以在查詢單字進入搜尋引擎前,先修正拼字來提升回憶能力。
speller參數(預覽)支援所有文字(非向量)查詢類型,並可透過 Azure 入口網站、預覽版 REST API 及 Azure SDK 函式庫的測試版取得。
先決條件
位於任何區域、Basic 層級或更高層級的搜尋服務。
一個現有的搜尋索引,內容以 支援語言呈現。
將 和
speller=lexicon設定為queryLanguage的 查詢要求。 拼字檢查會對在參數中傳遞的search字串進行。 它不支援篩選器、模糊搜尋、通配符搜尋、正則表達式或向量查詢。
使用支援預覽 API 的搜尋客戶端來處理查詢請求。 你可以使用 REST 客戶端 或是 Azure SDK 的測試版。
| 用戶端函式庫 | 版本 |
|---|---|
| REST API | 版本為 2020-06-30-Preview 及以後版本。 我們推薦最新的預覽 API: 2026-08-01-preview |
| 適用於 .NET 的 Azure SDK | 版本 11.7.0-beta.4 |
| 適用於 Java 的 Azure SDK | 版本 11.8.0-beta.7 |
| 適用於 JavaScript 的 Azure SDK | 版本 11.3.0-beta.8 |
| 適用於 Python 的 Azure SDK | 版本 11.6.0B12 |
使用簡單搜尋來進行拼寫校正
以下範例使用 hotels-sample index 來示範簡單文字查詢的拼寫修正。 若不進行拼寫修正,查詢會回傳零個結果。 更正後,查詢會回傳一個 Johnson 所擁有並以家庭為導向的度假村的結果。
POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-08-01-preview
{
"search": "famly acitvites",
"speller": "lexicon",
"queryLanguage": "en-us",
"queryType": "simple",
"select": "HotelId,HotelName,Description,Category,Tags",
"count": true
}
使用完整 Lucene 進行拼寫校正
拼寫修正發生在經過文字分析的個別查詢詞上,因此你可以在某些 Lucene 查詢中使用拼字器參數,而其他則不行。
- 不相容的查詢形式會繞過文字分析,包括:萬用符、正則表達式、模糊
- 相容的查詢表單包括:欄位搜尋、接近度、詞彙提升
此範例使用完整 Lucene 語法,針對 Category 欄位進行欄位搜尋,並包含拼錯的查詢詞彙。 加入拼字檢查工具後,「Suiite」中的錯字被修正,查詢成功。
POST https://[service name].search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-08-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/docs/search?api-version=2026-08-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 參考)複製而來。
| 語言 | 查詢語言 |
|---|---|
| 英文 [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、語言分析器及內容撰寫語言的相容性,因此務必相應調整查詢範圍,以避免產生錯誤結果。