히스토그램(v3)

Cloud Talent Solution을 사용하면 지정된 검색과 연관된 취업정보 수를 히스토그램 표현으로 확인할 수 있습니다. 히스토그램 검색을 수행하면 특정 쿼리와 일치하는 모든 취업정보 수가 요청된 searchType별로 구분되어 반환됩니다. 예를 들어 히스토그램 검색은 특정 지역에 존재하는 고용 유형별(전일제, 시간제 등) 취업정보 수를 반환할 수 있습니다. 히스토그램의 차원 및 매개변수를 정의하려면 이 가이드의 내용을 따르세요.

히스토그램은 일반적으로 동일한 JobQueryrequestMetadata를 사용하여 검색 호출과 동시에 실행됩니다.

요청

히스토그램은 기본 search API에서 얻을 수 있습니다. 이는 search API에서 histogramFacets를 설정하고 요청의 필터를 정의하여 수행됩니다. 히스토그램은 검색어에 정의된 대로 모든 필터를 관찰합니다. 다음 예는 히스토그램을 검색하는 메커니즘을 설명합니다.

필수 필드

  • searchTypes는 개수를 반환할 카테고리 목록입니다. 예를 들어 전일제 또는 시간제와 같은 고용 유형 수를 반환하려면 EMPLOYMENT_TYPE을 지정합니다. 자세한 열거형 목록은 SearchType을 참조하세요.

선택 필드

  • jobQuery는 이 검색에서 수행할 취업정보 쿼리입니다. 자세한 내용은 검색 필터를 참조하세요. 이 예에서는 쿼리가 적용되지 않습니다.

  • requestMetadata에는 검색을 시작하는 사용자에 대한 정보가 포함되어 있습니다. 자세한 내용은 취업정보 검색 페이지의 RequestMetadata 섹션을 참조하세요.

  • enableBroadening으로 설정하면 더 많은 결과를 반환하기 위해 검색 요청의 위치 및 채용정보 범주에 대한 제한이 완화됩니다. 예를 들어, 요청이 위치의 반경 20마일 내로 채용정보를 지정한 경우 이 플래그를 true로 설정하면 해당 반경 외부에서 채용정보를 반환할 수 있습니다. 다음 예에는 확장된 결과가 포함되지 않습니다.

예시

다음 예시는 COMPANY_ID 및 customAttribute someFieldName1에서 작업 개수 목록을 반환합니다.

Java

Cloud Talent Solution 클라이언트 설치 및 생성에 대한 자세한 내용은 Cloud Talent Solution 클라이언트 라이브러리를 참조하세요.


/** Histogram search */
public static void histogramSearch(String companyName) throws IOException, InterruptedException {
  // Make sure to set the requestMetadata the same as the associated search request
  RequestMetadata requestMetadata =
      new RequestMetadata()
          // Make sure to hash your userID
          .setUserId("HashedUserId")
          // Make sure to hash the sessionID
          .setSessionId("HashedSessionID")
          // Domain of the website where the search is conducted
          .setDomain("www.google.com");

  HistogramFacets histogramFacets =
      new HistogramFacets()
          .setSimpleHistogramFacets(Arrays.asList("COMPANY_ID"))
          .setCustomAttributeHistogramFacets(
              Arrays.asList(
                  new CustomAttributeHistogramRequest()
                      .setKey("someFieldName1")
                      .setStringValueHistogram(true)));

  // conducted.
  SearchJobsRequest searchJobsRequest =
      new SearchJobsRequest()
          .setRequestMetadata(requestMetadata)
          .setSearchMode("JOB_SEARCH")
          .setHistogramFacets(histogramFacets);
  if (companyName != null) {
    searchJobsRequest.setJobQuery(new JobQuery().setCompanyNames(Arrays.asList(companyName)));
  }

  SearchJobsResponse searchJobsResponse =
      talentSolutionClient
          .projects()
          .jobs()
          .search(DEFAULT_PROJECT_ID, searchJobsRequest)
          .execute();
  Thread.sleep(1000);

  System.out.printf("Histogram search results: %s\n", searchJobsResponse);
}

Python

Cloud Talent Solution 클라이언트 설치 및 생성에 대한 자세한 내용은 Cloud Talent Solution 클라이언트 라이브러리를 참조하세요.

def histogram_search(client_service, company_name):
    request_metadata = {
        "user_id": "HashedUserId",
        "session_id": "HashedSessionId",
        "domain": "www.google.com",
    }
    custom_attribute_histogram_facet = {
        "key": "someFieldName1",
        "string_value_histogram": True,
    }
    histogram_facets = {
        "simple_histogram_facets": ["COMPANY_ID"],
        "custom_attribute_histogram_facets": [custom_attribute_histogram_facet],
    }
    request = {
        "search_mode": "JOB_SEARCH",
        "request_metadata": request_metadata,
        "histogram_facets": histogram_facets,
    }
    if company_name is not None:
        request.update({"job_query": {"company_names": [company_name]}})
    response = (
        client_service.projects().jobs().search(parent=parent, body=request).execute()
    )
    print(response)

Go

Cloud Talent Solution 클라이언트 설치 및 생성에 대한 자세한 내용은 Cloud Talent Solution 클라이언트 라이브러리를 참조하세요.


// histogramSearch searches for jobs with histogram facets.
func histogramSearch(w io.Writer, projectID, companyName string) (*talent.SearchJobsResponse, error) {
	ctx := context.Background()

	client, err := google.DefaultClient(ctx, talent.CloudPlatformScope)
	if err != nil {
		return nil, fmt.Errorf("google.DefaultClient: %w", err)
	}
	// Create the jobs service client.
	service, err := talent.New(client)
	if err != nil {
		return nil, fmt.Errorf("talent.New: %w", err)
	}

	parent := "projects/" + projectID
	req := &talent.SearchJobsRequest{
		// Make sure to set the RequestMetadata the same as the associated
		// search request.
		RequestMetadata: &talent.RequestMetadata{
			// Make sure to hash your userID.
			UserId: "HashedUsrId",
			// Make sure to hash the sessionID.
			SessionId: "HashedSessionId",
			// Domain of the website where the search is conducted.
			Domain: "www.googlesample.com",
		},
		HistogramFacets: &talent.HistogramFacets{
			SimpleHistogramFacets: []string{"COMPANY_ID"},
			CustomAttributeHistogramFacets: []*talent.CustomAttributeHistogramRequest{
				{
					Key:                  "someFieldString",
					StringValueHistogram: true,
				},
			},
		},
		// Set the search mode to a regular search.
		SearchMode:               "JOB_SEARCH",
		RequirePreciseResultSize: true,
	}
	if companyName != "" {
		req.JobQuery = &talent.JobQuery{
			CompanyNames: []string{companyName},
		}
	}

	resp, err := service.Projects.Jobs.Search(parent, req).Do()
	if err != nil {
		return nil, fmt.Errorf("failed to search for jobs with Historgram Facets: %w", err)
	}

	fmt.Fprintln(w, "Jobs:")
	for _, j := range resp.MatchingJobs {
		fmt.Fprintf(w, "\t%q\n", j.Job.Name)
	}

	return resp, nil
}

관련성 임곗값

히스토그램 요청은 관련성 임곗값을 사용하지 않습니다. 히스토그램 검색과 동일한 채용정보 검색 간에 개수가 일치하도록 하려면 채용정보 검색의 disableKeywordMatchfalse여야 합니다.