커스텀 순위(v3)

커스텀 순위 기능을 통해 자체적인 비즈니스 로직을 도입하여 Cloud Talent Solution에서 반환되는 채용정보 순위를 제어할 수 있습니다. 사이트에서 검색하는 구직자는 언제나처럼 검색어 및 기타 필터를 설정할 수 있으며 검색 요청에 순위 표현식을 추가할 수 있습니다. Cloud Talent Solution은 구직자가 정의한 쿼리에 대한 관련 채용정보를 결정하고 커스텀 순위 표현식을 기반으로 결과의 순위를 지정합니다. 순위가 매겨진 이 목록이 회사에 반환되고, 회사는 이것을 구직자에게 표시할 수 있습니다.

이점

커스텀 순위를 통해 결과를 나열하는 방법을 제어할 수 있습니다. 커스텀 순위를 사용하면 커스텀 속성에 할당할 가중치를 정의할 수 있습니다. 가중치 및 커스텀 속성의 조합을 사용하여 반환되는 항목의 순서를 결정하기 위한 커스텀 순위 표현식을 만들 수 있습니다.

커스텀 순위는 기존 채용정보 검색 서비스를 기반으로 합니다. 커스텀 속성의 고객 정의 조합에서 제공된 값을 활용합니다.

사용 사례

최종 사용자가 '소프트웨어 엔지니어'를 검색합니다. 회사는 '소프트웨어 엔지니어'에 가중치를 줘서 반환 목록을 표시하려 합니다. 커스텀 순위를 사용하면 회사는 목록에 값을 지정하여 커스텀 순위 표현식에서 결정한 순서대로 최종 사용자에게 목록을 보여줄 수 있습니다.

회사는 거의 동일한 채용정보 목록을 두 개 받게 되는데, 채용정보-A가 채용정보-B보다 클릭당비용(CPC)이 더 높습니다. 커스텀 순위를 사용하여 가중치가 적용된 CPC 커스텀 속성의 순위를 설정함으로써 채용정보-A가 더 많이 노출되도록 할 수 있습니다.

사용 방법

커스텀 순위는 +, -, *, /, (, ) 등의 수학적 연산자를 지합니다.

커스텀 속성의 필드와 이러한 수학적 연산자를 사용하여 커스텀 순위 표현식을 정의할 수 있습니다.

예를 들어 CPC 및 최신 상태라는 두 개의 커스텀 속성이 있다고 가정해 보겠습니다. 최신 상태란 채용정보가 게시된 이후로 지난 일 수입니다. 이제 CPC 및 최신 상태를 기준으로 채용정보의 순위를 매기려고 합니다. 순위를 매길 때 CPC를 75%, 최신 상태를 25% 고려합니다. 다음과 같이 커스텀 순위 표현식을 만들 수 있습니다.

(0.75*CPC) + (0.25 *Freshness)

코드 샘플

다음 예시는 두 가지 커스텀 속성 cpc_valuefreshness_value를 사용하는 커스텀 순위 표현식을 작성하고 커스텀 순위 표현식을 (cpc_value / 2) - freshness_value로 설정합니다.

자바

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


public static SearchJobsResponse customRanking(String companyName) throws IOException {
  // 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");

  CustomRankingInfo customRankingInfo = new CustomRankingInfo()
      // Both cpc_value and freshness_value are customAttributes for job.
      .setRankingExpression("cpc_value / 2 - freshness_value")
      .setImportanceLevel("EXTREME");

  SearchJobsRequest request =
      new SearchJobsRequest()
          .setRequestMetadata(requestMetadata)
          .setSearchMode("JOB_SEARCH")
          .setOrderBy("custom_ranking desc")
          .setCustomRankingInfo(customRankingInfo);
  if (companyName != null) {
    request.setJobQuery(new JobQuery().setCompanyNames(Arrays.asList(companyName)));
  }

  SearchJobsResponse response =
      talentSolutionClient
          .projects()
          .jobs()
          .searchForAlert(DEFAULT_PROJECT_ID, request)
          .execute();
  System.out.println(response);
  return response;
}

Python

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

def custom_ranking(client_service, company_name):
    request_metadata = {
        'user_id': 'HashedUserId',
        'session_id': 'HashedSessionId',
        'domain': 'www.google.com'
    }
    custom_ranking_info = {
        'ranking_expression': 'cpc_value / 2 - freshness_value',
        'importance_level': 'EXTREME'
    }
    request = {
        'search_mode': 'JOB_SEARCH',
        'request_metadata': request_metadata,
        'order_by': 'custom_ranking desc',
        'custom_ranking_info': custom_ranking_info
    }
    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)
    return response