-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
samples: add Job Search v4 samples (#275)
* Sample code for Jobs - V4 Sample code for Jobs v4 APIs. * feat: Add Job Search v4 API * Updated as per comment * No more required. samples/snippets/pom.xml will take care of specific version * Migrated to parent folder Maintaing v4 as the defacto version for now. Later it can be moved to version specific package if required. * test: configure extra cts environment variables * fixed listjobs test fixed listjobs test * fixed lint. Co-authored-by: Jeff Ching <[email protected]>
- Loading branch information
1 parent
63bd2e2
commit 62438ad
Showing
35 changed files
with
2,216 additions
and
0 deletions.
There are no files selected for viewing
95 changes: 95 additions & 0 deletions
95
talent/snippets/src/main/java/com/example/jobs/CommuteSearchJobs.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
/* | ||
* Copyright 2020 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.example.jobs; | ||
|
||
// [START job_search_commute_search] | ||
|
||
import com.google.cloud.talent.v4.CommuteFilter; | ||
import com.google.cloud.talent.v4.CommuteMethod; | ||
import com.google.cloud.talent.v4.Job; | ||
import com.google.cloud.talent.v4.JobQuery; | ||
import com.google.cloud.talent.v4.JobServiceClient; | ||
import com.google.cloud.talent.v4.RequestMetadata; | ||
import com.google.cloud.talent.v4.SearchJobsRequest; | ||
import com.google.cloud.talent.v4.SearchJobsResponse; | ||
import com.google.cloud.talent.v4.TenantName; | ||
import com.google.protobuf.Duration; | ||
import com.google.type.LatLng; | ||
import java.io.IOException; | ||
|
||
public class CommuteSearchJobs { | ||
|
||
public static void searchJobs() throws IOException { | ||
// TODO(developer): Replace these variables before running the sample. | ||
String projectId = "your-project-id"; | ||
String tenantId = "your-tenant-id"; | ||
searchJobs(projectId, tenantId); | ||
} | ||
|
||
// Search Jobs with histogram queries. | ||
public static void searchJobs(String projectId, String tenantId) throws IOException { | ||
// Initialize client that will be used to send requests. This client only needs to be created | ||
// once, and can be reused for multiple requests. After completing all of your requests, call | ||
// the "close" method on the client to safely clean up any remaining background resources. | ||
try (JobServiceClient jobServiceClient = JobServiceClient.create()) { | ||
TenantName parent = TenantName.of(projectId, tenantId); | ||
String domain = "www.example.com"; | ||
String sessionId = "Hashed session identifier"; | ||
String userId = "Hashed user identifier"; | ||
RequestMetadata requestMetadata = | ||
RequestMetadata.newBuilder() | ||
.setDomain(domain) | ||
.setSessionId(sessionId) | ||
.setUserId(userId) | ||
.build(); | ||
|
||
CommuteMethod commuteMethod = CommuteMethod.DRIVING; | ||
long seconds = 3600L; | ||
Duration travelDuration = Duration.newBuilder().setSeconds(seconds).build(); | ||
|
||
double latitude = 37.422408; | ||
double longitude = -122.084068; | ||
LatLng startCoordinates = | ||
LatLng.newBuilder().setLatitude(latitude).setLongitude(longitude).build(); | ||
|
||
CommuteFilter commuteFilter = | ||
CommuteFilter.newBuilder() | ||
.setCommuteMethod(commuteMethod) | ||
.setTravelDuration(travelDuration) | ||
.setStartCoordinates(startCoordinates) | ||
.build(); | ||
|
||
JobQuery jobQuery = JobQuery.newBuilder().setCommuteFilter(commuteFilter).build(); | ||
SearchJobsRequest request = | ||
SearchJobsRequest.newBuilder() | ||
.setParent(parent.toString()) | ||
.setRequestMetadata(requestMetadata) | ||
.setJobQuery(jobQuery) | ||
.build(); | ||
|
||
for (SearchJobsResponse.MatchingJob responseItem : | ||
jobServiceClient.searchJobs(request).getMatchingJobsList()) { | ||
System.out.format("Job summary: %s%n", responseItem.getJobSummary()); | ||
System.out.format("Job title snippet: %s%n", responseItem.getJobTitleSnippet()); | ||
Job job = responseItem.getJob(); | ||
System.out.format("Job name: %s%n", job.getName()); | ||
System.out.format("Job title: %s%n", job.getTitle()); | ||
} | ||
} | ||
} | ||
} | ||
// [END job_search_commute_search] |
81 changes: 81 additions & 0 deletions
81
talent/snippets/src/main/java/com/example/jobs/CustomRankingSearchJobs.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
/* | ||
* Copyright 2020 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.example.jobs; | ||
|
||
// [START job_search_custom_ranking_search] | ||
|
||
import com.google.cloud.talent.v4.Job; | ||
import com.google.cloud.talent.v4.JobServiceClient; | ||
import com.google.cloud.talent.v4.RequestMetadata; | ||
import com.google.cloud.talent.v4.SearchJobsRequest; | ||
import com.google.cloud.talent.v4.SearchJobsResponse; | ||
import com.google.cloud.talent.v4.TenantName; | ||
import java.io.IOException; | ||
|
||
public class CustomRankingSearchJobs { | ||
|
||
public static void searchCustomRankingJobs() throws IOException { | ||
// TODO(developer): Replace these variables before running the sample. | ||
String projectId = "your-project-id"; | ||
String tenantId = "your-tenant-id"; | ||
searchCustomRankingJobs(projectId, tenantId); | ||
} | ||
|
||
// Search Jobs using custom rankings. | ||
public static void searchCustomRankingJobs(String projectId, String tenantId) throws IOException { | ||
// Initialize client that will be used to send requests. This client only needs to be created | ||
// once, and can be reused for multiple requests. After completing all of your requests, call | ||
// the "close" method on the client to safely clean up any remaining background resources. | ||
try (JobServiceClient jobServiceClient = JobServiceClient.create()) { | ||
TenantName parent = TenantName.of(projectId, tenantId); | ||
String domain = "www.example.com"; | ||
String sessionId = "Hashed session identifier"; | ||
String userId = "Hashed user identifier"; | ||
RequestMetadata requestMetadata = | ||
RequestMetadata.newBuilder() | ||
.setDomain(domain) | ||
.setSessionId(sessionId) | ||
.setUserId(userId) | ||
.build(); | ||
SearchJobsRequest.CustomRankingInfo.ImportanceLevel importanceLevel = | ||
SearchJobsRequest.CustomRankingInfo.ImportanceLevel.EXTREME; | ||
String rankingExpression = "(someFieldLong + 25) * 0.25"; | ||
SearchJobsRequest.CustomRankingInfo customRankingInfo = | ||
SearchJobsRequest.CustomRankingInfo.newBuilder() | ||
.setImportanceLevel(importanceLevel) | ||
.setRankingExpression(rankingExpression) | ||
.build(); | ||
String orderBy = "custom_ranking desc"; | ||
SearchJobsRequest request = | ||
SearchJobsRequest.newBuilder() | ||
.setParent(parent.toString()) | ||
.setRequestMetadata(requestMetadata) | ||
.setCustomRankingInfo(customRankingInfo) | ||
.setOrderBy(orderBy) | ||
.build(); | ||
for (SearchJobsResponse.MatchingJob responseItem : | ||
jobServiceClient.searchJobs(request).getMatchingJobsList()) { | ||
System.out.format("Job summary: %s%n", responseItem.getJobSummary()); | ||
System.out.format("Job title snippet: %s%n", responseItem.getJobTitleSnippet()); | ||
Job job = responseItem.getJob(); | ||
System.out.format("Job name: %s%n", job.getName()); | ||
System.out.format("Job title: %s%n", job.getTitle()); | ||
} | ||
} | ||
} | ||
} | ||
// [END job_search_custom_ranking_search] |
78 changes: 78 additions & 0 deletions
78
talent/snippets/src/main/java/com/example/jobs/HistogramSearchJobs.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/* | ||
* Copyright 2020 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.example.jobs; | ||
|
||
// [START job_search_histogram_search] | ||
|
||
import com.google.cloud.talent.v4.HistogramQuery; | ||
import com.google.cloud.talent.v4.Job; | ||
import com.google.cloud.talent.v4.JobServiceClient; | ||
import com.google.cloud.talent.v4.RequestMetadata; | ||
import com.google.cloud.talent.v4.SearchJobsRequest; | ||
import com.google.cloud.talent.v4.SearchJobsResponse; | ||
import com.google.cloud.talent.v4.TenantName; | ||
import java.io.IOException; | ||
|
||
public class HistogramSearchJobs { | ||
|
||
public static void searchJobs() throws IOException { | ||
// TODO(developer): Replace these variables before running the sample. | ||
String projectId = "your-project-id"; | ||
String tenantId = "your-tenant-id"; | ||
String query = "count(base_compensation, [bucket(12, 20)])"; | ||
searchJobs(projectId, tenantId, query); | ||
} | ||
|
||
// Search Jobs with histogram queries. | ||
public static void searchJobs(String projectId, String tenantId, String query) | ||
throws IOException { | ||
// Initialize client that will be used to send requests. This client only needs to be created | ||
// once, and can be reused for multiple requests. After completing all of your requests, call | ||
// the "close" method on the client to safely clean up any remaining background resources. | ||
try (JobServiceClient jobServiceClient = JobServiceClient.create()) { | ||
TenantName parent = TenantName.of(projectId, tenantId); | ||
|
||
String domain = "http://www.jobUrl.com"; | ||
String sessionId = "Hashed session identifier"; | ||
String userId = "Hashed user identifier"; | ||
RequestMetadata requestMetadata = | ||
RequestMetadata.newBuilder() | ||
.setDomain(domain) | ||
.setSessionId(sessionId) | ||
.setUserId(userId) | ||
.build(); | ||
HistogramQuery histogramQueriesElement = | ||
HistogramQuery.newBuilder().setHistogramQuery(query).build(); | ||
SearchJobsRequest request = | ||
SearchJobsRequest.newBuilder() | ||
.setParent(parent.toString()) | ||
.setRequestMetadata(requestMetadata) | ||
.addHistogramQueries(histogramQueriesElement) | ||
.build(); | ||
|
||
for (SearchJobsResponse.MatchingJob responseItem : | ||
jobServiceClient.searchJobs(request).getMatchingJobsList()) { | ||
System.out.format("Job summary: %s%n", responseItem.getJobSummary()); | ||
System.out.format("Job title snippet: %s%n", responseItem.getJobTitleSnippet()); | ||
Job job = responseItem.getJob(); | ||
System.out.format("Job name: %s%n", job.getName()); | ||
System.out.format("Job title: %s%n", job.getTitle()); | ||
} | ||
} | ||
} | ||
} | ||
// [END job_search_histogram_search] |
61 changes: 61 additions & 0 deletions
61
talent/snippets/src/main/java/com/example/jobs/JobSearchAutoCompleteJobTitle.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* | ||
* Copyright 2020 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.example.jobs; | ||
|
||
// [START job_search_autocomplete_job_title] | ||
|
||
import com.google.cloud.talent.v4.CompleteQueryRequest; | ||
import com.google.cloud.talent.v4.CompleteQueryResponse; | ||
import com.google.cloud.talent.v4.CompletionClient; | ||
import com.google.cloud.talent.v4.TenantName; | ||
import java.io.IOException; | ||
|
||
public class JobSearchAutoCompleteJobTitle { | ||
|
||
public static void completeQuery() throws IOException { | ||
// TODO(developer): Replace these variables before running the sample. | ||
String projectId = "your-project-id"; | ||
String tenantId = "your-tenant-id"; | ||
String query = "your-query-for-job-title"; | ||
completeQuery(projectId, tenantId, query); | ||
} | ||
|
||
// Complete job title given partial text (autocomplete). | ||
public static void completeQuery(String projectId, String tenantId, String query) | ||
throws IOException { | ||
// Initialize client that will be used to send requests. This client only needs to be created | ||
// once, and can be reused for multiple requests. After completing all of your requests, call | ||
// the "close" method on the client to safely clean up any remaining background resources. | ||
try (CompletionClient completionClient = CompletionClient.create()) { | ||
TenantName parent = TenantName.of(projectId, tenantId); | ||
CompleteQueryRequest request = | ||
CompleteQueryRequest.newBuilder() | ||
.setTenant(parent.toString()) | ||
.setQuery(query) | ||
.setPageSize(5) // limit for number of results | ||
.addLanguageCodes("en-US") // language code | ||
.build(); | ||
CompleteQueryResponse response = completionClient.completeQuery(request); | ||
for (CompleteQueryResponse.CompletionResult result : response.getCompletionResultsList()) { | ||
System.out.format("Suggested title: %s%n", result.getSuggestion()); | ||
// Suggestion type is JOB_TITLE or COMPANY_TITLE | ||
System.out.format("Suggestion type: %s%n", result.getType()); | ||
} | ||
} | ||
} | ||
} | ||
// [END job_search_autocomplete_job_title] |
Oops, something went wrong.