Menerapkan Penelusuran Perjalanan di UI Anda (v3)

Anda dapat mengintegrasikan Penelusuran Perjalanan ke dalam UI untuk memungkinkan pencari kerja menelusuri lowongan di area geografis yang ditetapkan berdasarkan waktu perjalanan. Penelusuran Perjalanan memperkirakan waktu perjalanan berdasarkan mode transportasi umum yang dipilih pengguna dan waktu perjalanan yang direncanakan.

  1. Sebelum Anda dapat menerapkan Penelusuran Perjalanan, Cloud Talent Solution harus terhubung ke UI Anda. Ikuti panduan mulai cepat untuk menyiapkan Cloud Talent Solution.

  2. Penelusuran Perjalanan menggunakan data alamat yang Anda upload dengan pekerjaan Anda selama penerapan CTS untuk menghitung waktu perjalanan. Untuk mengaktifkan fitur ini di UI CTS yang ada, kirim permintaan jobs.search dan sertakan objek CommuteFilter di kolom JobQuery.commuteFilter. commuteMethod, travelDuration, dan startCoordinates adalah kolom wajib diisi.

    Java

    Untuk mengetahui informasi lebih lanjut tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.

    
    public static void commuteSearch(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");
      JobQuery jobQuery =
          new JobQuery()
              .setCommuteFilter(
                  new CommuteFilter()
                      .setRoadTraffic("TRAFFIC_FREE")
                      .setCommuteMethod("TRANSIT")
                      .setTravelDuration("1000s")
                      .setStartCoordinates(
                          new LatLng().setLatitude(37.422408).setLongitude(-122.085609)));
      if (companyName != null) {
        jobQuery.setCompanyNames(Arrays.asList(companyName));
      }
    
      SearchJobsRequest searchJobsRequest =
          new SearchJobsRequest()
              .setJobQuery(jobQuery)
              .setRequestMetadata(requestMetadata)
              .setJobView("JOB_VIEW_FULL")
              .setRequirePreciseResultSize(true);
      SearchJobsResponse response =
          talentSolutionClient
              .projects()
              .jobs()
              .search(DEFAULT_PROJECT_ID, searchJobsRequest)
              .execute();
      Thread.sleep(1000);
      System.out.printf("Search jobs for commute results: %s\n", response);
    }

    Python

    Untuk mengetahui informasi lebih lanjut tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.

    def commute_search(client_service, company_name):
        request_metadata = {
            "user_id": "HashedUserId",
            "session_id": "HashedSessionId",
            "domain": "www.google.com",
        }
        start_location = {"latitude": 37.422408, "longitude": -122.085609}
        commute_preference = {
            "road_traffic": "TRAFFIC_FREE",
            "commute_method": "TRANSIT",
            "travel_duration": "1000s",
            "start_coordinates": start_location,
        }
        job_query = {"commute_filter": commute_preference}
        if company_name is not None:
            job_query.update({"company_names": [company_name]})
        request = {
            "job_query": job_query,
            "request_metadata": request_metadata,
            "job_view": "JOB_VIEW_FULL",
            "require_precise_result_size": True,
        }
        response = (
            client_service.projects().jobs().search(parent=parent, body=request).execute()
        )
        print(response)
    
    

    Go

    Untuk mengetahui informasi lebih lanjut tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.

    
    // commuteSearch searches for jobs within commute filter.
    func commuteSearch(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)
    	}
    
    	jobQuery := &talent.JobQuery{
    		CommuteFilter: &talent.CommuteFilter{
    			RoadTraffic:    "TRAFFIC_FREE",
    			CommuteMethod:  "TRANSIT",
    			TravelDuration: "1000s",
    			StartCoordinates: &talent.LatLng{
    				Latitude:  37.422408,
    				Longitude: -122.085609,
    			},
    		},
    	}
    	if companyName != "" {
    		jobQuery.CompanyNames = []string{companyName}
    	}
    
    	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",
    		},
    		// Set the actual search term as defined in the jobQuery.
    		JobQuery: jobQuery,
    		// Set the search mode to a regular search.
    		SearchMode:               "JOB_SEARCH",
    		RequirePreciseResultSize: true,
    	}
    	resp, err := service.Projects.Jobs.Search(parent, req).Do()
    	if err != nil {
    		return nil, fmt.Errorf("failed to search for jobs with commute filter: %w", err)
    	}
    	return resp, nil
    }
    

    Ruby

    Untuk mengetahui informasi lebih lanjut tentang cara menginstal dan membuat klien Cloud Talent Solution, lihat Library Klien Cloud Talent Solution.

    # project_id              = "Id of the project"
    # commute_method          = "The method of transportation for which to calculate the commute time"
    # travel_duration         = "The maximum travel time in seconds"
    # start_coordinates       = "The latitude and longitude of the location from which to calculate the commute time"
    
    require "google/apis/jobs_v3"
    
    jobs = Google::Apis::JobsV3
    talent_solution_client = jobs::CloudTalentSolutionService.new
    # @see https://developers.google.com/identity/protocols/application-default-credentials#callingruby
    talent_solution_client.authorization = Google::Auth.get_application_default(
      "https://www.googleapis.com/auth/jobs"
    )
    
    # Make sure to set the request_metadata the same as the associated search request
    request_metadata = jobs::RequestMetadata.new user_id:    "HashedUserId",
                                                 session_id: "HashedSessionId",
                                                 domain:     "www.google.com"
    # Set location filter
    commute_filter = jobs::CommuteFilter.new road_traffic:      "TRAFFIC_FREE",
                                             commute_method:    commute_method,
                                             travel_duration:   travel_duration,
                                             start_coordinates: start_coordinates
    # Perform a search for analyst  related jobs
    search_jobs_request =
      jobs::SearchJobsRequest.new request_metadata:            request_metadata,
                                  job_query:                   (jobs::JobQuery.new commute_filter: commute_filter),
                                  job_view:                    "JOB_VIEW_FULL",
                                  require_precise_result_size: true
    search_jobs_response = talent_solution_client.search_jobs project_id, search_jobs_request
    puts search_jobs_response.to_json
    search_jobs_response

Rekomendasi untuk UI Anda

  1. Cloud Talent Solution tidak mengizinkan penelusuran berdasarkan jarak (menggunakan filter lokasi CTS) DAN waktu perjalanan. Untuk mengizinkan pencari kerja mengakses kedua opsi, gunakan pendekatan 2 tab atau yang serupa.

  2. Ubah front-end aplikasi Anda sehingga saat pencari kerja meminta penelusuran perjalanan, back-end akan mengisi informasi yang relevan di filter perjalanan dan memanggil API seperti yang akan dilakukan dalam permintaan penelusuran reguler.

  3. Sertakan item yang baru ditambahkan ini di UI Anda:

    • Opsi untuk memilih apakah ini penelusuran jarak atau penelusuran perjalanan. Misalnya, UI Penelusuran Anda dapat terlihat seperti contoh di bawah:

    • Menu drop-down opsi metode perjalanan.

    • Opsi untuk menyesuaikan kondisi lalu lintas.

    • Total waktu perjalanan (waktu perjalanan maksimum yang didukung adalah 60 menit).

    • Waktu mulai perjalanan.

  4. Informasi waktu perjalanan yang ditampilkan dari API kemudian digunakan untuk menampilkan informasi kepada pencari kerja. Hanya pekerjaan yang relevan yang berlokasi di area waktu perjalanan yang ditentukan yang ditampilkan dalam daftar hasil. Lihat dokumentasi Praktik Terbaik Penelusuran pekerjaan untuk mengetahui pembahasan tentang cara menyesuaikan urutan dan jumlah pekerjaan yang ditampilkan dalam area ini.

Anda dapat memanfaatkan Maps API untuk membuat peta berdasarkan informasi waktu perjalanan yang ditampilkan dari CTS API dan menyematkannya ke dalam hasil yang ditampilkan kepada pencari kerja. Rangkaian Maps API memiliki beberapa opsi untuk menampilkan peta. Beberapa opsi Maps API lebih efektif daripada yang lain. Misalnya, visualisasi Heatmap JavaScript Google Maps yang dipasangkan dengan pengelompokan penanda adalah cara yang efektif untuk memvisualisasikan pekerjaan yang relevan yang ditampilkan kepada pencari kerja di dalam area yang ditentukan oleh preferensi perjalanan yang ditetapkan. Sebaliknya, Mode Petunjuk Arah tidak menampilkan semua tugas yang ditampilkan dalam permintaan penelusuran dan bukan merupakan opsi yang direkomendasikan.

Untuk mengetahui informasi selengkapnya tentang cara menerapkan penelusuran berbasis perjalanan, lihat Panduan cara kerja Penelusuran Perjalanan.