পাঠ্য অনুসন্ধান, পাঠ্য অনুসন্ধান

একটি পাঠ্য অনুসন্ধান একটি স্ট্রিংয়ের উপর ভিত্তি করে স্থানগুলির একটি সেট সম্পর্কে তথ্য প্রদান করে — উদাহরণস্বরূপ "নিউ ইয়র্কের পিজা" বা "অটোয়ার কাছে জুতার দোকান" বা "123 প্রধান রাস্তা"। পরিষেবাটি পাঠ্য স্ট্রিংয়ের সাথে মেলে এমন স্থানগুলির একটি তালিকা এবং সেট করা যেকোন অবস্থানের পক্ষপাতের সাথে প্রতিক্রিয়া জানায়৷

পরিষেবাটি একটি স্বয়ংক্রিয় সিস্টেমে অস্পষ্ট ঠিকানা প্রশ্ন করার জন্য বিশেষভাবে উপযোগী, এবং স্ট্রিংয়ের অ-ঠিকানা উপাদানগুলি ব্যবসার পাশাপাশি ঠিকানাগুলির সাথে মেলে। অস্পষ্ট ঠিকানা প্রশ্নের উদাহরণ হল খারাপভাবে ফর্ম্যাট করা ঠিকানা বা অনুরোধ যাতে ব্যবসার নামগুলির মতো নন-অ্যাড্রেস উপাদান অন্তর্ভুক্ত থাকে। প্রথম দুটি উদাহরণের মতো অনুরোধগুলি শূন্য ফলাফল দিতে পারে যদি না কোনো অবস্থান — যেমন অঞ্চল, অবস্থানের সীমাবদ্ধতা, বা অবস্থানের পক্ষপাত — সেট করা না থাকে।

"10 হাই স্ট্রিট, ইউকে" বা "123 মেইন স্ট্রিট, ইউএস" ইউকেতে একাধিক "হাই স্ট্রিট"; মার্কিন যুক্তরাষ্ট্রে একাধিক "মেইন স্ট্রিট"। একটি অবস্থান সীমাবদ্ধতা সেট না করা পর্যন্ত কোয়েরি পছন্দসই ফলাফল দেয় না।
"চেইন রেস্তোরাঁ নিউ ইয়র্ক" নিউ ইয়র্কের একাধিক "চেইন রেস্তোরাঁ" অবস্থান; কোন রাস্তার ঠিকানা এমনকি রাস্তার নামও নেই।
"10 হাই স্ট্রিট, এসচার ইউকে" বা "123 মেইন স্ট্রিট, প্লেস্যান্টন ইউএস" যুক্তরাজ্যের এসচার শহরে একটি মাত্র "হাই স্ট্রিট"; শুধুমাত্র একটি "মেইন স্ট্রীট" মার্কিন শহর প্লেস্যান্টন CA.
"অনন্য রেস্তোরাঁর নাম নিউ ইয়র্ক" নিউইয়র্কে এই নামের একটি মাত্র স্থাপনা; কোন রাস্তার ঠিকানা পার্থক্য প্রয়োজন.
"নিউ ইয়র্কের পিৎজা রেস্টুরেন্ট" এই ক্যোয়ারীতে এর অবস্থান সীমাবদ্ধতা রয়েছে এবং "পিৎজা রেস্তোরাঁ" হল একটি সুনির্দিষ্ট স্থানের ধরন৷ এটি একাধিক ফলাফল প্রদান করে।
"+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.getId() এবং Place.getName() পদ্ধতি ব্যবহার করে প্রতিটি Place বস্তুতে এই ক্ষেত্রগুলি অ্যাক্সেস করতে পারেন।

একটি Place অবজেক্টে ডেটা অ্যাক্সেস করার আরও উদাহরণের জন্য, অ্যাক্সেস প্লেস অবজেক্ট ডেটা ক্ষেত্রগুলি দেখুন

প্রয়োজনীয় পরামিতি

  • ক্ষেত্র তালিকা

    কোন স্থানের ডেটা ক্ষেত্রগুলি ফেরত দিতে হবে তা নির্দিষ্ট করুন৷ ফিরে আসার জন্য ডেটা ক্ষেত্রগুলি নির্দিষ্ট করে Place.Field মানগুলির একটি তালিকা পাস করুন৷ প্রতিক্রিয়ায় প্রত্যাবর্তিত ক্ষেত্রগুলির কোনও ডিফল্ট তালিকা নেই।

    আপনি অপ্রয়োজনীয় ডেটার অনুরোধ করবেন না তা নিশ্চিত করার জন্য ক্ষেত্র তালিকাগুলি একটি ভাল নকশা অনুশীলন, যা অপ্রয়োজনীয় প্রক্রিয়াকরণের সময় এবং বিলিং চার্জ এড়াতে সহায়তা করে।

    নিম্নলিখিত ক্ষেত্রগুলির মধ্যে এক বা একাধিক নির্দিষ্ট করুন:

    • নিম্নলিখিত ক্ষেত্রগুলি পাঠ্য অনুসন্ধানকে ট্রিগার করে (শুধুমাত্র ID) SKU :

      Place.Field.ID , Place.Field.NAME
    • নিম্নলিখিত ক্ষেত্রগুলি পাঠ্য অনুসন্ধান (বেসিক) SKU ট্রিগার করে:

      Place.Field.ADDRESS_COMPONENTS ADDRESS_COMPONENTS , Place.Field.BUSINESS_STATUS BUSINESS_STATUS , Place.Field.ADDRESS ।ADDRESS , Place.Field.ICON_BACKGROUND_COLOR ICON_BACKGROUND_COLOR , Place.Field.ICON_URL Place.Field.PHOTO_METADATAS ICON_URL , Place.Field.LAT_LNG Place.Field.PLUS_CODE , Place.Field.TYPES , Place.Field.UTC_OFFSET , Place.Field.VIEWPORT VIEWPORT , Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE WHEELCHAIR_ACCESSIBLE_ENTRANCE
    • নিম্নলিখিত ক্ষেত্রগুলি পাঠ্য অনুসন্ধান (উন্নত) SKU ট্রিগার করে:

      Place.Field.CURRENT_OPENING_HOURS CURRENT_OPENING_HOURS , Place.Field.SECONDARY_OPENING_HOURS ।SECONDARY_OPENING_HOURS , Place.Field.PHONE_NUMBER ।PHONE_NUMBER , Place.Field.PRICE_LEVEL PRICE_LEVEL , Place.Field.RATING RATING , Place.Field.OPENING_HOURS ।OPENING_ Place.Field.USER_RATINGS_TOTAL Place.Field.WEBSITE_URI । ITE_URI
    • নিম্নলিখিত ক্ষেত্রগুলি পাঠ্য অনুসন্ধান (পছন্দের) SKU ট্রিগার করে:

      Place.Field.CURBSIDE_PICKUP CURBSIDE_PICKUP , Place.Field.DELIVERY , Place.Field.DINE_IN , Place.Field.EDITORIAL_SUMMARY EDITORIAL_SUMMARY , Place.Field.RESERVABLE RESERVABLE , Place.Field.REVIEWS 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 প্রধান রাস্তা", বা "সান ফ্রান্সিসকোতে দেখার সেরা জায়গা"। API এই স্ট্রিং এর উপর ভিত্তি করে প্রার্থীর মিল ফেরত দেয় এবং তাদের অনুভূত প্রাসঙ্গিকতার উপর ভিত্তি করে ফলাফল অর্ডার করে।

ঐচ্ছিক পরামিতি

SearchByTextRequest.Builder এর পদ্ধতি ব্যবহার করে এই প্যারামিটারগুলি সেট করুন। উদাহরণস্বরূপ, সর্বাধিক ফলাফল গণনা সেট করতে, SearchByTextRequest.Builder.setMaxResultCount() কল করুন।

  • অন্তর্ভুক্ত প্রকার

    সারণি A দ্বারা সংজ্ঞায়িত নির্দিষ্ট প্রকারের সাথে মেলে এমন জায়গায় ফলাফলগুলিকে সীমাবদ্ধ করে৷ শুধুমাত্র একটি প্রকার নির্দিষ্ট করা যেতে পারে। উদাহরণ স্বরূপ:

    • setIncludedType("bar")
    • setIncludedType("pharmacy")
  • অবস্থান পক্ষপাত

    অনুসন্ধান করার জন্য একটি এলাকা নির্দিষ্ট করে। এই অবস্থানটি একটি পক্ষপাত হিসাবে কাজ করে যার অর্থ নির্দিষ্ট স্থানের আশেপাশের ফলাফলগুলি নির্দিষ্ট এলাকার বাইরের ফলাফল সহ ফেরত দেওয়া যেতে পারে৷

    আপনি অবস্থান সীমাবদ্ধতা বা অবস্থান পক্ষপাত নির্দিষ্ট করতে পারেন, কিন্তু উভয় নয়। ফলাফলগুলি যে অঞ্চলের মধ্যে হতে হবে সেটি নির্দিষ্ট করে অবস্থানের সীমাবদ্ধতা এবং অবস্থানের পক্ষপাতকে সেই অঞ্চলটি নির্দিষ্ট করে যে ফলাফলগুলি অবশ্যই কাছাকাছি হতে হবে তবে এলাকার বাইরে হতে পারে বলে মনে করুন৷

    একটি আয়তক্ষেত্রাকার ভিউপোর্ট বা একটি বৃত্ত হিসাবে অঞ্চলটি নির্দিষ্ট করুন।

    • একটি বৃত্তকে কেন্দ্র বিন্দু এবং মিটারে ব্যাসার্ধ দ্বারা সংজ্ঞায়িত করা হয়। ব্যাসার্ধ অবশ্যই 0.0 এবং 50000.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 হলে, অক্ষাংশ পরিসর খালি থাকে।

      নিম্ন এবং উচ্চ উভয়ই জনবসতিপূর্ণ হতে হবে এবং প্রতিনিধিত্ব করা বাক্সটি খালি হতে পারে না। একটি খালি ভিউপোর্ট একটি ত্রুটির ফলাফল.

      উদাহরণস্বরূপ, একটি আয়তক্ষেত্রাকার ভিউপোর্টের পাঠ্য অনুসন্ধানের অনুরোধগুলি দেখুন।

  • অবস্থান সীমাবদ্ধতা

    অনুসন্ধান করার জন্য একটি এলাকা নির্দিষ্ট করে। নির্দিষ্ট এলাকার বাইরে ফলাফল ফেরত দেওয়া হয় না. একটি আয়তক্ষেত্রাকার ভিউপোর্ট হিসাবে অঞ্চলটি নির্দিষ্ট করুন। ভিউপোর্ট সংজ্ঞায়িত করার তথ্যের জন্য অবস্থান পক্ষপাতের বিবরণ দেখুন।

    আপনি অবস্থান সীমাবদ্ধতা বা অবস্থান পক্ষপাত নির্দিষ্ট করতে পারেন, কিন্তু উভয় নয়। ফলাফলগুলি যে অঞ্চলের মধ্যে হতে হবে সেটি নির্দিষ্ট করে অবস্থানের সীমাবদ্ধতা এবং অবস্থানের পক্ষপাতকে সেই অঞ্চলটি নির্দিষ্ট করে যে ফলাফলগুলি অবশ্যই কাছাকাছি হতে হবে তবে এলাকার বাইরে হতে পারে বলে মনে করুন৷

  • সর্বাধিক ফলাফল গণনা

    ফেরত দেওয়ার জন্য সর্বাধিক সংখ্যক স্থানের ফলাফল নির্দিষ্ট করে। 1 এবং 20 এর মধ্যে হতে হবে (ডিফল্ট) অন্তর্ভুক্ত।

  • সর্বনিম্ন রেটিং

    ফলাফল শুধুমাত্র তাদের জন্য সীমাবদ্ধ করে যাদের গড় ব্যবহারকারী রেটিং এই সীমার চেয়ে বেশি বা সমান। 0.5 এর বৃদ্ধিতে মান অবশ্যই 0.0 এবং 5.0 (অন্তর্ভুক্ত) এর মধ্যে হতে হবে। উদাহরণস্বরূপ: 0, 0.5, 1.0, ... , 5.0 সহ। মানগুলি নিকটতম 0.5 পর্যন্ত রাউন্ড করা হয়েছে৷ উদাহরণস্বরূপ, 0.6 এর মান 1.0 এর কম রেটিং সহ সমস্ত ফলাফলকে সরিয়ে দেয়।

  • এখন খুলুন

    true হলে, ক্যোয়ারী পাঠানোর সময় ব্যবসার জন্য উন্মুক্ত শুধুমাত্র সেই জায়গাগুলি ফেরত দিন। false হলে, খোলা অবস্থা নির্বিশেষে সমস্ত ব্যবসা ফেরত দিন। Google Places ডাটাবেসে খোলার সময় নির্দিষ্ট করে না এমন জায়গাগুলি ফেরত দেওয়া হবে যদি আপনি এই প্যারামিটারটিকে false সেট করেন।

  • দামের মাত্রা

    নির্দিষ্ট মূল্য স্তরে চিহ্নিত স্থানগুলিতে অনুসন্ধান সীমাবদ্ধ করুন৷ ডিফল্ট হল সমস্ত মূল্য স্তর নির্বাচন করা।

    নিম্নলিখিত এক বা একাধিক পূর্ণসংখ্যা মানের একটি তালিকা নির্দিষ্ট করুন:

    • 1 - PRICE_LEVEL_INEXPENSIVE
    • 2 - PRICE_LEVEL_MODERATE
    • 3 - PRICE_LEVEL_EXPENSIVE
    • 4 - PRICE_LEVEL_VERY_EXPENSIVE
  • র্যাঙ্ক পছন্দ

    প্রতিক্রিয়ায় ফলাফলগুলি কীভাবে র‌্যাঙ্ক করা হয় তা নির্দিষ্ট করে। API যখন প্রযোজ্য তখন ডিফল্টরূপে RELEVANCE ব্যবহার করে। উদাহরণস্বরূপ, "নিউ ইয়র্ক সিটির রেস্তোরাঁ" এর মতো একটি প্রশ্নের জন্য RELEVANCE ডিফল্ট। ভৌগোলিক প্রশ্নগুলির জন্য, যেমন "মাউন্টেন ভিউ, CA", বা অন্যান্য ধরণের প্রশ্ন তারপরে কোন ডিফল্ট প্রয়োগ করা হয় না এবং ফলাফলগুলি ব্যাকএন্ড দ্বারা ফেরত দেওয়ার ক্রমে প্রদর্শিত হয়৷

    মান অন্তর্ভুক্ত:

    • SearchByTextRequest.RankPreference.DISTANCE : দূরত্ব অনুসারে ফলাফল ক্রম করুন।
    • SearchByTextRequest.RankPreference.RELEVANCE : প্রাসঙ্গিকতা অনুসারে ফলাফল ক্রম করুন।
  • অঞ্চল কোড

    উত্তর ফর্ম্যাট করতে ব্যবহৃত অঞ্চল কোড, একটি দুই-অক্ষরের CLDR কোড মান হিসাবে নির্দিষ্ট করা হয়েছে। এই পরামিতি অনুসন্ধান ফলাফলের উপর একটি পক্ষপাতী প্রভাব থাকতে পারে। এর কোন পূর্ব মূল্য নেই।

    উত্তরে ঠিকানা ক্ষেত্রের দেশের নাম যদি অঞ্চল কোডের সাথে মেলে, তাহলে ঠিকানা থেকে দেশের কোড বাদ দেওয়া হয়।

    কিছু উল্লেখযোগ্য ব্যতিক্রম সহ বেশিরভাগ CLDR কোডগুলি ISO 3166-1 কোডগুলির সাথে অভিন্ন৷ উদাহরণস্বরূপ, ইউনাইটেড কিংডমের ccTLD হল "uk" (.co.uk) যেখানে এর ISO 3166-1 কোড হল "gb" (প্রযুক্তিগতভাবে "The United Kingdom of Great Britain and Northern Ireland" এর সত্তার জন্য)। প্যারামিটার প্রযোজ্য আইনের উপর ভিত্তি করে ফলাফলকে প্রভাবিত করতে পারে।

  • কঠোর টাইপ ফিল্টারিং

    অন্তর্ভুক্ত টাইপ প্যারামিটারের সাথে ব্যবহৃত হয়। true সেট করা হলে, শুধুমাত্র অন্তর্ভুক্ত টাইপের দ্বারা নির্দিষ্ট করা নির্দিষ্ট প্রকারের সাথে মেলে এমন স্থানগুলি ফেরত দেওয়া হয়। false হলে, ডিফল্ট, প্রতিক্রিয়াতে এমন স্থান থাকতে পারে যা নির্দিষ্ট প্রকারের সাথে মেলে না।