検索トラフィックの分析とはWhat is search traffic analytics

検索トラフィックの分析は、検索サービスのフィードバック ループの実装パターンです。Search traffic analytics is a pattern for implementing a feedback loop for your search service. このパターンでは、必要なデータと、Application Insights を使用してデータを収集する方法を示します。Application Insights は、複数のプラットフォームでサービスを監視する業界最先端のサービスです。This pattern describes the necessary data and how to collect it using Application Insights, an industry leader for monitoring services in multiple platforms.

検索トラフィックの分析により、検索サービスを可視化し、ユーザーとその行動に関する洞察を明らかにすることができます。Search traffic analytics lets you gain visibility into your search service and unlock insights about your users and their behavior. ユーザーが選択した内容に関するデータを得ることで、検索エクスペリエンスをさらに向上させるための意思決定が可能となり、結果が期待していたものではない場合にバックオフできます。By having data about what your users choose, it's possible to make decisions that further improve your search experience, and to back off when the results are not what expected.

Azure Search は、Azure Application Insights と Power BI を統合して詳細な監視と追跡を行うことができるテレメトリ ソリューションを提供します。Azure Search offers a telemetry solution that integrates Azure Application Insights and Power BI to provide in-depth monitoring and tracking. Azure Search を操作するには API が必要となるため、検索を使用する開発者は、このページの手順に従ってテレメトリを実装する必要があります。Because interaction with Azure Search is only through APIs, the telemetry must be implemented by the developers using search, following the instructions in this page.

関連する検索データの特定Identify the relevant search data

有用な検索メトリックを得るには、検索アプリケーションのユーザーからのシグナルをログに記録する必要があります。To have useful search metrics, it's necessary to log some signals from the users of the search application. これらのシグナルは、ユーザーが興味を持っているコンテンツやニーズに関連するとみなしたコンテンツを示しています。These signals signify content that users are interested in and that they consider relevant to their needs.

検索トラフィックの分析には、次の 2 つのシグナルが必要です。There are two signals Search Traffic Analytics needs:

  1. ユーザーによって生成された検索イベント: ユーザーによって開始された検索クエリだけが対象となります。User generated search events: only search queries initiated by a user are interesting. ファセット、追加コンテンツ、または内部情報の設定に使用される検索要求は重要ではありません。これらの要求は結果を歪曲し、偏った結果を招きます。Search requests used to populate facets, additional content or any internal information, are not important and they skew and bias your results.

  2. ユーザーによって生成されたクリック イベント: このドキュメントでの "クリック" は、検索クエリから返された特定の検索結果を選択するユーザーを指します。User generated click events: By clicks in this document, we refer to a user selecting a particular search result returned from a search query. 一般に、クリックは、ドキュメントが特定の検索クエリの適切な結果であることを意味します。A click generally means that a document is a relevant result for a specific search query.

検索イベントとクリック イベントを関連付け ID と結び付けることで、アプリケーションでのユーザーの行動を分析できます。By linking search and click events with a correlation id, it's possible to analyze the behaviors of users on your application. 検索に関するこれらの洞察は、検索トラフィックのログだけでは得られません。These search insights are impossible to obtain with only search traffic logs.

検索トラフィックの分析を実装する方法How to implement search traffic analytics

前のセクションで説明したシグナルは、ユーザーが検索アプリケーションを操作するときに、そのアプリケーションから収集する必要があります。The signals mentioned in the preceding section must be gathered from the search application as the user interacts with it. Application Insights は、柔軟なインストルメンテーション オプションを備え、複数のプラットフォームで利用できる拡張可能な監視ソリューションです。Application Insights is an extensible monitoring solution, available for multiple platforms, with flexible instrumentation options. Application Insights を使用すると、Azure Search で作成された Power BI 検索レポートを活用してデータを簡単に分析できます。Usage of Application Insights lets you take advantage of the Power BI search reports created by Azure Search to make the analysis of data easier.

Azure Search サービスのポータル ページの [検索トラフィックの分析] ブレードには、このテレメトリ パターンに従うためのチート シートが含まれています。In the portal page for your Azure Search service, the Search Traffic Analytics blade contains a cheat sheet for following this telemetry pattern. また、Application Insights リソースの選択や作成、必要なデータの表示をすべて 1 か所で行うことができます。You can also select or create an Application Insights resource, and see the necessary data, all in one place.


1.Application Insights リソースを選択する1. Select an Application Insights resource

使用する Application Insights リソースを選択するか、リソースがまだない場合は作成する必要があります。You need to select an Application Insights resource to use or create one if you don't have one already. 既に使用中のリソースを使って、必要なカスタム イベントをログに記録できます。You can use a resource that's already in use to log the required custom events.

新しい Application Insights リソースを作成する場合、このシナリオにはすべてのアプリケーションの種類が有効です。When creating a new Application Insights resource, all application types are valid for this scenario. 使用しているプラットフォームに最適なアプリケーションの種類を選択します。Select the one that best fits the platform you are using.

アプリケーションのテレメトリ クライアントを作成するために、インストルメンテーション キーが必要です。You need the instrumentation key for creating the telemetry client for your application. このキーは、Application Insights ポータル ダッシュボードから取得することも、使用するインスタンスを選択して、[検索トラフィックの分析] ページから取得することもできます。You can get it from the Application Insights portal dashboard, or you can get it from the Search Traffic Analytics page, selecting the instance you want to use.

2.アプリケーションをインストルメント化する2. Instrument your application

このフェーズでは、前の手順で作成した Application Insights リソースを使用して、独自の検索アプリケーションをインストルメント化します。This phase is where you instrument your own search application, using the Application Insights resource your created in the step above. このプロセスには、次の 4 つの手順があります。There are four steps to this process:

I.テレメトリ クライアントを作成する: これは、Application Insights リソースにイベントを送信するオブジェクトです。I. Create a telemetry client This is the object that sends events to the Application Insights Resource.


private TelemetryClient telemetryClient = new TelemetryClient();
telemetryClient.InstrumentationKey = "<YOUR INSTRUMENTATION KEY>";


<script type="text/javascript">var appInsights=window.appInsights||function(config){function r(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},u=document,e=window,o="script",s=u.createElement(o),i,f;s.src=config.url||"//az416426.vo.msecnd.net/scripts/a/ai.0.js";u.getElementsByTagName(o)[0].parentNode.appendChild(s);try{t.cookie=u.cookie}catch(h){}for(t.queue=[],i=["Event","Exception","Metric","PageView","Trace","Dependency"];i.length;)r("track"+i.pop());return r("setAuthenticatedUserContext"),r("clearAuthenticatedUserContext"),config.disableExceptionTracking||(i="onerror",r("_"+i),f=e[i],e[i]=function(config,r,u,e,o){var s=f&&f(config,r,u,e,o);return s!==!0&&t["_"+i](config,r,u,e,o),s}),t}
instrumentationKey: "<YOUR INSTRUMENTATION KEY>"

他の言語とプラットフォームについては、こちらの一覧をご覧ください。For other languages and platforms, see the complete list.

II.関連付けのための検索 ID を要求する: 検索要求をクリックに関連付けるには、この 2 つの異なるイベントを関連付ける関連付け ID が必要です。II. Request a Search ID for correlation To correlate search requests with clicks, it's necessary to have a correlation id that relates these two distinct events. ヘッダーで検索 ID を要求すると、Azure Search から ID が提供されます。Azure Search provides you with a Search Id when you request it with a header:


// This sample uses the Azure Search .NET SDK https://www.nuget.org/packages/Microsoft.Azure.Search

var client = new SearchIndexClient(<ServiceName>, <IndexName>, new SearchCredentials(<QueryKey>)
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();


request.setRequestHeader("x-ms-azs-return-searchid", "true");
request.setRequestHeader("Access-Control-Expose-Headers", "x-ms-azs-searchid");
var searchId = request.getResponseHeader('x-ms-azs-searchid');

III.検索イベントをログに記録する: III. Log Search events

ユーザーによって検索要求が発行されるたびに、Application Insights のカスタム イベントで次のスキーマを使用して、検索要求を検索イベントとしてログに記録します。Every time that a search request is issued by a user, you should log that as a search event with the following schema on an Application Insights custom event:

ServiceName: (文字列) 検索サービス名 SearchId: (GUID) 検索クエリの一意の識別子 (検索応答で提供) IndexName: (文字列) 照会する検索サービス インデックス QueryTerms: (文字列) ユーザーが入力した検索語句 ResultCount: (int) 返されたドキュメントの数 (検索応答で提供) ScoringProfile: (文字列) 使用するスコアリング プロファイルの名前 (存在する場合)。ServiceName: (string) search service name SearchId: (guid) unique identifier of the search query (comes in the search response) IndexName: (string) search service index to be queried QueryTerms: (string) search terms entered by the user ResultCount: (int) number of documents that were returned (comes in the search response) ScoringProfile: (string) name of the scoring profile used, if any


検索クエリに $count=true を追加して、ユーザーによって生成されたクエリのカウントを要求します。Request count on user generated queries by adding $count=true to your search query. 詳細については、こちらをご覧ください。See more information here


ログに記録するのは、ユーザーによって生成された検索クエリだけであることに注意してください。Remember to only log search queries that are generated by users.


var properties = new Dictionary <string, string> {
{"SearchServiceName", <service name>},
{"SearchId", <search Id>},
{"IndexName", <index name>},
{"QueryTerms", <search terms>},
{"ResultCount", <results count>},
{"ScoringProfile", <scoring profile used>}
telemetryClient.TrackEvent("Search", properties);


appInsights.trackEvent("Search", {
SearchServiceName: <service name>,
SearchId: <search id>,
IndexName: <index name>,
QueryTerms: <search terms>,
ResultCount: <results count>,
ScoringProfile: <scoring profile used>

IV.クリック イベントをログに記録する: IV. Log Click events

ユーザーがドキュメントをクリックするたびに、それをシグナルとして、検索分析用にログに記録する必要があります。Every time that a user clicks on a document, that's a signal that must be logged for search analysis purposes. Application Insights のカスタム イベントで次のスキーマを使用して、これらのイベントをログに記録します。Use Application Insights custom events to log these events with the following schema:

ServiceName: (文字列) 検索サービス名 SearchId: (GUID) 関連する検索クエリの一意の識別子 DocId: (文字列) ドキュメント識別子 Position: (int) 検索結果ページでのドキュメントの順位ServiceName: (string) search service name SearchId: (guid) unique identifier of the related search query DocId: (string) document identifier Position: (int) rank of the document in the search results page


Position は、アプリケーションでの基本的な順序を指します。Position refers to the cardinal order in your application. 比較できるように、この数値は常に同じであれば自由に設定できます。You are free to set this number, as long as it's always the same, to allow for comparison.


var properties = new Dictionary <string, string> {
{"SearchServiceName", <service name>},
{"SearchId", <search id>},
{"ClickedDocId", <clicked document id>},
{"Rank", <clicked document position>}
telemetryClient.TrackEvent("Click", properties);


appInsights.TrackEvent("Click", {
    SearchServiceName: <service name>,
    SearchId: <search id>,
    ClickedDocId: <clicked document id>,
    Rank: <clicked document position>

手順 3.Power BI Desktop を使用して分析する3. Analyze with Power BI Desktop

アプリケーションをインストルメント化し、アプリケーションが Application Insights に正しく接続されていることを確認したら、Azure Search で作成された定義済みのテンプレートを Power BI Desktop に使用できます。After you have instrumented your app and verified your application is correctly connected to Application Insights, you can use a predefined template created by Azure Search for Power BI desktop. このテンプレートには、検索のパフォーマンスと関連性を向上させるために、多くの情報に基づいた意思決定を行う上で役立つグラフとテーブルが含まれています。This template contains charts and tables that help you make more informed decisions to improve your search performance and relevance.

Power BI Desktop テンプレートをインスタンス化するには、Application Insights に関する 3 つの情報が必要です。To instantiate the Power BI desktop template, you need three pieces of information about Application Insights. このデータは、使用するリソースを選択したときに、[検索トラフィックの分析] ページで確認できます。This data can be found in the Search Traffic Analytics page, when you select the resource to use

[検索トラフィックの分析] ブレードの Application Insights のデータ

Power BI Desktop テンプレートに含まれるメトリックは次のとおりです。Metrics included in the Power BI desktop template:

  • クリック率 (CTR): 検索総数に対する特定のドキュメントをクリックしたユーザー数の割合。Click through Rate (CTR): ratio of users who click on a specific document to the number of total searches.
  • クリックされていない検索語句: クリックが登録されていない上位クエリの語句Searches without clicks: terms for top queries that register no clicks
  • 最もクリックされたドキュメント: 過去 24 時間、7 日間、30 日間の ID 別の最もクリックされたドキュメントMost clicked documents: most clicked documents by ID in the last 24 hours, 7 days, and 30 days.
  • 語句とドキュメントの一般的な組み合わせ: クリック数で並べ替えられた、結果的に同じドキュメントがクリックされた語句Popular term-document pairs: terms that result in the same document clicked, ordered by clicks.
  • クリック時間: 検索クエリ後の経過時間でバケット化されたクリックTime to click: clicks bucketed by time since the search query

Application Insights から読み取るための Power BI テンプレート

次のステップNext Steps

検索アプリケーションをインストルメント化して、検索サービスに関する有益で洞察に富んだデータを取得します。Instrument your search application to get powerful and insightful data about your search service.

Application Insights の詳細については、こちらをご覧ください。You can find more information on Application Insights here. さまざまなサービス レベルの詳細については、Application Insights の価格に関するページをご覧ください。Visit Application Insights pricing page to learn more about their different service tiers.

レポートの作成についての詳細。Learn more about creating amazing reports. Power BI Desktop の概要」をご覧ください。See Getting started with Power BI Desktop for details