Metin Arama (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Metin Arama (Yeni), bir dizeye dayalı olarak bir dizi yerle ilgili bilgileri döndürür. Örneğin, "İstanbul'da pizza" veya "İstanbul yakınlarındaki ayakkabı mağazaları" ya da "Ana Cadde No: 123". Hizmet, metin dizesiyle eşleşen yerlerin bir listesiyle ve ayarlanan konum ön yargılarıyla yanıt verir.

Hizmet özellikle otomatik bir sistemde belirsiz adres sorguları yapmak için yararlıdır ve dizenin adres olmayan bileşenleri, işletmelerin yanı sıra adreslerin de eşleşmesini sağlayabilir. Belirsiz adres sorgularına örnek olarak, kötü biçimlendirilmiş adresler veya işletme adları gibi adres olmayan bileşenler içeren istekler verilebilir. İlk iki örnekteki gibi istekler, bir konum (bölge, konum kısıtlaması veya konum sapması gibi) ayarlanmadıkça sıfır sonuç döndürebilir.

Metin Arama (Yeni), Yakındaki Arama (Yeni)'ye benzer. Bu ikisi arasındaki temel fark, Metin Arama (Yeni) işlevinin rastgele bir arama dizesi belirtmenize izin verirken Yakındaki Arama (Yeni) özelliğinin arama için belirli bir alan gerektirmesidir.

"10 High Street, UK" veya "123 Main Street, ABD" Birleşik Krallık'ta birden fazla "Ana Cadde", ABD'de birden fazla "Ana Cadde". Bir konum kısıtlaması ayarlanmadığı sürece sorgu, istenen sonuçları döndürmez.
"Restoran Zincir Restoran İstanbul" New York'ta birden fazla "ChainRestaurant" konumu; açık adres, hatta sokak adı yok.
"10 High Street, Escher UK" veya "123 Main Street, Pleasanton Türkiye" Birleşik Krallık'ın Escher şehrinde sadece bir "High Street"; ABD'nin Pleasanton CA şehrinde sadece bir "Main Street"tir.
"Benzersiz RestoranAdı İstanbul" New York'ta bu ada sahip yalnızca bir işletme var; ayırt etmek için açık adres gerekmez.
"İstanbul'daki pizza restoranları" Bu sorgu, konum kısıtlaması içeriyor ve "pizza restoranları" iyi tanımlanmış bir yer türü. Birden fazla 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çimde olur:

// 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 içerecek şekilde ayarlayın. Bu, her eşleşen yeri temsil eden yanıttaki 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 işlevini kullanın.

    • Metin sorgu dizesini "Acı Vejetaryen Yemek" olarak ayarlayın.

    • Maksimum sonuç sayısı 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ışındaki eşleşmeler döndürülmez.

  • OnSuccessListener ekleyip SearchByTextResponse nesnesinden eşleşen yerleri alın.

Metin Arama yanıtları

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

  • Eşleşen yer başına bir Place nesne olmak üzere, eşleşen tüm yerleri temsil eden Place nesnelerin listesi.

  • Her Place nesnesi yalnızca istekte iletilen alan listesiyle 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şme hakkında daha fazla örnek için Yer nesnesi veri alanlarına bakın

Gerekli parametreler

SearchByTextRequest için gerekli parametreler şunlardır:

  • Alan listesi

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

    Alan listeleri, gereksiz veri isteğinde bulunmadığınızdan emin olmak için iyi bir tasarım uygulamasıdır. Bu da gereksiz işlem süresi ve faturalandırma ücretlerinin önlenmesine yardımcı olur.

    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 dayalı aday eşleşmeleri döndürür ve sonuçları algılanan alaka düzeyine 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ğinizin isteğe bağlı parametrelerini belirtmek için 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 sapma görevi görür. Bu da belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumun etrafındaki sonuçların döndürülebileceği anlamına gelir.

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

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

    • Bir daire, merkez noktası ve metre cinsinden yarıçapla tanımlanır. Yarıçap, 0,0 ile 50.000,0 (her ikisi de 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, çapraz olarak zıt yönde iki düşük ve yüksek noktayla temsil edilen, 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ı bölge olarak kabul edilir. Yani kendi sınırlarını içerir. Enlem sınırları -90 ile 90 derece (dahil) arasında, boylam sınırları ise -180 ila 180 derece (her ikisi de dahil) arasında olmalıdır:

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

      Hem düşük hem de yüksek alanları doldurulmalıdır ve gösterilen kutu boş bırakılamaz. Boş görüntü alanı hatayla sonuçlanır.

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

      Konum yanlılığı 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 alanı olarak belirtin. Görünümü tanımlama hakkında bilgi edinmek için Konum yanlılığı açıklamasına bakın.

    Konum kısıtlaması veya konum yanlılığını belirtebilirsiniz ancak ikisini birden belirtemezsiniz. Konum kısıtlamasını, sonuçların içinde olması gereken bölgeyi belirtmek; konum ön yargısını ise sonuçların yakınında olması gereken ancak bölge 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-20 (varsayılan) dahil bu değerler 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 bu sayılar. Değerler, en yakın 0,5'e yuvarlanır. Örneğin, 0,6 değeri 1,0'dan düşük olan 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 sorgunun gönderildiği sırada açık olan yerleri döndürün. false ise açık durumundan bağımsız olarak tüm işletmeleri döndürün. Bu parametreyi false olarak ayarlarsanız Google Rehber veritabanında çalışma saatlerini belirtmeyen yerler döndürülür.

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

  • Fiyat seviyeleri

    Sonuçlar, varsayılan olarak 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 tam sayı değerlerinin bir listesini iletebilirsiniz:

    • 1 - Yer, pahalı olmayan hizmetler sunuyor.
    • 2 - Yer, orta fiyatlı hizmetler sunuyor.
    • 3 - Yer, pahalı hizmetler sunuyor.
    • 4 - Yer ç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, sorgunun türüne göre yanıtta nasıl sıralandığını belirtir:

    • "İstanbul'daki restoranlar" gibi bir kategorik sorgu için varsayılan değer SearchByTextRequest.RankPreference.RELEVANCE (sonuçları arama alaka düzeyine göre sırala)dır. 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ıra 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 bölge kodu. İki karakterli CLDR kodu değeri olarak belirtilir. Bu parametrenin arama sonuçları üzerinde yanlılık etkisi de olabilir. Varsayılan bir değer yok.

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

    CLDR kodların çoğu, bazı önemli istisnalar dışında ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk), ISO 3166-1 kodu "gb" (teknik olarak "Büyük Britanya ve Kuzey İrlanda'daki Birleşik Krallık'a" ait tüzel kişi için) "gb" şeklindedir. 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ı tür filtreleme

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

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