Zbieranie danych telemetrycznych na potrzeby analizy ruchu wyszukiwania
Analiza ruchu wyszukiwania to wzorzec zbierania danych telemetrycznych dotyczących interakcji użytkownika z aplikacją azure AI Search, takich jak zdarzenia strumienia kliknięć inicjowane przez użytkownika i dane wejściowe klawiatury. Korzystając z tych informacji, możesz określić skuteczność rozwiązania wyszukiwania, w tym współczynnik kliknięć i które dane wejściowe zapytania dają zero wyników.
Instrumentacja ma następujące części:
- Dodawanie klienta telemetrii
- Modyfikowanie żądania wyszukiwania w celu uwzględnienia identyfikatora korelacji, który mapuje wyniki wyszukiwania na akcje użytkownika
- Tworzenie i wysyłanie zdarzenia niestandardowego do usługi Application Insights oraz używanie narzędzi do wizualizacji i raportowania w celu wyświetlania danych zdarzeń
Ten wzorzec pobiera zależność od usługi Application Insights (funkcji usługi Azure Monitor) w celu zbierania danych użytkownika. Wymaga to dodania instrumentacji do kodu aplikacji zgodnie z opisem w tym artykule. Na koniec potrzebny jest mechanizm raportowania do analizowania danych. Możesz użyć dowolnego narzędzia do wizualizacji, które łączy się z usługą Application Insights.
Uwaga
Wzorzec opisany w tym artykule jest przeznaczony dla zaawansowanych scenariuszy i danych strumienia kliknięć generowanych przez kod dodany do klienta. Natomiast dzienniki usług są łatwe do skonfigurowania, zapewniają szereg metryk, w tym terminy wyszukiwania, i można to zrobić w witrynie Azure Portal bez konieczności wprowadzania kodu. Zalecamy włączenie rejestrowania dla wszystkich scenariuszy. Aby uzyskać więcej informacji, zobacz Zbieranie i analizowanie danych dziennika.
Wymagania wstępne
Usługa Azure AI Search, dowolny region, warstwa podstawowa i nowsze.
Bogata aplikacja kliencka zapewniająca interaktywne środowisko wyszukiwania, które obejmuje zdarzenia strumienia kliknięć lub inne akcje użytkownika, które mają być skorelowane z wyborami wyników wyszukiwania.
Identyfikowanie odpowiednich danych wyszukiwania
Aby zebrać przydatne metryki na potrzeby analizy ruchu wyszukiwania, konieczne jest zarejestrowanie niektórych sygnałów od użytkowników aplikacji wyszukiwania. Sygnały te oznaczają zawartość, którą użytkownicy są zainteresowani i że uważają za istotne. Na potrzeby analizy ruchu wyszukiwania są następujące:
Zdarzenia wyszukiwania generowane przez użytkownika: interesujące są tylko zapytania wyszukiwania inicjowane przez użytkownika. Inne żądania wyszukiwania, takie jak te używane do wypełniania aspektów lub pobierania informacji wewnętrznych, nie są ważne. Pamiętaj, aby instrumentować tylko zdarzenia inicjowane przez użytkownika, aby uniknąć niesymetryczności lub stronniczości w wynikach.
Zdarzenia strumienia kliknięć generowane przez użytkownika: na stronie wyników wyszukiwania zdarzenie strumienia kliknięć zazwyczaj oznacza, że dokument jest odpowiednim wynikiem dla określonego zapytania wyszukiwania.
W kodzie aplikacji należy skorelować te zdarzenia z wynikami wyszukiwania zwróconymi z danego zapytania. Łącząc zdarzenia wyszukiwania i strumienia kliknięć z identyfikatorem korelacji, możesz lepiej zrozumieć, jak dobrze działa funkcja wyszukiwania aplikacji.
Dodawanie analizy ruchu wyszukiwania
W przypadku usługi Azure AI Search witryna Azure Portal udostępnia stronę analizy ruchu wyszukiwania zawierającą fragmenty kodu C# i JavaScript służące do dodawania klienta telemetrii, nagłówków żądań i właściwości niezbędnych dla zdarzeń dziennika niestandardowego.
Ważne
Strona portalu analizy ruchu wyszukiwania jest obecnie nieaktualna i odwołuje się do przestarzałej biblioteki klienta. Obejściem jest użycie fragmentów kodu z repozytorium GitHub azure-search-traffic-analytics . Ten artykuł zawiera fragmenty kodu z repozytorium GitHub.
Krok 1. Konfigurowanie usługi Application Insights
Utwórz obiekt, który wysyła zdarzenia do usługi Application Insights. Instrumentację można dodać do kodu aplikacji po stronie serwera lub kodu po stronie klienta działającego w przeglądarce, wyrażonego tutaj jako warianty języka C# i JavaScript. W przypadku innych języków zobacz obsługiwane platformy i struktury.
Telemetria po stronie serwera przechwytuje metryki w warstwie aplikacji, na przykład w aplikacjach działających jako usługa internetowa na platformie Azure lub jako aplikacja lokalna w sieci firmowej. Telemetria po stronie serwera przechwytuje zdarzenia wyszukiwania i strumienia kliknięć, położenie dokumentu w wynikach i informacje o zapytaniach, ale zbieranie danych będzie ograniczone do informacji dostępnych w tej warstwie.
Na kliencie może istnieć inny kod, który manipuluje danymi wejściowymi zapytań, dodaje nawigację lub zawiera kontekst (na przykład zapytania inicjowane ze strony głównej a strona produktu). Jeśli to opisuje twoje rozwiązanie, możesz wybrać instrumentację po stronie klienta, aby telemetria odzwierciedlała dodatkowe szczegóły. Sposób zbierania dodatkowych szczegółów wykracza poza zakres tego wzorca, ale możesz przejrzeć usługę Application Insights dla stron internetowych, aby uzyskać pomoc dotyczącą tej decyzji.
W tym kroku podaj parametry połączenia do usługi Application Insights.
Skrót, który działa dla niektórych typów projektów programu Visual Studio, jest odzwierciedlany w poniższych krokach.
Otwórz rozwiązanie w programie Visual Studio.
W menu Projekt wybierz pozycję Połączone usługi>Dodaj> aplikacja systemu Azure Szczegółowe informacje.
W obszarze Połącz z zależnością wybierz pozycję aplikacja systemu Azure Insights, a następnie wybierz pozycję Dalej.
Wybierz subskrypcję platformy Azure, zasób usługi Application Insights, a następnie wybierz pozycję Zakończ.
Na tym etapie aplikacja jest skonfigurowana do monitorowania aplikacji, co oznacza, że wszystkie obciążenia stron w aplikacji klienckiej są śledzone przy użyciu domyślnych metryk.
Jeśli ten skrót nie zadziałał, zobacz Włączanie telemetrii po stronie serwera usługi Application Insights lub zapoznaj się z fragmentami kodu na sąsiednich kartach.
Krok 2. Dodawanie instrumentacji
Dodaj kod instrumentacji do aplikacji klienckiej.
Skorelowanie zdarzeń strumienia kliknięć z wynikami wyszukiwania
Aby skorelować żądania wyszukiwania za pomocą kliknięć, należy mieć identyfikator korelacji, który wiąże te dwa odrębne zdarzenia. Usługa Azure AI Search udostępnia identyfikator wyszukiwania podczas żądania za pomocą nagłówka HTTP.
Identyfikator wyszukiwania umożliwia korelację metryk emitowanych przez usługę Azure AI Search dla samego żądania przy użyciu metryk niestandardowych, które logujesz się w usłudze 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 } );
}
Rejestrowanie zdarzeń niestandardowych
Za każdym razem, gdy żądanie wyszukiwania jest wystawiane przez użytkownika, należy zarejestrować to jako zdarzenie wyszukiwania przy użyciu następującego schematu w niestandardowym zdarzeniu usługi Application Insights. Pamiętaj, aby rejestrować tylko zapytania wyszukiwania generowane przez użytkownika.
- SearchId: (guid) unikatowy identyfikator zapytania wyszukiwania (wbudowany w odpowiedź wyszukiwania)
- SearchServiceName: (ciąg) nazwa usługi wyszukiwania
- IndexName: (ciąg) indeks usługi wyszukiwania do odpytowania
- SearchText: (ciąg) terminy wyszukiwania wprowadzone przez użytkownika
- ResultCount: (int) liczba zwracanych dokumentów (wbudowanych w odpowiedź wyszukiwania)
Uwaga
Zażądaj liczby zapytań wygenerowanych przez użytkownika, dodając $count=true
je do zapytania wyszukiwania. Aby uzyskać więcej informacji, zobacz Wyszukiwanie dokumentów (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()
};
Wysyłanie zdarzenia niestandardowego do usługi Application Insights
Dodaj niestandardowy nawet do tabeli zdarzeń niestandardowych w usłudze Application Insights. Aby uzyskać więcej informacji, zobacz Interfejs API usługi Application Insights dla niestandardowych zdarzeń i metryk.
telemetryClient.TrackEvent("search", properties);
telemetryClient.Flush();
Krok 3. Przeglądanie dzienników
Użyj dowolnego podejścia obsługiwanego przez usługę Application Insights do wyświetlania zdarzeń niestandardowych.
- Tworzenie lub edytowanie skoroszytu platformy Azure
- Tworzenie i udostępnianie pulpitów nawigacyjnych z danymi usługi Log Analytics
- Integrowanie usługi Log Analytics z usługą Power BI
Następne kroki
Więcej informacji na temat usługi Application Insights można znaleźć na stronie cennika, aby dowiedzieć się więcej o różnych warstwach usług.
Dowiedz się więcej o tworzeniu raportów. Aby uzyskać szczegółowe informacje, zobacz Wprowadzenie do programu Power BI Desktop .