クイック スタート: Azure portal で検索インデックスを作成する
この Azure AI Search クイックスタートでは、[データのインポート] ウィザードと、架空のホテル データを含んだ組み込みのサンプル データ ソースを使用して、初めての "検索インデックス" を作成します。 ウィザードでは、興味のあるクエリを数分以内で作成するのに役立つ、検索インデックスの作成手順が示されます。
検索クエリは、"インデックス" を反復処理します。インデックスには、検索可能なデータやメタデータに加え、特定の検索の動作を最適化するその他の構造が含まれています。 インデクサーは、サポートされている Azure データ ソースからメタデータとコンテンツを読み取ることができるソース固有のクローラーです。 通常、インデクサーはプログラムによって作成されます。 Azure portal では、これを [データのインポート] ウィザードを使用して作成できます。 詳細については、「Azure AI Search のインデックス」と「Azure AI Search のインデクサー」を参照してください。
Note
[データのインポート] ウィザードには、このクイックスタートでは説明されない AI エンリッチメントのオプションが含まれています。 これらのオプションを使用して、画像ファイルと非構造化テキストからテキストと構造を抽出できます。 AI エンリッチメントを含む同様のチュートリアルについては、「クイックスタート: Azure portal でスキルセットを作成する」を参照してください。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
Azure AI Search サービス (任意のレベルと任意のリージョン)。 サービスを作成するか、現在のサブスクリプションから既存のサービスを検索します。 このクイック スタート用には、無料のサービスを使用できます。
領域の確認
多くのユーザーが最初に利用するのは、無料版のサービスです。 Free レベルでは、インデックス、データ ソース、インデクサーがそれぞれ 3 つに限定されています。 十分な空き領域があることを確認してから開始してください。 このクイックスタートでは、各オブジェクトを 1 つずつ作成します。
サービスの [概要] ページをチェックして、既に所有しているインデックス、インデクサー、データ ソースの数を確認してください。
インデックスの作成と読み込み
Azure AI Search では、[データのインポート] ウィザードを使用してインデクサーを使用します。 hotels-sample データ セットは、Azure Cosmos DB 上で Microsoft によってホストされ、内部接続経由でアクセスされます。 データにアクセスするために、独自の Azure Cosmos DB アカウントやソース ファイルは必要ありません。
ウィザードを起動する
作業を開始するには、Azure portal で Azure AI Search サービスを参照し、[データのインポート] ウィザードを開きます。
ご自分の Azure アカウントで Azure portal にサインインし、Azure AI Search サービスに移動します。
[概要] ページで、[データのインポート] を選択して検索インデックスを作成し、設定します。
[データのインポート] ウィザードが開きます。
データ ソースへの接続
次の手順では、検索インデックスに使用するデータ ソースに接続します。
[データへの接続] タブの [データのインポート] ウィザードで、[データ ソース] ドロップダウン リストを展開し、[サンプル] を選択します。
組み込みのサンプルの一覧で、[hotels-sample] を選択します。
このクイックスタートでは、組み込みのデータ ソースを使用します。 独自のデータ ソースを作成する場合は、名前、型、接続情報を指定する必要があります。 データ ソースを作成した後は、他のインポート操作で再度使用できるようになります。
[次: コグニティブ スキルを追加します (省略可能)] を選択して続行します。
コグニティブ スキルの構成をスキップする
[データのインポート] ウィザードでは、インデックス作成に Azure AI サービスのアルゴリズムを組み込むための AI エンリッチメント パイプラインの作成がサポートされます。 詳細については、Azure AI Search の AI エンリッチメントに関するページを参照してください。
このクイックスタートでは、[コグニティブ スキルを追加します] タブの AI エンリッチメント構成オプションを無視します。
[スキップ先: 対象インデックスをカスタマイズします] を選択して続行します。
ヒント
AI インデックス作成の例を試す場合は、次の記事を参照してください。
インデックスの構成
Azure AI Search サービスでは、組み込みの hotels-sample インデックスのスキーマが生成されます。 いくつかの高度なフィルター例を除き、hotels-sample インデックスを対象とするドキュメントやサンプルのクエリは、このインデックス定義で実行されます。 定義は、[データのインポート] ウィザードの [対象インデックスをカスタマイズします] タブに表示されます。
通常、コード ベースの作業では、インデックスの作成はデータの読み込み前に完了しています。 [データのインポート] ウィザードでは、クロール可能なすべてのデータ ソースの基本的なインデックスを生成することで、これらの手順を簡略化します。
少なくとも、インデックスにはインデックス名とフィールドのコレクションが必要です。 フィールドのいずれかが、各ドキュメントを一意に識別するための "ドキュメント キー" としてマークされている必要があります。 インデックス キーにより、一意のドキュメント識別子が提供されます。 値は常に文字列です。 オートコンプリートやクエリ候補が必要な場合は、言語アナライザーまたは suggester を指定できます。
各フィールドには、名前、データ型、検索インデックス内のフィールドの使用方法を制御する "属性" があります。 [対象インデックスをカスタマイズします] タブでは、チェックボックスを使用して、すべてのフィールドまたは特定のフィールドに対して次の属性を有効または無効にします。
- [取得可能]: 検索インデックスにフィールドの内容を含めます。
- [フィルター可能]: フィールドの内容を検索インデックスのフィルターとして使用できるようにします。
- [Sortable] (並べ替え可能): フィールドの内容を検索インデックスの並べ替えに使用できるようにします。
- [ファセット可能]: ファセット ナビゲーション構造にフィールドの内容を使用します。
- [検索可能]: フィールドの内容をフルテキスト検索に含めます。 文字列は検索可能です。 数値フィールドとブール型フィールドは通常、検索対象外として指定されます。
インデックスのストレージ要件は、属性選択の結果によって異なる場合があります。 たとえば、フィールドを [フィルター可能] として有効にする場合にはより多くのストレージが必要になりますが、フィールドを [取得可能] として有効にする場合はそうではありません。 詳細については、「属性と suggester がストレージに与える影響を示す例」を参照してください。
既定では、[データのインポート] ウィザードは一意の識別子のデータ ソースを [キー] フィールドの基準としてスキャンします。 文字列 は、取得可能かつ検索可能です。 整数には、[取得可能]、[フィルター可能]、[Sortable] (並び替え可能)、[ファセット可能] の属性が付いています。
インデックスを構成するには、こちらの手順に従います。
システムによって生成された値を [インデックス名] (hotels-sample-index) と [キー] フィールド (HotelId) にそのまま使用します。
システムによって生成された値をすべてのフィールド属性にそのまま使用します。
重要
既存の hotels-sample データ ソースを使用してウィザードを再実行した場合、インデックスは既定の属性で構成されません。 以降のインポートでは、属性を手動で選択する必要があります。
[次: インデクサーの作成] を選択して続行します。
インデクサーを構成する
最後の手順では、検索インデックスのインデクサーを構成します。 このオブジェクトによって、実行可能なプロセスが定義されます。 定期的なスケジュールに従って実行するようにインデクサーを構成することができます。
システムによって生成された値を [Indexer name] (インデクサー名) (hotels-sample-indexer) にそのまま使用します。
このクイックスタートでは、既定のオプションを使用して、インデクサーをすぐに 1 回実行します。
[送信] を選択して、インデクサーを作成し、同時に実行します。
インデクサーの進行状況を監視する
[データのインポート] ウィザードが完了したら、インデクサーまたはインデックスの作成を監視できます。 サービスの概要ページには、Azure AI Search サービスで作成されたリソースへのリンクがあります。
Azure portal で、Azure AI Search サービスの [概要] ページに移動します。
[使用状況] を選択して、サービス リソースの概要の詳細を表示します。
[インデクサー] ボックスで、[インデクサーの表示] を選択します。
Azure portal でページの結果が更新されるまでには数分かかる場合があります。 状態が [実行中] または [成功] の新しく作成されたインデクサーが一覧に表示されます。 一覧には、インデックスが作成されたドキュメントの数も表示されます。
検索インデックスの結果をチェックする
サービスの [概要] ページで、インデックスの作成に対して同様のチェックを実行できます。
[インデックス] ボックス で、[インデックスの表示] を選択します。
Azure portal のページが更新されるまで待ちます。 ドキュメント数とストレージ サイズと共にインデックスが表示されます。
新しいインデックスのスキーマを表示するには、インデックス名 [hotels-sample-index] を選択します。
[hotels-sample-index] インデックスのページで、[フィールド] タブを選択してインデックス スキーマを表示します。
クエリを記述していて、あるフィールドが [フィルター可能]であるか、または [Sortable] (並べ替え可能) であるかを確認する必要がある場合は、このタブを使用して属性の設定を表示します。
フィールドを追加または変更する
[フィールド] タブで、[フィールドの追加] オプションを使用してスキーマ定義の新しいフィールドを作成できます。 フィールド名、データ型、属性の設定を指定します。
新しいフィールドはいつでも作成できますが、ほとんどの場合、既存のフィールドを変更することはできません。 既存のフィールドには、検索サービスにおける物理的表現が含まれているため、コード内であっても編集することはできません。 既存のフィールドを根本的に変えるには、インデックスを新たに作成して、元のインデックスと置き換える必要があります。 その他のコンストラクト (スコアリング プロファイル、CORS オプションなど) はいつでも追加することができます。
インデックスの設計時に何を編集できて何を編集できないかを明確に理解するために、インデックスの定義オプションを確認してください。 フィールド の一覧で淡色表示されているオプションは、編集することも削除することもできない値を示しています。
検索エクスプローラーを使用したクエリ実行
これで、Azure AI Search の検索エクスプローラー ツールを使用してクエリを実行できる検索インデックスが作成されました。 検索エクスプローラーでは、Search Documents REST API に準拠した REST 呼び出しが送信されます。 このツールでは、単純なクエリ構文と完全な Lucene クエリ構文がサポートされています。
このツールには、インデックス ページの [検索エクスプローラー] タブと、サービスの [概要] ページからアクセスできます。
Azure portal で、Azure AI Search サービスの [概要] ページに移動して、[検索エクスプローラー] を選択します。
[インデックス] ドロップダウン リストで、新しいインデックス [hotels-sample-index] を選択します。
[要求 URL] ボックスが更新され、選択したインデックスと API バージョンが含まれたリンク先が表示されます。
[クエリ文字列] ボックスに、クエリ文字列を入力します。
このクイックスタートでは、「他のクエリ例を実行する」セクションに記載されている例からクエリ文字列を選ぶことができます。 次の例では、
search=beach &$filter=Rating gt 4
というクエリを使います。クエリ構文の表示を変更するには、[表示] ドロップダウン メニューを使用して、[クエリ ビュー] と [JSON ビュー] を切り替えます。
[検索] を選んでクエリを実行します。
[結果] ボックスが更新され、クエリ結果が表示されます。 結果が長い場合は、[結果] ボックスのミニマップを使用して、出力の表示されていない領域にすばやくジャンプします。
詳細については、「クイック スタート: 検索エクスプローラーを使用して Azure portal でクエリを実行する」を参照してください。
他のクエリの例を実行する
次の表のクエリは、検索エクスプローラーを使用して hotels-sample インデックスを検索するように設計されています。 結果は冗長な JSON ドキュメントとして返されます。 インデックスで [検索可能] とマークされているすべてのフィールドが検索結果に表示されます。
クエリ構文 | クエリの種類 | 説明 | 結果 |
---|---|---|---|
search=spa |
フルテキスト クエリ | search= パラメーターは、特定のキーワードを検索します。 |
このクエリでは、ドキュメント内の検索可能なフィールドにキーワード spa が含まれたホテル データがシークされます。 |
search=beach &$filter=Rating gt 4 |
フィルター処理されたクエリ | filter パラメーターは、指定された条件でフィルター処理します。 |
このクエリでは、評価値が 4 を超えるビーチ ホテルがシークされます。 |
search=spa &$select=HotelName,Description,Tags &$count=true &$top=10 |
パラメーター化クエリ | アンパサンド記号 & を使用して検索パラメーターを追加します。検索パラメーターは任意の順序で指定できます。 - $select パラメーターは、より簡潔な検索結果を得るために、フィールドのサブセットを返します。 - $count=true パラメーターは、クエリに一致するドキュメントの総数を返します。 - $top パラメーターは、全体の中から指定された数の上位のドキュメントを返します。 |
このクエリでは、上位 10 件のスパ ホテルがシークされ、その名前、説明、タグが表示されます。 既定では、Azure AI Search によって上位 50 件が返されます。 このパラメーターを使用して、その数を増減できます。 |
search=* &facet=Category &$top=2 |
文字列値に対するファセット クエリ | facet パラメーターは、指定されたフィールドに一致するドキュメントの集計数を返します。 - 指定したフィールドは、インデックスで [ファセット可能] としてマークする必要があります。 - 空の検索または修飾されていない検索では、すべてのドキュメントが表されます。 |
このクエリでは、Category フィールドの集計数がシークされ、上位 2 つが表示されます。 |
search=spa &facet=Rating |
数値に対するファセット クエリ | facet パラメーターは、指定されたフィールドに一致するドキュメントの集計数を返します。 - Rating フィールドは数値ですが、インデックスで [取得可能]、[フィルター可能]、[ファセット可能] としてマークされているため、ファセットとして指定できます。 |
このクエリでは、Rating フィールド データでスパ ホテルがシークされます。 Rating フィールドには、結果を各値でグループ化するのに適した数値 (1 から 5) があります。 |
search=beach &highlight=Description &$select=HotelName, Description, Category, Tags |
検索結果の強調表示 | highlight パラメーターは、ドキュメント データ内の指定したキーワードの一致するインスタンスに強調表示を適用します。 |
このクエリでは、Description フィールド内のキーワード beach のインスタンスがシークされて強調表示され、対応するホテル名、説明、カテゴリ、タグが表示されます。 |
元のクエリ: search=seatle 調整されたクエリ: search=seatle~ &queryType=full |
あいまい検索 | 既定では、クエリ用語のスペルを間違うと (Seattle に対する seatle など)、通常の検索では一致する項目を返すことができません。 queryType=full パラメーターは、チルダ ~ オペランドをサポートする完全な Lucene クエリ パーサーを呼び出します。 これらのパラメーターが存在する場合、クエリは指定したキーワードのあいまい検索を実行します。 このクエリでは、一致する結果と、キーワードに類似しているが完全に一致しない結果がシークされます。 |
キーワード seatle のスペルが間違っているため、元のクエリでは結果は返されません。 調整されたクエリは、完全な Lucene クエリ パーサーを呼び出して、用語 seatle~ のインスタンスと一致させます。 |
$filter=geo.distance(Location, geography'POINT(-122.12 47.67)') le 5 &search=* &$select=HotelName, Address/City, Address/StateProvince &$count=true |
地理空間検索 | $filter=geo.distance パラメーターは、指定した Location と geography'POINT の各座標に基づいて位置データのすべての結果をフィルター処理します。 |
このクエリでは、緯度と経度の座標 -122.12 47.67 の 5 キロメートル以内にあるホテル ("レドモンド、ワシントン、米国") がシークされます。クエリには、ホテル名と住所の場所と共に一致項目の総数 &$count=true が表示されます。 |
少し時間を取って、インデックスに対してこれらのクエリ例をいくつか試してみてください。 クエリの詳細については、「Azure AI Search でのクエリ実行」を参照してください。
リソースをクリーンアップする
独自のサブスクリプションを使用する場合は、プロジェクトの最後に、作成したリソースがまだ必要かどうかを確認することをお勧めします。 リソースを実行したままにすると、お金がかかる場合があります。 リソースを個別に削除するか、リソース グループを削除してリソースのセット全体を削除することができます。
Azure portal の左側のペインにある [すべてのリソース] または [リソース グループ] で、お使いのサービスのリソースを検索および管理できます。
無料サービスを使用する場合は、インデックス、インデクサー、データ ソースがそれぞれ 3 つに制限されることに注意してください。 Azure portal で個別の項目を削除して、制限を超えないようにすることができます。
次のステップ
Azure portal のウィザードで、ブラウザーで動作するすぐに使用できる Web アプリを生成してみましょう。 このウィザードを使用して、このクイックスタートで作成した小さなインデックスで試すか、またはいずれかのビルトイン サンプル データ セットを使用して充実した検索環境を実現することができます。