インデックスを検索する
インデックスを作成して設定したら、それに対してクエリを実行して、インデックス付きドキュメント コンテンツ内の情報を検索できます。 単純なフィールド値の一致に基づいてインデックス エントリを取得することもできますが、ほとんどの検索ソリューションでは、"フルテキスト検索" セマンティクスを使用してインデックスに対してクエリを実行します。
フルテキスト検索
フルテキスト検索では、テキストベースのドキュメント コンテンツを解析してクエリ用語を検索する検索ソリューションについて説明します。 Azure AI 検索の全文検索クエリは、Lucene クエリ構文に基づいています。これは、インデックス内のデータの検索、フィルター処理、並べ替えのためのクエリ操作の豊富なセットを提供します。 Azure AI 検索では、以下の 2 種類の Lucene 構文がサポートされています。
- Simple - ユーザーによって送信されたリテラル クエリ用語に一致する基本的な検索を簡単に実行できるようにする直感的な構文。
- Full - 複雑なフィルター処理、正規表現、およびその他の高度なクエリをサポートする拡張構文。
クライアント アプリケーションは、検索式と、どのようにその式が評価され結果が返されるかを決定する他のパラメーターを指定して、Azure AI 検索にクエリを送信します。 クエリで送信される一般的なパラメーターには、次のものがあります。
- search - 検索する語句が含まれている検索式。
- queryType - 評価される Lucene 構文 (simple または full)。
- searchFields - 検索対象のインデックス フィールド。
- select - 結果に含めるフィールド。
- searchMode - 複数の検索語句に基づいて結果を含める場合の条件。 たとえば、comfortable hotel を検索するとします。 searchMode 値 Any では、"comfortable"、"hotel"、またはその両方を含むドキュメントが返されます。一方、searchMode 値 All では、結果が "comfortable" と "hotel" の両方を含むドキュメントに制限されます。
クエリ処理は、4 つのステージで構成されます。
- "クエリ解析"。 検索式が評価され、適切なサブクエリのツリーとして再構築されます。 サブクエリには、"用語クエリ" (検索式に含まれている特定の個々の単語を検索します。例: hotel)、"フレーズ クエリ" (検索式に含まれている引用符で指定された複数の用語のフレーズを検索します。例: "free parking")、"プレフィックス クエリ" (指定されたプレフィックスの付いている用語を検索します。例: air*。この場合、airway、air-conditioning、airport などに一致します) などがあります。
- 字句解析 - 言語ルールに基づいてクエリ用語が分析され、調整されます。 たとえば、テキストは小文字に変換され、不要な ストップワード ("the"、"a"、"is" など) が削除されます。 その後、単語は原形に変換され (たとえば、"comfortable" は "comfort" に簡略化される場合があります)、複合語は構成用語に分割されます。
- ドキュメント取得 - クエリ用語がインデックス付きの用語と照合され、一致する一連のドキュメントが特定されます。
- スコアリング - TF-IDF (用語頻度-逆ドキュメント頻度) の計算に基づいて関連性スコアが各結果に割り当てられます。
Note
インデックスのクエリの詳細と、簡易構文と完全構文の詳細については、Azure AI 検索ドキュメントの「Azure AI 検索におけるクエリの種類と構成」を参照してください。