Text Search

Text Search menampilkan informasi tentang serangkaian tempat berdasarkan suatu string — misalnya "pizza di Bandung" atau "toko sepatu di dekat Solo" atau "Jl. Rajawali 3". Layanan ini merespons dengan daftar tempat yang cocok dengan string teks dan bias lokasi yang telah ditetapkan.

Layanan ini sangat berguna untuk membuat kueri alamat ambigu dalam sistem otomatis, dan komponen non-alamat pada string mungkin cocok dengan bisnis serta alamat. Contoh kueri alamat ambigu adalah alamat yang diformat dengan buruk atau permintaan yang menyertakan komponen non-alamat seperti nama bisnis. Permintaan seperti dua contoh pertama mungkin menampilkan hasil nol kecuali jika lokasi — seperti wilayah, pembatasan lokasi, atau bias lokasi — ditetapkan.

"10 High Street, UK" atau "123 Main Street, US" Beberapa "High Street" di Inggris; beberapa "Main Street" di AS. Kueri tidak menampilkan hasil yang diinginkan kecuali jika pembatasan lokasi ditetapkan.
"ChainRestaurant New York" Beberapa lokasi "ChainRestaurant" di New York; tanpa alamat atau bahkan nama jalan.
"10 High Street, Escher UK" atau "123 Main Street, Pleasanton US" Hanya satu "High Street" di kota Escher, Inggris Raya; hanya satu "Main Street" di kota Pleasanton CA, AS.
"Nama Restoran Unik Jakarta" Hanya satu perusahaan dengan nama ini di New York; tidak ada alamat yang perlu digunakan untuk membedakannya.
"restoran pizza di Jakarta" Kueri ini berisi pembatasan lokasinya, dan "restoran pizza" adalah jenis tempat yang ditentukan dengan baik. Metode ini menampilkan beberapa hasil.
"+1 514-670-8700"

Kueri ini berisi nomor telepon. Metode ini akan menampilkan beberapa 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:

  • Tetapkan daftar kolom agar hanya menyertakan Place.Field.ID dan Place.Field.NAME. Artinya, objek Place dalam respons yang mewakili setiap tempat yang cocok hanya berisi dua kolom tersebut.

  • Gunakan SearchByTextRequest.Builder untuk membuat objek SearchByTextRequest yang menentukan penelusuran.

    • Setel string kueri teks ke "Spicy Vegetarian Food".

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

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

  • Tambahkan OnSuccessListener dan dapatkan tempat yang cocok dari objek SearchByTextResponse.

Respons Text Search

Class SearchByTextResponse mewakili respons dari permintaan penelusuran. Objek SearchByTextResponse berisi:

  • Daftar objek Place yang mewakili semua tempat yang cocok, dengan satu objek Place 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 metode Place.getId() dan Place.getName() untuk mengakses kolom ini di setiap objek Place.

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

Parameter wajib

  • Daftar kolom

    Menentukan kolom data tempat yang akan ditampilkan. Teruskan daftar nilai Place.Field yang menentukan kolom data yang akan ditampilkan. Tidak ada daftar default untuk kolom yang ditampilkan dalam respons.

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

    Tentukan satu atau beberapa kolom berikut:

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

      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
  • Kueri teks

    String teks yang digunakan untuk menelusuri, misalnya: "restaurant", "123 Main Street", atau "terbaik untuk dikunjungi di Surabaya". API menampilkan kandidat kecocokan berdasarkan string ini dan mengurutkan hasil berdasarkan relevansi yang dirasakan.

Parameter opsional

Setel parameter ini menggunakan metode SearchByTextRequest.Builder. Misalnya, untuk menetapkan jumlah hasil maksimum, panggil SearchByTextRequest.Builder.setMaxResultCount().

  • Jenis yang disertakan

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

    • setIncludedType("bar")
    • setIncludedType("pharmacy")
  • 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 seperti menentukan wilayah tempat hasil harus berada, dan bias lokasi menentukan wilayah tempat hasil harus dekat tetapi bisa juga di luar area tersebut.

    Tentukan wilayah sebagai Area Pandang persegi panjang atau lingkaran.

    • Lingkaran ditentukan oleh titik tengah dan radius dalam meter. Radius harus antara 0,0 dan 50000,0, inklusif. Radius default adalah 0.0. 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 garis bujur, yang direpresentasikan sebagai dua secara diagonal berlawanan titik rendah dan tinggi. Titik rendah menandai sudut barat daya persegi panjang, dan titik tinggi merepresentasikan sudut timur laut persegi panjang.

      Area pandang dianggap sebagai area tertutup, yang berarti area pandang tersebut menyertakan batasnya. Batas garis lintang harus berkisar antara -90 hingga 90 derajat inklusif, dan batas bujur harus memiliki rentang antara -180 hingga 180 derajat:

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

      Baik rendah maupun tinggi harus diisi, dan kotak yang direpresentasikan tidak boleh kosong. Area pandang kosong akan menghasilkan error.

      Misalnya, area pandang persegi panjang, lihat permintaan Text Search.

  • Pembatasan lokasi

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

    Anda dapat menentukan pembatasan lokasi atau bias lokasi, tetapi tidak keduanya. Bayangkan pembatasan lokasi seperti menentukan wilayah tempat hasil harus berada, dan bias lokasi berarti menentukan wilayah tempat hasil harus dekat tetapi bisa juga di luar area tersebut.

  • Jumlah hasil maksimum

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

  • Nilai minimum

    Membatasi hasil hanya untuk hasil yang rating penggunanya rata-rata lebih besar dari atau sama dengan batas ini. Nilai harus antara 0,0 dan 5,0 (inklusif) dengan kelipatan 0,5. Misalnya: 0, 0.5, 1.0, ... , 5.0 inklusif. Nilai dibulatkan ke atas ke 0,5 terdekat. Misalnya, nilai 0,6 akan menghapus semua hasil dengan rating kurang dari 1,0.

  • Buka sekarang

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

  • Tingkat harga

    Membatasi penelusuran ke tempat yang ditandai di tingkat harga tertentu. Setelan default-nya adalah memilih semua tingkat harga.

    Tentukan daftar satu atau beberapa nilai bilangan bulat berikut:

    • 1 - PRICE_LEVEL_INEXPENSIVE
    • 2 - PRICE_LEVEL_MODERATE
    • 3 - PRICE_LEVEL_EXPENSIVE
    • 4 - PRICE_LEVEL_VERY_EXPENSIVE
  • Preferensi peringkat

    Menentukan bagaimana hasil diurutkan dalam respons. API ini akan menggunakan RELEVANCE secara default jika berlaku. Misalnya, untuk kueri seperti "Restoran di Bandung", maka RELEVANCE adalah default-nya. Untuk kueri geografis, seperti " Mountain View, CA", atau jenis kueri lainnya, tidak ada default yang diterapkan dan hasilnya akan muncul sesuai urutan yang ditampilkan oleh backend.

    Nilai mencakup:

    • SearchByTextRequest.RankPreference.DISTANCE: Menentukan peringkat hasil menurut jarak.
    • SearchByTextRequest.RankPreference.RELEVANCE: Memberi peringkat hasil menurut relevansi.
  • Kode wilayah

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

    Jika nama negara untuk kolom alamat dalam respons cocok dengan kode wilayah, kode negara akan 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.

  • Pemfilteran jenis ketat

    Digunakan dengan parameter jenis penyertaan. Jika ditetapkan ke true, hanya tempat yang cocok dengan jenis yang ditentukan yang ditentukan oleh jenis penyertaan yang akan ditampilkan. Jika false, respons defaultnya dapat berisi tempat yang tidak cocok dengan jenis yang ditentukan.