検索トラフィック分析用のテレメトリ データを収集する

検索トラフィックの分析とは、ユーザーが開始したクリック イベントやキーボード入力など、Azure AI Search アプリケーションのユーザー操作に関するテレメトリ収集用のパターンのことです。 この情報を使用すると、頻度の高い検索用語、クリックスルー率、および 0 件の結果を生成するクエリ入力など、検索ソリューションの有効性を判定できます。

このパターンでは、Application Insights (Azure Monitor の 1 つの機能) 上で依存関係を取得して、ユーザー データを収集します。 それには、この記事で説明されているように、クライアント コードにインストルメンテーションを追加する必要があります。 最後に、データを分析するためのレポート メカニズムが必要になります。 Power BI をお勧めしますが、Application Insights に接続できる任意の視覚化ツールを使用できます。

Note

この記事で説明するパターンは、高度なシナリオと、クライアントに追加するコードによって生成されるクリックストリーム データを対象としています。 その一方、サービス ログは設定が簡単で、さまざまなメトリックを提供できます。また、ポータルで実行可能で、コードは必要ありません。 すべてのシナリオでログ記録を有効にすることをお勧めします。 詳細については、ログ データの収集と分析に関するページを参照してください。

関連する検索データを識別する

検索トラフィックの分析に役立つメトリックを得るには、検索アプリケーションのユーザーからのいくつかのシグナルをログに記録する必要があります。 これらのシグナルは、ユーザーが興味を持っていたり関連があると考えているコンテンツを示しています。 検索トラフィックの分析の場合、それには以下のものが含まれます。

  • ユーザーによって生成された検索イベント: ユーザーによって開始された検索クエリだけが対象となります。 ファセットの入力や内部情報の取得に使用されるような他の検索要求は、重要ではありません。 ユーザーが開始したイベントのみをインストルメント化して、結果にスキューやバイアスが含まれないようにしてください。

  • ユーザーによって生成されたクリック イベント: 検索結果ページでは、クリック イベントは一般に、ドキュメントが特定の検索クエリの適切な結果であることを意味します。

検索やクリックのイベントを関連付け ID とリンクすることで、アプリケーションの検索機能がどれぐらい適切に実行されているかをより詳しく理解できるようになります。

検索トラフィックの分析を追加する

Azure AI Search サービスのポータル ページで、[検索トラフィックの分析] ページを開いて、このテレメトリ パターンに従うためのチート シートにアクセスします。 このページからは、Application Insights リソースの選択または作成、インストルメンテーション キーの取得、ソリューションに適合させることができるスニペットのコピー、パターンに反映されたスキーマに基づいて構築された Power BI レポートのダウンロードを行うことができます。

Application Insights を設定するためのポータル コマンドとページのスクリーンショット。

ステップ 1: Application Insights の設定

既存の Application Insights リソースを選択するか、まだない場合はリソースを作成する必要があります。

Visual Studio プロジェクトの一部の種類に対して機能するショートカットは、以下の手順で反映されます。

たとえば、次の手順では、静的 Web アプリに検索機能を追加することによるクライアントを使用します。

  1. Visual Studio でソリューションを開きます。

  2. [プロジェクト] メニューで [接続済みサービス]>[追加]>[Azure Application Insights] を選択します。

  3. [依存関係への接続] で、[Azure Application Insights ] を選択し、[次へ] を選択します。

  4. Azure サブスクリプションと Application Insights リソースを選択し、[完了] を選択します。

この時点で、アプリケーションはアプリケーション監視用に設定されます。したがって、すべてのページ読み込みは既定のメトリックで追跡されるようになります。

このショートカットが機能しなかった場合は、「Application Insights のサーバー側テレメトリを有効にする」を参照してください。

ステップ 2: インストルメンテーションを追加する

クライアント アプリケーションにインストルメンテーション コードを追加します。 Azure portal の [Traffic Analytics の検索] ページには、アプリケーション コードに貼り付けることができるコード スニペットが用意されています。

テレメトリ クライアントを作成する

Application Insights にイベントを送信するオブジェクトを作成します。 インストルメンテーションは、ブラウザーで実行されるサーバー側アプリケーション コードまたはクライアント側コードに追加できます。ここでは、C# と JavaScript のバリアントとして表しています。 その他の言語については、「サポートされているプラットフォームとフレームワーク」を参照してください。

サーバー側のテレメトリは、アプリケーション層でメトリックをキャプチャします (たとえば、Azure 上の Web サービスまたは企業ネットワーク上のオンプレミス アプリとして実行されるアプリーション内)。 サーバー側のテレメトリでは、検索とクリックのイベント、結果内のドキュメントの位置、およびクエリ情報がキャプチャされますが、データ コレクションのスコープは、そのレイヤーで入手可能なすべての情報となります。

クライアントには、クエリ入力の操作、ナビゲーションの追加、コンテキストの付加 (たとえば、クエリがホーム ページから開始されたか、製品ページから開始されたか) を行うコードがある場合があります。 お使いのソリューションにふさわしい場合は、テレメトリに追加の詳細が反映されるように、クライアント側のインストルメンテーションも選択できます。 この追加の詳細情報を収集する仕組みは、このパターンの範囲を超えていますが、そのような決定については、「Web ページ用 Application Insights」で確認できます。

インストルメンテーション キーは、Azure potral の Application Insights のページまたは Azure AI Search の [トラフィック分析の検索] ページで取得できます。

// Application Insights SDK: https://www.nuget.org/packages/Microsoft.ApplicationInsights.Web 

var telemetryClient = new TelemetryClient();
telemetryClient.InstrumentationKey = "0000000000000000000000000000";

関連付けのための検索 ID を要求する

重要

Azure portal では、要求ヘッダーのスニペットは、Azure SDK の以前のバージョンを使って作成されます。 更新プログラムは保留中です。

検索要求をクリックに関連付けるには、これら 2 つの異なるイベントを関連付ける関連付け ID を保持している必要があります。 HTTP ヘッダーを使って検索 ID を要求すると、Azure AI Search から提供されます。

検索 ID があれば、Azure AI Search によって要求自体に対して出力されるメトリックと、Application Insights でログしているカスタム メトリックを、関連付けることができます。

var client = new SearchClient(<SEARCH SERVICE NAME>, <INDEX NAME>, new AzureDefaultCredentials())
var headers = new Dictionary<string, List<string>>() { { "x-ms-azs-return-searchid", new List<string>() { "true" } } };
var response = await client.Documents.SearchWithHttpMessagesAsync(searchText: searchText, searchParameters: parameters, customHeaders: headers);
IEnumerable<string> headerValues;
string searchId = string.Empty;
if (response.Response.Headers.TryGetValues("x-ms-azs-searchid", out headerValues)){
	 searchId = headerValues.FirstOrDefault();
} 

検索イベントの記録

ユーザーによって検索要求が発行されるたびに、Application Insights のカスタム イベントに関する次のスキーマを使用して、検索要求を検索イベントとしてログに記録する必要があります。 ユーザーが生成する検索クエリだけをログに記録してください。

  • SearchServiceName: (文字列) 検索サービス名
  • SearchId: (GUID) 検索クエリの一意識別子 (検索応答で提供されます)
  • IndexName: (文字列) クエリの実行対象となる検索サービス インデックス
  • QueryTerms: (文字列) ユーザーによって入力された検索語句
  • ResultCount: (整数) 返されたドキュメントの数 (検索応答で提供されます)
  • ScoringProfile: (文字列) 使用されるスコアリング プロファイルの名前 (ある場合)

Note

検索クエリに $count=true を追加して、ユーザーによって生成されたクエリの数を要求します。 詳細については、ドキュメントの検索 (REST) に関するページを参照してください。

var properties = new Dictionary <string, string> {
	{"SearchServiceName", <SEARCH SERVICE NAME>},
	{"SearchId", <SEARCH ID>},
	{"IndexName", <INDEX NAME>},
	{"QueryTerms", <SEARCH TERMS>},
	{"ResultCount", <RESULTS COUNT>},
	{"ScoringProfile", <SCORING PROFILE USED>}
};

telemetryClient.TrackEvent("Search", properties);

クリック イベントの記録

ユーザーがドキュメントをクリックするたびに、それをシグナルとして、検索分析用にログに記録する必要があります。 Application Insights のカスタム イベントで次のスキーマを使用して、これらのイベントをログに記録します。

  • ServiceName: (文字列) 検索サービス名
  • SearchId: (GUID) 関連する検索クエリの一意識別子
  • DocId: (文字列) ドキュメント識別子
  • Position: (整数) 検索結果ページのドキュメントの順位

Note

Position は、アプリケーションでの基本的な順序を指します。 比較できるように、この数値は常に同じであれば自由に設定できます。

var properties = new Dictionary <string, string> {
	{"SearchServiceName", <SEARCH SERVICE NAME>},
	{"SearchId", <SEARCH ID>},
	{"ClickedDocId", <CLICKED DOCUMENT ID>},
	{"Rank", <CLICKED DOCUMENT POSITION>}
};

telemetryClient.TrackEvent("Click", properties);

ステップ 3: Power BI で分析する

アプリをインストルメント化し、アプリケーションが Application Insights に正しく接続されていることを確認したら、Power BI Desktop でデータを分析するための定義済みのレポート テンプレートをダウンロードします。 このレポートには、検索トラフィックの分析のためにキャプチャされた追加データの分析に役立つ定義済みのグラフとテーブルが含まれています。

  1. Azure portal の検索サービス ページの [設定] で、[トラフィック分析の検索] を選択します。

  2. [Power BI Desktop の取得] を選択して Power BI をインストールします。

  3. レポートを取得するには、[Power BI レポートのダウンロード] を選択します。

  4. レポートが Power BI Desktop で開lき、Application Insights に接続して資格情報を指定するよう求められます。 接続情報は、Application Insights リソースの Azure portal ページで見つけることができます。 資格情報には、ポータルのサインインに使用するのと同じユーザー名とパスワードを指定します。

    Power BI から Application Insights に接続する方法を示すスクリーンショット。

  5. [読み込み] を選択します。

レポートには、検索のパフォーマンスと関連性を向上させるために、多くの情報に基づいた意思決定を行う上で役立つグラフとテーブルが含まれています。

メトリックには、次のものが含まれています。

  • 検索ボリュームおよび最も一般的な語句とドキュメントのペア: クリック数で並べ替えられた、結果的に同じドキュメントがクリックされた語句。
  • クリックされていない検索語句: クリックが登録されていない上位クエリの語句

次のスクリーンショットは、レポートに含まれるデータ要素を示したものです。

データ カタログで使用できるスキーマ要素を示すスクリーンショット。

次のステップ

検索アプリケーションをインストルメント化して、検索サービスに関する有益で洞察に富んだデータを取得します。

Application Insights では詳しい情報が見つかります。また、さまざまなサービス レベルについて詳しくは、価格に関するページをご覧ください。

レポート作成の詳細について説明します。 「Power BI Desktop の概要」を参照してください。