Samla in telemetridata för söktrafikanalys

Söktrafikanalys är ett mönster för att samla in telemetri om användarinteraktioner med ditt Azure AI Search-program, till exempel användarinitierade klickströmshändelser och tangentbordsindata. Med hjälp av den här informationen kan du fastställa effektiviteten i din söklösning, inklusive klickfrekvens och vilka frågeindata som ger noll resultat.

Instrumentation har följande delar:

  • Lägga till en telemetriklient
  • Ändra en sökbegäran så att den innehåller ett korrelations-ID som mappar sökresultat till användaråtgärder
  • Skapa och skicka en anpassad händelse till Application Insights och använd visualiserings- och rapporteringsverktygen för att visa händelsedata

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 programkoden enligt beskrivningen i den här artikeln. Slutligen behöver du en rapporteringsmekanism för att analysera data. 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, inklusive söktermer, och kan göras i portalen utan någon kod som krävs. Vi rekommenderar att du aktiverar loggning för alla scenarier. Mer information finns i Samla in och analysera loggdata.

Förutsättningar

  • Azure AI Search, valfri region, grundläggande nivå och senare.

  • Application Insights.

  • Ett omfattande klientprogram som ger en interaktiv sökupplevelse som innehåller klickströmshändelser eller andra användaråtgärder som du vill korrelera med sökresultatval.

Identifiera relevanta sökdata

För att samla in användbara mått för söktrafikanalys är det nödvändigt att logga några signaler från användarna av sökprogrammet. 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 klickströmshändelser: På en sökresultatsida innebär en klickströmshändelse vanligtvis att ett dokument är ett relevant resultat för en specifik sökfråga.

I programkoden bör du korrelera dessa händelser med sökresultaten som returneras från en viss fråga. Genom att länka sök- och klickströmshändelser med ett korrelations-ID kan du få en djupare förståelse för hur bra programmets sökfunktioner fungerar.

Lägga till trafikanalys för sökning

För Azure AI Search tillhandahåller Azure-portalen en söktrafikanalyssida med kodfragmenten C# och JavaScript för att lägga till en telemetriklient, begärandehuvuden och egenskaper som krävs för anpassade logghändelser.

Viktigt!

Sidan söktrafikanalysportalen är för närvarande inaktuell och refererar till ett föråldrat klientbibliotek. Lösningen är att använda kodfragment från GitHub-lagringsplatsen azure-search-traffic-analytics . Den här artikeln innehåller kodfragment från GitHub-lagringsplatsen.

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

Steg 1: Konfigurera Application Insights

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 klickströmshändelser, positionen för ett dokument i resultat och frågeinformation, men din datainsamling 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.

I det här steget anger du en anslutningssträng till Application Insights.

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

  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 eller referera till kodfragment på de intilliggande flikarna.

Steg 2: Lägg till instrumentation

Lägg till instrumentationskod i klientprogrammet.

Korrelera klickströmshändelser med sökresultat

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

Logga anpassade hä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.

  • SearchId: (guid) unik identifierare för sökfrågan (inbyggd i söksvaret)
  • SearchServiceName: (sträng) söktjänstnamn
  • IndexName: (sträng) söktjänstindex som ska frågas
  • SearchText: (sträng) söktermer som angetts av användaren
  • ResultCount: (int) antal dokument som returnerades (inbyggt i söksvaret)

Kommentar

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

Skicka den anpassade händelsen till Application Insights

Lägg till den anpassade även i tabellen med anpassade händelser i Application Insights. Mer information finns i Application Insights API för anpassade händelser och mått.

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

Steg 3: Granska loggar

Använd någon av de metoder som stöds av Application Insights för att visa anpassade händelser.

Nästa steg

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 .