Metin Arama (Yeni)

Metin Arama (Yeni), bir dizeye göre bir dizi yer hakkındaki bilgileri döndürür; örneğin, "İstanbul'da pizza", "İstanbul'daki ayakkabı mağazaları" veya "Ana Cadde No: 123.". Hizmet, metin dizesiyle eşleşen yerlerin ve ayarlanan bir konum önyargısının bir listesiyle yanıt verir.

Hizmet, özellikle otomatik bir sistemde belirsiz adres sorguları oluşturmak için yararlıdır ve dizenin adres olmayan bileşenleri, işletmelerle ve adreslerle eşleşebilir. Belirsiz adres sorgularına örnek olarak kötü biçimlendirilmiş adresler veya işletme adları gibi adres olmayan bileşenleri içeren istekler verilebilir. Bölge, konum kısıtlaması veya konum ön yargısı gibi bir konum ayarlanmadıkça ilk iki örnek gibi istekler hiç sonuç döndürmeyebilir.

Metin Arama (Yeni), Yakındaki Arama (Yeni) işlevine benzerdir. İkisi arasındaki temel fark, Metin Arama (Yeni) işlevinin rastgele bir arama dizesi belirtmenize izin verirken, Yakındaki Arama (Yeni) arama yapılacak belirli bir alan gerektirmesidir.

"Taksim Mahallesi, Hasbahçe Sokak, Üsküdar, 34110" İngiltere'de birden fazla "High Street", ABD'de birden fazla "Ana Cadde". Sorgu, konum kısıtlaması ayarlanmadıkça istenen sonuçları döndürmüyor.
"ZincirRestoran İstanbul" New York'ta birden fazla "ChainRestaurant" konumu; açık adres, hatta sokak adı yok.
"10. Cadde, Escher UK" veya "123 Main Street, Pleasanton ABD" İngiltere'nin Escher şehrinde yalnızca bir "High Street"; ABD'nin Pleasanton CA şehrinde yalnızca bir "Ana Cadde".
"BenzersizRestoranAdi İstanbul" New York'ta bu ada sahip yalnızca bir işletme; ayırt etmek için açık adres gerekmez.
"İstanbul'daki pizza restoranları" Bu sorgu, konum kısıtlamasını içeriyor ve "pizza restoranları" iyi tanımlanmış bir yer türüdür. Birden çok sonuç döndürür.
"+1 514-670-8700"

Bu sorgu bir telefon numarası içeriyor. Bu telefon numarasıyla ilişkilendirilmiş yerler için birden fazla sonuç döndürür.

Metin Arama istekleri

Metin Arama isteği şu biçimdedir:

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

Bu örnekte:

  • Alan listesini yalnızca Place.Field.ID ve Place.Field.NAME değerlerini içerecek şekilde ayarlayın. Bu, yanıttaki her bir eşleşen yeri temsil eden Place nesnelerinin yalnızca bu iki alanı içerdiği anlamına gelir.

  • Aramayı tanımlayan bir SearchByTextRequest nesnesi oluşturmak için SearchByTextRequest.Builder aracını kullanın.

    • Metin sorgusu dizesini "Acılı Vejetaryen Yemekleri" olarak ayarlayın.

    • Maksimum sonuç basamak sayısını 10 olarak ayarlayın. Varsayılan ve maksimum değer 20'dir.

    • Arama alanını, enlem ve boylam koordinatlarıyla tanımlanan dikdörtgenle sınırlandırın. Bu alanın dışında eşleşme döndürülmez.

  • Bir OnSuccessListener ekleyin ve SearchByTextResponse nesnesinden eşleşen yerleri alın.

Metin Arama yanıtları

SearchByTextResponse sınıfı, arama isteğinden gelen yanıtı temsil eder. Bir SearchByTextResponse nesnesi şunları içerir:

  • Eşleşen yer başına bir Place nesne olacak şekilde, eşleşen tüm yerleri temsil eden Place nesnelerinin listesi.

  • Her Place nesnesi yalnızca istekte geçirilen alan listesi tarafından tanımlanan alanları içerir.

Örneğin, istekte bir alan listesini şu şekilde tanımladınız:

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

Bu alan listesi, yanıttaki her Place nesnesinin yalnızca eşleşen her yerin yer kimliğini ve adını içerdiği anlamına gelir. Daha sonra, her bir Place nesnesinde bu alanlara erişmek için Place.getId() ve Place.getName() yöntemlerini kullanabilirsiniz.

Bir Place nesnesindeki verilere erişmeyle ilgili daha fazla örnek için Yer nesne veri alanlarına erişme konusuna bakın.

Gerekli parametreler

SearchByTextRequest için gerekli parametreler:

  • Alan listesi

    Döndürülecek yer verisi alanlarını belirtin. Döndürülecek veri alanlarını belirten bir Place.Field değerleri listesi iletin. Yanıtta döndürülen alanların varsayılan bir listesi yoktur.

    Alan listeleri, gereksiz veri isteğinde bulunmamanız için iyi bir tasarım uygulamasıdır. Böylece gereksiz işleme süresi ve faturalandırma ücretlerinin önüne geçilir.

    Aşağıdaki alanlardan birini veya daha fazlasını belirtin:

    • Aşağıdaki alanlar Metin Arama (Yalnızca Kimlik) SKU'sunu tetikler:

      Place.Field.ID, Place.Field.NAME
    • Aşağıdaki alanlar Metin Arama (Temel) SKU'sunu tetikler:

      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
    • Aşağıdaki alanlar Metin Arama (Gelişmiş) SKU'sunu tetikler:

      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
    • Aşağıdaki alanlar Metin Arama (Tercih Edilen) SKU'sunu tetikler:

      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

    Alan listesi parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setPlaceFields() yöntemini çağırın.

  • Metin sorgusu

    Aranacak metin dizesi. Örneğin: "restoran", "Ana Cadde No: 123" veya "İstanbul'da ziyaret edilecek en iyi yer". API, bu dizeye göre aday eşleşmeleri döndürür ve sonuçları algılanan alaka düzeylerine göre sıralar.

    Metin sorgusu parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setTextQuery() yöntemini çağırın.

İsteğe bağlı parametreler

İsteğiniz için isteğe bağlı parametreleri belirtmek üzere SearchByTextRequest nesnesini kullanın.

  • Dahil edilen tür

    Sonuçları, Tablo A tarafından tanımlanan belirtilen türle eşleşen yerlerle kısıtlar. Yalnızca bir tür belirtilebilir. Örneğin:

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

    Dahil edilen tür parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setIncludedType() yöntemini çağırın.

  • Konum ön yargısı

    Aranacak alanı belirtir. Bu konum bir ön yargı görevi görür. Yani belirtilen alanın dışındaki sonuçlar da dahil olmak üzere, belirtilen konumun çevresindeki sonuçların döndürülebileceği anlamına gelir.

    Konum kısıtlaması veya konum ağırlıklandırmasını belirtebilirsiniz, ancak ikisini birden belirtemezsiniz. Konum kısıtlamasını, sonuçların içinde olması gereken bölgeyi, konum ön yargısını ise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtmek olarak düşünebilirsiniz.

    Bölgeyi dikdörtgen Görünüm veya daire olarak belirtin.

    • Bir daire, merkez noktası ve yarıçapıyla metre cinsinden tanımlanır. Yarıçap 0,0 ile 50000,0 (her iki değer dahil) arasında olmalıdır. Örneğin:

      // 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();
      
    • Dikdörtgen, düşük ve yüksek noktaların çapraz olarak karşısında iki nokta olarak gösterilen enlem-boylam görüntü alanıdır. Alçak nokta, dikdörtgenin güneybatı köşesini, yüksek nokta ise dikdörtgenin kuzeydoğu köşesini temsil eder.

      Görüntü alanı, kapalı bir bölge olarak kabul edilir, yani sınırlarını içerir. Enlem sınırları -90 ile 90 derece dahil, boylam sınırları ise -180 ile 180 derece (bu değerler dahil) arasında olmalıdır:

      • low = high ise görüntü alanı o tek noktadan oluşur.
      • low.longitude > high.longitude ise boylam aralığı ters çevrilir (görüntü alanı, 180 derecelik boylam çizgisini geçer).
      • low.longitude = -180 derece ve high.longitude = 180 dereceyse görüntü alanı tüm boylamları içerir.
      • low.longitude = 180 derece ve high.longitude = -180 derece ise boylam aralığı boş olur.
      • low.latitude > high.latitude ise enlem aralığı boştur.

      Hem düşük hem de yüksek doldurulmalıdır ve temsil edilen kutu boş olamaz. Boş görüntü alanı hataya neden olur.

      Örneğin, dikdörtgen bir görüntü alanı için Metin Arama istekleri'ne bakın.

      Konuma dayalı ağırlık parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setLocationBias() yöntemini çağırın.

  • Konum kısıtlaması

    Aranacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez. Bölgeyi dikdörtgen Görünüm olarak belirtin. Görüntü Alanını tanımlamayla ilgili bilgi için Konum ağırlıklandırması açıklamasına bakın.

    Konum kısıtlaması veya konum ağırlıklandırmasını belirtebilirsiniz, ancak ikisini birden belirtemezsiniz. Konum kısıtlamasını, sonuçların içinde olması gereken bölgeyi, konum ön yargısını ise sonuçların yakınında olması gereken ancak alanın dışında olabilecek bölgeyi belirtmek olarak düşünebilirsiniz.

    Konum kısıtlaması parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setLocationRestriction() yöntemini çağırın.

  • Maksimum sonuç sayısı

    Döndürülecek maksimum yer sonucu sayısını belirtir. 1 ile 20 (varsayılan) arasında olmalıdır.

    Maksimum sonuç sayısı parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setMaxResultCount() yöntemini çağırın.

  • Minimum kullanıcı oyu

    Sonuçları yalnızca ortalama kullanıcı puanı bu sınırdan yüksek veya bu sınıra eşit olanlarla kısıtlar. Değerler, 0,5'lik artışlarla 0,0 ile 5,0 (dahil) arasında olmalıdır. Örneğin: 0, 0,5, 1,0, ... , 5,0 dahil. Değerler en yakın 0,5'e yuvarlanır. Örneğin, 0,6 değeri 1,0'dan küçük bir puana sahip tüm sonuçları eler.

    Minimum derecelendirme parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setMinRating() yöntemini çağırın.

  • Şu anda açık

    true ise yalnızca sorgu gönderildiği sırada açık olan yerleri döndürür. false ise açık durumundan bağımsız olarak tüm işletmeleri iade edin. Bu parametreyi false olarak ayarlarsanız Google Rehber veritabanında çalışma saatleri belirtilmeyen yerler döndürülür.

    "Şimdi aç" parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setOpenNow() yöntemini çağırın.

  • Fiyat seviyeleri

    Varsayılan olarak, sonuçlar tüm fiyat düzeylerinde hizmet sunan yerleri içerir. Sonuçları yalnızca belirli fiyat seviyelerindeki yerleri içerecek şekilde kısıtlamak için döndürmek istediğiniz yerlerin fiyat düzeylerine karşılık gelen bir tam sayı değerleri listesi geçirebilirsiniz:

    • 1 - Bu mekan pahalı olmayan hizmetler sunuyor.
    • 2: Mekan, makul fiyatlı hizmetler sunuyor.
    • 3 - Bu mekan pahalı hizmetler sunuyor.
    • 4 - Bu mekan çok pahalı hizmetler sunuyor.

    Fiyat düzeyleri parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setPriceLevels() yöntemini çağırın.

  • Sıralama tercihi

    Sonuçların sorgu türüne göre yanıtta nasıl sıralandığını belirtir:

    • "İstanbul'daki restoranlar" gibi kategorik bir sorgu için SearchByTextRequest.RankPreference.RELEVANCE (sonuçları arama alaka düzeyine göre sıralar) varsayılan değerdir. Sıralama tercihini SearchByTextRequest.RankPreference.RELEVANCE veya SearchByTextRequest.RankPreference.DISTANCE (sonuçları mesafeye göre sırala) olarak ayarlayabilirsiniz.
    • "Mountain View, CA" gibi kategorik olmayan bir sorgu için sıralama tercihi parametresini ayarlamadan bırakmanızı öneririz.

    Sıralama tercihi parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setRankPreference() yöntemini çağırın.

  • Bölge kodu

    Yanıtı biçimlendirmek için kullanılan, iki karakterli CLDR kodu değeri olarak belirtilen bölge kodu. Bu parametrenin arama sonuçları üzerinde de önyargı etkisi olabilir. Varsayılan değer yoktur.

    Yanıttaki adres alanının ülke adı bölge koduyla eşleşirse ülke kodu adresten çıkarılır.

    Bazı önemli istisnalar dışında CLDR kodlarının çoğu ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk), ISO 3166-1 kodu ise "gb"'dir (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallık'ı" için kullanılır). Parametre, geçerli yasalara göre sonuçları etkileyebilir.

    Bölge kodu parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setRegionCode() yöntemini çağırın.

  • Katı kurallı filtre türü

    İçerme türü parametresiyle kullanılır. true olarak ayarlandığında, yalnızca dahil etme türü tarafından belirtilen belirtilen türlerle eşleşen yerler döndürülür. Varsayılan olarak false olduğunda yanıt, belirtilen türlerle eşleşmeyen yerler içerebilir.

    Katı kurallı tür filtreleme parametresini ayarlamak için SearchByTextRequest nesnesini oluştururken setStrictTypeFiltering() yöntemini çağırın.