Azure AI 検索のクエリにスペル チェックを追加する (プレビュー)

メモ

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 をサポートする検索クライアントを使用します。 Azure SDKのREST クライアントまたはベータ リリースを使用できます。

クライアント ライブラリ バージョン
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 インデックス を使用して、単純なテキスト クエリのスペル修正を示します。 スペル修正を行わないと、クエリは 0 個の結果を返します。 修正により、このクエリはジョンソンの家族指向のリゾートに対して 1 つの結果を返します。

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
}

セマンティック ランク付けによるスペル修正

このクエリでは、1 つを除くすべての用語で入力ミスが生じ、関連する結果を返すためにスペル修正が行われます。 詳細については、「 セマンティック ランカーの構成」を参照してください。

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 リファレンス) からコピーした次の表にあります。

Language クエリ言語
英語 [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 値は任意にすることができます。

検索インデックス内のコンテンツは複数の言語で構成できますが、クエリ入力は 1 つの言語で作成される可能性が最も高くなります。 検索エンジンは、 queryLanguage、言語アナライザー、コンテンツが構成されている言語の互換性をチェックしないため、誤った結果が生成されないようにクエリのスコープを設定してください。

次の手順