Analisi del traffico di ricercaWhat is search traffic analytics

Analisi del traffico di ricerca è un modello per l'implementazione di un ciclo di feedback per il servizio di ricerca.Search traffic analytics is a pattern for implementing a feedback loop for your search service. Questo modello descrive i dati necessari e come raccoglierli utilizzando Application Insights, uno strumento leader di settore per il monitoraggio dei servizi in più piattaforme.This pattern describes the necessary data and how to collect it using Application Insights, an industry leader for monitoring services in multiple platforms.

Analisi del traffico di ricerca consente di ottenere visibilità nel servizio di ricerca e informazioni dettagliate su utenti e relativo comportamento.Search traffic analytics lets you gain visibility into your search service and unlock insights about your users and their behavior. La possibilità di accedere ai dati correlati alle scelte effettuate dagli utenti è utile per prendere decisioni in grado di migliorare ulteriormente l'esperienza di ricerca e per fare un passo indietro se i risultati non sono quelli previsti.By having data about what your users choose, it's possible to make decisions that further improve your search experience, and to back off when the results are not what expected.

Ricerca di Azure offre una soluzione di telemetria che integra Azure Application Insights e Power BI per offrire funzionalità di rilevamento e monitoraggio avanzate.Azure Search offers a telemetry solution that integrates Azure Application Insights and Power BI to provide in-depth monitoring and tracking. Poiché l'interazione con Ricerca di Azure avviene solo tramite le API, la telemetria deve essere implementata dagli sviluppatori che utilizzano la funzionalità di ricerca, seguendo le istruzioni riportate in questa pagina.Because interaction with Azure Search is only through APIs, the telemetry must be implemented by the developers using search, following the instructions in this page.

Identificare i dati di ricerca rilevantiIdentify the relevant search data

Per ottenere metriche di ricerca utili, è necessario registrare alcuni segnali provenienti dagli utenti dell'applicazione di ricerca.To have useful search metrics, it's necessary to log some signals from the users of the search application. Questi segnali indicano contenuti che gli utenti trovano interessanti e considerano rilevanti per le proprie esigenze.These signals signify content that users are interested in and that they consider relevant to their needs.

I segnali necessari per Analisi del traffico di ricerca sono due:There are two signals Search Traffic Analytics needs:

  1. Eventi di ricerca generati dagli utenti. Sono interessanti solo le query di ricerca avviate da un utente.User generated search events: only search queries initiated by a user are interesting. Le richieste di ricerca utilizzate per popolare facet, contenuti aggiuntivi o informazioni interne non sono rilevanti e anzi pregiudicano la correttezza dei risultati.Search requests used to populate facets, additional content or any internal information, are not important and they skew and bias your results.

  2. Eventi generati dai clic degli utenti. Il termine "clic" in questo documento si riferisce alla selezione, da parte di un utente, di un determinato risultato di ricerca restituito da una query di ricerca.User generated click events: By clicks in this document, we refer to a user selecting a particular search result returned from a search query. Un clic in genere indica che un documento è un risultato rilevante per una specifica query di ricerca.A click generally means that a document is a relevant result for a specific search query.

Il collegamento degli eventi di ricerca e degli eventi clic mediante un ID di correlazione consente di analizzare i comportamenti degli utenti nell'applicazione.By linking search and click events with a correlation id, it's possible to analyze the behaviors of users on your application. I registri del traffico di ricerca non sono in grado di offrire informazioni sulla ricerca così dettagliate.These search insights are impossible to obtain with only search traffic logs.

Come implementare Analisi del traffico di ricercaHow to implement search traffic analytics

I segnali menzionati nella sezione precedente devono essere raccolti dall'applicazione di ricerca quando l'utente interagisce con essa.The signals mentioned in the preceding section must be gathered from the search application as the user interacts with it. Application Insights è una soluzione di monitoraggio estensibile, disponibile per più piattaforme, con opzioni di strumentazione flessibili.Application Insights is an extensible monitoring solution, available for multiple platforms, with flexible instrumentation options. L'uso di Application Insights consente di usufruire dei report di ricerca Power BI creati da Ricerca di Azure per semplificare l'analisi dei dati.Usage of Application Insights lets you take advantage of the Power BI search reports created by Azure Search to make the analysis of data easier.

Nella pagina del portale del servizio Ricerca di Azure il pannello Analisi del traffico di ricerca contiene un foglio informativo utile per seguire questo modello di telemetria.In the portal page for your Azure Search service, the Search Traffic Analytics blade contains a cheat sheet for following this telemetry pattern. È anche possibile selezionare o creare una risorsa di Application Insights e visualizzare i dati necessari, tutti raccolti in un'unica posizione.You can also select or create an Application Insights resource, and see the necessary data, all in one place.

Istruzioni per Analisi del traffico di ricerca

1. Selezionare una risorsa di Application Insights1. Select an Application Insights resource

È necessario selezionare una risorsa di Application Insights da usare o crearne una se non è già disponibile.You need to select an Application Insights resource to use or create one if you don't have one already. È possibile usare una risorsa già in uso per registrare gli eventi personalizzati necessari.You can use a resource that's already in use to log the required custom events.

Quando si crea una nuova risorsa di Application Insights, sono validi tutti i tipi di applicazione per questo scenario.When creating a new Application Insights resource, all application types are valid for this scenario. Selezionare quella che meglio si adatta alla piattaforma in uso.Select the one that best fits the platform you are using.

Per creare il client di telemetria per l'applicazione, è necessario disporre della chiave di strumentazione.You need the instrumentation key for creating the telemetry client for your application. È possibile ottenerla dal dashboard del portale di Application Insights oppure dalla pagina Analisi del traffico di ricerca selezionando l'istanza che si desidera usare.You can get it from the Application Insights portal dashboard, or you can get it from the Search Traffic Analytics page, selecting the instance you want to use.

2. Instrumentare l'applicazione2. Instrument your application

Questa è la fase in cui si esegue la strumentazione della propria applicazione di ricerca, utilizzando la risorsa di Application Insights creata al passaggio precedente.This phase is where you instrument your own search application, using the Application Insights resource your created in the step above. Questo processo è suddiviso in quattro passaggi:There are four steps to this process:

I. Creazione di un client di telemetria Si tratta dell'oggetto che invia eventi alla risorsa di Application Insights.I. Create a telemetry client This is the object that sends events to the Application Insights Resource.

C#C#

private TelemetryClient telemetryClient = new TelemetryClient();
telemetryClient.InstrumentationKey = "<YOUR INSTRUMENTATION KEY>";

JavaScriptJavaScript

<script type="text/javascript">var appInsights=window.appInsights||function(config){function r(config){t[config]=function(){var i=arguments;t.queue.push(function(){t[config].apply(t,i)})}}var t={config:config},u=document,e=window,o="script",s=u.createElement(o),i,f;s.src=config.url||"//az416426.vo.msecnd.net/scripts/a/ai.0.js";u.getElementsByTagName(o)[0].parentNode.appendChild(s);try{t.cookie=u.cookie}catch(h){}for(t.queue=[],i=["Event","Exception","Metric","PageView","Trace","Dependency"];i.length;)r("track"+i.pop());return r("setAuthenticatedUserContext"),r("clearAuthenticatedUserContext"),config.disableExceptionTracking||(i="onerror",r("_"+i),f=e[i],e[i]=function(config,r,u,e,o){var s=f&&f(config,r,u,e,o);return s!==!0&&t["_"+i](config,r,u,e,o),s}),t}
({
instrumentationKey: "<YOUR INSTRUMENTATION KEY>"
});
window.appInsights=appInsights;
</script>

Per altre piattaforme e altri linguaggi, vedere l'elenco completo.For other languages and platforms, see the complete list.

II. Richiesta di un ID di ricerca per la correlazione Per correlare le richieste di ricerca con i clic, è necessario disporre di un ID di correlazione che metta in correlazione questi due eventi distinti.II. Request a Search ID for correlation To correlate search requests with clicks, it's necessary to have a correlation id that relates these two distinct events. Ricerca di Azure offre un ID di ricerca quando viene richiesto con l'intestazione seguente:Azure Search provides you with a Search Id when you request it with a header:

C#C#

// This sample uses the Azure Search .NET SDK https://www.nuget.org/packages/Microsoft.Azure.Search

var client = new SearchIndexClient(<ServiceName>, <IndexName>, new SearchCredentials(<QueryKey>)
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();
}

JavaScriptJavaScript

request.setRequestHeader("x-ms-azs-return-searchid", "true");
request.setRequestHeader("Access-Control-Expose-Headers", "x-ms-azs-searchid");
var searchId = request.getResponseHeader('x-ms-azs-searchid');

III. Registrazione degli eventi di ricercaIII. Log Search events

Ogni volta che un utente esegue una richiesta di ricerca, è necessario registrarla come evento di ricerca con lo schema seguente in un evento personalizzato di Application Insights:Every time that a search request is issued by a user, you should log that as a search event with the following schema on an Application Insights custom event:

ServiceName: (string) nome del servizio di ricerca SearchId: (guid) identificatore univoco della query di ricerca (incluso nella risposta alla ricerca) IndexName: (string) indice del servizio di ricerca da sottoporre a query QueryTerms: (string) termini di ricerca immessi dall'utente ResultCount: (int) numero di documenti restituiti (incluso nella risposta alla ricerca) ScoringProfile: (string) nome del profilo di punteggio usato, se disponibileServiceName: (string) search service name SearchId: (guid) unique identifier of the search query (comes in the search response) IndexName: (string) search service index to be queried QueryTerms: (string) search terms entered by the user ResultCount: (int) number of documents that were returned (comes in the search response) ScoringProfile: (string) name of the scoring profile used, if any

Nota

Richiedere il conteggio nelle query generate dall'utente mediante l'aggiunta di $count=true alla query di ricerca.Request count on user generated queries by adding $count=true to your search query. Ulteriori informazioni sono disponibili qui.See more information here

Nota

Ricordarsi di registrare solo le query di ricerca generate dagli utenti.Remember to only log search queries that are generated by users.

C#C#

var properties = new Dictionary <string, string> {
{"SearchServiceName", <service name>},
{"SearchId", <search Id>},
{"IndexName", <index name>},
{"QueryTerms", <search terms>},
{"ResultCount", <results count>},
{"ScoringProfile", <scoring profile used>}
};
telemetryClient.TrackEvent("Search", properties);

JavaScriptJavaScript

appInsights.trackEvent("Search", {
SearchServiceName: <service name>,
SearchId: <search id>,
IndexName: <index name>,
QueryTerms: <search terms>,
ResultCount: <results count>,
ScoringProfile: <scoring profile used>
});

IV. Registrazione degli eventi clicIV. Log Click events

Ogni clic di un utente su un documento è un segnale che deve essere registrato a scopo di analisi delle ricerche.Every time that a user clicks on a document, that's a signal that must be logged for search analysis purposes. Utilizzare gli eventi personalizzati di Application Insights per registrare questi eventi con lo schema seguente:Use Application Insights custom events to log these events with the following schema:

ServiceName: (string) nome del servizio di ricercaSearchId: (guid) identificatore univoco della query di ricerca correlata DocId: (string) identificatore del documento Position: (int) posizione del documento nella pagina dei risultati della ricercaServiceName: (string) search service name SearchId: (guid) unique identifier of the related search query DocId: (string) document identifier Position: (int) rank of the document in the search results page

Nota

Position fa riferimento all'ordine cardinale nell'applicazione.Position refers to the cardinal order in your application. È possibile impostare questo numero, purché si tratti sempre dello stesso, per consentire il confronto.You are free to set this number, as long as it's always the same, to allow for comparison.

C#C#

var properties = new Dictionary <string, string> {
{"SearchServiceName", <service name>},
{"SearchId", <search id>},
{"ClickedDocId", <clicked document id>},
{"Rank", <clicked document position>}
};
telemetryClient.TrackEvent("Click", properties);

JavaScriptJavaScript

appInsights.TrackEvent("Click", {
    SearchServiceName: <service name>,
    SearchId: <search id>,
    ClickedDocId: <clicked document id>,
    Rank: <clicked document position>
});

3. Eseguire l'analisi con Power BI Desktop3. Analyze with Power BI Desktop

Dopo avere instrumentato l'app e averne verificata la corretta connessione ad Application Insights, è possibile utilizzare un modello predefinito creato da Ricerca di Azure per Power BI Desktop.After you have instrumented your app and verified your application is correctly connected to Application Insights, you can use a predefined template created by Azure Search for Power BI desktop. Questo modello contiene grafici e tabelle che consentono di prendere decisioni più informate per migliorare le prestazioni di ricerca e la rilevanza.This template contains charts and tables that help you make more informed decisions to improve your search performance and relevance.

Per creare un'istanza del modello di Power BI Desktop, sono necessarie tre informazioni su Application Insights.To instantiate the Power BI desktop template, you need three pieces of information about Application Insights. Questi dati sono reperibili nella pagina Analisi del traffico di ricerca, quando si seleziona la risorsa da usare.This data can be found in the Search Traffic Analytics page, when you select the resource to use

Dati di Application Insights nel pannello Analisi del traffico di ricerca

Metriche incluse nel modello di Power BI Desktop:Metrics included in the Power BI desktop template:

  • Tasso di clic (CTR): rapporto tra utenti che fanno clic su un documento specifico e numero di ricerche totali.Click through Rate (CTR): ratio of users who click on a specific document to the number of total searches.
  • Ricerche senza clic: termini delle query principali per i quali non sono registrati clic.Searches without clicks: terms for top queries that register no clicks
  • Documenti con più clic: documenti con più clic suddivisi per ID nelle ultime 24 ore e negli ultimi 7 e 30 giorni.Most clicked documents: most clicked documents by ID in the last 24 hours, 7 days, and 30 days.
  • Coppie termine-documento più comuni: termini che producono lo stesso documento selezionato, ordinati per clic.Popular term-document pairs: terms that result in the same document clicked, ordered by clicks.
  • Tempo dei clic: clic con bucket definiti in base al tempo dopo la query di ricerca.Time to click: clicks bucketed by time since the search query

Modello di Power BI per la lettura da Application Insights

Passaggi successiviNext Steps

Instrumentare l'applicazione di ricerca per ottenere dati estremamente utili e dettagliati relativi al servizio di ricerca.Instrument your search application to get powerful and insightful data about your search service.

Ulteriori informazioni su Application Insights sono disponibili qui.You can find more information on Application Insights here. Per ulteriori informazioni sui diversi livelli di servizio, visitare la pagina dei prezzi di Application Insights.Visit Application Insights pricing page to learn more about their different service tiers.

Altre informazioni sulla creazione di report utiliLearn more about creating amazing reports. Per informazioni dettagliate, vedere Introduzione a Power BI Desktop.See Getting started with Power BI Desktop for details