टेक्स्ट सर्च (नया)

टेक्स्ट खोज की मदद से, किसी स्ट्रिंग के आधार पर जगहों के सेट के बारे में जानकारी मिलती है. उदाहरण के लिए, "दिल्ली में पिज़्ज़ा", "ओटावा के आस-पास जूतों की दुकान" या "123 मेन स्ट्रीट". इस सेवा का इस्तेमाल उन जगहों की सूची के साथ किया जाता है जो टेक्स्ट स्ट्रिंग और सेट की गई जगह के लिए सेट किए गए पूर्वाग्रह से मेल खाती हैं.

यह सेवा खास तौर पर तब काम आती है, जब ऑटोमेटेड सिस्टम (कार्रवाइयों को अपने-आप पूरा करने वाला सिस्टम) में पते से जुड़ी क्वेरी साफ़ तौर पर दिखाई गई हों. स्ट्रिंग के बिना पते वाले कॉम्पोनेंट, कारोबारों और पतों से मेल खा सकते हैं. पते से जुड़ी क्वेरी के उदाहरणों में गड़बड़ी वाले पते या वे अनुरोध शामिल होते हैं जिनमें पते की जानकारी नहीं होती, जैसे कि कारोबार के नाम. ऐसा हो सकता है कि पहले दो उदाहरणों जैसे अनुरोधों का कोई नतीजा न दिखे. ऐसा तब तक हो सकता है, जब तक कोई जगह (जैसे, इलाका, जगह से जुड़ी पाबंदी या जगह के आधार पर भेदभाव) सेट नहीं की जाती.

"10 High Street, UK" या "123 Main Street, US" यूनाइटेड किंगडम में कई "हाई स्ट्रीट"; अमेरिका में कई "मुख्य सड़कें". जब तक जगह की जानकारी की पाबंदी सेट नहीं की जाती, तब तक क्वेरी से मनमुताबिक नतीजे नहीं मिलते.
"न्यूयॉर्क में चेन रेस्टोरेंट" न्यूयॉर्क में कई "चेन रेस्टोरेंट" जगहें; मोहल्ले का पता या मोहल्ले का नाम भी नहीं.
"10 High Street, Escher UK" या "123 Main Street, Pleasanton US" यूके के शहर एस्चर में सिर्फ़ एक "हाई स्ट्रीट"; अमेरिका के प्लेसेंटन सीए शहर की सिर्फ़ एक "मुख्य सड़क".
"यूनिक रेस्टोरेंट का नाम न्यूयॉर्क" न्यूयॉर्क में इस नाम का सिर्फ़ एक होटल. अलग-अलग जगहों के बीच अंतर करने के लिए, मोहल्ले का पता सेट करने की ज़रूरत नहीं है.
"दिल्ली में पिज़्ज़ा रेस्टोरेंट" इस क्वेरी में, जगह की जानकारी से जुड़ी पाबंदी शामिल है और "पिज़्ज़ा रेस्टोरेंट" एक अच्छी तरह से बताया गया जगह है. यह कई नतीजे दिखाता है.
"+1 514-670-8700"

इस क्वेरी में फ़ोन नंबर शामिल है. यह उस फ़ोन नंबर से जुड़ी जगहों के लिए एक से ज़्यादा नतीजे दिखाता है.

टेक्स्ट से खोज के हिसाब से जगहों की सूची पाएं

रिस्पॉन्स को हैंडल करने के लिए, टेक्स्ट खोज का अनुरोध करें. इसके लिए, GMSPlacesClient searchByTextWithRequest: को कॉल करें. इसके लिए, आपको अनुरोध के पैरामीटर और कॉलबैक का तरीका बताने वाला ऑब्जेक्ट पास करना होगा. इसके लिए, GMSPlaceSearchByTextResultCallback का इस्तेमाल किया जा सकता है.GMSPlaceSearchByTextRequest

GMSPlaceSearchByTextRequest ऑब्जेक्ट, अनुरोध के लिए सभी ज़रूरी और ज़रूरी नहीं पैरामीटर के बारे में बताता है. ज़रूरी पैरामीटर में ये शामिल हैं:

  • GMSPlace ऑब्जेक्ट में दिए जाने वाले फ़ील्ड की सूची. इसे फ़ील्ड मास्क भी कहा जाता है. इसे GMSPlaceProperty में तय किया गया है. अगर आपने फ़ील्ड की सूची में कम से कम एक फ़ील्ड नहीं चुना है या फ़ील्ड की सूची को मिटा दिया है, तो कॉल गड़बड़ी का मैसेज दिखाएगा.
  • टेक्स्ट क्वेरी.

टेक्स्ट खोजने के इस अनुरोध के उदाहरण से पता चलता है कि रिस्पॉन्स GMSPlace ऑब्जेक्ट में, खोज के नतीजों में हर GMSPlace ऑब्जेक्ट के लिए जगह का नाम और जगह का आईडी होता है. ऐसा करने से, रिस्पॉन्स में सिर्फ़ "रेस्टोरेंट" टाइप वाली जगहों को फ़िल्टर करने का विकल्प भी मिलता है.

Swift

// Create the GMSPlaceSearchByTextRequest object.
let placeProperties: [GMSPlaceProperty] = [GMSPlacePropertyName, GMSPlacePropertyPlaceID];
let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York" placeProperties:placeProperties)
request.isOpenNow = true
request.includedType = "restaurant"
request.maxResultCount = 5
request.minRating = 3.5
request.rankPreference = .distance
request.isStrictTypeFiltering = true
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
request.locationRestriction = GMSPlaceRectangularLocationOption(
      CLLocationCoordinate2D(latitude: 20, longitude: 30),
      CLLocationCoordinate2D(latitude: 40, longitude: 50)
)

// Array to hold the places in the response
placeResults = [];

let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in
  guard let self, error == nil else {
    if let error {
      print(error.localizedDescription)
    }
    return
  }
  guard let results = results as? [GMSPlace] else {
    return
  }
  self.placeResults = results
}

GMSPlacesClient.shared().searchByTextWithRequest(with: request, callback: callback)

Objective-C

// Create the GMSPlaceSearchByTextRequest object.
GMSPlaceSearchByTextRequest *request =
    [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]];
request.isOpenNow = YES;
request.includedType = @"restaurant";
request.maxResultCount = 5;
request.minRating = 3.5;
request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance;
request.isStrictTypeFiltering = YES;
request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ];
request.locationRestriction = GMSPlaceRectangularLocationOption(
    CLLocationCoordinate2DMake(20, 30), CLLocationCoordinate2DMake(40, 50));
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(20, 30), 2.0);

// Array to hold the places in the response
_placeResults = [NSArray array];

// Create the GMSPlaceSearchByTextRequest object.
[_placesClient searchByTextWithRequest:request
    callback:^(NSArray<GMSPlace *> _Nullable placeResults, NSError * _Nullable error) {
  if (placeResults.count > 0) {
      // Get list of places.
      _placeResults = placeResults;
  }
}];

GooglePlacesSwift

let restriction = RectangularLocationRestriction(
      northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30),
      southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50)
)
let searchByTextRequest = SearchByTextRequest(
        textQuery: "pizza in New York",
        placeProperties: [ .name, .placeID ],
        locationRestriction: restriction,
        includedType: .restaurant,
        maxResultCount: 5,
        minRating: 3.5,
        priceLevels: [ .moderate, .inexpensive ],
        isStrictTypeFiltering: true
)
switch await placesClient.searchByText(with: searchByTextRequest) {
case .success(let places):
  // Handle places
case .failure(let placesError):
  // Handle error
}

टेक्स्ट से जुड़े खोज के जवाब

Text Search API, GMSPlace ऑब्जेक्ट के तौर पर मैचों का कलेक्शन दिखाता है. इसमें, हर मिलती-जुलती जगह के लिए एक GMSPlace ऑब्जेक्ट होता है.

डेटा फ़ील्ड के साथ-साथ, रिस्पॉन्स के GMSPlace ऑब्जेक्ट में ये मेंबर फ़ंक्शन भी शामिल होते हैं:

  • isOpen यह हिसाब लगाता है कि कोई जगह दिए गए समय पर खुली है या नहीं.
  • isOpenAtDate यह हिसाब लगाता है कि कोई जगह किसी दी गई तारीख पर खुली है या नहीं.

ज़रूरी पैरामीटर

खोज के लिए ज़रूरी पैरामीटर तय करने के लिए, GMSPlaceSearchByTextRequest ऑब्जेक्ट का इस्तेमाल करें.

  • फ़ील्ड की सूची

    बताएं कि जगह की कौनसी डेटा प्रॉपर्टी दिखानी है. GMSPlace प्रॉपर्टी की ऐसी सूची पास करें जिसमें लौटाए जाने वाले डेटा फ़ील्ड मौजूद हों. अगर फ़ील्ड मास्क को हटा दिया जाता है, तो अनुरोध पर गड़बड़ी का मैसेज दिखेगा.

    फ़ील्ड की सूचियां, डिज़ाइन का एक अच्छा तरीका हैं. इससे यह पक्का किया जाता है कि आप बिना ज़रूरत वाले डेटा का अनुरोध न करें. इससे, प्रोसेसिंग में लगने वाले समय और बिलिंग शुल्क से बचा जा सकता है.

    इनमें से एक या ज़्यादा फ़ील्ड चुनें:

    • ये फ़ील्ड Text Search (सिर्फ़ आईडी) SKU को ट्रिगर करते हैं:

      GMSPlacePropertyPlaceID, GMSPlacePropertyName
    • ये फ़ील्ड टेक्स्ट सर्च (बेसिक) SKU को ट्रिगर करते हैं:

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyFormattedAddress, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyCoordinate, GMSPlacePropertyPhotos, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyViewport, GMSPlacePropertyWheelchairAccessibleEntrance
    • ये फ़ील्ड, Text Search (ऐडवांस) SKU को ट्रिगर करते हैं:

      GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite
    • ये फ़ील्ड Text Search (पसंदीदा) SKU को ट्रिगर करते हैं:

      GMSPlacePropertyCurbsidePickup, GMSPlacePropertyDelivery, GMSPlacePropertyDineIn, GMSPlacePropertyEditorialSummary, GMSPlacePropertyReservable, GMSPlacePropertyReviews, GMSPlacePropertyServesBeer, GMSPlacePropertyServesBreakfast, GMSPlacePropertyServesBrunch, GMSPlacePropertyServesDinner, GMSPlacePropertyServesLunch, GMSPlacePropertyServesVegetarianFood, GMSPlacePropertyServesWine, GMSPlacePropertyTakeout
  • textQuery

    वह टेक्स्ट स्ट्रिंग जिस पर खोज करनी है. जैसे: "रेस्टोरेंट", "123 मेन स्ट्रीट" या "सैन फ़्रांसिस्को में घूमने की सबसे अच्छी जगह".

ज़रूरी नहीं पैरामीटर

खोज के वैकल्पिक पैरामीटर तय करने के लिए, GMSPlaceSearchByTextRequest ऑब्जेक्ट का इस्तेमाल करें.

  • includedType

    नतीजों को ऐसी जगहों तक सीमित करता है जो टेबल A में तय किए गए खास टाइप से मेल खाती हों. सिर्फ़ एक टाइप चुना जा सकता है. उदाहरण के लिए:

    • request.includedType = "bar"
    • request.includedType = "pharmacy"
  • isOpenNow

    अगर true है, तो क्वेरी भेजते समय सिर्फ़ वे जगहें दिखाएं जो कारोबार के लिए खुली हैं. अगर false है, तो सभी कारोबारों को दिखाएं, भले ही कारोबार खुला हो. अगर आप इस पैरामीटर को false पर सेट करते हैं, तो ऐसी जगहें जो 'Google जगहें' डेटाबेस के खुलने के समय की जानकारी नहीं देती हैं.

  • isStrictTypeFiltering

    includeType पैरामीटर के साथ इस्तेमाल किया जाता है. अगर इसे true पर सेट किया जाता है, तो सिर्फ़ includeType में बताए गए टाइप से मेल खाने वाली जगहें ही दिखाई जाती हैं. 'गलत' होने पर, डिफ़ॉल्ट तौर पर रिस्पॉन्स में ऐसी जगहें शामिल हो सकती हैं जो तय किए गए टाइप से मेल नहीं खातीं.

  • locationBias

    यह बताता है कि किसी इलाके को किस इलाके में खोजा जाना है. इस जगह की जानकारी पूर्वाग्रह के तौर पर दिखाई जाती है. इसका मतलब है कि बताई गई जगह के आस-पास के नतीजे दिखाए जा सकते हैं. इनमें, ऐसी जगह से बाहर के नतीजे भी शामिल हैं.

    आप locationRestriction या locationBias बता सकते हैं, लेकिन दोनों नहीं. locationRestriction के हिसाब से, वह क्षेत्र तय किया जा रहा है जिसमें नतीजे होने चाहिए. साथ ही, locationBias का मतलब है कि वह क्षेत्र तय करना जिसमें नतीजे, इलाके के पास होने चाहिए, लेकिन उसके बाहर भी हो सकते हैं.

    इलाके की जानकारी एक आयताकार व्यूपोर्ट या सर्कल के तौर पर दें.

    • सर्कल को सेंटर पॉइंट और मीटर में रेडियस से तय किया जाता है. दायरा 0.0 से 50, 000.0 के बीच होना चाहिए. डिफ़ॉल्ट दायरा 0.0 है. उदाहरण के लिए:

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(latitude: 20, longitude: 30), radius: 2.0)
      
    • रेक्टैंगल, अक्षांश-देशांतर का व्यूपोर्ट होता है. इसे कम और ज़्यादा पॉइंट की दिशा में दो तिरछे तरीके से दिखाया जाता है. नीचे का बिंदु, आयत के दक्षिण-पश्चिम कोने को दिखाता है और सबसे ऊपरी बिंदु, आयत के उत्तर-पूर्व कोने को दिखाता है.

      व्यूपोर्ट को क्लोज़्ड क्षेत्र माना जाता है. इसका मतलब है कि इसकी सीमा शामिल होती है. अक्षांश की सीमाएं -90 से 90 डिग्री के बीच होनी चाहिए, और देशांतर की सीमाएं -180 से 180 डिग्री के बीच होनी चाहिए, जिसमें ये भी शामिल हैं:

      • अगर low = high है, तो व्यूपोर्ट में वह सिंगल पॉइंट होता है.
      • अगर low.longitude > high.longitude है, तो देशांतर की रेंज उलटी हो जाती है (व्यूपोर्ट 180 डिग्री देशांतर लाइन को पार करता है).
      • अगर low.longitude = -180 डिग्री और high.longitude = 180 डिग्री है, तो व्यूपोर्ट में सभी देशांतर शामिल होते हैं.
      • अगर low.longitude = 180 डिग्री और high.longitude = -180 डिग्री है, तो देशांतर की रेंज खाली होगी.
      • अगर low.latitude > high.latitude है, तो अक्षांश की रेंज खाली होती है.
  • locationRestriction

    यह बताता है कि किसी इलाके को किस इलाके में खोजा जाना है. चुने गए इलाके से बाहर के नतीजे नहीं दिखाए जाते. इलाके की जानकारी एक आयताकार व्यूपोर्ट के तौर पर दें. व्यूपोर्ट तय करने के बारे में जानकारी के लिए, locationBias का ब्यौरा देखें.

    आप locationRestriction या locationBias बता सकते हैं, लेकिन दोनों नहीं. locationRestriction के हिसाब से, वह क्षेत्र तय किया जा रहा है जिसमें नतीजे होने चाहिए. साथ ही, locationBias का मतलब है कि वह क्षेत्र तय करना जिसमें नतीजे, इलाके के पास होने चाहिए, लेकिन उसके बाहर भी हो सकते हैं.

  • maxResultCount

    इससे पता चलता है कि जगह के बारे में ज़्यादा से ज़्यादा कितने नतीजे दिए जा सकते हैं. यह 1 से 20 (डिफ़ॉल्ट) के बीच होना चाहिए.

  • minRating

    नतीजों को सिर्फ़ उन लोगों तक सीमित करता है जिनकी औसत उपयोगकर्ता रेटिंग इस सीमा से ज़्यादा या इसके बराबर है. वैल्यू, 0.5 की बढ़ोतरी के साथ 0.0 और 5.0 के बीच होनी चाहिए. उदाहरण के लिए: 0, 0.5, 1.0, ... , 5.0, दोनों शामिल हैं. वैल्यू को निकटतम 0.5 तक पूर्णांकित कर दिया जाता है. उदाहरण के लिए, अगर 0.6 वैल्यू है, तो 1.0 से कम रेटिंग वाले सभी नतीजों को हटा दिया जाता है.

  • priceLevels

    खोज को उन जगहों तक सीमित करें जिन्हें कीमत के किसी खास लेवल पर मार्क किया गया है. डिफ़ॉल्ट रूप से, कीमत के सभी लेवल को चुना जाता है.

    PriceLevel की ओर से तय की गई एक या एक से ज़्यादा वैल्यू का कलेक्शन तय करें.

    उदाहरण के लिए:

    request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
  • rankPreference

    इससे पता चलता है कि क्वेरी के टाइप के हिसाब से, जवाब में नतीजों को कैसे रैंक किया जाता है:

    • "न्यूयॉर्क शहर में रेस्टोरेंट" जैसी कैटगरी से जुड़ी क्वेरी के लिए, .relevance (खोज के हिसाब से रैंक के नतीजे), डिफ़ॉल्ट होता है. आपके पास rankPreference को .relevance या .distance (दूरी के हिसाब से रैंक के नतीजे) पर सेट करने का विकल्प है.
    • हमारा सुझाव है कि "माउंटेन व्यू, सीए" जैसी कैटगरी से जुड़ी न की गई क्वेरी के लिए, rankPreference को सेट न करें.
  • regionCode

    जवाब को फ़ॉर्मैट करने के लिए इस्तेमाल किया जाने वाला क्षेत्रीय कोड. इसे दो वर्णों वाले CLDR कोड की वैल्यू के तौर पर बताया जाता है. इस पैरामीटर का खोज नतीजों पर पक्षपात भी हो सकता है. कोई डिफ़ॉल्ट मान नहीं है.

    अगर जवाब में पता फ़ील्ड में दिए गए देश का नाम, क्षेत्र के कोड से मेल खाता है, तो पते में देश का कोड शामिल नहीं किया जाता.

    ज़्यादातर CLDR कोड, ISO 3166-1 कोड के जैसे होते हैं. हालांकि, इसमें कुछ खास अपवाद भी हैं. उदाहरण के लिए, यूनाइटेड किंगडम का ccTLD "uk" (.co.uk) है, जबकि ISO 3166-1 कोड "gb" है. तकनीकी तौर पर, यूनाइटेड किंगडम ऑफ़ ग्रेट ब्रिटेन और नॉर्दन आयरलैंड की इकाई के लिए इसका इस्तेमाल किया जा सकता है. पैरामीटर, लागू कानून के आधार पर नतीजों पर असर डाल सकता है.

अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाएं

जब आपका ऐप्लिकेशन GMSPlacesClient से मिली जानकारी (जैसे, फ़ोटो और समीक्षाएं) दिखाता है, तो ऐप्लिकेशन को ज़रूरी एट्रिब्यूशन भी दिखाने चाहिए.

उदाहरण के लिए, GMSPlacesClient ऑब्जेक्ट की reviews प्रॉपर्टी में, ज़्यादा से ज़्यादा पांच GMSPlaceReview ऑब्जेक्ट का कलेक्शन होता है. हर GMSPlaceReview ऑब्जेक्ट में एट्रिब्यूशन और लेखक के एट्रिब्यूशन शामिल हो सकते हैं. अगर आप अपने ऐप्लिकेशन में समीक्षा दिखाते हैं, तो आपको कोई एट्रिब्यूशन या लेखक का एट्रिब्यूशन भी दिखाना होगा.

ज़्यादा जानकारी के लिए, एट्रिब्यूशन से जुड़ा दस्तावेज़ देखें.