Wyszukiwanie tekstu (nowość)

Wyszukiwanie tekstowe (Nowe) zwraca informacje o zestawie miejsc na podstawie ciągu znaków, np. „pizza w Krakowie”, „sklep obuwniczy w pobliżu Ottawy” lub „ulica Główna 123”. W odpowiedzi usługa przedstawia listę miejsc pasujących do ciągu tekstowego i ustawione odchylenie do lokalizacji.

Usługa jest szczególnie przydatna do tworzenia niejednoznacznych zapytań adresowych w automatycznych systemach, a komponenty inne niż adres w ciągu znaków mogą odpowiadać zarówno firmom, jak i adresom. Przykładami niejednoznacznych zapytań adresowych są niewłaściwie sformatowany adres lub żądania zawierające komponenty niebędące adresami, takie jak nazwy firm. Żądania takie jak w 2 pierwszych przykładach mogą zwracać zero wyników, chyba że zostanie ustawiona lokalizacja – taka jak region, ograniczenie lokalizacji lub odchylenie lokalizacji.

Wyszukiwanie tekstowe (nowość) przypomina wyszukiwanie w pobliżu (nowość). Główna różnica między nimi polega na tym, że wyszukiwanie tekstowe (nowość) umożliwia określenie dowolnego ciągu wyszukiwania, a wyszukiwanie w pobliżu (nowe) wymaga określonego obszaru wyszukiwania.

„ul. Główna 10, Wielka Brytania” lub „ul. Główna 123, Polska” Wiele ulic „High Street” w Wielkiej Brytanii i wiele „głównych” w Stanach Zjednoczonych. Zapytanie nie zwraca pożądanych wyników, chyba że ustawione jest ograniczenie lokalizacji.
„SiećRestauracji Warszawa” Wiele lokalizacji „Sieć restauracji” w Nowym Jorku, bez adresu ani nazwy ulicy.
„ul. Główna 10, Katowice” lub „ul. Główna 123, Warszawa” Tylko jedna „Główna ulica” w mieście Escher w Wielkiej Brytanii i tylko jedna „ulica główna” w mieście Pleasanton w Kalifornii.
„Unikalna Nazwa Restauracji Warszawa” Tylko jeden obiekt z taką nazwą w Warszawie. Nie trzeba podawać adresu, aby je rozróżnić.
„pizzeria w Krakowie” To zapytanie zawiera ograniczenie lokalizacji, a „pizzeria” jest dokładnie zdefiniowanym typem miejsca. Zwraca wiele wyników.
„+1 514-670-8700”

To zapytanie zawiera numer telefonu. Zwraca wiele wyników wyszukiwania miejsc powiązanych z tym numerem telefonu.

Żądania wyszukiwania tekstowego

Prośba o wyszukiwanie tekstowe ma postać:

// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

// Define latitude and longitude coordinates of the search area.
LatLng southWest = new LatLng(37.38816277477739, -122.08813770258874);
LatLng northEast = new LatLng(37.39580487866437, -122.07702325966572);

// Use the builder to create a SearchByTextRequest object.
final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields)
  .setMaxResultCount(10)
  .setLocationRestriction(RectangularBounds.newInstance(southWest, northEast)).build();

// Call PlacesClient.searchByText() to perform the search.
// Define a response handler to process the returned List of Place objects.
placesClient.searchByText(searchByTextRequest)
    .addOnSuccessListener(response -> {
      List<Place> places = response.getPlaces();
    });

W tym przykładzie:

  • Ustaw listę pól tak, aby zawierała tylko pola Place.Field.ID i Place.Field.NAME. Oznacza to, że obiekty Place w odpowiedzi, które reprezentują każde pasujące miejsce, zawierają tylko te 2 pola.

  • Użyj SearchByTextRequest.Builder, aby utworzyć obiekt SearchByTextRequest, który określa wyszukiwanie.

    • Ustaw ciąg zapytania tekstowego na „Azjatyckie dania wegetariańskie”.

    • Ustaw maksymalną liczbę miejsc wyników na 10. Wartości domyślne i maksymalne to 20.

    • Ogranicz obszar wyszukiwania do prostokąta zdefiniowanego przez współrzędne geograficzne. Nie są zwracane żadne dopasowania spoza tego obszaru.

  • Dodaj obiekt OnSuccessListener i pobierz pasujące miejsca z obiektu SearchByTextResponse.

Odpowiedzi dotyczące wyszukiwania tekstu

Klasa SearchByTextResponse reprezentuje odpowiedź z żądania wyszukiwania. Obiekt SearchByTextResponse zawiera:

  • Lista obiektów Place, które reprezentują wszystkie pasujące miejsca, z 1 obiektem Place na każde pasujące miejsce.

  • Każdy obiekt Place zawiera tylko pola zdefiniowane przez listę pól przekazaną w żądaniu.

Na przykład w żądaniu zdefiniowano listę pól w taki sposób:

// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

Ta lista pól oznacza, że każdy obiekt Place w odpowiedzi zawiera tylko identyfikator i nazwę każdego pasującego miejsca. Następnie możesz użyć metod Place.getId() i Place.getName(), aby uzyskać dostęp do tych pól w każdym obiekcie Place.

Więcej przykładów uzyskiwania dostępu do danych w obiekcie Place znajdziesz w sekcji Uzyskiwanie dostępu do pól danych obiektu Place.

Wymagane parametry

Wymagane parametry metody SearchByTextRequest:

  • Lista pól

    Określ, które pola danych miejsc mają zostać zwrócone. Przekaż listę wartości Place.Field określających pola danych do zwrócenia. W odpowiedzi nie ma domyślnej listy zwróconych pól.

    Listy pól to dobra metoda projektowania, która pozwala uniknąć żądania zbędnych danych, co pozwala uniknąć niepotrzebnego czasu przetwarzania i opłat.

    Określ co najmniej jedno z tych pól:

    • Poniższe pola wywołują kod SKU wyszukiwania tekstowego (tylko identyfikator):

      Place.Field.ID, Place.Field.NAME
    • Poniższe pola wywołują kod SKU wyszukiwania tekstowego (podstawowe):

      Place.Field.ADDRESS_COMPONENTS, Place.Field.BUSINESS_STATUS, Place.Field.ADDRESS, Place.Field.ICON_BACKGROUND_COLOR, Place.Field.ICON_URL, Place.Field.LAT_LNG, Place.Field.PHOTO_METADATAS, Place.Field.PLUS_CODE, Place.Field.TYPES, Place.Field.UTC_OFFSET, Place.Field.VIEWPORT, Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
    • Poniższe pola aktywują kod SKU wyszukiwania tekstowego (zaawansowane):

      Place.Field.CURRENT_OPENING_HOURS, Place.Field.SECONDARY_OPENING_HOURS, Place.Field.PHONE_NUMBER, Place.Field.PRICE_LEVEL, Place.Field.RATING, Place.Field.OPENING_HOURS, Place.Field.USER_RATINGS_TOTAL, Place.Field.WEBSITE_URI
    • Następujące pola wywołują kod SKU wyszukiwania tekstowego (preferowane):

      Place.Field.CURBSIDE_PICKUP, Place.Field.DELIVERY, Place.Field.DINE_IN, Place.Field.EDITORIAL_SUMMARY, Place.Field.RESERVABLE, Place.Field.REVIEWS, Place.Field.SERVES_BEER, Place.Field.SERVES_BREAKFAST, Place.Field.SERVES_BRUNCH, Place.Field.SERVES_DINNER, Place.Field.SERVES_LUNCH, Place.Field.SERVES_VEGETARIAN_FOOD, Place.Field.SERVES_WINE, Place.Field.TAKEOUT

    Aby ustawić parametr listy pól, wywołaj metodę setPlaceFields() podczas tworzenia obiektu SearchByTextRequest.

  • Zapytanie tekstowe

    Ciąg tekstowy, który należy wyszukać, na przykład „restauracja”, „ulica Główna 123” lub „najlepsze miejsce w Krakowie”. Interfejs API zwraca kandydujące dopasowania na podstawie tego ciągu i porządkuje wyniki na podstawie ich postrzeganej trafności.

    Aby ustawić parametr zapytania tekstowego, wywołaj metodę setTextQuery() podczas tworzenia obiektu SearchByTextRequest.

Parametry opcjonalne

Aby określić opcjonalne parametry żądania, użyj obiektu SearchByTextRequest.

  • Uwzględniony typ

    Ogranicza wyniki do miejsc pasujących do określonego typu zdefiniowanego w tabeli A. Można podać tylko jeden typ. Na przykład:

    • setIncludedType("bar")
    • setIncludedType("pharmacy")

    Aby ustawić uwzględniony parametr typu, wywołaj metodę setIncludedType() podczas tworzenia obiektu SearchByTextRequest.

  • Wpływ na lokalizację

    Określa obszar wyszukiwania. Ta lokalizacja jest odchyleniem, co oznacza, że mogą być zwracane wyniki dotyczące określonej lokalizacji, w tym wyniki spoza określonego obszaru.

    Możesz określić ograniczenie lub promowanie lokalizacji, ale nie obie te wartości jednocześnie. Ograniczenie dotyczące lokalizacji określa region, w którym muszą znajdować się wyniki, a odchylenie lokalizacji – region, w którym wyniki muszą znajdować się w pobliżu, ale mogą znajdować się poza danym obszarem.

    Określ region jako prostokątny widoczny obszar lub okrąg.

    • Okrąg jest określony przez punkt środkowy i promień w metrach. Promień musi mieścić się w zakresie od 0,0 do 50 000,0 włącznie. Na przykład:

      // Define latitude and longitude coordinates of the center of the search area.
      LatLng searchCenter = new LatLng(37.38816277477739, -122.08813770258874);
      
      // Use the builder to create a SearchByTextRequest object.
      // Set the radius of the search area to 500.0 meters.
      final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields)
        .setMaxResultCount(10)
        .setLocationBias(CircularBounds.newInstance(searchCenter, 500.0)).build();
      
    • Prostokąt to widoczny obszar o długości i szerokości geograficznej, wyrażony jako 2 położone po przekątnej naprzeciwległości najniższego i najwyższego punktu. Najniższy punkt oznacza południowo-zachodni róg prostokąta, a najwyższy – północno-wschodni róg prostokąta.

      Widoczny obszar jest traktowany jako zamknięty obszar, co oznacza, że obejmuje swoją granicę. Granice szerokości geograficznej muszą mieścić się w zakresie od -90 do 90 stopni włącznie, a długość geograficzna – od -180 do 180 stopni włącznie:

      • Jeśli low = high, widoczny obszar składa się z tego pojedynczego punktu.
      • Jeśli low.longitude > high.longitude, zakres długości geograficznej jest odwrócony (widoczny obszar przecina linię długości 180 stopni).
      • Jeśli low.longitude = -180 stopni, high.longitude = 180 stopni, widoczny obszar obejmuje wszystkie długości geograficzne.
      • Jeśli low.longitude = 180 stopni i high.longitude = -180 stopni, zakres długości geograficznej jest pusty.
      • Jeśli low.latitude > high.latitude, zakres szerokości geograficznej jest pusty.

      Musisz wypełnić zarówno niski, jak i najwyższy poziom, a reprezentowane pole nie może być puste. Pusty widoczny obszar powoduje wystąpienie błędu.

      Na przykład dla prostokątnego widocznego obszaru zapoznaj się z sekcją Żądania wyszukiwania tekstu.

      Aby ustawić parametr promowania lokalizacji, wywołaj metodę setLocationBias() podczas tworzenia obiektu SearchByTextRequest.

  • Ograniczenie lokalizacji

    Określa obszar wyszukiwania. Wyniki spoza określonego obszaru nie są zwracane. Określ region jako prostokątny widoczny obszar. Aby dowiedzieć się, jak definiować widoczny obszar, zapoznaj się z opisem w sekcji Wpływ na lokalizację.

    Możesz określić ograniczenie lub promowanie lokalizacji, ale nie obie te wartości jednocześnie. Ograniczenie lokalizacji definiuje się jako region, w którym muszą znajdować się wyniki, a odchylenie lokalizacji – region, w którym wyniki muszą znajdować się w pobliżu, ale mogą znajdować się poza danym obszarem.

    Aby ustawić parametr ograniczenia lokalizacji, wywołaj metodę setLocationRestriction() podczas tworzenia obiektu SearchByTextRequest.

  • Maksymalna liczba wyników

    Określa maksymalną liczbę zwracanych wyników wyszukiwania miejsc. Wartość musi mieścić się w przedziale od 1 do 20 (domyślnie) włącznie.

    Aby ustawić parametr maksymalnej liczby wyników, wywołaj metodę setMaxResultCount() podczas tworzenia obiektu SearchByTextRequest.

  • Minimalna ocena

    Ogranicza wyniki tylko do tych, których średnia ocena użytkowników jest większa od tego limitu lub jej równa. Wartości muszą mieścić się w zakresie od 0,0 do 5,0 (włącznie) w przyrostach co 0,5. Na przykład: 0; 0,5; 1,0; ... ; 5,0 włącznie. Wartości są zaokrąglane w górę do najbliższej wielokrotności 0,5. Na przykład wartość 0,6 eliminuje wszystkie wyniki z oceną mniejszą niż 1,0.

    Aby ustawić parametr minimalnej oceny, wywołaj metodę setMinRating() podczas tworzenia obiektu SearchByTextRequest.

  • Teraz otwarte

    Jeśli true, zwraca tylko te miejsca, które w momencie wysyłania zapytania są otwarte. Jeśli wartość to false, zwróć wszystkie firmy niezależnie od tego, czy są otwarte. Jeśli ustawisz ten parametr na false, zwracane są miejsca, które w bazie danych Miejsc Google nie mają określonych godzin otwarcia.

    Aby ustawić parametr otwórz teraz, wywołaj metodę setOpenNow() podczas tworzenia obiektu SearchByTextRequest.

  • Poziomy cen

    Domyślnie wyniki obejmują miejsca świadczące usługi na wszystkich poziomach cenowych. Aby ograniczyć wyniki tylko do miejsc z określonych poziomów cen, możesz przekazać listę wartości całkowitych, które odpowiadają poziomom cen miejsc, które chcesz zwrócić:

    • 1 – firma oferuje niedrogie usługi.
    • 2 – firma oferuje usługi w umiarkowanej cenie.
    • 3 – firma świadczy drogie usługi.
    • 4 – firma świadczy bardzo drogie usługi.

    Aby ustawić parametr poziomów cen, wywołaj metodę setPriceLevels() podczas tworzenia obiektu SearchByTextRequest.

  • Preferowana pozycja

    Określa kolejność wyświetlania wyników w odpowiedzi na podstawie typu zapytania:

    • W przypadku zapytania kategorialnego, np. „Restauracje w Krakowie”, domyślna jest wartość SearchByTextRequest.RankPreference.RELEVANCE (pozycjonuj wyniki według trafności wyszukiwania). Możesz ustawić preferencję pozycji na SearchByTextRequest.RankPreference.RELEVANCE lub SearchByTextRequest.RankPreference.DISTANCE (pozycjonowanie wyników według odległości).
    • W przypadku zapytania, które nie ma związku z kategorią, np. „Mountain View, CA”, zalecamy pozostawienie parametru preferencji pozycji nieskonfigurowane.

    Aby ustawić parametr preferencji pozycji, wywołaj metodę setRankPreference() podczas tworzenia obiektu SearchByTextRequest.

  • Kod regionu

    Kod regionu używany do formatowania odpowiedzi, określony jako dwuznakowy kod CLDR. Ten parametr może też mieć wpływ na wyniki wyszukiwania. Brak wartości domyślnej.

    Jeśli nazwa kraju w polu adresu w odpowiedzi jest zgodna z kodem regionu, kod kraju jest pomijany w adresie.

    Większość kodów CLDR jest identyczna z kodami ISO 3166-1 z kilkoma wyjątkami. Na przykład domena ccTLD w Wielkiej Brytanii to „uk” (.co.uk), a kod ISO 3166-1 to „gb” (technicznie oznaczający jednostkę „Wielka Brytania i Irlandia Północna”). Parametr może wpływać na wyniki w zależności od obowiązującego prawa.

    Aby ustawić parametr kodu regionu, wywołaj metodę setRegionCode() podczas tworzenia obiektu SearchByTextRequest.

  • Rygorystyczne filtrowanie typów

    Używane z parametrem uwzględniania. Gdy ma wartość true, zwracane są tylko miejsca pasujące do określonych typów określonych przez typ uwzględniania. Gdy false jest wartością domyślną, odpowiedź może zawierać miejsca, które nie pasują do określonych typów.

    Aby ustawić parametr filtrowania typu rygorystycznego, wywołaj metodę setStrictTypeFiltering() podczas tworzenia obiektu SearchByTextRequest.