Azure AI Search でクエリを実行する
Azure AI Search では、フリーフォーム テキスト検索から高度に指定されたクエリ パターンやベクトル検索まで、さまざまなシナリオのクエリ コンストラクトがサポートされます。 すべてのクエリは、検索可能なコンテンツを格納する検索インデックスに対して実行されます。
クエリの種類
クエリ フォーム | 検索可能なコンテンツ | 説明 |
---|---|---|
フルテキスト検索 | トークン化された用語の逆インデックス。 | フルテキストクエリでは、任意の数の検索ドキュメント内で高速スキャンできるように構造化された転置インデックスを反復処理します。この場合、すべてのフィールドで一致が見つかる可能性があります。 テキストは分析されてフルテキスト検索用にトークン化されます。 |
ベクトル検索 | 生成された埋め込みのベクトル インデックス。 | ベクトル クエリでは、検索インデックスのベクトル フィールドが反復処理されます。 |
ハイブリッド検索 | 1 つの検索インデックスで上記のすべて。 | 1 つのクエリ要求でテキスト検索とベクトル検索を組み合わせます。 テキスト検索は、"検索可能" および "フィルター処理可能" なフィールドのプレーンテキスト コンテンツに対して機能します。 ベクトル検索は、ベクトル フィールド内のコンテンツに対して機能します。 |
その他 | プレーンテキストと英数字のコンテンツ。 | ソース ドキュメントから逐語的に抽出された未加工のコンテンツは、地理空間検索、あいまい検索、フィールド検索などのフィルターおよびパターン マッチング クエリをサポートします。 |
この記事では最後のカテゴリ、つまり、フィルターやその他の特殊なクエリ フォームに使用される、元のソースからそのまま抽出された、プレーン テキストと英数字のコンテンツに対して機能するクエリに焦点を当てます。
オートコンプリートとクエリ候補
オートコンプリートや結果候補は、search
の代替手段です。これは、部分文字列の入力 (各文字の後) に基づいて一連のクエリ要求を入力につれて検索する方式で行います。 このチュートリアルで説明しているように、autocomplete
と suggestions
パラメーターは一緒に使用することも、個別に使用することもできますが、search
と一緒に使用することはできません。 完成した用語とクエリ候補はどちらもインデックスの内容から派生されます。 このエンジンは、インデックスに存在しない文字列や候補を返しません。 詳細については、「オートコンプリート (REST API)」と「検索候補 (REST API)」をご覧ください。
フィルター検索
フィルターは、Azure AI Search を元に構築したアプリで広く使用されています。 アプリケーション ページでは、フィルターは多くの場合、ユーザー向けのフィルター処理のためにリンク ナビゲーション構造のファセットとして視覚化されます。 フィルターは、インデックス付きコンテンツのスライスを公開するために、内部的にも使用されます。 たとえば、製品カテゴリに対してフィルターを使用して検索ページを初期化したり、インデックスに英語とフランス語の両方のフィールドが含まれている場合は、言語を初期化したりすることができます。
次の表に示すように、特殊なクエリ フォームを呼び出すフィルターが必要な場合もあります。 指定されていない検索 (search=*
) を含むフィルターを使用することも、用語、語句、演算子、およびパターンを含むクエリ文字列を含むフィルターを使用することもできます。
ユーザー シナリオ | 説明 |
---|---|
範囲フィルター | Azure AI Search では、範囲クエリは filter パラメーターを使用して作成されます。 詳細と例については、「範囲フィルターの例」をご覧ください。 |
ファセット ナビゲーション | ファセット ナビゲーション ツリーでは、ユーザーがファセットを選択できます。 フィルターでサポートされている場合、クリックするたびに検索結果が絞り込まれます。 ファセットによって指定された条件に一致しなくなったドキュメントを除外するフィルターによって、各ファセットがサポートされます。 |
Note
フィルター式で使用されるテキストは、クエリ処理中には分析されません。 テキスト入力は、照合に成功するか失敗するかのどちらかになる逐語的な文字パターンで、大文字と小文字が区別されます。 フィルター式は OData 構文を使用して構築され、インデックス内のすべての "フィルター可能な" フィールドの filter
パラメーターで渡されます。 詳細については、「Azure AI Search のフィルター」をご覧ください。
地理空間検索
地理空間検索では、"近くを検索" またはマップベースの検索エクスペリエンスのために、場所の緯度と経度の座標との一致を検索します。 Azure AI Search では、次の手順に従って地理空間検索を実装できます。
- Edm.GeographyPoint、Collection(Edm.GeographyPoint、Edm.GeographyPolygon) のいずれかの種類のフィルター可能フィールドを定義します。
- 受信ドキュメントに適切な座標が含まれていることを確認します。
- インデックス作成が完了したら、フィルターと地理空間関数を使用するクエリを作成します。
地理空間検索では、距離にキロメートルを使用します。 座標は (longitude, latitude
) の形式で指定されます。
地理空間検索のフィルターの例を次に示します。 このフィルターでは、地理的なポイント (この例ではワシントン D.C.) から半径 300 キロ以内に座標を持つ他の Location
フィールドを検索インデックスから見つけます。 結果にアドレス情報を返し、場所による自己ナビゲーションのためにオプションの facets
句を含めます。
POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2024-07-01
{
"count": true,
"search": "*",
"filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
"facets": [ "Address/StateProvince"],
"select": "HotelId, HotelName, Address/StreetAddress, Address/City, Address/StateProvince",
"top": 7
}
詳細および例については、地理空間検索の例に関するページをご覧ください。
ドキュメントの検索
前述のクエリ フォームとは対照的に、このフォームでは、対応するインデックス検索またはスキャンを行わずに、ID による検索ドキュメントを 1 つ取得します。 1 つのドキュメントのみが要求され、返されます。 ユーザーが検索結果で項目を選択する場合、ドキュメントの取得と詳細ページでのフィールドの設定が典型的な応答になり、ドキュメントの検索はこれをサポートする操作になります。
高度な検索: あいまい、ワイルドカード、近接、正規表現
高度なクエリ フォームは、特定のクエリ動作をトリガーする完全な Lucene パーサーと演算子に依存します。
クエリの種類 | 使用法 | 例/詳細情報 |
---|---|---|
フィールド検索 | search パラメーター、queryType=full |
1 つのフィールドを対象とする複合クエリ式を作成します。 フィールド検索の例 |
あいまい検索 | search パラメーター、queryType=full |
構造やスペリングが似ている語句を照合します。 あいまい検索の例 |
近接検索 | search パラメーター、queryType=full |
ドキュメント内で近くにある語句を検索します。 近接検索の例 |
用語ブースト | search パラメーター、queryType=full |
ブーストされた語を含むドキュメントの順位を、含まないドキュメントよりも引き上げます。 用語ブーストの例 |
正規表現検索 | search パラメーター、queryType=full |
正規表現の内容に基づいて照合します。 正規表現の例 |
ワイルドカードまたはプレフィックス検索 | *~ または ? を使用した search パラメーター、queryType=full |
プレフィックスとチルダ (~ ) または 1 つの文字 (? ) に基づいて照合します。 ワイルドカード検索の例 |
次のステップ
クエリの実装について詳しく見るには、構文ごとに例を確認します。 フルテキスト検索を初めて使用する場合は、クエリ エンジンの機能をよく理解しておくことをお勧めします。