Dela via


Samla in telemetridata för söktrafikanalys

Trafikanalys för sökning är ett mönster för insamling av telemetri om användarinteraktioner med ditt Azure AI Search-program, till exempel användarinitierade klickhändelser och tangentbordsindata. Med hjälp av den här informationen kan du fastställa effektiviteten i din söklösning, inklusive populära sökord, klickfrekvens och vilka frågeindata som ger noll resultat.

Det här mönstret är beroende av Application Insights (en funktion i Azure Monitor) för att samla in användardata. Det kräver att du lägger till instrumentation i klientkoden enligt beskrivningen i den här artikeln. Slutligen behöver du en rapporteringsmekanism för att analysera data. Vi rekommenderar Power BI, men du kan använda alla visualiseringsverktyg som ansluter till Application Insights.

Kommentar

Mönstret som beskrivs i den här artikeln gäller avancerade scenarier och klickströmsdata som genereras av kod som du lägger till i klienten. Tjänstloggar är däremot enkla att konfigurera, tillhandahålla ett antal mått och kan göras i portalen utan att någon kod krävs. Aktivering av loggning rekommenderas för alla scenarier. Mer information finns i Samla in och analysera loggdata.

Identifiera relevanta sökdata

Om du vill ha användbara mått för söktrafikanalys är det nödvändigt att logga några signaler från användarna av ditt sökprogram. Dessa signaler betyder innehåll som användarna är intresserade av och som de anser vara relevant. För söktrafikanalyser omfattar följande:

  • Användargenererade sökhändelser: Endast sökfrågor som initieras av en användare är intressanta. Andra sökbegäranden, till exempel de som används för att fylla i fasetter eller hämta intern information, är inte viktiga. Se till att endast instrumentera användarinitierade händelser för att undvika skevhet eller bias i dina resultat.

  • Användargenererade klickhändelser: På en sökresultatsida innebär en klickhändelse vanligtvis att ett dokument är ett relevant resultat för en specifik sökfråga.

Genom att länka sök- och klickhändelser med ett korrelations-ID kan du få en djupare förståelse för hur väl programmets sökfunktioner fungerar.

Lägga till trafikanalys för sökning

På portalsidan för din Azure AI-usluga pretrage öppnar du sidan Sök trafikanalys för att få åtkomst till ett fuskblad för att följa det här telemetrimönstret. På den här sidan kan du välja eller skapa en Application Insights-resurs, hämta instrumentationsnyckeln, kopiera kodfragment som du kan anpassa för din lösning och ladda ned en Power BI-rapport som är byggd över schemat som återspeglas i mönstret.

Skärmbild av portalkommandot och sidan för att konfigurera Application Insights.

Steg 1: Konfigurera Application Insights

Välj en befintlig Application Insights-resurs eller skapa en om du inte redan har en.

En genväg som fungerar för vissa Visual Studio-projekttyper återspeglas i följande steg.

Som illustration använder de här stegen klienten från Lägg till sökning i en statisk webbapp.

  1. Öppna därefter lösningen i Visual Studio.

  2. På Projekt-menyn väljer du Anslutna tjänster>Lägg till>Azure Application Insights.

  3. I Anslut till beroende väljer du Azure Application Insights och sedan Nästa.

  4. Välj din Azure-prenumeration, din Application Insights-resurs och välj sedan Slutför.

Nu är ditt program konfigurerat för programövervakning, vilket innebär att alla sidinläsningar i klientappen spåras med standardmått.

Om den här genvägen inte fungerade kan du läsa Aktivera telemetri på Application Insights-serversidan.

Steg 2: Lägg till instrumentation

Lägg till instrumentationskod i klientprogrammet. Sidan Trafikanalys för sökning i Azure-portalen innehåller kodfragment som du kan klistra in i programkoden.

Skapa en telemetriklient

Skapa ett objekt som skickar händelser till Application Insights. Du kan lägga till instrumentation i programkoden på serversidan eller kod på klientsidan som körs i en webbläsare, uttryckt här som C# och JavaScript-varianter. Andra språk finns i plattformar och ramverk som stöds.

Telemetri på serversidan samlar in mått på programnivå, till exempel i program som körs som en webbtjänst i Azure eller som en lokal app i ett företagsnätverk. Telemetri på serversidan samlar in sök- och klickhändelser, positionen för ett dokument i resultat och frågeinformation, men din datainsamling kommer att begränsas till den information som är tillgänglig på det lagret.

På klienten kan du ha annan kod som manipulerar frågeindata, lägger till navigering eller innehåller kontext (till exempel frågor som initierats från en startsida jämfört med en produktsida). Om detta beskriver din lösning kan du välja instrumentering på klientsidan så att telemetrin återspeglar den extra informationen. Hur den här extra informationen samlas in går utöver omfattningen för det här mönstret, men du kan läsa Application Insights för webbsidor för att få hjälp med det beslutet.

Du kan hämta instrumentationsnyckeln från Azure-portalen, antingen på sidorna för Application Insights eller på sidan Sök trafikanalys för Azure AI Search.

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

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

Begära ett sök-ID för korrelation

Viktigt!

I Azure-portalen görs kodfragmenten för begärandehuvuden med hjälp av en inaktuell version av Azure SDK. Uppdateringar väntar.

För att korrelera sökbegäranden med klick måste du ha ett korrelations-ID som relaterar dessa två distinkta händelser. Med Azure AI Search får du ett sök-ID när du begär det med ett HTTP-huvud.

Med sök-ID:t kan du korrelation mellan de mått som genereras av Azure AI Search för själva begäran, med de anpassade mått som du loggar i 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();
} 

Loggsökningshändelser

Varje gång en sökbegäran utfärdas av en användare bör du logga den som en sökhändelse med följande schema på en anpassad Application Insights-händelse. Kom ihåg att endast logga användargenererade sökfrågor.

  • SearchServiceName: (sträng) söktjänstnamn
  • SearchId: (guid) unik identifierare för sökfrågan (kommer i söksvaret)
  • IndexName: (sträng) söktjänstindex som ska frågas
  • QueryTerms: (sträng) söktermer som angetts av användaren
  • ResultCount: (int) antal dokument som returnerades (kommer i söksvaret)
  • ScoringProfile: (sträng) namn på den bedömningsprofil som används, om någon

Kommentar

Begär antalet användargenererade frågor genom att lägga till $count=true i din sökfråga. Mer information finns i Sök dokument (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);

Loggklickshändelser

Varje gång en användare klickar på ett dokument är det en signal som måste loggas i sökanalyssyfte. Använd anpassade Application Insights-händelser för att logga dessa händelser med följande schema:

  • ServiceName: (sträng) söktjänstnamn
  • SearchId: (guid) unik identifierare för den relaterade sökfrågan
  • DocId: (sträng) dokumentidentifierare
  • Position: (int) rangordning för dokumentet på sökresultatsidan

Kommentar

Position refererar till kardinalordningen i ditt program. Du kan ange det här talet, så länge det alltid är detsamma, så att det går att jämföra.

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);

Steg 3: Analysera i Power BI

När du har instrumenterat appen och verifierat att programmet är korrekt anslutet till Application Insights laddar du ned en fördefinierad rapportmall för att analysera data i Power BI Desktop. Rapporten innehåller fördefinierade diagram och tabeller som är användbara för att analysera de extra data som samlas in för söktrafikanalys.

  1. I Azure-portalen på söktjänstsidorna går du till Inställningar och väljer Sök trafikanalys.

  2. Välj Hämta Power BI Desktop för att installera Power BI.

  3. Välj Ladda ned Power BI-rapport för att hämta rapporten.

  4. Rapporten öppnas i Power BI Desktop och du uppmanas att ansluta till Application Insights och ange autentiseringsuppgifter. Du hittar anslutningsinformation på Azure-portalsidorna för din Application Insights-resurs. För autentiseringsuppgifter anger du samma användarnamn och lösenord som du använder för portalinloggning.

    Skärmbild som visar hur du ansluter till Application Insights från Power BI.

  5. Välj Läs in.

Rapporten innehåller diagram och tabeller som hjälper dig att fatta mer välgrundade beslut för att förbättra sökprestanda och relevans.

Mått inkluderade följande objekt:

  • Sökvolym och populäraste termdokumentpar: termer som resulterar i samma dokument klickade, ordnade efter klick.
  • Söker utan klick: villkor för toppfrågor som registrerar inga klick

Följande skärmbild visar de dataelement som rapporten kan innehålla.

Skärmbild som visar tillgängliga schemaelement i datakatalogen.

Nästa steg

Instrumentera ditt sökprogram för att få kraftfulla och insiktsfulla data om din söktjänst.

Du hittar mer information om Application Insights och går till prissidan för att lära dig mer om deras olika tjänstnivåer.

Läs mer om att skapa rapporter. Mer information finns i Komma igång med Power BI Desktop .