다음을 통해 공유


검색 트래픽 분석을 위한 원격 분석 데이터 수집

검색 트래픽 분석은 사용자가 시작한 클릭스트림 이벤트 및 키보드 입력과 같은 Azure AI Search 애플리케이션과의 사용자 상호 작용에 대한 원격 분석을 수집하는 패턴입니다. 이 정보를 사용하여 클릭수 속도 및 0개의 결과를 생성하는 쿼리 입력을 포함하여 검색 솔루션의 효과를 확인할 수 있습니다.

계측에는 다음과 같은 부분이 있습니다.

  • 원격 분석 클라이언트 추가
  • 검색 결과를 사용자 작업에 매핑하는 상관 관계 ID를 포함하도록 검색 요청 수정
  • Application Insights에 사용자 지정 이벤트 만들기 및 보내기 및 시각화 및 보고 도구를 사용하여 이벤트 데이터 보기

이 패턴은 사용자 데이터를 수집하는 Application Insights(Azure Monitor의 기능)에 의존합니다. 이 문서에 설명된 대로 애플리케이션 코드에 계측을 추가해야 합니다. 마지막으로 데이터를 분석하는 보고 메커니즘이 필요합니다. Application Insights에 연결하는 시각화 도구를 사용할 수 있습니다.

참고 항목

이 문서에 설명된 패턴은 고급 시나리오 및 클라이언트에 추가하는 코드에서 생성된 클릭 동향 데이터를 위한 것입니다. 반면, 서비스 로그는 쉽게 설정하고, 검색어를 포함한 다양한 메트릭을 제공하며, 코드 없이 포털에서 수행할 수 있습니다. 모든 시나리오에 대해 로깅을 사용하도록 설정하는 것이 좋습니다. 자세한 내용은 로그 데이터 수집 및 분석을 참조하세요.

필수 조건

  • Azure AI Search, 모든 지역, 기본 계층 이상.

  • Application Insights.

  • 클릭스트림 이벤트 또는 검색 결과 선택과 상관 관계를 지정하려는 다른 사용자 작업을 포함하는 대화형 검색 환경을 제공하는 풍부한 클라이언트 애플리케이션입니다.

관련 검색 데이터 식별

검색 트래픽 분석에 유용한 메트릭을 수집하려면 검색 애플리케이션의 사용자로부터 일부 신호를 기록해야 합니다. 이러한 신호는 사용자가 관심을 보이고 관련이 있다고 생각하는 콘텐츠를 나타냅니다. 검색 트래픽 분석의 경우에는 다음이 포함됩니다.

  • 사용자가 생성한 검색 이벤트: 사용자가 시작한 검색 쿼리만 흥미를 끕니다. 패싯을 채우거나 내부 정보를 검색하는 데 사용되는 것과 같은 다른 검색 요청은 중요하지 않습니다. 결과가 왜곡되거나 치우치지 않도록 사용자가 시작한 이벤트만 계측해야 합니다.

  • 사용자가 생성한 clickstream 이벤트: 검색 결과 페이지에서 clickstream 이벤트는 일반적으로 문서가 특정 검색 쿼리에 대한 관련 결과임을 의미합니다.

애플리케이션 코드에서 이러한 이벤트를 지정된 쿼리에서 반환된 검색 결과와 상호 연결해야 합니다. 검색 및 클릭 스트림 이벤트를 상관 관계 ID와 연결하면 애플리케이션의 검색 기능이 얼마나 잘 수행되는지 자세히 이해할 수 있습니다.

트래픽 분석 검색 추가

Azure AI Search의 경우 Azure Portal 은 원격 분석 클라이언트, 요청 헤더 및 사용자 지정 로그 이벤트에 필요한 속성을 추가하기 위한 C# 및 JavaScript 코드 조각이 있는 검색 트래픽 분석 페이지를 제공합니다.

Important

검색 트래픽 분석 포털 페이지는 현재 오래되었으며 사용되지 않는 클라이언트 라이브러리를 참조합니다. 해결 방법은 azure-search-traffic-analytics GitHub 리포지토리의 코드 조각을 사용하는 것입니다. 이 문서에는 GitHub 리포지토리의 코드 조각이 포함되어 있습니다.

Application Insights를 설정하기 위한 포털 명령 및 페이지의 스크린샷

1단계: Application Insights 설정

Application Insights에 이벤트를 보내는 개체를 만듭니다. 여기서 C# 및 JavaScript 변형으로 표현된 브라우저에서 실행되는 서버 쪽 애플리케이션 코드 또는 클라이언트 쪽 코드에 계측을 추가할 수 있습니다. 다른 언어는 지원되는 플랫폼 및 프레임워크를 참조하세요.

서버 쪽 원격 분석은 애플리케이션 계층(예: Azure에서 웹 서비스로 실행되거나 회사 네트워크의 온-프레미스 앱)에서 메트릭을 캡처합니다. 서버 쪽 원격 분석은 검색 및 클릭스트림 이벤트, 결과의 문서 위치 및 쿼리 정보를 캡처하지만 데이터 수집 범위는 해당 계층에서 사용할 수 있는 정보로 지정됩니다.

클라이언트에는 쿼리 입력을 조작하거나, 탐색을 추가하거나, 컨텍스트를 포함하는 다른 코드가 있을 수 있습니다(예: 홈페이지와 제품 페이지에서 시작된 쿼리). 솔루션에 대해 설명하는 경우 원격 분석에서 추가 세부 정보를 반영하도록 클라이언트 쪽 계측을 선택할 수 있습니다. 이 추가 세부 정보를 수집하는 방법은 이 패턴의 범위를 벗어나지만 웹 페이지에 대한 Application Insights를 검토하여 해당 결정에 대한 도움을 받을 수 있습니다.

이 단계에서는 Application Insights연결 문자열 제공합니다.

일부 Visual Studio 프로젝트 형식에 대해 작동하는 바로 가기는 다음 단계에서 반영됩니다.

  1. Visual Studio에서 솔루션을 엽니다.

  2. 프로젝트 메뉴에서 연결된 서비스> >Azure Application Insights 추가를 선택합니다.

  3. 종속성에 연결에서 Azure Application Insights를 선택한 다음을 선택합니다.

  4. Azure 구독, Application Insights 리소스를 선택한 다음 마침을 선택합니다.

이 시점에서 애플리케이션은 애플리케이션 모니터링을 위해 설정됩니다. 즉, 클라이언트 앱의 모든 페이지 로드가 기본 메트릭으로 추적됩니다.

이 바로 가기가 작동하지 않는 경우 Application Insights 서버 쪽 원격 분석 사용 또는 인접 탭의 코드 조각을 참조하세요.

2단계: 계측 추가

클라이언트 애플리케이션에 계측 코드를 추가합니다.

검색 결과와 clickstream 이벤트 상관 관계 지정

검색 요청과 클릭의 상관 관계를 지정하려면 이러한 두 개의 고유한 이벤트에 연관된 상관 관계 ID가 필요합니다. 사용자가 HTTP 헤더를 사용하여 검색 ID를 요청하면 Azure AI Search가 검색 ID를 제공합니다.

검색 ID는 요청 자체에 대해 Azure AI Search에서 내보낸 메트릭과 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 } );
}

사용자 지정 이벤트 로그

사용자가 검색 요청을 실행할 때마다 Application Insights 사용자 지정 이벤트에서 다음 스키마 를 사용하여 검색 이벤트로 기록해야 합니다. 사용자가 생성한 검색 쿼리만 기록해야 합니다.

  • SearchId: (guid) 검색 쿼리의 고유 식별자(검색 응답에 기본 제공)
  • SearchServiceName: (문자열) 검색 서비스 이름
  • IndexName: (문자열) 쿼리할 검색 서비스 인덱스
  • SearchText: (문자열) 사용자가 입력한 검색어
  • ResultCount: (int) 반환된 문서 수(검색 응답에 기본 제공)

참고 항목

검색 쿼리에 추가하여 $count=true 사용자가 생성한 쿼리 수를 요청합니다. 자세한 내용은 문서 검색(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()
};

Application Insights에 사용자 지정 이벤트 보내기

Application Insights의 사용자 지정 이벤트 테이블에도 사용자 지정을 추가합니다. 자세한 내용은 사용자 지정 이벤트 및 메트릭에 대한 Application Insights API를 참조 하세요.

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

3단계: 로그 검토

사용자 지정 이벤트를 보기 위해 Application Insights에서 지원하는 접근 방식을 사용합니다.

다음 단계

Application Insights에 대한 자세한 내용을 확인하고, 가격 페이지를 방문하여 다양한 각 서비스 계층에 대해 자세히 알아볼 수 있습니다.

보고서를 만드는 방법에 대해 자세히 알아봅니다. 자세한 내용은 Power BI Desktop 시작을 참조하세요.