Wyszukiwanie tekstu (nowość)

Wyszukiwanie tekstowe (nowość) zwraca informacje o zbiorze miejsca na podstawie ciągu znaków — na przykład „pizza w Krakowie” lub „sklep obuwniczy w pobliżu Ottawy” lub „ulica Główna 123”. W odpowiedzi usługa przesyła listę miejsc. zgodne z ciągiem tekstowym i dostosowane do lokalizacji.

Usługa jest szczególnie przydatna do tworzenia niejednoznacznych adresów w zautomatyzowanym systemie, i inne niż adresowe mogą być dopasowane do adresów. Przykłady niejednoznacznych zapytań dotyczących adresu to źle sformatowane adresy lub żądań zawierających składniki niezwiązane z adresem, np. nazwy firm. Prośby np. dwa pierwsze przykłady mogą nie zwrócić żadnych wyników, chyba że lokalizacja – takich jak region, ograniczenie lokalizacji czy promowanie lokalizacji.

Wyszukiwanie tekstowe (nowość) jest podobne do wyszukiwania w pobliżu (Nowość). Główny Różnica między nimi polega na tym, że wyszukiwarka tekstowa (nowa) pozwala określić dowolny ciąg wyszukiwania, a Wyszukiwanie w pobliżu (nowość) wymaga określonego obszaru do wyszukiwania.

„ul. Główna 10, Wielka Brytania” lub „ul. Główna 123, USA” wiele numerów „High Street” w Wielkiej Brytanii; przy „Main Street” w USA. Zapytanie nie zwraca pożądanych wyników, chyba że jest ograniczenie lokalizacji ustawiony.
„Restauracja sieciowa Warszawa” Wiele „Sieć Restauracja” lokalizacje w Nowym Jorku; brak adresu lub nawet nazwę ulicy.
„ul. Rybaki 10, Warszawa” lub „123 Main Street, Pleasanton PL” Tylko jedna „ulica główna” w mieście Escher w Wielkiej Brytanii; tylko jedna „ulica Główna” w amerykańskim mieście Pleasanton, Kalifornia.
„UniqueRestaurantName Warszawa” tylko jeden obiekt o takiej nazwie w Nowym Jorku; brak adresu które są niezbędne do rozróżniania.
„pizzerie w Warszawie” Zapytanie zawiera ograniczenie lokalizacji i „pizzerie”. to precyzyjnie zdefiniowany typ miejsca. Zwraca wiele wyników.
„+1 514-670-8700”

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

Żądania wyszukiwania tekstowego

Żądanie wyszukiwania tekstowego 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 reprezentujące poszczególne dopasowania zawiera tylko te 2 pola.

  • Użyj formatu SearchByTextRequest.Builder aby utworzyć SearchByTextRequest definiujący wyszukiwanie.

    • Ustaw ciąg zapytania „pikantne potrawy wegetariańskie”.

    • Ustaw maksymalną liczbę miejsc z wynikami na 10. Wartości domyślne i maksymalna liczba to 20.

    • Ogranicz obszar wyszukiwania do prostokąta zdefiniowanego przez szerokość i szerokość geograficzną długości geograficznej. Dopasowania spoza tego obszaru nie są zwracane.

  • Dodaj OnSuccessListener i znajdź pasujące miejsca z SearchByTextResponse obiektu.

Odpowiedzi na wyszukiwanie tekstowe

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

  • Lista Place obiektów reprezentujących wszystkie pasujące miejsca, w tym jeden Place obiekt na pasujące miejsce.

  • Każdy obiekt Place zawiera tylko pola zdefiniowane przez listę pól które zostały przekazane do żądania.

Na przykład w żądaniu zdefiniowano listę pól jako:

// 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ć usługi 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 Dostęp do miejsc pól danych obiektów

Wymagane parametry

Parametry wymagane dla SearchByTextRequest to:

  • Lista pól

    Określ pola danych o miejscach, które mają być zwracane. Prześlij listę Place.Field określające pola danych do zwrócenia. Nie ma domyślnej listy zwrócone pola w odpowiedzi.

    Listy pól to dobry sposób na ich projektowanie, by uniknąć zbędnych danych, co pozwala uniknąć niepotrzebnego czasu przetwarzania opłaty rozliczeniowe.

    Wypełnij co najmniej jedno z tych pól:

    • Następujące pola aktywują kod SKU wyszukiwania tekstowego (tylko identyfikator):

      Place.Field.ID, Place.Field.NAME
    • Te pola aktywują kod SKU wyszukiwania tekstowego (podstawowego):

      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
    • Te 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
    • Te pola aktywują kod SKU wyszukiwania tekstowego (preferowany):

      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 ma zostać wyszukany, na przykład: „restauracja”, „ul. Główna 123” lub „najlepsze miejsce, które warto zwiedzić we Wrocławiu”. Interfejs API zwraca dopasowania kandydatów na podstawie tego ciągu i porządkuje wyniki na podstawie na ich postrzeganą trafność.

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

Parametry opcjonalne

Użyj SearchByTextRequest , aby określić opcjonalne parametry żądania.

  • Uwzględniony typ

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

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

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

  • Korekta lokalizacji

    Określa obszar wyszukiwania. Ta lokalizacja działa dyskryminująco, co oznacza, że wyniki dotyczące określonej lokalizacji, w tym wyniki poza określonym obszarem.

    Możesz określić ograniczenie lokalizacji lub tendencyjności, ale nie w obu przypadkach. Ograniczenie lokalizacji to określenie regionu, w którym muszą się znajdować wyniki, oraz efektu lokalizacji określenie regionu, w którym wyniki muszą znajdować się w pobliżu, ale mogą się znajdować poza regionem. w pobliżu.

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

    • Okrąg jest wyznaczany 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 szerokości geograficznej, reprezentowany przez dwa elementy. na przekątnej i na przekątnej. Najniższy punkt wskazuje południowy zachód róg prostokąta, a najwyższy punkt reprezentuje północny wschód w prawym górnym rogu prostokąta.

      Widoczny obszar jest uważany za obszar zamknięty, co oznacza, że obejmuje jego granicę. Granice szerokości geograficznej musi mieścić się w przedziale od -90 do 90 stopni włącznie i musi mieścić się w granicach długości geograficznej musi mieścić się w zakresie od -180 do 180 stopni włącznie:

      • Jeśli low = high, widoczny obszar składa się z: ten pojedynczy punkt.
      • Jeśli low.longitude > high.longitude, zakres długości geograficznej jest odwrócony (widoczny obszar przecina 180 stopni linii długości geograficznej).
      • Jeśli low.longitude = -180 stopni i high.longitude = 180 stopni, widoczny obszar obejmuje wszystkie długości geograficznej.
      • Jeśli low.longitude = 180 stopni i high.longitude = -180 stopni, zakres długości geograficznej to puste.
      • Jeśli low.latitude > high.latitude, zakres szerokości geograficznej jest pusty.

      Musi być wypełnione zarówno niska, jak i wysoka, a reprezentowane pole nie może być puste. Gdy to zrobisz, pojawi się błąd.

      Na przykład prostokątnego widocznego obszaru zobacz Żądania wyszukiwania tekstowego.

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

  • Ograniczenie dotyczące lokalizacji

    Określa obszar wyszukiwania. Wyniki spoza określonego obszaru nie są . Wskaż region jako prostokątny widoczny obszar. Zobacz opis uderzenia lokalizacji, .

    Możesz określić ograniczenie lokalizacji lub tendencyjności, ale nie w obu przypadkach. Ograniczenie lokalizacji to określenie regionu, w którym muszą się znajdować wyniki, oraz efektu lokalizacji określenie regionu, w którym wyniki muszą znajdować się w pobliżu, ale mogą znajdować się poza regionem. w pobliżu.

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

  • Maksymalna liczba wyników

    Określa maksymalną liczbę wyników miejsc do zwrócenia. Wymagana wartość z zakresu 1 i 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 wyższa niż lub jej równy. Wartości muszą mieścić się w zakresie od 0,0 do 5.0 (włącznie) przyrosty co 0,5. Na przykład: 0, 0,5, 1,0, ... , 5,0 włącznie. Wartości to w górę do najbliższej 0,5. Na przykład wartość 0, 6 eliminuje wszystkie wyników z oceną niższą niż 1,0.

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

  • Teraz otwarte

    Jeśli true, zwróć tylko te miejsca, które są otwarte w momencie wysyłania zapytania. Jeśli false, zwróć wszystkie firmy bez względu na to, czy są otwarte. Miejsca, które nie określają godzin otwarcia w bazie danych Miejsc Google, zwracany, jeśli ustawisz ten parametr na false.

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

  • Poziomy cen

    Domyślnie wyniki obejmują miejsca, które świadczą usługi na wszystkich poziomach cen. Aby ograniczyć aby uwzględnić tylko miejsca o określonych poziomach cen, możesz przesłać wartości całkowitych odpowiadających poziomom cen miejsc, które chcesz zwrócić:

    • 1 – firma świadczy niedrogie usługi.
    • 2 – miejsce świadczy usługi w umiarkowanych cenach.
    • 3 – firma świadczy drogie usługi.
    • 4 – miejsce świadczy bardzo drogie usługi.

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

  • Preferencja rankingu

    Określa kolejność wyników w odpowiedzi na podstawie typu wartości zapytanie:

    • W przypadku zapytania kategorialnego, np. „Restauracje w Warszawie”, Ustawienie domyślne to SearchByTextRequest.RankPreference.RELEVANCE (ranking wyników według trafności wyszukiwania). Możesz ustawić preferencję pozycji na SearchByTextRequest.RankPreference.RELEVANCE lub SearchByTextRequest.RankPreference.DISTANCE (ranking wyników według odległości).
    • W przypadku zapytań niezwiązanych z kategorią, np. „Warszawa”, zalecamy pozostawiania nieskonfigurowanego parametru preferencji pozycji.

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

  • Kod regionu

    Kod regionu używany do formatowania odpowiedzi podany jako dwuznakową wartość kodu CLDR. Ten parametr może również powodować odchylenia w wynikach wyszukiwania. Nie ma wartości domyślnej.

    Jeśli nazwa kraju w polu adresu w odpowiedzi jest zgodna z kodu regionu, kod kraju został pominięty w adresie.

    Większość kodów CLDR jest identyczna z kodami ISO 3166-1. z kilkoma istotnymi wyjątkami. Na przykład domena ccTLD Wielkiej Brytanii to "uk" (co.uk), natomiast kod ISO 3166-1 to „gb”. (technicznie dla funkcji podmiotu „Wielkiej Brytanii i Irlandii Północnej”). Ten 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.

  • Ścisłe filtrowanie typów

    Używana z parametrem typu uwzględniania. Po ustawieniu na true, tylko miejsca pasujące do typów określonych przez . Jeśli wartością domyślną jest false, odpowiedź może zawierać miejsca, w których nie pasują do określonych typów.

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