البحث النصي (جديد) يعرض معلومات حول مجموعة من أماكن بناءً على سلسلة، مثل "بيتزا في القاهرة" أو "متاجر أحذية بالقرب من أوتاوا" أو "123 الشارع الرئيسي". تستجيب الخدمة بعرض قائمة بالأماكن لمطابقة السلسلة النصية وأي تحيز موقع تم تعيينه.
تكون الخدمة مفيدة بشكل خاص لإنشاء عنوان غامض في نظام آلي والمكونات غير العنوانية في السلسلة قد تتطابق مع الأنشطة التجارية وكذلك . ومن أمثلة طلبات البحث الغامضة العناوين ذات التنسيق الرديء. أو الطلبات التي تتضمّن مكوّنات لا تشمل العناوين، مثل أسماء الأنشطة التجارية الطلبات مثل أول مثالين، قد لا يُرجع أي نتائج إلا إذا كان الموقع — مثل المنطقة، أو تقييد الموقع، أو تحيز الموقع.
يتشابه البحث النصي (جديد) مع ميزة البحث عن قرب (جديد): المصدر الرئيسي والفرق بين الاثنين هو أن البحث النصي (جديد) يتيح لك تحديد سلسلة بحث عشوائية بينما يتطلب البحث عن قرب (جديد) منطقة محددة للبحث فيها.
"10 High Street, UK" أو "123 الشارع الرئيسي، الولايات المتحدة" | العديد من متاجر "هاي ستريت" في المملكة المتحدة العديد من "الشوارع الرئيسية" في الولايات المتحدة. لا يعرض طلب البحث نتائج مرغوبة ما لم يكن تقييد الموقع تعيين. |
"مطعم تابع لسلسلة في نيويورك" | عدة "مطعم تابع لسلسلة" المختلفة في نيويورك؛ لا يوجد عنوان شارع أو حتى اسم الشارع. |
"10 High Street, Escher UK" أو "123 الشارع الرئيسي, بليسانتون الولايات المتحدة" | شارع "هاي ستريت" واحد فقط في مدينة إيشر بالمملكة المتحدة؛ "شارع رئيسي" واحد فقط في مدينة بليسانتون بولاية كاليفورنيا الأمريكية. |
"UniqueRestaurantName في نيويورك" | مؤسسة واحدة فقط بهذا الاسم في نيويورك؛ لا يوجد عنوان شارع اللازمة للتمييز. |
"مطاعم البيتزا في دبي" | يتضمن طلب البحث هذا قيود الموقع، و"مطاعم البيتزا" CANNOT TRANSLATE نوع مكان محدد جيدًا. ويؤدي إلى إرجاع نتائج متعددة. |
" +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.Builder
لإنشاءSearchByTextRequest
يعرّف البحث.اضبط سلسلة طلب البحث النصي على "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.NAME);
تعني قائمة الحقول هذه أن كل كائن Place
في الردّ يحتوي فقط على
ورقم تعريف المكان واسم كل مكان مطابق. يمكنك بعد ذلك استخدام Place.getId()
وPlace.getName()
للوصول إلى هذه الحقول في كل كائن Place
.
للاطّلاع على مزيد من الأمثلة حول الوصول إلى البيانات في عنصر Place
، يُرجى الاطّلاع على مقالة الوصول إلى المكان.
حقول بيانات الكائنات
المعلمات المطلوبة
المعلمات المطلوبة
SearchByTextRequest
هي:
-
قائمة الحقول
حدِّد حقول بيانات الأماكن التي تريد عرضها. اجتياز قائمة
Place.Field
القيم التي تحدد حقول البيانات المراد إرجاعها. لا توجد قائمة افتراضية من الحقول بإرجاعها في الرد.تعتبر قوائم الحقول ممارسة جيدة في التصميم لضمان عدم طلب البيانات غير الضرورية، مما يساعد على تجنب وقت المعالجة غير الضروري رسوم الفوترة.
حدِّد حقلاً واحدًا أو أكثر من الحقول التالية:
تؤدي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث النصي (المعرّف فقط):
Place.Field.ID
وPlace.Field.NAME
تؤدّي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث النصي (الأساسي):
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
تؤدي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث النصي (المتقدّم):
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
تؤدي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث النصي (المفضَّل):
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
لضبط مَعلمة قائمة الحقول، يمكنك طلب الطريقة
setPlaceFields()
عند إنشاء العنصرSearchByTextRequest
. -
طلب بحث نصي
السلسلة النصية المطلوب البحث عنها، على سبيل المثال: "مطعم"، "123 الشارع الرئيسي" أو "أفضل مكان للزيارة في سان فرانسيسكو". واجهة برمجة التطبيقات تعرض التطابقات المرشحة بناءً على هذه السلسلة وترتّب النتائج استنادًا إلى على مدى الصلة المتصورة.
لضبط معلَمة طلب البحث النصي، يمكنك طلب الطريقة
setTextQuery()
عند إنشاء كائنSearchByTextRequest
.
المعلمات الاختيارية
يمكنك استخدام
SearchByTextRequest
لتحديد المعلمات الاختيارية لطلبك.
النوع المضمَّن
تقصر النتائج على الأماكن المطابقة للنوع المحدد الذي تم تحديده بواسطة الجدول (أ). يمكن تحديد نوع واحد فقط. على سبيل المثال:
setIncludedType("bar")
setIncludedType("pharmacy")
لضبط مَعلمة النوع المضمّنة، يمكنك طلب الطريقة
setIncludedType()
عند إنشاء عنصرSearchByTextRequest
.تحيز الموقع
لتحديد منطقة للبحث. هذا الموقع بمثابة تحيز مما يعني يمكن عرض نتائج حول الموقع المحدد، بما في ذلك نتائج خارج المنطقة المحددة.
يمكنك تحديد تقييد الموقع أو تحيز الموقع، ولكن ليس كليهما. فكر في تقييد الموقع على أنه تحديد المنطقة التي يجب أن تكون النتائج داخلها، وتحيز الموقع لتحديد المنطقة التي يجب أن تكون النتائج قريبة منها ولكن يمكن أن تكون خارج المنطقة.
حدِّد المنطقة كإطار عرض مستطيل أو دائرة.
يتم تحديد الدائرة بنقطة المركز ونصف القطر بالمتر. النطاق الجغرافي يجب أن تتراوح بين 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
، نطاق خط العرض فارغ.
يجب تعبئة القيم المنخفضة والمرتفعة، ولا يمكن ملء المربّع الممثَّل فارغ. يؤدي استخدام إطار عرض فارغ إلى حدوث خطأ.
على سبيل المثال، لرؤية إطار عرض مستطيل طلبات البحث النصي:
لضبط مَعلمة انحياز الموقع الجغرافي، يمكنك طلب الطريقة
setLocationBias()
عند إنشاء عنصرSearchByTextRequest
.- إذا كانت
القيود المفروضة على الموقع الجغرافي
لتحديد منطقة للبحث. النتائج خارج المنطقة المحدّدة ليست عاد. حدِّد المنطقة على أنّها إطار عرض مستطيل. الاطّلاع على الوصف انحياز الموقع الجغرافي للحصول على معلومات حول تحديد إطار العرض.
يمكنك تحديد تقييد الموقع أو تحيز الموقع، ولكن ليس كليهما. فكر في تقييد الموقع على أنه تحديد المنطقة التي يجب أن تكون النتائج داخلها، وتحيز الموقع لتحديد المنطقة التي يجب أن تكون فيها النتائج قريبة ولكن يمكن أن تكون خارج المنطقة.
لضبط مَعلمة تقييد الموقع الجغرافي، يمكنك طلب الطريقة
setLocationRestriction()
عند إنشاء عنصرSearchByTextRequest
.-
الحد الأقصى لعدد النتائج
لتحديد الحد الأقصى لعدد نتائج الأماكن المطلوب عرضها. يجب أن تتراوح القيمة بين 1 و20 (تلقائي) ضمنًا.
لضبط مَعلمة الحد الأقصى لعدد النتائج، يمكنك طلب الطريقة
setMaxResultCount()
عند إنشاء كائنSearchByTextRequest
. الحد الأدنى للتقييم
يقصر النتائج على من يكون متوسط تقييم المستخدمين له أكبر من أو مساوٍ لهذا الحد. يجب أن تتراوح القيم بين 0.0 و5.0 (ضمنًا) في زيادات 0.5. على سبيل المثال: 0، 0.5، 1.0، ... ، 5.0 ضمنًا. القيم هي إلى أقرب 0.5. على سبيل المثال، القيمة 0.6 تزيل جميع من النتائج ذات تقييم أقل من 1.0.
لضبط الحدّ الأدنى لمَعلمة التقييم، يمكنك طلب الطريقة
setMinRating()
عند إنشاء العنصرSearchByTextRequest
.مفتوح الآن
في حال
true
، اعرض فقط تلك الأماكن المفتوحة. في وقت إرسال الاستعلام. في حالfalse
، إرجاع جميع الأنشطة التجارية بغض النظر عن حالة الفتح. الأماكن التي لا تحدد ساعات العمل في قاعدة بيانات أماكن Google هي في حال ضبط هذه المعلَمة علىfalse
.لضبط المَعلمة open الآن، يمكنك طلب الطريقة
setOpenNow()
عند إنشاء الكائنSearchByTextRequest
.-
مستويات الأسعار
تتضمّن النتائج تلقائيًا الأماكن التي تقدّم خدمات بجميع مستويات الأسعار. لتقييد لتضمين الأماكن بمستويات أسعار معيّنة فقط، يمكنك ضبط قائمة من قيم الأعداد الصحيحة التي تتوافق مع مستويات الأسعار للأماكن التي تريد عرضها:
1
- يقدم المكان خدمات غير مكلفة.2
- يقدّم المكان خدمات بأسعار معتدلة.3
- يقدم المكان خدمات باهظة الثمن.4
- يقدم المكان خدمات باهظة الثمن.
لضبط مَعلمة مستويات السعر، يمكنك طلب الطريقة
setPriceLevels()
عند إنشاء عنصرSearchByTextRequest
. الترتيب المفضّل
لتحديد كيفية ترتيب النتائج في الرد استنادًا إلى نوع استعلام:
- بالنسبة إلى طلب بحث فئوي مثل "مطاعم في أبو ظبي"،
يُعد
SearchByTextRequest.RankPreference.RELEVANCE
(ترتيب النتائج حسب مدى صلة البحث) هو الإعداد التلقائي. يمكنك ضبط الترتيب المفضّل علىSearchByTextRequest.RankPreference.RELEVANCE
أوSearchByTextRequest.RankPreference.DISTANCE
(ترتيب النتائج حسب المسافة). - بالنسبة إلى طلب البحث غير الفئوي مثل "Mountain View, CA"، ننصح أنك تركت معلمة الترتيب المفضَّلة بدون ضبط.
لضبط مَعلمة الترتيب المفضّلة، يمكنك طلب الطريقة
setRankPreference()
عند إنشاء كائنSearchByTextRequest
.- بالنسبة إلى طلب بحث فئوي مثل "مطاعم في أبو ظبي"،
يُعد
رمز المنطقة
رمز المنطقة المستخدَم لتنسيق الردّ، والذي يتم تحديده على أنّه رمز CLDR مؤلف من حرفين. يمكن أن يكون لهذه المعلمة أيضًا تأثير تحيز في نتائج البحث. لا يوجد قيمة افتراضية.
إذا تطابق اسم البلد في حقل العنوان في الرد مع كود المنطقة، فسيتم حذف رمز البلد من العنوان.
وتكون معظم رموز CLDR متطابقة مع رموز ISO 3166-1، مع بعض الاستثناءات الملحوظة. على سبيل المثال، نطاق المستوى الأعلى الذي يتم ترميزه حسب البلد (ccTLD) في المملكة المتحدة هو "uk" (co.uk.)، لكنّ رمزها وفقًا لمعيار ISO 3166-1 هو gb. (من الناحية الفنية بالنسبة كيان "المملكة المتحدة لبريطانيا العظمى وأيرلندا الشمالية"). ويمكن أن تؤثّر المَعلمة في النتائج استنادًا إلى القانون الساري.
لضبط مَعلمة رمز المنطقة، يجب طلب الطريقة
setRegionCode()
عند إنشاء عنصرSearchByTextRequest
.تصفية متشددة للأنواع
تُستخدَم مع معلمة نوع التضمين. عند الضبط على
true
، فقط الأماكن التي تطابق الأنواع المحددة بواسطة (نوع التضمين) يتم إرجاعها. عندما يكونfalse
، الإعداد التلقائي هو أنّ الردّ يمكن أن يحتوي على أماكن لا تتطابق مع الأنواع المحددة.لضبط مَعلمة فلترة النوع المتشدد، يمكنك طلب الطريقة
setStrictTypeFiltering()
عند إنشاء كائنSearchByTextRequest
.