टेक्स्ट से खोजें

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

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

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

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

टेक्स्ट खोजने के अनुरोध

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

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

इस उदाहरण में, आपने:

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

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

    • टेक्स्ट क्वेरी स्ट्रिंग को "मसालेदार शाकाहारी खाना" पर सेट करें.

    • नतीजों के लिए दिखने वाली जगहों की संख्या को 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.NAME);

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

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

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

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

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

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

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

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

      Place.Field.ID, Place.Field.NAME
    • नीचे दिए गए फ़ील्ड, Text Search (बेसिक) SKU को ट्रिगर करते हैं:

      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
    • नीचे दिए गए फ़ील्ड, Text Search (ऐडवांस) SKU को ट्रिगर करते हैं:

      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
    • ये फ़ील्ड, Text Search (पसंदीदा) SKU को ट्रिगर करते हैं:

      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
  • टेक्स्ट क्वेरी

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

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

SearchByTextRequest.Builder तरीके का इस्तेमाल करके, ये पैरामीटर सेट करें. उदाहरण के लिए, नतीजों की ज़्यादा से ज़्यादा संख्या सेट करने के लिए, SearchByTextRequest.Builder.setMaxResultCount() पर कॉल करें.

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

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

    • setIncludedType("bar")
    • setIncludedType("pharmacy")
  • जगह की जानकारी का बायस

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

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

    क्षेत्र को आयताकार व्यूपोर्ट या सर्कल के रूप में तय करें.

    • एक वृत्त को केंद्र बिंदु और मीटर में त्रिज्या के आधार पर परिभाषित किया जाता है. दायरा 0.0 से 50, 000.0 के बीच होना चाहिए. डिफ़ॉल्ट रेडियस 0.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 है, तो अक्षांश की रेंज खाली होती है.

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

      उदाहरण के लिए, आयताकार व्यूपोर्ट के Text search अनुरोध देखें.

  • जगह की जानकारी पर पाबंदी

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

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

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

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

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

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

  • अभी खुला है

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

  • कीमत के लेवल

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

    यहां दी गई पूर्णांक वैल्यू में से एक या उससे ज़्यादा की सूची बनाएं:

    • 1 से PRICE_LEVEL_INEXPENSIVE
    • 2 से PRICE_LEVEL_MODERATE
    • 3 से PRICE_LEVEL_EXPENSIVE
    • 4 से PRICE_LEVEL_VERY_EXPENSIVE
  • रैंक प्राथमिकता

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

    वैल्यू में ये शामिल हैं:

    • SearchByTextRequest.RankPreference.DISTANCE: दूरी के हिसाब से नतीजों को रैंक करें.
    • SearchByTextRequest.RankPreference.RELEVANCE: प्रासंगिकता के मुताबिक नतीजों को रैंक करें.
  • क्षेत्र कोड

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

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

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

  • स्ट्रिक्ट टाइप फ़िल्टर

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