Standortbasierte Suche (v3)

Java

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


/** Basic location Search */
public static void basicLocationSearch(String companyName, String location, double distance)
    throws IOException, InterruptedException {
  // Make sure to set the requestMetadata the same as the associated search request
  RequestMetadata requestMetadata =
      new RequestMetadata()
          // Make sure to hash the userID
          .setUserId("HashedUserId")
          // Make sure to hash the sessionID
          .setSessionId("HashedSessionID")
          // Domain of the website where the search is conducted
          .setDomain("www.google.com");
  LocationFilter locationFilter =
      new LocationFilter().setAddress(location).setDistanceInMiles(distance);
  JobQuery jobQuery = new JobQuery().setLocationFilters(Arrays.asList(locationFilter));
  if (companyName != null) {
    jobQuery.setCompanyNames(Arrays.asList(companyName));
  }
  SearchJobsRequest request =
      new SearchJobsRequest()
          .setRequestMetadata(requestMetadata)
          .setJobQuery(jobQuery)
          .setSearchMode("JOB_SEARCH");
  SearchJobsResponse response =
      talentSolutionClient.projects().jobs().search(DEFAULT_PROJECT_ID, request).execute();
  Thread.sleep(1000);
  System.out.printf("Basic location search results: %s", response);

}

Python

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.

def basic_location_search(client_service, company_name, location, distance):
    request_metadata = {
        "user_id": "HashedUserId",
        "session_id": "HashedSessionId",
        "domain": "www.google.com",
    }
    location_filter = {"address": location, "distance_in_miles": distance}
    job_query = {"location_filters": [location_filter]}
    if company_name is not None:
        job_query.update({"company_names": [company_name]})
    request = {
        "job_query": job_query,
        "request_metadata": request_metadata,
        "search_mode": "JOB_SEARCH",
    }
    response = (
        client_service.projects().jobs().search(parent=parent, body=request).execute()
    )
    print(response)

Java

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


/** Keyword location Search */
public static void keywordLocationSearch(
    String companyName, String location, double distance, String keyword)
    throws IOException, InterruptedException {
  // Make sure to set the requestMetadata the same as the associated search request
  RequestMetadata requestMetadata =
      new RequestMetadata()
          // Make sure to hash the userID
          .setUserId("HashedUserId")
          // Make sure to hash the sessionID
          .setSessionId("HashedSessionID")
          // Domain of the website where the search is conducted
          .setDomain("www.google.com");
  LocationFilter locationFilter =
      new LocationFilter().setAddress(location).setDistanceInMiles(distance);
  JobQuery jobQuery =
      new JobQuery().setQuery(keyword).setLocationFilters(Arrays.asList(locationFilter));
  if (companyName != null) {
    jobQuery.setCompanyNames(Arrays.asList(companyName));
  }
  SearchJobsRequest request =
      new SearchJobsRequest()
          .setRequestMetadata(requestMetadata)
          .setJobQuery(jobQuery)
          .setSearchMode("JOB_SEARCH");
  SearchJobsResponse response =
      talentSolutionClient.projects().jobs().search(DEFAULT_PROJECT_ID, request).execute();
  Thread.sleep(1000);
  System.out.printf("Keyword location search results: %s", response);
}

Python

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.

def keyword_location_search(client_service, company_name, location, distance, keyword):
    request_metadata = {
        "user_id": "HashedUserId",
        "session_id": "HashedSessionId",
        "domain": "www.google.com",
    }
    location_filter = {"address": location, "distance_in_miles": distance}
    job_query = {"location_filters": [location_filter], "query": keyword}
    if company_name is not None:
        job_query.update({"company_names": [company_name]})
    request = {
        "job_query": job_query,
        "request_metadata": request_metadata,
        "search_mode": "JOB_SEARCH",
    }
    response = (
        client_service.projects().jobs().search(parent=parent, body=request).execute()
    )
    print(response)

Go

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


// keywordLocationSearch searches for jobs with given keyword and within the
// distance of given location.
func keywordLocationSearch(w io.Writer, projectID, companyName, location string, distance float64, keyword 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{
		LocationFilters: []*talent.LocationFilter{
			{
				Address:         location,
				DistanceInMiles: distance,
			},
		},
		Query: keyword,
	}

	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",
	}
	resp, err := service.Projects.Jobs.Search(parent, req).Do()
	if err != nil {
		return nil, fmt.Errorf("failed to search for jobs with keyword %q in location %v within %f miles: %w", keyword, location, distance, err)
	}

	fmt.Fprintln(w, "Jobs:")
	for _, j := range resp.MatchingJobs {
		fmt.Fprintf(w, "\t%q\n", j.Job.Name)
	}

	return resp, nil
}
Alle Felder sind optional:

  • address ist der tatsächliche Jobspeicherort, der als Zeichenfolge dargestellt wird. Der Standort kann als Adresse mit Straßenangabe oder bis zur Landesebene angegeben werden. Beispiel: "123 Main Street, Anytown, WA, USA" oder einfach "USA".

  • distanceInMiles: Die Entfernung von name oder latLng in Meilen, in der gesucht werden soll. Der Standardwert ist 20. Der Höchstwert liegt bei 5.000.

    • Wenn der Wert von name eine Straßenadresse ist, werden Jobs innerhalb der festgelegten distanceInMiles dieses singulären Punkts zurückgegeben.
    • Wenn der Wert von name eine Nachbarschaft oder Stadt ist, werden Jobs innerhalb der festgelegten distanceInMiles der Nachbarschaft/des Stadtzentrums zurückgegeben. Um alle Jobs innerhalb eines Stadtviertels/einer Stadt zurückzugeben, setzen Sie distanceInMiles auf 0. Ist "distanceInMiles" > 0, dann ist der angewendete Suchradius die geografische Begrenzung des Stadtteils/der Stadt + der in der Anfrage festgelegte Wert für "distanceInMiles". Geografische Grenzen werden mit der Google Maps Geocoding API geschätzt.)
    • Wenn der Wert von name ein umgangssprachlicher Bereich wie "Bay Area" oder "Silicon Valley" ist, entspricht der angewendete Suchradius den geschätzten geografischen Grenzen des Bereichs zuzüglich der in der Anforderung festgelegten distanceInMiles.
    • Wenn der Wert name ein Bundesstaat oder ein Land ist, gibt der Dienst Jobs innerhalb des angegebenen Bundesstaates oder Landes zurück und ignoriert distanceInMiles.

Nur auf Stadtebene basierende einfache Standortsuche und Ausgabe

Java

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


/** City location Search */
public static void cityLocationSearch(String companyName, String location)
    throws IOException, InterruptedException {
  // Make sure to set the requestMetadata the same as the associated search request
  RequestMetadata requestMetadata =
      new RequestMetadata()
          // Make sure to hash the userID
          .setUserId("HashedUserId")
          // Make sure to hash the sessionID
          .setSessionId("HashedSessionID")
          // Domain of the website where the search is conducted
          .setDomain("www.google.com");
  LocationFilter locationFilter = new LocationFilter().setAddress(location);
  JobQuery jobQuery = new JobQuery().setLocationFilters(Arrays.asList(locationFilter));
  if (companyName != null) {
    jobQuery.setCompanyNames(Arrays.asList(companyName));
  }
  SearchJobsRequest request =
      new SearchJobsRequest()
          .setRequestMetadata(requestMetadata)
          .setJobQuery(jobQuery)
          .setSearchMode("JOB_SEARCH");
  SearchJobsResponse response =
      talentSolutionClient.projects().jobs().search(DEFAULT_PROJECT_ID, request).execute();
  Thread.sleep(1000);
  System.out.printf("City locations search results: %s", response);
}

Python

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.

def city_location_search(client_service, company_name, location):
    request_metadata = {
        "user_id": "HashedUserId",
        "session_id": "HashedSessionId",
        "domain": "www.google.com",
    }
    location_filter = {"address": location}
    job_query = {"location_filters": [location_filter]}
    if company_name is not None:
        job_query.update({"company_names": [company_name]})
    request = {
        "job_query": job_query,
        "request_metadata": request_metadata,
        "search_mode": "JOB_SEARCH",
    }
    response = (
        client_service.projects().jobs().search(parent=parent, body=request).execute()
    )
    print(response)

Go

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


// cityLocationSearch searches for jobs in the same city of given location.
func cityLocationSearch(w io.Writer, projectID, companyName, location 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{
		LocationFilters: []*talent.LocationFilter{
			{
				Address: location,
			},
		},
	}

	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",
	}
	resp, err := service.Projects.Jobs.Search(parent, req).Do()
	if err != nil {
		return nil, fmt.Errorf("failed to search for jobs with city location %s: %w", location, err)
	}

	fmt.Fprintln(w, "Jobs:")
	for _, j := range resp.MatchingJobs {
		fmt.Fprintf(w, "\t%q\n", j.Job.Name)
	}

	return resp, nil
}

Mehrere Standorte

Wenn mehrere Standorte mit mehreren Radien an die Suchanfrage übergeben werden, wird der maximale Radius berücksichtigt und auf alle Standorte angewendet. Pro Job sind maximal fünf Standorte zulässig.

Java

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


/** Multiple locations Search */
public static void multiLocationsSearch(
    String companyName, String location1, double distance1, String location2)
    throws IOException, InterruptedException {
  // Make sure to set the requestMetadata the same as the associated search request
  RequestMetadata requestMetadata =
      new RequestMetadata()
          // Make sure to hash the 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()
          .setLocationFilters(
              Arrays.asList(
                  new LocationFilter().setAddress(location1).setDistanceInMiles(distance1),
                  new LocationFilter().setAddress(location2)));
  if (companyName != null) {
    jobQuery.setCompanyNames(Arrays.asList(companyName));
  }
  SearchJobsRequest request =
      new SearchJobsRequest()
          .setRequestMetadata(requestMetadata)
          .setJobQuery(jobQuery)
          .setSearchMode("JOB_SEARCH");
  SearchJobsResponse response =
      talentSolutionClient.projects().jobs().search(DEFAULT_PROJECT_ID, request).execute();
  Thread.sleep(1000);
  System.out.printf("Multiple locations search results: %s", response);

}

Python

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.

def multi_locations_search(
    client_service, company_name, location1, distance1, location2
):
    request_metadata = {
        "user_id": "HashedUserId",
        "session_id": "HashedSessionId",
        "domain": "www.google.com",
    }
    location_filter1 = {"address": location1, "distance_in_miles": distance1}
    location_filter2 = {"address": location2}
    job_query = {"location_filters": [location_filter1, location_filter2]}
    if company_name is not None:
        job_query.update({"company_names": [company_name]})
    request = {
        "job_query": job_query,
        "request_metadata": request_metadata,
        "search_mode": "JOB_SEARCH",
    }
    response = (
        client_service.projects().jobs().search(parent=parent, body=request).execute()
    )
    print(response)

Go

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


// multiLocationsSearch searches for jobs that fall in the distance of any given
// locations.
func multiLocationsSearch(w io.Writer, projectID, companyName, location, location2 string, distance float64) (*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{
		LocationFilters: []*talent.LocationFilter{
			{
				Address:         location,
				DistanceInMiles: distance,
			},
			{
				Address:         location2,
				DistanceInMiles: distance,
			},
		},
	}

	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",
	}
	resp, err := service.Projects.Jobs.Search(parent, req).Do()
	if err != nil {
		return nil, fmt.Errorf("Failed to search for jobs with multi locations %s and %s within %f miles, Err: %w", location, location2, distance, err)
	}

	fmt.Fprintln(w, "Jobs:")
	for _, j := range resp.MatchingJobs {
		fmt.Fprintf(w, "\t%q\n", j.Job.Name)
	}

	return resp, nil
}

Flag "enableBroadening" setzen

Mit dem Flag "enableBroadening" können Sie die Einschränkungen für Standorte und Jobkategorien lockern, um die Anzahl der zurückgegebenen Ergebnisse zu erhöhen.

Java

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


/** Broadening location Search */
public static void broadeningLocationsSearch(String companyName, String location)
    throws IOException, InterruptedException {
  // Make sure to set the requestMetadata the same as the associated search request
  RequestMetadata requestMetadata =
      new RequestMetadata()
          // Make sure to hash the 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().setLocationFilters(Arrays.asList(new LocationFilter().setAddress(location)));
  if (companyName != null) {
    jobQuery.setCompanyNames(Arrays.asList(companyName));
  }
  SearchJobsRequest request =
      new SearchJobsRequest()
          .setRequestMetadata(requestMetadata)
          .setJobQuery(jobQuery)
          .setEnableBroadening(true)
          .setSearchMode("JOB_SEARCH");
  SearchJobsResponse response =
      talentSolutionClient.projects().jobs().search(DEFAULT_PROJECT_ID, request).execute();
  Thread.sleep(1000);
  System.out.printf("Broadening locations search results: %s", response);
}

Python

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.

def broadening_location_search(client_service, company_name, location):
    request_metadata = {
        "user_id": "HashedUserId",
        "session_id": "HashedSessionId",
        "domain": "www.google.com",
    }
    location_filter = {"address": location}
    job_query = {"location_filters": [location_filter]}
    if company_name is not None:
        job_query.update({"company_names": [company_name]})
    request = {
        "job_query": job_query,
        "request_metadata": request_metadata,
        "search_mode": "JOB_SEARCH",
        "enable_broadening": True,
    }
    response = (
        client_service.projects().jobs().search(parent=parent, body=request).execute()
    )
    print(response)

Go

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


// broadeningLocationSearch searches for jobs with a broadening area of given
// location.
func broadeningLocationSearch(w io.Writer, projectID, companyName, location 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{
		LocationFilters: []*talent.LocationFilter{
			{
				Address: location,
			},
		},
	}

	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",
		EnableBroadening: true,
	}
	resp, err := service.Projects.Jobs.Search(parent, req).Do()
	if err != nil {
		return nil, fmt.Errorf("failed to search for jobs with broadening location %v: %w", location, err)
	}

	fmt.Fprintln(w, "Jobs:")
	for _, j := range resp.MatchingJobs {
		fmt.Fprintf(w, "\t%q\n", j.Job.Name)
	}

	return resp, nil
}