검색결과 가져오기

이 페이지에서는 텍스트 쿼리 검색, 탐색 검색, 페이지로 나누기, 최적화, 맞춤형 결과 등 검색을 사용한 기본 쿼리를 설명합니다.

최종 사용자의 맞춤설정된 결과를 캐시하지 않고 다른 최종 사용자에게 맞춤설정된 결과를 반환하지 않습니다.

검색에서 텍스트 검색 및 탐색 검색 정보

검색은 텍스트 쿼리 검색과 탐색 검색 기능을 모두 제공합니다.

텍스트 쿼리 검색 사용 사례에서 쇼핑객이 사이트에 텍스트 기반 쿼리를 입력할 수 있습니다. 검색은 관련성과 수익 극대화를 기준으로 정렬되어 설정된 컨트롤의 매개변수에 맞는 제품이 포함된 검색 응답을 반환합니다.

탐색 사용 사례에서 쇼핑객은 사이트 메뉴로 이동하여 특정 제품 카테고리를 탐색할 수 있습니다. 검색은 사용자 행동과 트렌드로부터 학습하여 수익을 가장 극대화하는 정렬 순서를 자동으로 선택합니다. 설정한 컨트롤로 탐색 결과를 더욱 세분화할 수 있습니다.

텍스트 검색 및 탐색 검색 요청 모두 servingConfigs.search 메서드를 사용합니다.

텍스트 쿼리 검색

사용자가 사이트에 검색할 텍스트 쿼리를 입력하면 검색에서 관련성, 인기도, 구매 가능성, 맞춤설정을 기준으로 가능한 검색 결과를 정렬합니다.

비어 있지 않은 query 필드가 있으면 검색에서 servingConfigs.search 요청을 텍스트 기반 검색 요청으로 간주합니다.

사용자 이벤트를 업로드할 때 검색을 통해 생성된 텍스트 쿼리 검색 이벤트를 search 사용자 이벤트로 전송합니다. 이벤트에 비어 있지 않은 userEvent.searchQuery 필드와 빈 userEvent.pageCategories 필드가 있으면 검색은 텍스트 기반 검색 이벤트로 간주합니다.

탐색 검색

일반적으로 사이트 탐색을 사용하여 제품을 탐색하면 관련성이 동일한 결과가 표시되거나 잘 팔리는 항목 순서로 정렬됩니다. 검색은 AI를 활용하여 탐색 결과가 인기도, 구매 가능성, 맞춤설정을 기준으로 정렬되는 방법을 최적화합니다.

servingConfigs.search 메서드가 요청을 보낼 때 query 필드가 비어 있으면 검색에서 탐색 검색 요청으로 간주합니다. 이 경우 결과는 filterpageCategories 필드, 가능한 경우 추가 최적화 및 맞춤설정을 기반으로 합니다.

사용자 이벤트를 업로드할 때 검색에서 생성한 탐색 검색 이벤트를 search 사용자 이벤트로 전송해야 합니다. 빈 userEvent.searchQuery 필드와 비어 있지 않은 userEvent.pageCategories 필드가 있으면 검색에서 search 사용자 이벤트를 탐색 기반 이벤트로 간주합니다.

올바른 탐색 검색 결과를 가져오려면 검색 요청의 pageCategoriesfilter 값이 업로드된 사용자 이벤트의 pageCategoriesfilter 값과 정확하게 일치해야 합니다. 정확히 일치하지 않으면 검색 요청의 데이터가 인식되지 않아 결과 품질에 부정적인 영향을 미칠 수 있습니다.

검색 요청을 사용하여 텍스트 검색 및 검색 결과탐색 결과를 가져옵니다. 검색 요청을 수행하려면 servingConfigs.search 메서드를 사용합니다.

모든 검색 요청에는 사용될 서빙 구성의 전체 리소스 이름을 식별하는 placement가 필요합니다. 서빙 구성은 검색결과에 영향을 주는 설정 및 연결된 컨트롤을 결정합니다.

텍스트 쿼리 검색 요청에는 비어 있지 않은 query 필드가 필요합니다.

탐색 검색 요청에는 비어 있지 않은 pageCategories 필드가 필요합니다.

Java

import com.google.cloud.retail.v2.SearchRequest;
import com.google.cloud.retail.v2.SearchResponse;
import com.google.cloud.retail.v2.SearchServiceClient;

public static void searchProducts(String query) throws IOException, InterruptedException {
  SearchRequest searchRequest = SearchRequest.newBuilder()
      .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
      .setBranch(DEFAULT_BRANCH_NAME)
      .setVisitorId(VISITOR_ID)
      .setQuery(query)
      .build();

  try (SearchServiceClient searchClient = SearchServiceClient.create()) {
    SearchResponse response = searchClient.search(searchRequest).getPage().getResponse();
    System.out.println("Search response: " + searchResponse);
  }
}

기본적으로 관련성에 따라 적당한 수의 결과가 반환됩니다.

검색 응답으로 반환된 제품 속성을 가져오려면 카탈로그 데이터를 가져올 때 속성 값을 제공해야 합니다. Product에는 값을 제공할 수 있는 브랜드, 색상, 크기 등의 사전 정의된 시스템 속성이 포함되어 있습니다. Product.attributes로 정의하는 커스텀 속성을 포함할 수도 있습니다.

쿼리 튜토리얼

이 튜토리얼에서는 텍스트 기반 검색어를 소매업용 Vertex AI Search 서비스에 보내고 응답을 분석하는 방법을 보여줍니다.


Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


페이지로 나누기

페이지로 나누기를 사용하여 조회 시간과 전송되는 응답 크기를 줄입니다.

페이지로 나누기 튜토리얼

이 튜토리얼에서는 텍스트 기반 검색 요청에서 페이지로 나누기를 제어하는 방법을 보여줍니다. 쇼핑객이 매장에서 제품을 찾을 때 검색 결과를 통해 탐색을 향상시킬 수 있습니다. 예를 들어 페이지 크기 기능을 사용하여 검색 응답의 항목 수를 제한하거나 오프셋 기능을 사용하여 원하는 페이지로 이동할 수 있습니다.


Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


페이지로 나누기

한 페이지에서 다른 페이지로 이동하려면 사용 사례에 따라 page_token 또는 offset을 사용합니다.

다음 페이지로 이동하려면 page_token을 사용하면 됩니다. 예를 들어 다음 SearchRequest를 전송한다고 가정합니다.

JSON

{
  placement: 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/placements/default_search'
  visitor_id: 'VISITOR_ID'
  query: 'shoes'
  page_size: 5
}

SearchResponse에서 next_page_token과 함께 상위 5개의 관련성이 있는 제품을 가져올 수 있습니다.

JSON

{
  results: [
    products{...}, products{...}, products{...}, products{...}, products{...}
  ]
  next_page_token: "wY4ETNkBDOlVjZ0YWLzUmM40SMhVjMtADMwATL5UGN5MGZlVDJaIQ5LaYsQUw9fC6lIwgE1EgC"
  total_size: 100
  search_token: "NtQKDAiXt4_3BRDCg_jnARABGiQ1ZWRjOTRlOC0wMDAwLTI1YTEtODJlMy1mNGY1ZTgwZDUxOGM"
}

다음 5개 관련성(6~10번째)이 포함된 결과 제품을 얻으려면 동일한 placement, visitor_id, query를 사용하여 page_token을 이전 SearchResponsenext_page_token으로 설정합니다.

Java

import com.google.cloud.retail.v2.SearchRequest;
import com.google.cloud.retail.v2.SearchResponse;
import com.google.cloud.retail.v2.SearchServiceClient;

public static void searchProducts_withNextPageToken(String query, int pageSize)
    throws IOException, InterruptedException {
  try (SearchServiceClient searchClient = SearchServiceClient.create()) {
    SearchRequest firstRequest = SearchRequest.newBuilder()
        .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
        .setBranch(DEFAULT_BRANCH_NAME)
        .setVisitorId(VISITOR_ID)
        .setQuery(query)
        .setPageSize(pageSize)
        .build();

    SearchResponse firstResponse = searchClient.search(firstRequest).getPage()
        .getResponse();
    System.out.println("First search response: " + firstResponse);

    SearchRequest secondRequest = SearchRequest.newBuilder()
        .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
        .setBranch(DEFAULT_BRANCH_NAME)
        .setVisitorId(VISITOR_ID)
        .setQuery(query)
        .setPageSize(pageSize)
        .setPageToken(firstResponse.getNextPageToken())
        .build();

    SearchResponse secondResponse = searchClient.search(secondRequest).getPage()
        .getResponse();
    System.out.println("Second search response: " + secondResponse);
  }
}

이 예시에서 SearchRequest는 다음과 같습니다.

JSON

{
  placement: 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/placements/default_search'
  visitor_id: 'VISITOR_ID'
  query: 'shoes'
  page_size: 5
  page_token: "wY4ETNkBDOlVjZ0YWLzUmM40SMhVjMtADMwATL5UGN5MGZlVDJaIQ5LaYsQUw9fC6lIwgE1EgC"
}

다른 경우에는 페이지 간에 이동하거나 상위 관련성의 결과를 가져오는 대신 offset으로 특정 위치로 바로 이동할 수 있습니다.

Java

import com.google.cloud.retail.v2.SearchRequest;
import com.google.cloud.retail.v2.SearchResponse;
import com.google.cloud.retail.v2.SearchServiceClient;

public static void searchProducts_withOffset(String query, int pageSize,
    int offset) throws IOException, InterruptedException {
  SearchRequest searchRequest = SearchRequest.newBuilder()
      .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
      .setBranch(DEFAULT_BRANCH_NAME)
      .setVisitorId(VISITOR_ID)
      .setQuery(query)
      .setPageSize(pageSize)
      .setOffset(offset)
      .build();

  try (SearchServiceClient searchClient = SearchServiceClient.create()) {
    SearchResponse response = searchClient.search(searchRequest).getPage().getResponse();
    System.out.println("Search response: " + searchResponse);
  }
}

예를 들어 페이지 크기가 5일 때 결과의 10번째 페이지를 원하는 경우 offset을 45로 설정할 수 있으며, 이 값은 (10 - 1) * 5로 계산됩니다.

JSON

{
  placement: 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/placements/default_search'
  visitor_id: 'VISITOR_ID'
  query: 'shoes'
  page_size: 5
  offset: 45
}

검색 성능 등급

검색에서는 결과를 지속적으로 개선하는 여러 검색 성능 등급을 제공합니다. 예를 들어 텍스트 쿼리 검색 사용 사례의 경우 관련성만으로 결과를 가져올 수 있습니다. 고급 성능 등급을 잠금 해제하면 검색에서 관련성, 인기도, 수익 최적화, 맞춤설정을 기준으로 결과를 반환할 수 있습니다.

검색은 각 등급의 최소 요구사항을 충족하는 카탈로그와 사용자 이벤트 데이터를 업로드할 때 자동으로 더 높은 성능 등급을 잠금 해제합니다.

Search for Retail 콘솔의 데이터 품질 페이지에서는 각 등급에 맞는 요구사항을 평가합니다. 이 페이지를 사용하여 데이터 품질과 검색 성능 등급을 보는 방법에 대한 자세한 내용은 검색 성능 등급 잠금 해제를 참조하세요.

텍스트 검색 및 탐색 결과 평가

웹사이트 코드를 업데이트하여 텍스트 검색 또는 탐색 검색을 요청하기 전에 결과를 미리 보고 서빙 구성이 예상대로 작동하는지 확인할 수 있습니다.

서빙 구성에 대한 자세한 내용은 서빙 구성 정보를 참조하세요.

평가 페이지에서 또는 콘솔에서 서빙 구성의 세부정보 페이지로 이동한 후 평가 탭을 클릭하여 서빙 구성을 미리 볼 수 있습니다. 다음 단계는 평가 페이지에서 미리 보는 방법을 보여줍니다.

서빙 구성에 의해 반환된 검색결과를 미리 보려면 다음 단계를 따르세요.

  1. Search for Retail 콘솔에서 평가 페이지로 이동합니다.

    평가 페이지로 이동

  2. 검색 탭을 클릭합니다.

  3. 미리 보려는 서빙 구성을 선택합니다.

  4. 미리 보려는 카탈로그가 포함된 카탈로그 브랜치를 선택합니다.

  5. 선택사항: 방문자 ID를 입력하여 해당 사용자의 검색결과를 미리 봅니다.

  6. 선택사항: 사용자 ID를 입력하여 해당 사용자의 검색결과를 미리 봅니다.

  7. 선택사항: 지정된 시간에 표시될 검색결과를 미리 보려면 검색 시간을 입력합니다.

    예를 들어 특정 제품을 블랙 프라이데이에 홍보한 경우 그날 표시될 결과를 볼 수 있습니다.

  8. 선택사항: 검색결과 옆에 표시할 패싯을 선택하고 확인을 클릭하여 적용합니다.

    선택한 패싯은 초기 검색을 수행한 후 패싯 추가 아래에 표시되는 패싯 필터 목록을 생성하는 데 사용됩니다. 이러한 패싯 필터는 이 단계에서 선택하지 않은 패싯(예: 동적 패싯)을 포함할 수 있습니다.

  9. 텍스트 기반 검색어를 입력하여 해당 쿼리의 검색 결과를 미리 봅니다.

  10. 미리보기 검색을 클릭하거나 입력 필드에 Enter 키를 눌러 결과를 확인합니다.

    검색결과가 사용 가능한 미리보기 이미지와 함께 표시됩니다.

    검색이 리디렉션 컨트롤을 트리거하면 리디렉션 URI가 표시되는 알림이 나타납니다.

  11. 선택사항: 그리드 아이콘이나 목록 아이콘을 클릭하여 검색결과가 미리보기에 표시되는 방식을 전환합니다.

  12. 선택사항: 결과와 함께 표시할 패싯을 선택한 경우 패싯 목록에서 패싯 값을 하나 이상 선택하여 해당 값을 기준으로 결과를 필터링합니다. 선택 시 결과가 자동으로 업데이트됩니다.

    동일한 패싯의 여러 값을 선택하면 OR 연산자로 적용되고, 서로 다른 패싯의 여러 값을 선택하면 AND 연산자로 적용됩니다. 예를 들어 '색상' 패싯을 선택한 후 '파란색' 및 '금색' 색상 값을 선택하고 '면' 및 '폴리에스터' 소재 값을 선택한 경우 검색결과에는 '파란색' 또는 '금색'이 속성으로 있어야 하며 동시에 '면' 또는 '폴리에스터' 속성도 있어야 합니다.

찾아보기

  1. Search for Retail 콘솔에서 평가 페이지로 이동합니다.

    평가 페이지로 이동

  2. 탐색 탭을 클릭합니다.

  1. 미리 보려는 제공 구성을 선택합니다.

  2. 미리 보려는 카탈로그가 포함된 카탈로그 브랜치를 선택합니다.

  3. 선택사항: 방문자 ID를 입력하여 해당 사용자의 결과를 미리 봅니다.

  4. 선택사항: 사용자 ID를 입력하여 해당 사용자의 결과를 미리 봅니다.

  5. 선택사항: 특정 필터가 추가된 상태의 결과를 미리 보려면 문자열 필터를 입력합니다. 필터 문서에 나온 필터 표현식 구문을 사용합니다.

  6. 선택사항: 지정된 시간에 표시될 결과를 미리 보려면 탐색 시간을 입력합니다.

    예를 들어 특정 제품을 블랙 프라이데이에 홍보한 경우 그날 표시될 결과를 볼 수 있습니다.

  7. 탐색 결과를 테스트할 페이지 카테고리를 입력합니다.

  8. 선택사항: 결과 옆에 표시할 패싯을 선택하고 확인을 클릭하여 적용합니다.

    선택한 패싯은 초기 검색을 수행한 후 패싯 추가 아래에 표시되는 패싯 필터 목록을 생성하는 데 사용됩니다. 이러한 패싯 필터는 이 단계에서 선택하지 않은 패싯(예: 동적 패싯)을 포함할 수 있습니다.

  9. 미리보기 탐색을 클릭하거나 입력 필드에 Enter 키를 눌러 결과를 확인합니다.

    결과가 사용 가능한 미리보기 이미지와 함께 표시됩니다.

  10. 선택사항: 그리드 아이콘이나 목록 아이콘을 클릭하여 결과가 미리보기에 표시되는 방식을 전환합니다.

  11. 선택사항: 결과와 함께 표시할 패싯을 선택한 경우 패싯 목록에서 패싯 값을 하나 이상 선택하여 해당 값을 기준으로 결과를 필터링합니다. 선택 시 결과가 자동으로 업데이트됩니다.

    동일한 패싯의 여러 값을 선택하면 OR 연산자로 적용되고, 서로 다른 패싯의 여러 값을 선택하면 AND 연산자로 적용됩니다. 예를 들어 '색상' 및 '소재' 패싯을 선택한 후 '파란색' 및 '금색' 색상 값을 선택하고 '면' 및 '폴리에스터' 소재 값을 선택하여 검색결과를 필터링할 수 있습니다. 검색결과에는 '파란색' 또는 '금색'이 속성으로 있어야 하며 동시에 '면' 또는 '폴리에스터' 속성도 있어야 합니다.

미리 보는 서빙 구성의 세부정보 페이지를 보려면 서빙 구성 선택 필드에서 서빙 구성 보기를 클릭합니다.