टेक्स्ट खोज (नया) किसी स्ट्रिंग के आधार पर जगहों के सेट की जानकारी दिखाता है — उदाहरण के लिए, "दिल्ली में पिज़्ज़ा" या "ओटावा के आस-पास जूते की दुकान" या "123 मेन स्ट्रीट". जवाब देने के लिए, ऐसी जगहों की सूची दिखाई जाती है जो टेक्स्ट स्ट्रिंग से मेल खाती हों. साथ ही, जगह के लिए सेट किए गए किसी भी तरह के पूर्वाग्रह को भी फ़िल्टर कर दिया जाता है.
यह सेवा खास तौर पर तब काम आती है, जब ऑटोमेटेड सिस्टम (कार्रवाइयों को अपने-आप पूरा करने वाला सिस्टम) में पते से जुड़ी क्वेरी साफ़ तौर पर दिखाई गई हों. स्ट्रिंग के बिना पते वाले कॉम्पोनेंट, कारोबारों और पतों से मेल खा सकते हैं. पते की क्वेरी के उदाहरणों में गड़बड़ी वाले पते या वे अनुरोध शामिल होते हैं जिनमें पते की जानकारी नहीं होती, जैसे कि कारोबार के नाम. पहले दो उदाहरणों जैसे अनुरोधों से शून्य नतीजे मिल सकते हैं. ऐसा तब तक हो सकता है, जब तक कोई जगह सेट नहीं की जाती, जैसे कि इलाका, जगह से जुड़ी पाबंदी या जगह के आधार पर भेदभाव न करना.
टेक्स्ट से खोजें (नया) आस-पास खोज की सुविधा (नया) से मिलता-जुलता है. दोनों के बीच मुख्य अंतर यह है कि टेक्स्ट सर्च (नई) की मदद से, आपको आर्बिट्रेरी सर्च स्ट्रिंग तय करने की सुविधा मिलती है, जबकि आस-पास सर्च (नया) में खोजने के लिए आपको एक खास एरिया की ज़रूरत होती है.
"10 High Street, UK" या "123 Main Street, US" | यूनाइटेड किंगडम में कई "हाई स्ट्रीट"; अमेरिका में कई "मुख्य सड़कें". जब तक जगह की जानकारी की पाबंदी सेट नहीं की जाती, तब तक क्वेरी से मनमुताबिक नतीजे नहीं मिलते. |
"चेन रेस्टोरेंट न्यूयॉर्क" | न्यूयॉर्क में कई "चेन रेस्टोरेंट" जगहें; यहां तक कि मोहल्ले का पता या मोहल्ले का नाम भी नहीं. |
"10 High Street, Escher UK" या "123 Main Street, Pleasanton US" | यूके के शहर एस्चर में सिर्फ़ एक "हाई स्ट्रीट"; अमेरिका के प्लेसेंटन सीए शहर की सिर्फ़ एक "मुख्य सड़क". |
"यूनिक रेस्टोरेंट का नाम न्यूयॉर्क" | न्यूयॉर्क में इस नाम का सिर्फ़ एक होटल. अलग-अलग जगहों के बीच अंतर करने के लिए, मोहल्ले का पता सेट करने की ज़रूरत नहीं है. |
"दिल्ली में पिज़्ज़ा रेस्टोरेंट" | इस क्वेरी में, जगह की जानकारी से जुड़ी पाबंदी शामिल है और "पिज़्ज़ा रेस्टोरेंट" एक अच्छी तरह से बताया गया जगह है. यह कई नतीजे दिखाता है. |
"+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
ऑब्जेक्ट में डेटा ऐक्सेस करने के और उदाहरणों के लिए, जगह की जानकारी के डेटा फ़ील्ड को ऐक्सेस करना देखें
ज़रूरी पैरामीटर
SearchByTextRequest
के लिए ज़रूरी पैरामीटर ये हैं:
-
फ़ील्ड की सूची
बताएं कि जगह की जानकारी के कौनसे डेटा फ़ील्ड दिखाने हैं.
Place.Field
की वैल्यू की सूची पास करें जिसमें लौटाए जाने वाले डेटा फ़ील्ड शामिल हों. जवाब में, दिखाए गए फ़ील्ड की कोई डिफ़ॉल्ट सूची नहीं है.फ़ील्ड की सूचियां, डिज़ाइन का एक अच्छा तरीका हैं. इससे यह पक्का किया जाता है कि आप बिना ज़रूरत वाले डेटा का अनुरोध न करें. इससे, प्रोसेसिंग में लगने वाले समय और बिलिंग शुल्क से बचा जा सकता है.
इनमें से एक या ज़्यादा फ़ील्ड चुनें:
ये फ़ील्ड Text Search (सिर्फ़ आईडी) SKU को ट्रिगर करते हैं:
Place.Field.ID
,Place.Field.NAME
ये फ़ील्ड टेक्स्ट सर्च (बेसिक) 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
फ़ील्ड सूची पैरामीटर सेट करने के लिए,
SearchByTextRequest
ऑब्जेक्ट बनाते समयsetPlaceFields()
तरीके को कॉल करें. -
टेक्स्ट क्वेरी
वह टेक्स्ट स्ट्रिंग जिस पर खोज करनी है. उदाहरण के लिए: "रेस्टोरेंट", "123 मेन स्ट्रीट" या "सैन फ़्रांसिस्को में घूमने की सबसे अच्छी जगह". एपीआई इस स्ट्रिंग के आधार पर, उम्मीदवारों से मिलते-जुलते नतीजे दिखाता है और इस आधार पर नतीजों को क्रम में लगाता है कि वे कितने काम के हैं.
टेक्स्ट क्वेरी पैरामीटर सेट करने के लिए,
SearchByTextRequest
ऑब्जेक्ट बनाते समयsetTextQuery()
तरीके को कॉल करें.
ज़रूरी नहीं पैरामीटर
अपने अनुरोध के वैकल्पिक पैरामीटर बताने के लिए, SearchByTextRequest
ऑब्जेक्ट का इस्तेमाल करें.
शामिल किया गया प्रकार
नतीजों को ऐसी जगहों तक सीमित करता है जो टेबल A में तय किए गए खास टाइप से मेल खाती हों. सिर्फ़ एक टाइप चुना जा सकता है. उदाहरण के लिए:
setIncludedType("bar")
setIncludedType("pharmacy")
शामिल किए गए टाइप पैरामीटर को सेट करने के लिए,
SearchByTextRequest
ऑब्जेक्ट बनाते समयsetIncludedType()
तरीके को कॉल करें.जगह का मापदंड
यह बताता है कि किसी इलाके को किस इलाके में खोजा जाना है. इस जगह की जानकारी पूर्वाग्रह के तौर पर दिखाई जाती है. इसका मतलब है कि बताई गई जगह के आस-पास के नतीजे दिखाए जा सकते हैं. इनमें, ऐसी जगह से बाहर के नतीजे भी शामिल हैं.
जगह की जानकारी पर पाबंदी लगाई जा सकती है या जगह के मापदंड तय किए जा सकते हैं, लेकिन दोनों नहीं. जगह की जानकारी से जुड़ी पाबंदी का मतलब उस इलाके की जानकारी देना है जिसमें नतीजे शामिल होने चाहिए. साथ ही, जगह के हिसाब से तय होता है कि नतीजे किस इलाके के आस-पास होने चाहिए, लेकिन उससे बाहर भी.
इलाके की जानकारी एक आयताकार व्यूपोर्ट या सर्कल के तौर पर दें.
सर्कल को सेंटर पॉइंट और मीटर में रेडियस से तय किया जाता है. दायरा 0.0 से 50, 000.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.5 की बढ़ोतरी के साथ 0.0 और 5.0 के बीच होनी चाहिए. उदाहरण के लिए: 0, 0.5, 1.0, ... , 5.0, दोनों शामिल हैं. वैल्यू को निकटतम 0.5 तक पूर्णांकित कर दिया जाता है. उदाहरण के लिए, अगर 0.6 वैल्यू है, तो 1.0 से कम रेटिंग वाले सभी नतीजों को हटा दिया जाता है.
सबसे कम रेटिंग पैरामीटर सेट करने के लिए,
SearchByTextRequest
ऑब्जेक्ट बनाते समयsetMinRating()
तरीके को कॉल करें.अभी खुला है
अगर
true
है, तो क्वेरी भेजते समय सिर्फ़ वे जगहें दिखाएं जो कारोबार के लिए खुली हैं. अगरfalse
है, तो सभी कारोबारों को दिखाएं, भले ही कारोबार खुला हो. अगर आप इस पैरामीटर कोfalse
पर सेट करते हैं, तो ऐसी जगहें जो 'Google जगहें' डेटाबेस के खुलने के समय की जानकारी नहीं देती हैं.अभी खोलें पैरामीटर सेट करने के लिए,
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
पर सेट करने पर, सिर्फ़ शामिल की गई जगहों के बताए गए टाइप से मेल खाने वाली जगहें दिखाई जाती हैं.false
होने पर, डिफ़ॉल्ट जवाब में ऐसी जगहें शामिल हो सकती हैं जो बताए गए टाइप से मेल नहीं खातीं.सख्त फ़िल्टर टाइप वाले पैरामीटर को सेट करने के लिए,
SearchByTextRequest
ऑब्जेक्ट बनाते समयsetStrictTypeFiltering()
तरीके को कॉल करें.