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

Puoi integrare Tragitto giornaliero nella tua UI per consentire a chi cerca lavoro di cercare lavoro all'interno di un'area geografica impostata in base ai tempi di percorrenza 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 ha intenzione di viaggiare.

  1. Prima di poter implementare Commute Search, Cloud Talent Solution deve essere collegato alla tua UI. Segui il documento <atarget="_blank" class="external" l10n-attrs-original-order="href,target,class" l10n-crypt-href="6CkY055CjTePPOtMht3q+JFGBtNXMtSEozqMDCbrBLAVTmdE5Zm3DKcU3qbzWuF69J88/8848/6CkY055CjTePPOtMht3q+JFGBtNXMtSEozqMDCbrBLAVTmdE5Zm3DKcU3qbzWuF69J8

  2. La ricerca basata sul tragitto giornaliero utilizza i dati dell'indirizzo che hai caricato con le offerte di lavoro durante l'implementazione del CTS per calcolare il tempo di percorrenza del tragitto giornaliero. Per abilitare questa funzionalità nell'interfaccia utente del CTS esistente, invia una richiesta jobs.search e includi un 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 di 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 di Cloud Talent Solution, consulta Librerie client di 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 di Cloud Talent Solution, consulta Librerie client di 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
    }
    

Consigli per la tua UI

  1. Cloud Talent Solution non consente la ricerca per distanza (utilizzando il filtro località CTS) E per 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 applicazione in modo che, quando una persona in cerca di lavoro richiede una ricerca per tragitto giornaliero, il backend compili le informazioni pertinenti nel filtro del tragitto giornaliero e chiami l'API come in una normale richiesta di ricerca.

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

    • Un'opzione per scegliere se si tratta di una ricerca per distanza o per il tragitto giornaliero. Ad esempio, la tua UI di Ricerca potrebbe essere simile all'esempio seguente:

    • Un menu a discesa con le opzioni relative ai metodi di tragitto giornaliero.

    • Un'opzione per regolare le condizioni del traffico.

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

    • Ora di inizio del tragitto giornaliero.

  4. Le informazioni sui tempi di percorrenza del tragitto giornaliero restituite dall'API vengono quindi utilizzate per mostrare le informazioni a chi cerca l'impiego. Nell'elenco dei risultati vengono restituite solo le offerte di lavoro pertinenti che si trovano nell'area designata per il tragitto giornaliero. Consulta la documentazione sulle best practice per la ricerca di job per una spiegazione dei modi per modificare l'ordine e il numero di job restituiti in quest'area.

Puoi utilizzare l'API di Google Maps per generare una mappa in base alle informazioni sui tempi di percorrenza del tragitto giornaliero restituite dall'API CTS e incorporarle nei risultati restituiti a chi cerca lavoro. La suite API di Google Maps offre diverse opzioni per visualizzare la mappa. Alcune opzioni dell'API di Google Maps sono più efficaci di altre. Ad esempio, la visualizzazione della mappa termica JavaScript di Google Maps abbinata al clustering degli indicatori è un ottimo modo per visualizzare le offerte di lavoro pertinenti restituite a chi cerca un lavoro all'interno dell'area, in base alle preferenze di tragitto che ha impostato. Al contrario, la modalità Indicazioni stradali 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 alle procedure di Ricerca del tragitto giornaliero.