Telemetriegegevens verzamelen voor analyse van zoekverkeer
Analyse van zoekverkeer is een patroon voor het verzamelen van telemetrie over gebruikersinteracties met uw Azure AI Search-toepassing, zoals door de gebruiker geïnitieerde clickstreamgebeurtenissen en toetsenbordinvoer. Met behulp van deze informatie kunt u de effectiviteit van uw zoekoplossing bepalen, inclusief klikfrequentie en welke query-invoer nul resultaten oplevert.
Instrumentatie heeft de volgende onderdelen:
- Een telemetrieclient toevoegen
- Een zoekaanvraag wijzigen om een correlatie-id op te nemen waarmee zoekresultaten worden toegewezen aan gebruikersacties
- Een aangepaste gebeurtenis maken en verzenden naar Application Insights en de hulpprogramma's voor visualisatie en rapportage gebruiken om gebeurtenisgegevens weer te geven
Dit patroon heeft een afhankelijkheid van Application Insights (een functie van Azure Monitor) om gebruikersgegevens te verzamelen. Hiervoor moet u instrumentatie toevoegen aan uw toepassingscode, zoals beschreven in dit artikel. Ten slotte hebt u een rapportagemechanisme nodig om de gegevens te analyseren. U kunt elk visualisatieprogramma gebruiken dat verbinding maakt met Application Insights.
Notitie
Het patroon dat in dit artikel wordt beschreven, is bedoeld voor geavanceerde scenario's en clickstreamgegevens die worden gegenereerd door code die u aan uw client toevoegt. Servicelogboeken zijn daarentegen eenvoudig in te stellen, bieden een reeks metrische gegevens, waaronder zoektermen, en kunnen worden uitgevoerd in Azure Portal zonder code vereist te zijn. U wordt aangeraden logboekregistratie in te schakelen voor alle scenario's. Zie Logboekgegevens verzamelen en analyseren voor meer informatie.
Vereisten
Azure AI Search, elke regio, basislaag en hoger.
Een uitgebreide clienttoepassing die een interactieve zoekervaring biedt met clickstream-gebeurtenissen of andere gebruikersacties die u wilt correleren met selecties van zoekresultaten.
Relevante zoekgegevens identificeren
Als u nuttige metrische gegevens wilt verzamelen voor analyse van zoekverkeer, moet u enkele signalen vastleggen van de gebruikers van uw zoektoepassing. Deze signalen geven inhoud aan waarin gebruikers geïnteresseerd zijn en die ze relevant achten. Voor analyse van zoekverkeer zijn dit onder andere:
Door de gebruiker gegenereerde zoekgebeurtenissen: Alleen zoekquery's die door een gebruiker zijn geïnitieerd, zijn interessant. Andere zoekaanvragen, zoals zoekaanvragen die worden gebruikt om facetten te vullen of interne informatie op te halen, zijn niet belangrijk. Zorg ervoor dat u alleen door de gebruiker geïnitieerde gebeurtenissen instrumenteren om scheefheid of vooroordelen in uw resultaten te voorkomen.
Door de gebruiker gegenereerde clickstreamgebeurtenissen: op een pagina met zoekresultaten betekent een clickstreamgebeurtenis meestal dat een document een relevant resultaat is voor een specifieke zoekquery.
In uw toepassingscode moet u deze gebeurtenissen correleren met de zoekresultaten die zijn geretourneerd door een bepaalde query. Door zoek- en clickstream-gebeurtenissen te koppelen aan een correlatie-id, krijgt u meer inzicht in hoe goed de zoekfunctionaliteit van uw toepassing presteert.
Analyse van zoekverkeer toevoegen
Voor Azure AI Search biedt Azure Portal een search Traffic Analytics-pagina met C#- en JavaScript-codefragmenten voor het toevoegen van een telemetrieclient, aanvraagheaders en eigenschappen die nodig zijn voor aangepaste logboekgebeurtenissen.
Belangrijk
De portalpagina search traffic analytics is momenteel verouderd en verwijst naar een verouderde clientbibliotheek. De tijdelijke oplossing is het gebruik van codefragmenten uit de GitHub-opslagplaats azure-search-traffic-analytics . Dit artikel bevat codefragmenten uit de GitHub-opslagplaats.
Stap 1: Application Insights instellen
Maak een object waarmee gebeurtenissen naar Application Insights worden verzonden. U kunt instrumentatie toevoegen aan de toepassingscode aan de serverzijde of code aan de clientzijde die wordt uitgevoerd in een browser, uitgedrukt in C# en JavaScript-varianten. Zie ondersteunde platforms en frameworks voor andere talen.
Telemetrie aan de serverzijde legt metrische gegevens vast op de toepassingslaag, bijvoorbeeld in toepassingen die worden uitgevoerd als een webservice in Azure of als een on-premises app in een bedrijfsnetwerk. Telemetrie aan de serverzijde legt zoek- en clickstreamgebeurtenissen vast, de positie van een document in resultaten en querygegevens, maar uw gegevensverzameling wordt beperkt tot alle informatie die beschikbaar is op die laag.
Op de client hebt u mogelijk andere code die queryinvoer bewerkt, navigatie toevoegt of context bevat (bijvoorbeeld query's die zijn geïnitieerd vanaf een startpagina versus een productpagina). Als dit uw oplossing beschrijft, kunt u kiezen voor instrumentatie aan de clientzijde, zodat uw telemetrie de extra details weergeeft. Hoe deze extra details worden verzameld, valt buiten het bereik van dit patroon, maar u kunt Application Insights voor webpagina's bekijken voor hulp bij die beslissing.
Geef in deze stap een verbindingsreeks op voor Application Insights.
Een snelkoppeling die geschikt is voor sommige Visual Studio-projecttypen, wordt weergegeven in de volgende stappen.
Open uw oplossing in Visual Studio.
Selecteer Verbonden services>toevoegen> Azure-toepassing Insights in het menu Project.
Selecteer in Verbinding maken met afhankelijkheid Azure-toepassing Inzichten en selecteer vervolgens Volgende.
Selecteer uw Azure-abonnement, uw Application Insights-resource en selecteer Voltooien.
Op dit moment is uw toepassing ingesteld voor toepassingsbewaking, wat betekent dat alle pagina's in uw client-app worden bijgehouden met standaardgegevens.
Als deze snelkoppeling niet werkt, raadpleegt u Telemetrie aan de serverzijde van Application Insights inschakelen of raadpleegt u codefragmenten op de aangrenzende tabbladen.
Stap 2: Instrumentatie toevoegen
Voeg instrumentatiecode toe aan uw clienttoepassing.
Clickstream-gebeurtenissen correleren met zoekresultaten
Als u zoekaanvragen wilt correleren met klikken, moet u een correlatie-id hebben die deze twee afzonderlijke gebeurtenissen koppelt. Azure AI Search biedt u een zoek-id wanneer u deze aanvraagt met een HTTP-header.
Door de zoek-id te gebruiken, kunnen de metrische gegevens die door Azure AI Search worden verzonden, worden gecorreleerd naar de aanvraag zelf, met de aangepaste metrische gegevens die u in Application Insights aanmeldt.
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 } );
}
Aangepaste gebeurtenissen registreren
Telkens wanneer een zoekaanvraag wordt uitgegeven door een gebruiker, moet u dat registreren als een zoekactie met het volgende schema voor een aangepaste Application Insights-gebeurtenis. Vergeet niet om alleen door de gebruiker gegenereerde zoekquery's te registreren.
- SearchId: (guid) unieke id van de zoekquery (ingebouwd in het zoekantwoord)
- SearchServiceName: (tekenreeks) zoekservicenaam
- IndexName: (tekenreeks) zoekserviceindex die moet worden opgevraagd
- SearchText: (tekenreeks) zoektermen die door de gebruiker zijn ingevoerd
- ResultCount: (int) aantal documenten dat is geretourneerd (ingebouwd in het zoekantwoord)
Notitie
Vraag het aantal door de gebruiker gegenereerde query's aan door de gebruiker toe te voegen $count=true
aan uw zoekquery. Zie Documenten zoeken (REST) voor meer informatie.
// 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()
};
De aangepaste gebeurtenis verzenden naar Application Insights
Voeg de aangepaste zelfs toe aan de tabel met aangepaste gebeurtenissen in Application Insights. Zie Application Insights-API voor aangepaste gebeurtenissen en metrische gegevens voor meer informatie.
telemetryClient.TrackEvent("search", properties);
telemetryClient.Flush();
Stap 3: Logboeken controleren
Gebruik een van de methoden die door Application Insights worden ondersteund voor het weergeven van aangepaste gebeurtenissen.
- Een Azure-werkmap maken of bewerken
- Dashboards van Log Analytics-gegevens maken en delen
- Log Analytics integreren met Power BI
Volgende stappen
Meer informatie over Application Insights vindt u op de pagina met prijzen voor meer informatie over de verschillende servicelagen.
Meer informatie over het maken van rapporten. Zie Aan de slag met Power BI Desktop voor meer informatie.