Implementazione della ricerca basata sul tragitto giornaliero nell'interfaccia utente (v3)

Puoi integrare la ricerca basata sul tragitto giornaliero nella tua UI per consentire alle persone in cerca di lavoro di cercare offerte di lavoro all'interno di un'area geografica impostata in base ai tempi del tragitto giornaliero. La ricerca basata sul tragitto giornaliero stima il tempo di percorrenza del tragitto giornaliero in base alla modalità di trasporto pubblico selezionata dall'utente e all'ora del giorno in cui prevede di viaggiare.

  1. Prima di poter implementare la ricerca per tragitto giornaliero, Cloud Talent Solution deve essere collegato alla tua UI. Segui le guide di guida rapida per configurare Cloud Talent Solution.

  2. La ricerca per tragitto giornaliero utilizza i dati degli indirizzi caricati con le offerte di lavoro durante l'implementazione di CTS per calcolare il tempo di percorrenza. Per attivare questa funzionalità nell'interfaccia utente CTS esistente, invia una richiesta jobs.search e includi Oggetto CommuteFilter nel campo JobQuery.commuteFilter. commuteMethod, travelDuration e startCoordinates sono campi obbligatori.

    Java

    Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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

    Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client 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

    Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client 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

    Per saperne di più sull'installazione e sulla creazione di un client Cloud Talent Solution, consulta Librerie client di 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

Consigli per la tua UI

  1. Cloud Talent Solution non consente di effettuare ricerche sia in base alla distanza (utilizzando il filtro Posizione CTS) sia in base al tempo di percorrenza. Per consentire a chi cerca lavoro di accedere a entrambe le opzioni, utilizza un approccio a due schede o simile.

  2. Modifica il front-end della tua domanda in modo che quando una persona in cerca di lavoro richiede una ricerca per il tragitto giornaliero, Il backend compila le informazioni pertinenti nel filtro del tragitto giornaliero e chiama l'API come farebbe in una normale richiesta di ricerca.

  3. Includi nell'interfaccia utente questi elementi appena aggiunti:

    • Un'opzione per scegliere se si tratta di una ricerca di distanza o di un tragitto giornaliero. Ad esempio, la UI di ricerca potrebbe avere il seguente aspetto:

    • Un menu a discesa con le opzioni per il metodo di tragitto giornaliero.

    • Un'opzione per regolare le condizioni del traffico.

    • Il tempo di percorrenza totale (il tempo di percorrenza massimo supportato è 60 minuti).

    • Ora di inizio del tragitto giornaliero.

  4. Le informazioni sui tempi di percorrenza restituite dall'API vengono poi utilizzate per mostrare le informazioni al candidato. Solo offerte di lavoro pertinenti che si trovano all'interno dell'area di tempo del tragitto giornaliero designata vengono restituiti nell'elenco dei risultati. Consulta la documentazione relativa alle best practice per la ricerca di lavoro per una discussione sui modi per modificare l'ordine e il numero di risultati restituiti in questa area.

Puoi utilizzare l'API di Google Maps per generare una mappa basata sulle informazioni sui tempi di percorrenza del tragitto giornaliero restituite dal CTS. e incorporarla nei risultati restituiti a chi cerca lavoro. La suite dell'API di Google Maps offre diverse opzioni per visualizzare la mappa. Alcune opzioni dell'API Maps sono più efficaci di altre. Ad esempio, la visualizzazione della mappa termica JavaScript di Google Maps abbinata a Il clustering degli indicatori è un ottimo modo per visualizzare i lavori pertinenti restituiti a una persona in cerca di lavoro all'interno dell'area, in base alle preferenze per il tragitto giornaliero impostate. Al contrario, la modalità Indicazioni non mostra tutti i job restituiti in una richiesta di ricerca e non è un'opzione consigliata.

Per ulteriori informazioni sull'implementazione di una ricerca basata sul tragitto giornaliero, consulta la guida illustrativa di ricerca del tragitto giornaliero.