カスタム ランキング(v3)

カスタム ランキング機能を使用すると、独自のビジネス ロジックを導入して、Cloud Talent Solution が返す求人のランキングを制御できます。 サイトで検索する求職者は、通常どおり検索クエリやその他のフィルタを設定できます。それらの求職者の検索リクエストにランキング式を追加できます。Cloud Talent Solution は、求職者によって定義されたクエリに関連する求人情報を決定し、カスタム ランキング式に基づいて結果をランク付けします。こうしてランク付けされたリストが返されるので、そのまま求職者に表示できます。

利点

カスタム ランキングを使用すると、結果の表示方法を制御できます。また、重みを定義して、カスタム属性に割り当てることができます。重みとカスタム属性の組み合わせを使用してカスタム ランキング式を構築し、結果をどの順序で一覧表示するかを決定できます。

カスタム ランキングは、既存の求人検索サービスに基づいています。 お客様が定義したカスタム属性の組み合わせに指定された値を利用します。

使用例

エンドユーザーが「ソフトウェア エンジニア」を検索します。 「ソフトウェア エンジニア」を募集している企業は、この求人情報の表示をハイリターンが得られるように掲載したいと考えています。 カスタム ランキングを使用すると、提示する情報に値を設定し、カスタム ランキング式で決定された順序に従ってその情報をエンドユーザーに提示できます。

ある企業にほぼ同じ求人情報が 2 つあり、求人 A の方が求人 B よりもクリック単価(CPC)が高くなっているとします。カスタム ランキングを使用すると、重みで調整される CPC カスタム属性のランキングを設定して、求人 A の表示可能性を高めることができます。

使い方

カスタム ランキングでは、+-*/() の各算術演算子をサポートしています。

カスタム属性の項目名とこうした数学演算子を使用して、カスタム ランキング式を定義できます。

たとえば、CPC と鮮度という 2 つのカスタム属性があるとします。鮮度は、求人が投稿されてからの日数です。今、CPC と鮮度で求人をランク付けしようとしています。CPC はランキングの 75% を占め、鮮度は 25% を占めます。次のようにカスタム ランキング式を作成できます。

(0.75*CPC) + (0.25 *Freshness)

コードサンプル

次の例では、カスタム ランキング式を作成しています。cpc_valuefreshness_value という 2 つのカスタム属性を使用し、カスタム ランキング式を (cpc_value / 2) - freshness_value に設定したものです。

Java

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