共用方式為


收集搜尋流量分析的遙測資料

搜尋流量分析是一種模式,用於收集有關使用者與 Azure AI 搜尋服務應用程式互動的遙測資料,例如使用者起始的 Click 事件和鍵盤輸入。 您可以使用此資訊來判斷搜尋解決方案的有效性,包括熱門搜尋字詞、點選連結率,以及哪些查詢輸入未產生任何結果。

此模式會相依於 Application Insights (Azure 監視器的一個功能),以收集使用者資料。 您必須如此文章所述,在用戶端程式碼中加入檢測設備。 最後,您需要一個報告機制來分析資料。 我們建議使用 Power BI,但您可以使用任何連線至 Application Insights 的工具。

注意

此文章中描述的模式適用於您新增至用戶端的程式碼所產生的進階案例和點選流資料。 服務記錄相對容易設定,而且可提供一系列的計量,還可以在入口網站中完成,不需要撰寫程式碼。 因此無論是什麼情況,都建議啟用記錄。 如需詳細資訊,請參閱收集和分析記錄資料

識別相關的搜尋資料

若要讓搜尋流量分析產生有用的計量,必須針對搜尋應用程式的使用者記錄一些訊號。 這些訊號代表使用者感興趣且認為與其相關的內容。 針對搜尋流量分析,這些訊號包括:

  • 使用者產生的搜尋事件:只有使用者起始的搜尋查詢才有意義。 其他搜尋要求,例如用來填入 Facet 或擷取內部資訊的要求並不重要。 請務必只檢測使用者啟動的事件,避免結果產生扭曲或偏差。

  • 使用者產生的 Click 事件:在搜尋結果頁面上,Click 事件通常表示文件為特定搜尋查詢的相關結果。

透過相互關聯識別碼來連結搜尋與按一下事件,您即可更深入了解應用程式搜尋功能的性能。

新增搜尋流量分析

在 Azure AI 搜尋服務的入口網站頁面中,開啟 [搜尋流量分析] 頁面,存取遵循此遙測模式的速查表。 您可以從這個頁面,選取或建立 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 入口網站中的 [搜尋使用分析] 頁面提供程式碼片段,您可以將該程式碼片段貼到應用程式程式碼中。

建立遙測用戶端

建立會將事件傳送至 Application Insights 的物件。 您可以將檢測新增至在瀏覽器中執行的伺服器端應用程式程式碼或用戶端程式碼,這裡以 C# 和 JavaScript 變體表示。 如需其他語言,請參閱支援的平台和架構

伺服器端遙測會在應用程式層 (例如,在 Azure 上以 Web 服務形式,或在公司網路中以內部部署應用程式形式執行的應用程式) 擷取計量。 伺服器端遙測會擷取搜尋和按一下事件、文件在結果中的位置,以及查詢資訊,但您的資料收集範圍將會限定在該層所提供的任何資訊。

在用戶端上,您可能會有其他的程式碼,其或許能夠操作查詢輸入、新增瀏覽,或包含內容 (例如,從首頁和產品頁面起始的查詢)。 如果您的解決方案類似上面所述情況,可以選擇使用用戶端檢測,讓遙測反映出額外的詳細資料。 有關如何收集這個額外詳細資料的問題,已經超出此模式的範圍,但您可以查看網頁適用的 Application Insights 以獲得該決策的說明。

您可以從 Azure 入口網站取得檢測金鑰,無論是在 Application Insights 的頁面,還是在 Azure AI 搜尋的搜尋流量分析頁面中。

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

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

要求相互關聯的搜尋識別碼

重要

在 Azure 入口網站中,要求標頭的程式碼片段是使用過時的 Azure SDK 版本產生。 更新擱置中。

若要透過點選將搜尋要求相互關聯,必須擁有一組與這兩個不同事件相關的相互關聯識別碼。 當您使用 HTTP 標頭要求取得搜尋識別碼時,Azure AI 搜尋服務會提供您一組搜尋識別碼。

擁有搜尋識別碼可讓 Azure AI 搜尋服務針對要求發出的計量,與您在 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:(int) 傳回文件的數目 (出現在搜尋回應中)
  • ScoringProfile:(字串) 所使用評分設定檔的名稱 (如果有的話)

注意

請將 $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:(int) 搜尋結果頁面中文件的順位

注意

位置是指您應用程式中的基本順序。 您可以自由地設定這個數字 (只要它一律相同) 以便進行比較。

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 入口網站中,於 [設定] 底下,選取 [搜尋流量分析]

  2. 選取 [取得 Power BI Desktop] 以安裝 Power BI。

  3. 選取 [下載 Power BI 報告] 以取得報告。

  4. 報表會在 Power BI Desktop 中開啟,且系統會提示您連線至 Application Insights 並提供認證。 您可以在 Azure 入口網站頁面中,找到您 Application Insights 資源的連線資訊。 針對認證,請提供您用來登入入口網站的相同使用者名稱與密碼。

    顯示如何從 Power BI 連線到 Application Insights 的螢幕擷取畫面。

  5. 選取載入

此報表包含圖表和資料表,可幫助您做出更明智的決策,以改善您的搜尋效能和相關性。

計量包含下列項目:

  • 搜尋磁碟區和最熱門的字詞文件組︰依點選排序,造成點選相同文件的字詞。
  • 無點選搜尋︰註冊無點選的熱門查詢詞彙

下列螢幕擷取畫面顯示報告可能包含的資料元素。

顯示資料目錄中可用結構描述元素的螢幕擷取畫面。

下一步

檢測您的搜尋應用程式,取得搜尋服務的強大且詳細相關資料。

您可以在 Application Insights 上找到詳細資訊,以及瀏覽價格頁面頁面來深入了解其不同的服務層級。

進一步了解如何建立報告。 如需詳細資訊,請參閱開始使用 Power BI Desktop