Metin Arama

Metin Arama, bir dizeye göre bir dizi yer hakkında bilgi döndürür. Örneğin, "İstanbul'da pizza", "Taksim yakınındaki 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şenler 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 sıfır sonuç döndürebilir.

"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.

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

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
  • 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.

İsteğe bağlı parametreler

Bu parametreleri SearchByTextRequest.Builder yöntemlerini kullanarak ayarlayın. Örneğin, maksimum sonuç sayısını ayarlamak için SearchByTextRequest.Builder.setMaxResultCount() yöntemini çağırı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")
  • 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. Varsayılan yarıçap 0,0'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.

  • 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.

  • 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.

  • 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.

  • Ş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.

  • Fiyat seviyeleri

    Aramayı belirli fiyat düzeylerinde işaretlenen yerlerle sınırlandırın. Varsayılan olarak tüm fiyat seviyeleri seçilir.

    Aşağıdaki tam sayı değerlerinden bir veya daha fazlasını içeren bir liste belirtin:

    • 1 - PRICE_LEVEL_INEXPENSIVE
    • 2: PRICE_LEVEL_MODERATE
    • 3: PRICE_LEVEL_EXPENSIVE
    • 4: PRICE_LEVEL_VERY_EXPENSIVE
  • Sıralama tercihi

    Sonuçların yanıtta nasıl sıralandığını belirtir. API, geçerli olduğunda varsayılan olarak RELEVANCE kullanır. Örneğin, "İstanbul'daki restoranlar" gibi bir sorgu için RELEVANCE varsayılan değerdir. "Mountain View, CA" gibi coğrafi sorgular veya diğer sorgu türleri için hiçbir varsayılan ayar uygulanmaz ve sonuçlar arka uç tarafından döndürüldükleri sırayla gösterilir.

    Olası değerlere örnekler:

    • SearchByTextRequest.RankPreference.DISTANCE: Sonuçları mesafeye göre sıralayın.
    • SearchByTextRequest.RankPreference.RELEVANCE: Sonuçları alaka düzeyine göre sıralayı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.

  • 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.