Sammeln von Telemetriedaten für „Datenverkehrsanalyse durchsuchen“
„Datenverkehrsanalyse durchsuchen“ ist ein Muster für das Sammeln von Telemetriedaten zu Benutzerinteraktionen mit ihrer Azure KI-Suche-Anwendung, z. B. vom Benutzer initiierter Klickstream und Tastatureingaben. Mithilfe dieser Informationen können Sie die Effektivität Ihrer Suchlösung ermitteln, einschließlich Klickraten (CTR) und der Abfrageeingaben, die keine Ergebnisse zurückgeben.
Die Instrumentierung umfasst die folgenden Teile:
- Hinzufügen eines Telemetrieclients
- Ändern einer Suchanforderung, um eine Korrelations-ID einzuschließen, die Suchergebnissen Benutzeraktionen zuordnet
- Erstellen und Senden eines benutzerdefinierten Ereignisses an Application Insights und Verwenden der Visualisierungs- und Berichterstellungstools zum Anzeigen von Ereignisdaten
Dieses Muster ist abhängig von Application Insights (einem Feature von Azure Monitor) zur Sammlung von Benutzerdaten. Es erfordert, dass Sie Ihrem Anwendungscode Instrumentierung hinzufügen, wie in diesem Artikel beschrieben wird. Abschließend benötigen Sie einen Berichtserstellungsmechanismus, um die Daten zu analysieren. Sie können jedes Visualisierungstool verwenden, das eine Verbindung mit Application Insights herstellt.
Hinweis
Das in diesem Artikel beschriebene Muster gilt für erweiterte Szenarien und Clickstreamdaten, die von den Ihrem Client hinzugefügten Code generiert werden. Im Gegensatz dazu lassen sich Dienstprotokolle auf einfache Weise einrichten, bieten einen Bereich von Metriken (einschließlich Suchbegriffen) und können im Portal ohne erforderlichen Code ausgeführt werden. Es wird empfohlen, die Protokollierung für alle Szenarien zu aktivieren. Weitere Informationen finden Sie unter Collect and analyze log data (Sammeln und Analysieren von Protokolldaten).
Voraussetzungen
Azure KI-Suche, jede Region, Stufe Basic und höher.
Eine Rich-Client-Anwendung, die eine interaktive Suchoberfläche bereitstellt, die Klickstreamereignisse oder andere Benutzeraktionen enthält, die Sie mit der Auswahl von Suchergebnissen korrelieren möchten.
Identifizieren von relevanten Suchdaten
Wenn Sie nützliche Metriken für „Datenverkehrsanalyse durchsuchen“ sammeln möchten, ist es erforderlich, einige Signale von den Benutzern Ihrer Suchanwendung zu protokollieren. Diese Signale kennzeichnen Inhalte, die Benutzer interessieren und die sie für relevant halten. Bei „Datenverkehrsanalyse durchsuchen“ umfassen sie Folgendes:
Vom Benutzer generierte Suchereignisse: Nur von einem Benutzer initiierte Suchabfragen sind interessant. Andere Suchanforderungen, z. B. die zum Auffüllen von Facetten oder zum Abrufen interner Informationen verwendeten, sind nicht von Bedeutung. Stellen Sie sicher, dass Sie nur vom Benutzer initiierte Ereignisse instrumentieren, um Schiefe oder Verzerrungen in Ihren Ergebnissen zu vermeiden.
Vom Benutzer generierte Klickstreamereignisse: Auf einer Seite „Suchergebnisse“ bedeutet ein Klickstreamereignis im Allgemeinen, dass ein Dokument ein relevantes Ergebnis für eine bestimmte Suchabfrage ist.
Im Anwendungscode sollten Sie diese Ereignisse mit den von einer bestimmten Abfrage zurückgegebenen Suchergebnissen korrelieren. Durch das Verknüpfen von Such- und Klickstreamereignissen mit einer Korrelations-ID können Sie besser verstehen, wie gut die Suchfunktion Ihrer Anwendung funktioniert.
Hinzufügen von „Datenverkehrsanalyse durchsuchen“
Für Azure KI-Suche stellt das Azure-Portal eine Search Traffic Analytics-Seite mit C#- und JavaScript-Codeausschnitten zum Hinzufügen eines Telemetrieclients, Anforderungsheader und Eigenschaften bereit, die für benutzerdefinierte Protokollereignisse erforderlich sind.
Wichtig
Die Portalseite „Suchdatenverkehr“ ist derzeit veraltet und verweist auf eine veraltete Clientbibliothek. Die Problemumgehung besteht darin, Codeausschnitte aus dem GitHub-Repository azure-search-traffic-analytics zu verwenden. Dieser Artikel enthält Codeausschnitte aus dem GitHub-Repository.
Schritt 1: Einrichten von Application Insights
Erstellen Sie ein Objekt, das Ereignisse an Application Insights sendet. Sie können Ihrem serverseitigen Anwendungscode oder clientseitigen Code, der in einem Browser ausgeführt wird, Instrumentierung hinzufügen. Dieser Code wird hier in Form von C# -und JavaScript-Varianten dargestellt. Weitere Sprachen finden Sie unter Unterstützte Plattformen und Frameworks.
Die serverseitige Telemetrie erfasst Metriken auf Anwendungsebene, z. B. in Anwendungen, die als Webdienst in Azure ausgeführt werden, oder als lokale App in einem Unternehmensnetzwerk. Die serverseitige Telemetrie sammelt Such- und Klickstreamereignisse, die Position eines Dokuments in Ergebnissen und Abfrageinformationen. Allerdings umfasst die Datensammlung nur die Informationen, die auf dieser Ebene verfügbar sind.
Auf dem Client haben Sie möglicherweise anderen Code, der Abfrageeingaben bearbeitet, Navigationselemente hinzufügt oder Kontext enthält (z. B. von einer Startseite initiierte Abfragen und eine Produktseite). Wenn damit Ihre Lösung beschrieben wird, könnten Sie sich für die clientseitige Instrumentierung entscheiden, sodass Ihre Telemetrie die zusätzlichen Details widerspiegelt. Wie diese zusätzlichen Details gesammelt werden, geht über den Rahmen dieses Musters hinaus; in Application Insights für Webseiten können Sie aber Hilfe bei dieser Entscheidung erhalten.
Geben Sie in diesem Schritt eine Verbindungszeichenfolge mit Application Insights an.
Eine Verknüpfung, die bei einigen Visual Studio-Projekttypen funktioniert, wird in den folgenden Schritten gezeigt.
Öffnen Sie Ihre Projektmappe in Visual Studio.
Wählen Sie im Menü Project die Option Verbundene Dienste>Hinzufügen>Azure Application Insights aus.
Wählen Sie unter „Mit Abhängigkeit verbinden“ Azure Application Insights aus, und wählen Sie dann Weiter aus.
Wählen Sie Ihr Azure-Abonnement, Ihre Application Insights-Ressource und dann Beenden aus.
Jetzt ist Ihre Anwendung für die Anwendungsüberwachung eingerichtet. Dies bedeutet, dass alle Ladevorgänge der Seite in Ihrer Client-App mit Standardmetriken nachverfolgt werden.
Wenn diese Verknüpfung für Sie nicht funktioniert hat, lesen Sie Aktivieren der serverseitigen Telemetrie von Application Insights oder verweisen Sie auf Codeausschnitte auf den benachbarten Registerkarten.
Schritt 2: Hinzufügen der Instrumentierung
Fügen Sie Ihrer Clientanwendung Instrumentierungscode hinzu.
Korrelieren von Klickstreamereignissen mit Suchergebnissen
Um Suchanforderungen mit Klicks zu korrelieren, ist eine Korrelations-ID erforderlich, die diese zwei unterschiedlichen Ereignisse miteinander in Beziehung setzt. Azure KI-Suche bietet Ihnen eine Such-ID, wenn Sie sie mit einem HTTP-Header anfordern.
Die Such-ID ermöglicht die Korrelation der Metriken, die von Azure KI-Suche für die Anforderung selbst ausgegeben werden, mit den benutzerdefinierten Metriken, die Sie in Application Insights protokollieren.
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 } );
}
Benutzerdefinierte Ereignisse
Jede Suchanforderung eines Benutzers sollten Sie in einem benutzerdefinierten Application Insights-Ereignis mit dem nachstehenden Schema als Suchereignis protokollieren. Denken Sie daran, nur benutzergenerierte Suchabfragen zu protokollieren.
- SearchId: (GUID) eindeutiger Bezeichner der Suchabfrage (in der Suchantwort enthalten)
- SearchServiceName: (String) Suchdienstname
- IndexName: (String) abzufragender Suchdienstindex
- SearchText: (string) vom Benutzer eingegebene Suchbegriffe
- ResultCount: (int) Anzahl der zurückgegebenen Dokumente (in der Suchantwort enthalten)
Hinweis
Fordern Sie die Anzahl der vom Benutzer generierten Abfragen an, indem Sie Ihrer Suchabfrage $count=true
hinzufügen. Weitere Informationen finden Sie unter Durchsuchen von Dokumenten (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()
};
Senden des benutzerdefinierten Ereignisses an Application Insights
Fügen Sie das benutzerdefinierte Ereignis der Tabelle benutzerdefinierten Ereignisse in Application Insights hinzu. Weitere Informationen finden Sie unter Application Insights-API für benutzerdefinierte Ereignisse und Metriken.
telemetryClient.TrackEvent("search", properties);
telemetryClient.Flush();
Schritt 3: Überprüfen der Protokolle
Verwenden Sie alle Ansätze, die von Application Insights unterstützt werden, um benutzerdefinierte Ereignisse anzuzeigen.
- Erstellen oder Bearbeiten einer Azure-Arbeitsmappe
- Erstellen und Freigeben von Dashboards von Log Analytics-Daten
- Integration von Log Analytics in Power BI
Nächste Schritte
Weitere Informationen finden Sie unter Application Insights. Besuchen Sie auch die Seite mit der Preisübersicht, um mehr über die verschiedenen Dienstebenen zu erfahren.
Weitere Informationen zum Erstellen von Berichten. Weitere Informationen finden Sie unter Erste Schritte mit Power BI Desktop.