टेक्स्ट से खोजें (नई सुविधा)

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript वेब सेवा

यूरोपियन इकनॉमिक एरिया (ईईए) के डेवलपर

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

ज़रूरी पैरामीटर के अलावा, टेक्स्ट सर्च (नया) में बेहतर नतीजे पाने के लिए, वैकल्पिक पैरामीटर का इस्तेमाल करके क्वेरी को बेहतर बनाया जा सकता है.

टेक्स्ट खोज (नई सुविधा), आस-पास की जगहें खोजें (नई सुविधा) के जैसी ही है. इन दोनों के बीच मुख्य अंतर यह है कि टेक्स्ट से खोजने की सुविधा (नया वर्शन) में, खोज के लिए कोई भी स्ट्रिंग तय की जा सकती है. वहीं, आस-पास खोजने की सुविधा (नया वर्शन) में, खोज के लिए कोई खास इलाका तय करना ज़रूरी होता है.

टेक्स्ट सर्च के अनुरोध

टेक्स्ट सर्च का अनुरोध इस फ़ॉर्म में होता है:

// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_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();
    });

इस उदाहरण में:

  • फ़ील्ड की सूची को इस तरह सेट करें कि उसमें सिर्फ़ Place.Field.ID और Place.Field.DISPLAY_NAME शामिल हों. इसका मतलब है कि जवाब में मौजूद Place ऑब्जेक्ट में, मैच करने वाली हर जगह के लिए सिर्फ़ ये दो फ़ील्ड शामिल होते हैं.

  • खोज को तय करने वाला SearchByTextRequest ऑब्जेक्ट बनाने के लिए, SearchByTextRequest.Builder का इस्तेमाल करें.

    • टेक्स्ट क्वेरी स्ट्रिंग को "Spicy Vegetarian Food" पर सेट करें.

    • नतीजे की जगहों की ज़्यादा से ज़्यादा संख्या को 10 पर सेट करें. डिफ़ॉल्ट और ज़्यादा से ज़्यादा वैल्यू 20 होती है.

    • सर्च के दायरे को अक्षांश और देशांतर के निर्देशांकों से तय किए गए आयत तक सीमित करें. इस इलाके से बाहर के किसी भी नतीजे को नहीं दिखाया जाता.

  • कोई OnSuccessListener जोड़ें और SearchByTextResponse ऑब्जेक्ट से मिलती-जुलती जगहों की जानकारी पाएं.

टेक्स्ट सर्च के जवाब

SearchByTextResponse क्लास, खोज के अनुरोध से मिले जवाब को दिखाता है. SearchByTextResponse ऑब्जेक्ट में ये शामिल होते हैं:

  • Place ऑब्जेक्ट की सूची. इसमें मैच करने वाली सभी जगहों की जानकारी होती है. हर मैचिंग जगह के लिए एक Place ऑब्जेक्ट होता है.

  • हर Place ऑब्जेक्ट में सिर्फ़ वे फ़ील्ड होते हैं जो अनुरोध में पास की गई फ़ील्ड लिस्ट में तय किए गए हैं.

उदाहरण के लिए, अनुरोध में फ़ील्ड की सूची को इस तरह से तय किया गया है:

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

इस फ़ील्ड सूची का मतलब है कि जवाब में मौजूद हर Place ऑब्जेक्ट में, मैच करने वाली हर जगह का सिर्फ़ प्लेस आईडी और नाम शामिल होता है. इसके बाद, हर Place ऑब्जेक्ट में इन फ़ील्ड को ऐक्सेस करने के लिए, Place.getId() और Place.getName() तरीकों का इस्तेमाल किया जा सकता है.

Place ऑब्जेक्ट में डेटा ऐक्सेस करने के ज़्यादा उदाहरणों के लिए, जगह की जानकारी वाले ऑब्जेक्ट के डेटा फ़ील्ड ऐक्सेस करना लेख पढ़ें

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

SearchByTextRequest के लिए ज़रूरी पैरामीटर ये हैं:

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

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

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

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

    • इन फ़ील्ड से टेक्स्ट सर्च के लिए ज़रूरी आईडी वाला एसकेयू ट्रिगर होता है:

      Place.Field.DISPLAY_NAME*
          * Place.Field.NAME (वर्शन 4.0 में बंद कर दिया गया) के बजाय इसका इस्तेमाल करें.
      Place.Field.ID
      Place.Field.RESOURCE_NAME*
          * इसमें जगह के संसाधन का नाम इस फ़ॉर्म में होता है: places/PLACE_ID.
           जगह के टेक्स्ट नाम को ऐक्सेस करने के लिए, DISPLAY_NAME का इस्तेमाल करें.
    • इन फ़ील्ड से Text Search Pro SKU ट्रिगर होता है:

      Place.Field.ACCESSIBILITY_OPTIONS*
          इसका इस्तेमाल Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE (अब काम नहीं करता) के बजाय करें.
      Place.Field.ADDRESS_COMPONENTS
      Place.Field.ADR_FORMAT_ADDRESS
      Place.Field.BUSINESS_STATUS
      Place.Field.FORMATTED_ADDRESS*
          इसका इस्तेमाल Place.Field.ADDRESS (अब काम नहीं करता) के बजाय करें.
      Place.Field.GOOGLE_MAPS_URI
      Place.Field.ICON_BACKGROUND_COLOR
      Place.Field.ICON_MASK_URL *
          Place.Field.ICON_URL (अब काम नहीं करता) के बजाय इसका इस्तेमाल करें.
      Place.Field.LOCATION*
          Place.Field.LAT_LNG (इस्तेमाल बंद कर दिया गया है) के बजाय इसका इस्तेमाल करें.
      Place.Field.PHOTO_METADATAS
      Place.Field.PLUS_CODE
      Place.Field.PRIMARY_TYPE
      Place.Field.PRIMARY_TYPE_DISPLAY_NAME
      Place.Field.SHORT_FORMATTED_ADDRESS
      Place.Field.SUB_DESTINATIONS
      Place.Field.TYPES
      Place.Field.UTC_OFFSET
      Place.Field.VIEWPORT
    • इन फ़ील्ड से Text Search Enterprise SKU ट्रिगर होता है:

      Place.Field.CURRENT_OPENING_HOURS
      Place.Field.CURRENT_SECONDARY_OPENING_HOURS
      Place.Field.INTERNATIONAL_PHONE_NUMBER*
          * इसका इस्तेमाल Place.Field.PHONE_NUMBER के बजाय करें. Place.Field.PHONE_NUMBER अब काम नहीं करता.
      Place.Field.NATIONAL_PHONE_NUMBER
      Place.Field.OPENING_HOURS
      Place.Field.PRICE_LEVEL
      Place.Field.RATING
      Place.Field.SECONDARY_OPENING_HOURS
      Place.Field.USER_RATING_COUNT*
          * इसका इस्तेमाल Place.Field.USER_RATINGS_TOTAL के बजाय करें. Place.Field.USER_RATINGS_TOTAL अब काम नहीं करता.
      Place.Field.WEBSITE_URI
    • इन फ़ील्ड से Text Search Enterprise Plus SKU ट्रिगर होता है:

      Place.Field.ALLOWS_DOGS
      Place.Field.CURBSIDE_PICKUP
      Place.Field.DELIVERY
      Place.Field.DINE_IN
      Place.Field.EDITORIAL_SUMMARY
      Place.Field.EV_CHARGE_OPTIONS
      Place.Field.FUEL_OPTIONS
      Place.Field.GOOD_FOR_CHILDREN
      Place.Field.GOOD_FOR_GROUPS
      Place.Field.GOOD_FOR_WATCHING_SPORTS
      Place.Field.LIVE_MUSIC
      Place.Field.MENU_FOR_CHILDREN
      Place.Field.OUTDOOR_SEATING
      Place.Field.PARKING_OPTIONS
      Place.Field.PAYMENT_OPTIONS
      Place.Field.RESERVABLE
      Place.Field.RESTROOM
      Place.Field.REVIEWS
      Place.Field.SERVES_BEER
      Place.Field.SERVES_BREAKFAST
      Place.Field.SERVES_BRUNCH
      Place.Field.SERVES_COCKTAILS
      Place.Field.SERVES_COFFEE
      Place.Field.SERVES_DESSERT
      Place.Field.SERVES_DINNER
      Place.Field.SERVES_LUNCH
      Place.Field.SERVES_VEGETARIAN_FOOD
      Place.Field.SERVES_WINE
      Place.Field.TAKEOUT

    फ़ील्ड सूची पैरामीटर सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setPlaceFields() तरीके को कॉल करें.

  • टेक्स्ट क्वेरी

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

    टेक्स्ट क्वेरी पैरामीटर सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setTextQuery() तरीके को कॉल करें.

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

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

  • शामिल किए गए टाइप

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

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

    शामिल किए गए टाइप पैरामीटर को सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setIncludedType() तरीके को कॉल करें.

  • लोकेशन बायस

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

    जगह के हिसाब से पाबंदी या जगह के हिसाब से प्राथमिकता तय की जा सकती है, लेकिन दोनों को एक साथ नहीं चुना जा सकता. जगह के हिसाब से पाबंदी लगाने का मतलब है कि नतीजे सिर्फ़ उस जगह के लिए दिखाए जाएंगे. वहीं, जगह के हिसाब से खोज के नतीजों को प्राथमिकता देने का मतलब है कि नतीजे उस जगह के लिए दिखाए जाएंगे या उसके आस-पास की जगह के लिए. हालांकि, यह ध्यान रखें कि जगह के हिसाब से खोज के नतीजों को प्राथमिकता देने की सुविधा का इस्तेमाल करने पर, नतीजे अब भी बताई गई जगह से बाहर के हो सकते हैं.

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

    • किसी सर्कल को उसके सेंटर पॉइंट और मीटर में दी गई त्रिज्या से तय किया जाता है. रेडियस, 0.0 और 50000.0 के बीच होना चाहिए. हालांकि, इन दोनों में से भी कोई संख्या हो सकती है. उदाहरण के लिए:

      // 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();
    • आयत, अक्षांश-देशांतर का व्यूपोर्ट होता है. इसे दो विकर्ण विपरीत बिंदुओं के तौर पर दिखाया जाता है. लो पॉइंट, आयत के दक्षिण-पश्चिम कोने को दिखाता है. वहीं, हाई पॉइंट, आयत के उत्तर-पूर्व कोने को दिखाता है.

      व्यूपोर्ट को एक बंद क्षेत्र माना जाता है. इसका मतलब है कि इसमें इसकी सीमा शामिल होती है. अक्षांश की सीमाएं -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 है, तो अक्षांश की रेंज खाली होती है.

      छोटी और बड़ी, दोनों वैल्यू डालना ज़रूरी है. साथ ही, दिखाए गए बॉक्स में कोई वैल्यू मौजूद होनी चाहिए. व्यू पोर्ट खाली होने पर गड़बड़ी होती है.

      उदाहरण के लिए, रेक्टैंगुलर व्यूपोर्ट का टेक्स्ट खोज के अनुरोध देखें.

      लोकेशन बायस पैरामीटर सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setLocationBias() तरीके को कॉल करें.

  • जगह की जानकारी से जुड़ी पाबंदी

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

    जगह के हिसाब से पाबंदी या जगह के हिसाब से प्राथमिकता तय की जा सकती है, लेकिन दोनों को एक साथ नहीं चुना जा सकता. जगह के हिसाब से पाबंदी लगाने का मतलब है कि नतीजे सिर्फ़ उस जगह के होने चाहिए. वहीं, जगह के हिसाब से खोज के नतीजों में बदलाव करने का मतलब है कि नतीजे उस जगह के आस-पास के होने चाहिए, लेकिन वे उस जगह से बाहर के भी हो सकते हैं.

    जगह से जुड़ी पाबंदी का पैरामीटर सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setLocationRestriction() तरीके को कॉल करें.

  • नतीजों की ज़्यादा से ज़्यादा संख्या

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

    नतीजों की ज़्यादा से ज़्यादा संख्या तय करने वाले पैरामीटर को सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setMaxResultCount() तरीके को कॉल करें.

  • कम से कम रेटिंग

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

    कम से कम रेटिंग पैरामीटर सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setMinRating() तरीके को कॉल करें.

  • अभी खोलें

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

    'अभी खुला है' पैरामीटर सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setOpenNow() तरीके को कॉल करें.

  • किराये के लेवल

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

    • 1 - यहां किफ़ायती सेवाएं मिलती हैं.
    • 2 - इस जगह पर, सामान्य कीमत पर सेवाएं मिलती हैं.
    • 3 - इस जगह पर सेवाएं महंगी हैं.
    • 4 - यह जगह बहुत महंगी सेवाएं देती है.

    कीमत के लेवल का पैरामीटर सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setPriceLevels() तरीके को कॉल करें.

  • रैंक करने की प्राथमिकता

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

    • "न्यूयॉर्क शहर के रेस्टोरेंट" जैसी कैटगरी वाली क्वेरी के लिए, SearchByTextRequest.RankPreference.RELEVANCE (खोज के नतीजों को क्वेरी के हिसाब से रैंक करना) डिफ़ॉल्ट रूप से चालू होता है. रैंक की प्राथमिकता को SearchByTextRequest.RankPreference.RELEVANCE या SearchByTextRequest.RankPreference.DISTANCE (दूरी के हिसाब से नतीजों को रैंक करें) पर सेट किया जा सकता है.
    • "माउंटेन व्यू, कैलिफ़ोर्निया" जैसी क्वेरी के लिए, हमारा सुझाव है कि रैंक प्रेफ़रेंस पैरामीटर को सेट न करें.

    रैंक की प्राथमिकता का पैरामीटर सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setRankPreference() तरीके को कॉल करें.

  • क्षेत्र कोड

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

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

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

    रीजन कोड पैरामीटर सेट करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setRegionCode() तरीके को कॉल करें.

  • टाइप के हिसाब से फ़िल्टर करने की सुविधा

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

    टाइप के हिसाब से फ़िल्टर करने के लिए, SearchByTextRequest ऑब्जेक्ट बनाते समय setStrictTypeFiltering() तरीके को कॉल करें.