Raccogliere i dati di telemetria per Analisi del traffico di ricerca

Analisi del traffico di ricerca è un modello per raccogliere dati di telemetria sulle interazioni utente con l'applicazione Ricerca intelligenza artificiale di Azure, ad esempio eventi clickstream avviati dall'utente e input da tastiera. Usando queste informazioni, è possibile determinare l'efficacia della soluzione di ricerca, inclusa la frequenza click-through e quali input di query producono zero risultati.

La strumentazione include le parti seguenti:

  • Aggiungere un client di telemetria
  • Modificare una richiesta di ricerca per includere un ID correlazione che esegue il mapping dei risultati della ricerca alle azioni dell'utente
  • Creare e inviare un evento personalizzato ad Application Insights e usare gli strumenti di visualizzazione e creazione di report per visualizzare i dati degli eventi

Questo modello dipende da Application Insights (una funzionalità di Monitoraggio di Azure) per la raccolta dei dati degli utenti. È necessario aggiungere strumentazione al codice dell'applicazione, come descritto in questo articolo. Infine, è necessario un meccanismo di creazione di report per analizzare i dati. È possibile usare qualsiasi strumento di visualizzazione che si connette ad Application Insights.

Nota

Il modello descritto in questo articolo è destinato agli scenari avanzati e ai dati clickstream generati dal codice aggiunto al client. Al contrario, i log del servizio sono facili da configurare, forniscono una gamma di metriche, inclusi i termini di ricerca, e possono essere eseguiti nel portale senza codice necessario. È consigliabile abilitare la registrazione per tutti gli scenari. Per altre informazioni, vedere Raccogliere e analizzare i dati dei log.

Prerequisiti

  • Ricerca di intelligenza artificiale di Azure, qualsiasi area, livello basic e superiore.

  • Application Insights.

  • Un'applicazione client avanzata che offre un'esperienza di ricerca interattiva che include eventi clickstream o altre azioni utente da correlare alle selezioni dei risultati della ricerca.

Identificare i dati di ricerca rilevanti

Per raccogliere metriche utili per l'analisi del traffico di ricerca, è necessario registrare alcuni segnali dagli utenti dell'applicazione di ricerca. Questi segnali indicano contenuti che gli utenti trovano interessanti e considerano rilevanti. Per l'analisi del traffico di ricerca, includono:

  • Eventi di ricerca generati dagli utenti. Sono interessanti solo le query di ricerca avviate da un utente. Altre richieste di ricerca, ad esempio quelle usate per popolare facet o recuperare informazioni interne, non sono importanti. Assicurarsi di instrumentare solo gli eventi avviati dall'utente per evitare distorsioni o bias nei risultati.

  • Eventi clickstream generati dall'utente: in una pagina dei risultati della ricerca, un evento clickstream indica in genere che un documento è un risultato rilevante per una query di ricerca specifica.

Nel codice dell'applicazione è necessario correlare questi eventi con i risultati della ricerca restituiti da una determinata query. Collegando gli eventi di ricerca e clickstream con un ID di correlazione, è possibile acquisire una conoscenza più approfondita delle prestazioni delle funzionalità di ricerca dell'applicazione.

Aggiungere Analisi del traffico di ricerca

Per Ricerca di intelligenza artificiale di Azure, il portale di Azure fornisce una pagina di Analisi del traffico di ricerca con frammenti di codice C# e JavaScript per l'aggiunta di un client di telemetria, intestazioni di richiesta e proprietà necessarie per gli eventi di log personalizzati.

Importante

La pagina Del portale di analisi del traffico di ricerca è attualmente obsoleta e fa riferimento a una libreria client obsoleta. La soluzione alternativa consiste nell'usare frammenti di codice dal repository GitHub azure-search-traffic-analytics . Questo articolo include frammenti di codice dal repository GitHub.

Screenshot del comando e della pagina del portale per la configurazione di Application Insights.

Passaggio 1: Impostare Application Insights

Creare un oggetto per l'invio degli eventi ad Application Insights. È possibile aggiungere la strumentazione al codice dell'applicazione lato server o al codice lato client in esecuzione in un browser, espressi qui come varianti C# e JavaScript. Per altri linguaggi, vedere piattaforme e framework supportati.

La telemetria lato server acquisisce le metriche a livello di applicazione, ad esempio nelle applicazioni in esecuzione come servizio Web su Azure o come app locale in una rete aziendale. I dati di telemetria sul lato server acquisisce gli eventi di ricerca e clickstream, la posizione di un documento nei risultati e le informazioni sulle query, ma la raccolta dei dati avrà come ambito qualsiasi informazione disponibile a tale livello.

Sul client può essere presente altro codice che modifica gli input della query, aggiunge funzionalità di spostamento o include il contesto (ad esempio, le query avviate da una home page anziché da una pagina di un prodotto). Se la soluzione in uso presenta questi requisiti, è possibile optare per la strumentazione lato client, in modo che i dati di telemetria riflettano i dettagli aggiuntivi. Il modo in cui vengono raccolti i dettagli aggiuntivi esula dall'ambito di questo modello, ma è possibile consultare Application Insights per le pagine Web per altre indicazioni.

In questo passaggio specificare un stringa di connessione ad Application Insights.

Di seguito è riportata una procedura utilizzabile per alcuni tipi di progetto di Visual Studio.

  1. Aprire la soluzione in Visual Studio.

  2. Nel menu Progetto selezionare Servizi connessi>Aggiungi>Azure Application Insights.

  3. In Connetti alla dipendenza selezionare Azure Application Insights e quindi selezionare Avanti.

  4. Selezionare la sottoscrizione di Azure, la risorsa di Application Insights e quindi selezionare Fine.

A questo punto, l'applicazione è configurata per il monitoraggio, ovvero tutti i caricamenti di pagina nell'app client vengono registrati con le metriche predefinite.

Se questo collegamento non funziona, vedere Abilitare i dati di telemetria lato server di Application Insights o fare riferimento ai frammenti di codice nelle schede adiacenti.

Passaggio 2: Aggiungere la strumentazione

Aggiungere il codice di strumentazione all'applicazione client.

Correlare gli eventi clickstream con i risultati della ricerca

Per correlare le richieste di ricerca con i clic, è necessario disporre di un ID di correlazione che metta in correlazione questi due eventi distinti. Ricerca con Intelligenza Artificiale di Azure fornisce un ID di ricerca quando viene richiesto con un'intestazione HTTP.

L'ID di ricerca consente la correlazione delle metriche emesse da Ricerca con Intelligenza Artificiale di Azure per la richiesta stessa con le metriche personalizzate che si stanno registrando in 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 } );
}

Registrare eventi personalizzati

Ogni volta che viene eseguita una richiesta di ricerca da un utente, è necessario registrare tale richiesta come evento di ricerca con lo schema seguente in un evento personalizzato di Application Insights. Ricordare di registrare solo le query di ricerca generate dall'utente.

  • SearchId: identificatore univoco (guid) della query di ricerca (incorporata nella risposta di ricerca)
  • SearchServiceName: (stringa) nome del servizio di ricerca
  • IndexName: (stringa) indice del servizio di ricerca da sottoporre a query
  • SearchText: (stringa) termini di ricerca immessi dall'utente
  • ResultCount: (int) numero di documenti restituiti (incorporati nella risposta di ricerca)

Nota

Richiedere il numero di query generate dall'utente aggiungendo $count=true alla query di ricerca. Per altre informazioni, vedere Cercare documenti (API 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()
};

Inviare l'evento personalizzato ad Application Insights

Aggiungere l'elemento personalizzato anche alla tabella degli eventi personalizzati in Application Insights. Per altre informazioni, vedere API di Application Insights per metriche ed eventi personalizzati.

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

Passaggio 3: Esaminare i log

Usare uno degli approcci supportati da Application Insights per la visualizzazione di eventi personalizzati.

Passaggi successivi

È possibile trovare altre informazioni su Application Insights e visitare la pagina dei prezzi per conoscere i diversi livelli di servizio.

Altre informazioni sulla creazione di rapporti. Per informazioni dettagliate, vedere Introduzione a Power BI Desktop.