クイック スタート:Azure portal で Azure Cognitive Search インデックスを作成する

このクイックスタートでは、架空のホテル データを含んだ組み込みのサンプル データ ソースとデータのインポート ウィザードを使用して、初めての検索インデックスを作成します。 ウィザードの案内に従って検索インデックス (hotels-sample-index) を作成できるので、関心のあるクエリを数分で記述することができます。

このクイックスタートでは使用しませんが、このウィザードには、AI エンリッチメントのページも用意されているので、画像ファイルや非構造化テキストからテキストおよび構造を抽出することができます。 AI エンリッチメントを含む同様のチュートリアルについては、スキルセットの作成に関するクイックスタートを参照してください。

前提条件

領域の確認

多くのユーザーが最初に利用するのは、無料版のサービスです。 Free レベルでは、インデックス、データ ソース、インデクサーがそれぞれ 3 つに限定されています。 十分な空き領域があることを確認してから開始してください。 このクイックスタートでは、各オブジェクトを 1 つずつ作成します。

サービスの概要ページで、既に所有しているインデックス、インデクサー、データ ソースの数を確認してください。

サービス ダッシュボードのインデックス、インデクサー、データ ソースの一覧のスクリーンショット。

インデックスの作成と読み込み

検索クエリは、"インデックス" を反復処理します。インデックスには、検索可能なデータやメタデータに加え、特定の検索の動作を最適化するその他の構造が含まれています。

このクイックスタートでは、データのインポート ウィザードから "インデクサー" を使用してクロールできる、組み込みのサンプル データセットを使用してインデックスの作成と読み込みを行います。 hotels-sample データ セットは、Azure Cosmos DB 上で Microsoft によってホストされ、内部接続経由でアクセスされます。 データにアクセスするために、独自の Cosmos DB アカウントやソース ファイルは必要ありません。

インデクサーは、サポートされている Azure データ ソースからメタデータとコンテンツを読み取ることができるソース固有のクローラーです。 通常、インデクサーはプログラムで作成されますが、ポータル上ではデータのインポート ウィザードを使用して作成できます。

手順 1 - データのインポート ウィザードを起動し、データ ソースを作成する

  1. Azure アカウントで Azure Portal にサインインします。

  2. 使用する検索サービスを探し、[概要] ページ上で、コマンド バーの [データのインポート] を選択して検索インデックスを作成し、設定します。

    コマンド バーの [データのインポート] コマンドのスクリーンショット。

  3. ウィザードで [データに接続します]>[サンプル]>[hotels-sample] の順に選択します。 このデータ ソースは組み込まれています。 独自のデータ ソースを作成する場合は、名前、型、接続情報を指定する必要があります。 作成すると、他のインポート操作で再度使用できる "既存のデータ ソース" になります。

    ウィザードの [サンプル データセットの選択] ページのスクリーンショット。

  4. 次のページに進みます。

手順 2 - [コンテンツのエンリッチ] ページをスキップする

ウィザードでは、インデックス作成に Cognitive Services AI アルゴリズムを組み込むための AI エンリッチメント スキル パイプラインの作成がサポートされます。

今回はこの手順をスキップして、 [対象インデックスをカスタマイズします] に直接進みましょう。

ウィザードの [Skip cognitive skill] (コグニティブ スキルのスキップ) ボタンのスクリーンショット。

ヒント

AI インデックス作成の例は、クイックスタートまたはチュートリアル内でステップ実行できます。

手順 3 - インデックスを構成する

組み込みのホテル サンプル インデックスには、既定のインデックス スキーマが定義されています。 いくつかの高度なフィルター例を除き、ホテル サンプル インデックスを対象とするドキュメントやサンプルのクエリは、このインデックス定義で実行されます。

ウィザードで生成されたホテル インデックス定義のスクリーンショット。

通常、コード ベースの作業では、インデックスの作成はデータの読み込み前に完了しています。 データのインポート ウィザードでは、クロール可能なすべてのデータ ソースの基本的なインデックスを生成することで、これらの手順を簡略化します。 最小限で、インデックスには名前とフィールド コレクションが必要です。 フィールドのいずれかが、各ドキュメントを一意に識別するためのドキュメント キーとしてマークされている必要があります。 さらに、オートコンプリートやクエリ候補が必要な場合は、言語アナライザーまたは suggester を指定できます。

フィールドには、データ型と属性があります。 上部に並んだチェック ボックスは、フィールドがどのように使用されるかを制御する の属性 です。

  • [キー] は一意のドキュメント識別子です。 常に文字列で、必須です。 キーに使用できるフィールドは 1 つだけです。
  • [取得可能] は、フィールドの内容が検索結果リストに現れることを意味します。 このチェック ボックスをオフにすることで、フィルター式でのみ使用されているフィールドなど、検索結果から抑制するフィールドを個別に指定できます。
  • [フィルター可能][ソート可能][ファセット可能] では、フィルタリング、並べ替え、ファセットのナビゲーション構造にフィールドを使用するかどうかを決定します。
  • [検索可能] は、フィールドがフルテキスト検索の対象となることを意味します。 文字列は検索可能です。 数値フィールドとブール型フィールドは通常、検索対象外として指定されます。

ストレージ要件は、属性の選択結果によって変わることがあります。 たとえば、[フィルター可能] では追加のストレージが必要ですが、[取得可能] ではそうではありません。

既定では、ウィザードは一意の識別子のデータ ソースをキー フィールドの基準としてスキャンします。 "文字列" は、取得可能かつ検索可能です。 "整数" は、取得可能フィルター可能ソート可能ファセット可能です。

  1. 既定値を受け入れます。

    既存の hotels データ ソースを使用してウィザードを 2 回目に再実行した場合は、インデックスが既定の属性で構成されることはありません。 以降のインポートでは、属性を手動で選択する必要があります。

  2. 次のページに進みます。

手順 4 - インデクサーを構成する

引き続き、データのインポート ウィザードで、[インデクサー]>[名前] の順に選択し、インデクサーの名前を入力します。

このオブジェクトによって、実行可能なプロセスが定義されます。 定期的なスケジュールを設定することもできますが、ここでは、インデクサーを即時に一度だけ実行する既定のオプションを使用します。

[送信] を選択して、インデクサーを作成し、同時に実行します。

ウィザードの hotels インデクサー定義のスクリーンショット。

進行状況の監視

ウィザードに、進行状況を監視できるインデクサーの一覧が表示されます。 自己ナビゲーションを行うには、[概要] ページに移動し、[インデクサー] タブを選択します。

ポータルによってページが更新されるまで数分かかることがありますが、新規に作成したインデクサーが一覧に表示されます。"進行中" または "成功" を示すステータスと、インデックスが作成されたドキュメントの数も表示されます。

ウィザードのインデクサーの進行状況メッセージのスクリーンショット。

結果をチェックする

サービスの概要ページには、Azure Cognitive Search サービスで作成されたリソースへのリンクがあります。 作成したインデックスを表示するには、リンクの一覧から [インデックス] を選択します。

ポータル ページが更新されるまで待ちます。 数分後に、ドキュメント数とストレージ サイズのインデックスが表示されます。

サービスのダッシュボードのインデックスの一覧のスクリーンショット。

この一覧で、作成した hotels-sample インデックスを選択すると、インデックスのスキーマが表示されます。 また、必要に応じて新しいフィールドを追加できます。

[フィールド] タブには、インデックス スキーマが表示されます。 クエリを記述していて、あるフィールドがフィルター可能であるか、または並べ替え可能であるかを確認する必要がある場合は、このタブに属性が表示されます。

一覧を下までスクロールし、新しいフィールドを入力します。 新しいフィールドはいつでも作成できますが、ほとんどの場合、既存のフィールドを変更することはできません。 既存のフィールドには、検索サービスにおける物理的表現が含まれているため、コード内であっても編集することはできません。 既存のフィールドを根本的に変えるには、インデックスを新たに作成して、元のインデックスは削除します。

Azure portal のサンプル インデックス定義のスクリーンショット。

その他のコンストラクト (スコアリング プロファイル、CORS オプションなど) はいつでも追加することができます。

インデックスの設計時に何を編集できて何を編集できないかを明確に理解するために、インデックスの定義オプションを確認してください。 淡色表示されているオプションは、値を編集することも削除することもできないことを表します。

Search エクスプローラーを使用してクエリを実行する

これで、Search エクスプローラー を使用してクエリできる検索インデックスができました。

Search エクスプローラー は、Search Documents API に準拠した REST 呼び出しを送信します。 このツールでは、単純なクエリ構文 完全な Lucene クエリ パーサー がサポートされています。

  1. コマンド バーの [Search エクスプローラー] を選択します。

    コマンド バーの [Search エクスプローラー] コマンドのスクリーンショット。

  2. [インデックス] で、[hotels-sample-index] を選択します。

    Search エクスプローラーのインデックスと API 選択リストのスクリーンショット。

  3. 検索バーに、以下の例のようなクエリ文字列を貼り付けて、Search を選択します。

    Search エクスプローラーのクエリ文字列テキスト フィールドと検索ボタンのスクリーンショット。

他のクエリの例を実行する

このセクションのすべてのクエリは、Search Explorer と Hotels サンプル インデックス用に設計されています。 結果は冗長な JSON ドキュメントとして返されます。 インデックスで「検索可能」とマークされているすべてのフィールドが検索結果に表示されます。 クエリの詳細については、「Azure Cognitive Search でのクエリ実行」を参照してください。

クエリ 説明
search=spa 上位 N 件の結果を含む単純なフルテキスト クエリ。 search=パラメータはキーワード検索に使用され、この場合、ドキュメント内の検索可能なフィールドに spa を含むものに対してホテル データを返します。
search=beach &$filter=Rating gt 4 フィルター処理されたクエリ この例では、評価が 4 を超えるものが返されます。
search=spa &$select=HotelName,Description,Tags &$count=true &$top=10 パラメーター化クエリ 検索パラメーターを追加するには & 記号を使用します。検索パラメーターは任意の順序で指定できます。
$selectパラメーターは、より簡潔な検索結果を得るために、フィールドのサブセットを返します。
$count=trueパラメーターは、クエリに一致するドキュメントの総数を返します。
$top=10 は、全体の中から上位 10 件のドキュメントを返します。 既定では、Azure Cognitive Search によって上位 50 件が返されます。 このパラメーターを使用して、量を増減できます。
search=* &facet=Category &$top=2 ファセット クエリ。指定したファセット値に合致する文書を集計して返します。 空の検索または修飾されていない検索では、すべてのドキュメントが表されます。 hotels インデックスでは、Category フィールドは "facetable" としてマークされます。
search=spa &facet=Rating 数値に対するファセット。 このクエリは、"spa" に対するテキスト検索での、評価に対するファセットです。 「評価」という用語は、インデックスに検索可能、フィルタリング可能、ファセット可能と表示されており、その数値 (1〜5) は各値で結果をグループ化するのに適しているため、ファセットとして指定することができる。
search=beach &highlight=Description &$select=HotelName, Description, Category, Tags 検索結果の強調表示 "description" フィールドに "beach" という用語が表示されたら強調表示されます。
search=seatle、その後で
search=seatle~ &queryType=full
あいまい検索 既定では、検索語のスペルを間違うと ("Seattle" に対する seatle など)、通常の検索では一致しません。 最初の例では、結果は返されません。 queryType=full を追加すると、Lucene の完全なクエリパーサが起動し、あいまい検索用の ~ オペランドをサポートします。
$filter=geo.distance(Location, geography'POINT(-122.12 47.67)') le 5 &search=* &$select=HotelName, Address/City, Address/StateProvince &$count=true 地理空間検索 このクエリの例では、緯度と経度の座標で指定された地点から 5 キロメートル未満の位置データについて、すべての結果をフィルタリングしています (この例では、ワシントン州レッドモンドを起点としています)。

重要なポイント

このクイックスタートでは、Azure portal を使用した Azure Cognitive Search について簡単に紹介しました。

データのインポート ウィザードを使って検索インデックスを作成する方法について説明しました。 最初の indexer を作成し、インデックス設計の基本的なワークフローを学びました。 ウィザードのベネフィットと制限事項の詳細については、「Azure Cognitive Search の重要データ ウィザード」を参照してください。

Azure portal の Search エクスプローラーを使って、フィルターや検索結果の強調表示、あいまい検索、地理空間の検索など、主要な機能を紹介する実践的な例を通じて、基本的なクエリの構文を学びました。

リソースをクリーンアップする

独自のサブスクリプションを使用している場合は、プロジェクトの最後に、作成したリソースがまだ必要かどうかを確認してください。 リソースを実行したままにすると、お金がかかる場合があります。 リソースは個別に削除することも、リソース グループを削除してリソースのセット全体を削除することもできます。

ポータルの左側のナビゲーション ウィンドウにある [すべてのリソース] または [リソース グループ] リンクを使って、リソースを検索および管理できます。

無料サービスを使用している場合は、インデックス、インデクサー、データ ソースがそれぞれ 3 つに制限されることに注意してください。 ポータルで個別の項目を削除して、制限を超えないようにすることができます。

次のステップ

ポータルのウィザードを使用して、ブラウザーで動作するすぐに使用できる Web アプリを生成します。 このウィザードを、先ほど作成した小さなインデックスで試すか、またはいずれかのビルトイン サンプル データ セットを使用して充実した検索環境を実現することができます。