共用方式為


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

搜尋使用分析是收集使用者與 Azure AI 搜尋應用程式互動遙測的模式,例如使用者起始的點擊串流事件和鍵盤輸入。 使用這項資訊,您可以判斷搜尋解決方案的有效性,包括點擊率,以及哪些查詢輸入會產生零結果。

檢測具有下列部分:

  • 新增遙測用戶端
  • 修改搜尋要求以包含將搜尋結果對應至用戶動作的相互關聯標識碼
  • 建立自定義事件並將其傳送至 Application Insights,並使用視覺效果和報告工具來檢視事件數據

此模式會相依於 Application Insights (Azure 監視器的一個功能),以收集使用者資料。 您必須將檢測新增至應用程式程序代碼,如本文所述。 最後,您需要一個報告機制來分析資料。 您可以使用任何連線到 Application Insights 的視覺效果工具。

注意

此文章中描述的模式適用於您新增至用戶端的程式碼所產生的進階案例和點選流資料。 相反地,服務記錄很容易設定、提供一系列計量,包括搜尋字詞,而且可以在 Azure 入口網站 中完成,而不需要任何程序代碼。 建議您為所有案例啟用記錄。 如需詳細資訊,請參閱收集和分析記錄資料

必要條件

  • Azure AI 搜尋服務、任何區域、基本層和更新版本。

  • Application Insights。

  • 豐富的用戶端應用程式,提供互動式搜尋體驗,包括點擊串流事件,或您想要與搜尋結果選取專案相互關聯的其他用戶動作。

識別相關的搜尋資料

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

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

  • 用戶產生的點擊串流事件:在搜尋結果頁面上,Clickstream 事件通常表示檔是特定搜尋查詢的相關結果。

在您的應用程式程式代碼中,您應該將這些事件與從指定查詢傳回的搜尋結果相互關聯。 藉由連結搜尋和點擊串流事件與相互關聯標識碼,您可以更深入地瞭解應用程式的搜尋功能如何執行。

新增搜尋流量分析

針對 Azure AI 搜尋,Azure 入口網站 提供搜尋使用分析頁面,其中包含 C# 和 JavaScript 代碼段,以新增自定義記錄事件所需的遙測用戶端、要求標頭和屬性。

重要

[搜尋使用分析入口網站] 頁面目前已過期,並參考過時的用戶端連結庫。 因應措施是使用來自 azure-search-traffic-analytics GitHub 存放庫的代碼段。 本文包含來自 GitHub 存放庫的代碼段。

設定 Application Insights 之 Azure 入口網站 命令和頁面的螢幕快照。

步驟 1:設定 Application Insights

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

伺服器端遙測會在應用程式層 (例如,在 Azure 上以 Web 服務形式,或在公司網路中以內部部署應用程式形式執行的應用程式) 擷取計量。 伺服器端遙測會擷取搜尋和點擊串流事件、檔在結果中的位置,以及查詢資訊,但您的數據收集範圍會限定於該層中可用的任何資訊。

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

在此步驟中,提供 Application Insights 的 連接字串。

後續步驟中會反映出某些 Visual Studio 專案類型可使用的快捷方式。

  1. 在 Visual Studio 中開啟您的方案。

  2. 在 [專案] 功能表上,選取 [已連線的服務]>[新增]>[Azure Application Insights]

  3. 在 [連線至相依性] 中,選取 [Azure Application Insights],然後選取 [下一步]

  4. 選取您的 Azure 訂用帳戶、Application Insights 資源,然後選取 [完成]

此時,您的應用程式已設定為進行應用程式監視,這表示您用戶端應用程式中的所有頁面載入作業都會以預設計量進行追蹤。

如果此快捷方式無法為您運作,請參閱 啟用Application Insights 伺服器端遙測 ,或參考相鄰索引標籤中的代碼段。

步驟 2:新增檢測

將檢測程式碼新增至用戶端應用程式。

將 Clickstream 事件與搜尋結果相互關聯

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

擁有搜尋識別碼可讓 Azure AI 搜尋服務針對要求發出的計量,與您在 Application Insights 中記錄的自訂計量相互關聯。

var client = new SearchClient(new Uri("https://contoso.search.windows.net"), "hotels-sample-index", new DefaultAzureCredential());

// Generate a new correlation id for logs
string searchId = Guid.NewGuid().ToString();
string searchText = "*";
SearchResults<SearchDocument> searchResults;

// Set correlation id for search request
using (HttpPipeline.CreateClientRequestIdScope(clientRequestId: searchId))
{
    searchResults = client.Search<SearchDocument>(searchText, options: new SearchOptions { IncludeTotalCount = true } );
}

記錄自定義事件

每次使用者發出搜尋要求時,您應該將它記錄為 Application Insights 自定義事件上具有下列架構的 搜尋事件。 請記得只記錄使用者產生的搜尋查詢。

  • SearchId: (guid) 搜尋查詢的唯一識別碼(內建於搜尋回應中)
  • SearchServiceName:(字串) 搜尋服務名稱
  • IndexName:(字串) 要查詢的搜尋服務索引
  • SearchText:(字串) 使用者輸入的搜尋字詞
  • ResultCount: (int) 傳回的文件數目(內建於搜尋回應中)

注意

將 新增 $count=true 至您的搜尋查詢,以要求用戶產生的查詢計數。 如需詳細資訊,請參閱搜尋文件 (REST)

// Create properties for telemetry
var properties = new Dictionary<string, string>
{
    ["searchId"] = searchId,
    ["serviceName"] = "<PUT YOUR SEARCH SERVICE NAME HERE, example: contoso-search>",
    ["indexName"] = "<PUT YOUR INDEX NAME HERE>",
    ["searchText"] = searchText,
    ["resultsCount"] = searchResults.TotalCount?.ToString()
};

將自定義事件傳送至 Application Insights

將自定義新增至 Application Insights 中的自定義事件 數據表。 如需詳細資訊,請參閱 自定義事件和計量的 Application Insights API。

telemetryClient.TrackEvent("search", properties);
telemetryClient.Flush();

步驟 3:檢閱記錄

使用 Application Insights 支援的任何方法來檢視自定義事件。

下一步

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

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