自定义排名 (v3)

自定义排名功能允许您引入自己的业务逻辑,来控制 Cloud Talent Solution 返回的招聘信息的排名。 在网站上执行搜索的求职者可以照常设置其搜索查询和其他过滤器,并且可以向搜索请求添加排名表达式。Cloud Talent Solution 会根据求职者定义的查询确定相关招聘信息,并根据自定义排名表达式对结果进行排名。随后,它会将此排名列表返回给您,以便您可以将其显示给求职者。

优点

自定义排名允许您控制结果的列示方式。使用自定义排名可以定义可分配给自定义属性的权重。您可以使用权重和自定义属性的组合来构建自定义排名表达式,以确定所返回列表中列表项的顺序。

自定义排名基于现有的招聘信息搜索服务。 它会利用任何客户定义的自定义属性组合中提供的值。

用例

最终用户搜索“软件工程师”。 公司希望在搜索的返回列表中将“软件工程师”置于排名更加靠前的位置。 利用自定义排名,公司即可为这些列表设置一个值,按照自定义排名表达式确定的顺序将其显示给最终用户。

某公司具有两份几乎完全相同的招聘信息列表,招聘信息 A 的每次点击费用 (CPC) 要高于招聘信息 B。该公司可以设置通过权重加以调整的 CPC 自定义属性排名,从而利用自定义排名提高招聘信息 A 的曝光率。

使用方法

自定义排名支持以下数学运算符:+-*/()

您可以使用自定义属性的字段名称和这些数学运算符,来定义自定义排名表达式。

例如,假设您有两个自定义属性:CPC 和新鲜度,新鲜度表示招聘信息发布至今的天数。现在,您希望按 CPC 和新鲜度对招聘信息进行排名,其中 CPC 占排名的 75%,新鲜度占 25%。您可以按如下方式创建自定义排名表达式:

(0.75*CPC) + (0.25 *Freshness)

代码示例

以下示例创建一个自定义排名表达式,它使用两个自定义属性 cpc_valuefreshness_value,并将该自定义排名表达式设置为 (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