Text Search (Baru)

Pilih platform: Android iOS JavaScript Layanan Web

Text Search (Baru) menampilkan informasi tentang serangkaian tempat berdasarkan string — misalnya "pizza di Bandung" atau "toko sepatu di dekat Ottawa" atau "123 Main Street". Layanan ini merespons dengan daftar tempat mencocokkan {i>string <i}teks dan bias lokasi yang telah ditetapkan.

Layanan ini sangat berguna untuk membuat alamat ambigu kueri secara otomatis, dan non-alamat pada {i>string<i} dapat cocok dengan bisnis serta untuk alamat internal dan eksternal. Contoh kueri alamat ambigu adalah alamat yang tidak diformat dengan baik atau permintaan yang menyertakan komponen bukan alamat, seperti nama bisnis. Permintaan seperti dua contoh pertama mungkin mengembalikan hasil nol kecuali jika lokasi — seperti wilayah, pembatasan lokasi, atau bias lokasi telah ditetapkan.

Text Search (Baru) mirip dengan Nearby Search (Baru). Utama perbedaan di antara keduanya adalah Text Search (Baru) memungkinkan Anda menentukan string penelusuran acak sementara Nearby Search (Baru) memerlukan area tertentu untuk melakukan penelusuran.

"10 High Street, Inggris" atau "123 Main Street, US" Beberapa "High Street" di Inggris Raya; beberapa "Main Street" di AS. Kueri tidak menampilkan hasil yang diinginkan kecuali pembatasan lokasi atur.
"Restoran Restoran New York" Beberapa "ChainRestaurant" lokasi di New York; tidak ada alamat atau bahkan nama jalan.
"10 High Street, Escher, Inggris Raya" atau "123 Main Street, Pleasanton US" Hanya satu "Jalan Raya" di kota Escher di Inggris; hanya satu "Jalan Utama" di kota Pleasanton, AS.
"Nama Restoran Unik New York" Hanya satu tempat usaha dengan nama ini di New York; tidak ada alamat yang berbeda.
"restoran pizza di New York" Kueri ini berisi pembatasan lokasinya, dan "restoran pizza" bernilai jenis tempat yang terdefinisi dengan baik. Operator ini memberikan banyak hasil.
"+1 514-670-8700"

Kueri ini berisi nomor telepon. Operator ini mengembalikan banyak hasil untuk tempat yang terkait dengan nomor telepon tersebut.

Permintaan Text Search

Permintaan Text Search berbentuk:

// 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();
    });

Dalam contoh ini, Anda:

  • Menetapkan daftar kolom agar hanya menyertakan Place.Field.ID dan Place.Field.NAME. Itu berarti objek Place dalam respons yang mewakili setiap kecocokan hanya berisi dua {i>field<i} tersebut.

  • Gunakan SearchByTextRequest.Builder untuk membuat SearchByTextRequest yang mendefinisikan pencarian.

    • Tetapkan string kueri teks ke "Makanan Vegetarian Pedas".

    • Tetapkan jumlah maksimum tempat hasil ke 10. Default dan maksimumnya adalah 20.

    • Batasi area pencarian ke persegi panjang yang ditentukan oleh garis lintang dan koordinat bujur. Tidak ada kecocokan di luar area ini yang ditampilkan.

  • Tambahkan OnSuccessListener dan dapatkan tempat yang cocok dari SearchByTextResponse .

Respons Text Search

Tujuan SearchByTextResponse mewakili respons dari permintaan penelusuran. SearchByTextResponse objek berisi:

  • Daftar objek Place yang mewakili semua tempat yang cocok, dengan satu Place objek per tempat yang cocok.

  • Setiap objek Place hanya berisi kolom yang ditentukan oleh daftar kolom yang diteruskan dalam permintaan.

Misalnya, dalam permintaan, Anda menentukan daftar kolom sebagai:

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

Daftar kolom ini berarti bahwa setiap objek Place dalam respons hanya berisi ID tempat dan nama setiap tempat yang cocok. Anda kemudian dapat menggunakan Place.getId() dan Place.getName() untuk mengakses kolom ini di setiap objek Place.

Untuk contoh lain tentang cara mengakses data dalam objek Place, lihat Mengakses Tempat kolom data objek

Parameter wajib

Parameter yang diperlukan untuk SearchByTextRequest adalah:

  • Daftar kolom

    Menentukan kolom data tempat yang akan ditampilkan. Teruskan daftar Place.Field nilai yang menentukan {i>field<i} data yang akan ditampilkan. Tidak ada daftar {i>default<i} dari kolom yang ditampilkan dalam respons.

    Daftar kolom adalah praktik desain yang baik untuk memastikan bahwa Anda tidak meminta data yang tidak perlu, yang membantu menghindari waktu pemrosesan yang tidak perlu dan biaya penagihan.

    Tentukan satu atau beberapa kolom berikut:

    • Kolom berikut memicu SKU Text Search (Khusus ID):

      Place.Field.ID, Place.Field.NAME
    • Kolom berikut memicu SKU Text Search (Basic):

      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
    • Kolom berikut memicu SKU Text Search (Advanced):

      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
    • Kolom berikut memicu SKU Text Search (Preferred):

      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

    Untuk menetapkan parameter daftar kolom, panggil metode setPlaceFields() saat membuat objek SearchByTextRequest.

  • Kueri teks

    String teks yang digunakan untuk menelusuri, misalnya: "restaurant", "123 Main Street", atau "tempat terbaik untuk dikunjungi di San Francisco". API mengembalikan kandidat berdasarkan {i>string <i}ini dan mengurutkan hasilnya relevansi yang dirasakan.

    Untuk menetapkan parameter kueri teks, panggil metode setTextQuery() saat membuat objek SearchByTextRequest.

Parameter opsional

Gunakan SearchByTextRequest guna menetapkan parameter opsional untuk permintaan Anda.

  • Jenis yang disertakan

    Membatasi hasil pada tempat yang cocok dengan tipe yang ditentukan oleh Tabel A. Hanya satu jenis yang dapat ditentukan. Contoh:

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

    Untuk menetapkan parameter jenis yang disertakan, panggil metode setIncludedType() saat membuat objek SearchByTextRequest.

  • Bias lokasi

    Menentukan area yang akan ditelusuri. Lokasi ini berfungsi sebagai bias yang berarti hasil di sekitar lokasi yang ditentukan dapat ditampilkan, termasuk hasil di luar area yang ditentukan.

    Anda dapat menentukan pembatasan lokasi atau bias lokasi, tetapi tidak keduanya. Bayangkan pembatasan lokasi sebagai menentukan di mana hasilnya harus berada dalam, dan bias lokasi sebagai yang menetapkan wilayah di mana hasilnya harus dekat tetapi bisa berada di luar area tersebut.

    Tentukan wilayah sebagai Area Pandang persegi panjang atau dalam bentuk lingkaran.

    • Lingkaran ditentukan dengan titik pusat dan jari-jari dalam meter. Radius harus antara 0,0 dan 50000,0, inklusif. Contoh:

      // 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();
      
    • Persegi panjang adalah area pandang garis lintang dan garis bujur, yang direpresentasikan sebagai dua berlawanan dengan titik tinggi dan rendah secara diagonal. Titik rendah menandai barat daya sudut persegi panjang tersebut, dan titik tertinggi melambangkan arah timur laut sudut persegi panjang.

      Sebuah area pandang dianggap sebagai wilayah tertutup, yang berarti wilayah itu mencakup perbatasannya. Batas lintang harus berkisar antara -90 hingga 90 derajat inklusif, dan batas bujur harus berkisar antara -180 hingga 180 derajat, termasuk:

      • Jika low = high, area pandang terdiri dari titik tunggal tersebut.
      • Jika low.longitude > high.longitude, rentang bujur dibalik (area pandang melintasi 180 derajat garis bujur).
      • Jika low.longitude = -180 derajat dan high.longitude = 180 derajat, area pandang mencakup semua bujur.
      • Jika low.longitude = 180 derajat dan high.longitude = -180 derajat, rentang bujur adalah kosong.
      • Jika low.latitude > high.latitude, rentang garis lintang kosong.

      Tinggi dan rendah harus diisi, dan kotak yang ditampilkan tidak boleh kosong. Area pandang kosong akan menyebabkan error.

      Misalnya, dari area pandang persegi panjang, lihat Permintaan Penelusuran Teks.

      Untuk menetapkan parameter bias lokasi, panggil metode setLocationBias() saat membuat objek SearchByTextRequest.

  • Pembatasan lokasi

    Menentukan area yang akan ditelusuri. Hasil di luar area yang ditentukan tidak dikembalikan. Tentukan wilayah sebagai Area Pandang persegi panjang. Lihat deskripsi Bias lokasi untuk mendapatkan informasi tentang cara menentukan Area Pandang.

    Anda dapat menentukan pembatasan lokasi atau bias lokasi, tetapi tidak keduanya. Bayangkan pembatasan lokasi sebagai menentukan di mana hasilnya harus berada dalam, dan bias lokasi sebagai yang menetapkan region di mana hasilnya harus dekat tetapi bisa berada di luar area tersebut.

    Untuk menetapkan parameter pembatasan lokasi, panggil metode setLocationRestriction() saat membuat objek SearchByTextRequest.

  • Jumlah hasil maksimum

    Menentukan jumlah maksimum hasil tempat yang akan ditampilkan. Harus antara 1 dan 20 (default) inklusif.

    Untuk menetapkan parameter jumlah hasil maksimum, panggil metode setMaxResultCount() saat membuat objek SearchByTextRequest.

  • Nilai minimum

    Membatasi hasil hanya untuk hasil yang nilai pengguna rata-ratanya lebih besar dari atau sama dengan batas ini. Nilai harus antara 0,0 dan 5,0 (inklusif) di kenaikan sebesar 0,5. Misalnya: 0, 0.5, 1.0, ... , 5.0 inklusif. Nilai adalah dibulatkan ke angka 0,5 terdekat. Misalnya, nilai 0,6 menghilangkan semua hasil dengan peringkat kurang dari 1,0.

    Untuk menetapkan parameter rating minimum, panggil metode setMinRating() saat membuat objek SearchByTextRequest.

  • Buka sekarang

    Jika true, hanya tampilkan tempat yang buka pada saat kueri dikirim. Jika false, tampilkan semua bisnis terlepas dari statusnya yang sudah terbuka. Tempat yang tidak menetapkan jam buka dalam database Google Places ditampilkan jika Anda menetapkan parameter ini ke false.

    Untuk menetapkan parameter buka sekarang, panggil metode setOpenNow() saat membuat objek SearchByTextRequest.

  • Tingkat harga

    Secara default, hasil mencakup tempat yang menyediakan layanan di semua tingkat harga. Untuk membatasi hasil dengan hanya menyertakan tempat pada tingkat harga tertentu, Anda dapat meneruskan daftar nilai bilangan bulat yang sesuai dengan tingkat harga untuk tempat yang ingin Anda tampilkan:

    • 1 - Tempat menyediakan layanan yang murah.
    • 2 - Tempat menyediakan layanan dengan harga terjangkau.
    • 3 - Tempat menyediakan layanan mahal.
    • 4 - Tempat menyediakan layanan yang sangat mahal.

    Untuk menetapkan parameter tingkat harga, panggil metode setPriceLevels() saat membuat objek SearchByTextRequest.

  • Preferensi peringkat

    Menentukan bagaimana hasil diberi peringkat dalam respons berdasarkan jenis kueri:

    • Untuk kueri kategori seperti "Restoran di New York City", SearchByTextRequest.RankPreference.RELEVANCE (beri peringkat hasil menurut relevansi penelusuran) adalah default. Anda dapat menyetel preferensi peringkat ke SearchByTextRequest.RankPreference.RELEVANCE atau SearchByTextRequest.RankPreference.DISTANCE (peringkatkan hasil menurut jarak).
    • Untuk kueri non-kategori seperti "Mountain View, CA", sebaiknya jika Anda tidak menyetel parameter preferensi peringkat.

    Untuk menetapkan parameter preferensi peringkat, panggil metode setRankPreference() saat membuat objek SearchByTextRequest.

  • Kode wilayah

    Kode wilayah yang digunakan untuk memformat respons, yang ditetapkan sebagai kode CLDR dua karakter. Parameter ini juga dapat memiliki efek bias pada hasil penelusuran. Tidak ada nilai default.

    Jika nama negara dari kolom alamat dalam respons sesuai dengan kode wilayah, kode negara dihilangkan dari alamat.

    Sebagian besar kode CLDR identik dengan kode ISO 3166-1, dengan beberapa pengecualian. Misalnya, ccTLD Inggris Raya adalah "uk" (.co.uk) sedangkan kode ISO 3166-1-nya adalah "gb" (secara teknis untuk entitas "Inggris Raya dan Irlandia Utara"). Parameter ini dapat memengaruhi hasil berdasarkan hukum yang berlaku.

    Untuk menetapkan parameter kode wilayah, panggil metode setRegionCode() saat membuat objek SearchByTextRequest.

  • Pemfilteran jenis ketat

    Digunakan dengan parameter jenis include. Jika ditetapkan ke true, hanya tempat yang cocok dengan jenis yang ditentukan oleh include ditampilkan. Jika false, secara default, respons dapat berisi tempat yang tidak cocok dengan jenis yang ditentukan.

    Untuk menetapkan parameter pemfilteran jenis yang ketat, panggil metode setStrictTypeFiltering() saat membuat objek SearchByTextRequest.