কাস্টম অনুসন্ধান পরামর্শ যোগ করুন

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

একবার আপনি কাস্টম পরামর্শ প্রদান করলে, আপনি সেগুলিকে সিস্টেম-ব্যাপী দ্রুত অনুসন্ধান বাক্সে উপলব্ধ করতে পারেন, আপনার অ্যাপের বাইরে থেকে আপনার সামগ্রীতে অ্যাক্সেস প্রদান করে।

আপনি কাস্টম পরামর্শ যোগ করার আগে, আপনার অ্যাপে অনুসন্ধানের জন্য Android অনুসন্ধান ডায়ালগ বা একটি অনুসন্ধান উইজেট প্রয়োগ করুন৷ একটি অনুসন্ধান ইন্টারফেস এবং সামগ্রী প্রদানকারী তৈরি করুন দেখুন।

বুনিয়াদি

চিত্র 1. কাস্টম অনুসন্ধান পরামর্শ সহ একটি অনুসন্ধান ডায়ালগের স্ক্রিনশট।

যখন ব্যবহারকারী একটি কাস্টম পরামর্শ নির্বাচন করে, সিস্টেমটি আপনার অনুসন্ধানযোগ্য কার্যকলাপে একটি Intent পাঠায়। ACTION_SEARCH ক্রিয়াকলাপের সাথে একটি অভিপ্রায় পাঠায় এমন একটি সাধারণ অনুসন্ধান ক্যোয়ারী থেকে ভিন্ন, আপনি পরিবর্তে ACTION_VIEW —অথবা অন্য কোনো অভিপ্রায় ক্রিয়া—ব্যবহার করার জন্য আপনার কাস্টম পরামর্শগুলি সংজ্ঞায়িত করতে পারেন এবং নির্বাচিত পরামর্শের সাথে প্রাসঙ্গিক ডেটাও অন্তর্ভুক্ত করতে পারেন৷ অভিধানের উদাহরণে, যখন ব্যবহারকারী একটি পরামর্শ নির্বাচন করে, অ্যাপটি মিলগুলির জন্য অভিধান অনুসন্ধান করার পরিবর্তে অবিলম্বে সেই শব্দের সংজ্ঞাটি খুলতে পারে।

কাস্টম পরামর্শ প্রদান করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  • একটি অনুসন্ধান ইন্টারফেস তৈরি করুন- এ বর্ণিত একটি মৌলিক অনুসন্ধানযোগ্য কার্যকলাপ প্রয়োগ করুন।
  • কাস্টম পরামর্শ প্রদানকারী বিষয়বস্তু প্রদানকারী সম্পর্কে তথ্য সহ অনুসন্ধানযোগ্য কনফিগারেশন পরিবর্তন করুন।
  • আপনার পরামর্শের জন্য একটি টেবিল তৈরি করুন, যেমন একটি SQLiteDatabase এ, এবং প্রয়োজনীয় কলামগুলির সাথে টেবিলটি ফর্ম্যাট করুন।
  • একটি বিষয়বস্তু প্রদানকারী তৈরি করুন যার আপনার পরামর্শ টেবিলে অ্যাক্সেস আছে এবং আপনার ম্যানিফেস্টে প্রদানকারীকে ঘোষণা করুন।
  • ব্যবহারকারী যখন একটি কাস্টম অ্যাকশন এবং কাস্টম ডেটা সহ একটি পরামর্শ নির্বাচন করেন তখন পাঠানোর Intent ধরন ঘোষণা করুন৷

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

যখন সিস্টেম শনাক্ত করে যে আপনার কার্যকলাপ অনুসন্ধানযোগ্য এবং অনুসন্ধানের পরামর্শ প্রদান করে, ব্যবহারকারী যখন একটি ক্যোয়ারী প্রবেশ করে তখন নিম্নলিখিত পদ্ধতিটি সঞ্চালিত হয়:

  1. সিস্টেম অনুসন্ধান ক্যোয়ারী টেক্সট নেয়—অর্থাৎ, এখন পর্যন্ত যা কিছু প্রবেশ করা হয়েছে—এবং আপনার বিষয়বস্তু প্রদানকারীর কাছে একটি ক্যোয়ারী করে যা আপনার পরামর্শগুলি পরিচালনা করে।
  2. আপনার সামগ্রী প্রদানকারী একটি Cursor ফেরত দেয় যা অনুসন্ধান ক্যোয়ারী পাঠ্যের সাথে প্রাসঙ্গিক সমস্ত পরামর্শের দিকে নির্দেশ করে৷
  3. সিস্টেমটি Cursor দ্বারা প্রদত্ত পরামর্শের তালিকা প্রদর্শন করে।

একবার কাস্টম পরামর্শগুলি প্রদর্শিত হলে, নিম্নলিখিতগুলি ঘটতে পারে:

  • যদি ব্যবহারকারী অন্য চিঠিতে প্রবেশ করে বা যেকোন উপায়ে ক্যোয়ারী পরিবর্তন করে, পূর্ববর্তী ধাপগুলি পুনরাবৃত্তি করে এবং সেই অনুযায়ী সাজেশন তালিকা আপডেট হয়।
  • যদি ব্যবহারকারী অনুসন্ধানটি চালায়, পরামর্শগুলি উপেক্ষা করা হয় এবং সাধারণ ACTION_SEARCH অভিপ্রায় ব্যবহার করে অনুসন্ধানটি আপনার অনুসন্ধানযোগ্য কার্যকলাপে বিতরণ করা হয়।
  • ব্যবহারকারী একটি পরামর্শ নির্বাচন করলে, আপনার অনুসন্ধানযোগ্য কার্যকলাপে একটি উদ্দেশ্য পাঠানো হয়, একটি কাস্টম অ্যাকশন এবং কাস্টম ডেটা বহন করে যাতে আপনার অ্যাপ প্রস্তাবিত সামগ্রীটি খুলতে পারে।

অনুসন্ধানযোগ্য কনফিগারেশন পরিবর্তন করুন

কাস্টম পরামর্শের জন্য সমর্থন যোগ করতে, আপনার অনুসন্ধানযোগ্য কনফিগারেশন ফাইলের <searchable> উপাদানটিতে android:searchSuggestAuthority অ্যাট্রিবিউট যোগ করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint"
    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider">
</searchable>

প্রতিটি পরামর্শের সাথে আপনি যে ধরনের অভিপ্রায় সংযুক্ত করেছেন এবং আপনি আপনার সামগ্রী প্রদানকারীকে কীভাবে প্রশ্নগুলি ফর্ম্যাট করতে চান তার উপর নির্ভর করে আপনার অতিরিক্ত বৈশিষ্ট্যের প্রয়োজন হতে পারে। অন্যান্য ঐচ্ছিক গুণাবলী নিম্নলিখিত বিভাগে আলোচনা করা হয়েছে.

একটি বিষয়বস্তু প্রদানকারী তৈরি করুন

কাস্টম পরামর্শের জন্য একটি বিষয়বস্তু প্রদানকারী তৈরি করতে, একটি বিষয়বস্তু প্রদানকারী কীভাবে তৈরি করতে হয় তা শিখতে প্রথমে বিষয়বস্তু প্রদানকারী দেখুন। কাস্টম পরামর্শের জন্য একটি বিষয়বস্তু প্রদানকারী অন্য যেকোনো সামগ্রী প্রদানকারীর মতোই। যাইহোক, আপনার দেওয়া প্রতিটি পরামর্শের জন্য, Cursor সংশ্লিষ্ট সারিতে অবশ্যই নির্দিষ্ট কলাম অন্তর্ভুক্ত থাকতে হবে যা সিস্টেম বোঝে এবং পরামর্শগুলি ফর্ম্যাট করতে ব্যবহার করে।

ব্যবহারকারী যখন অনুসন্ধান ডায়ালগ বা অনুসন্ধান উইজেটে পাঠ্য প্রবেশ করান, সিস্টেমটি আপনার বিষয়বস্তু সরবরাহকারীকে প্রতিবার একটি চিঠি প্রবেশ করার সময় query() কল করে পরামর্শের জন্য জিজ্ঞাসা করে। আপনার query() বাস্তবায়নে, আপনার বিষয়বস্তু প্রদানকারীকে অবশ্যই আপনার পরামর্শের ডেটা অনুসন্ধান করতে হবে এবং একটি Cursor ফেরত দিতে হবে যা এটি নির্ধারণ করে যে সারিগুলিকে নির্দেশ করে ভাল পরামর্শ৷

কাস্টম পরামর্শের জন্য একটি বিষয়বস্তু প্রদানকারী তৈরি করার বিষয়ে বিস্তারিত নিম্নলিখিত দুটি বিভাগে আলোচনা করা হয়েছে:

পরামর্শের প্রশ্নটি পরিচালনা করুন
কীভাবে সিস্টেম আপনার সামগ্রী প্রদানকারীকে অনুরোধ পাঠায় এবং কীভাবে সেগুলি পরিচালনা করতে হয়।
একটি সাজেশন টেবিল তৈরি করুন
প্রতিটি প্রশ্নের সাথে ফিরে আসা Cursor সিস্টেম যে কলামগুলি আশা করে তা কীভাবে সংজ্ঞায়িত করবেন।

পরামর্শের প্রশ্নটি পরিচালনা করুন

যখন সিস্টেম আপনার সামগ্রী প্রদানকারীর কাছ থেকে পরামর্শের জন্য অনুরোধ করে, তখন এটি আপনার সামগ্রী প্রদানকারীর query() পদ্ধতিকে কল করে৷ আপনার পরামর্শের ডেটা অনুসন্ধান করতে এই পদ্ধতিটি প্রয়োগ করুন এবং আপনার প্রাসঙ্গিক মনে করা পরামর্শগুলির দিকে নির্দেশ করে একটি Cursor ফেরত দিন।

আপনার query() পদ্ধতিতে সিস্টেমটি যে প্যারামিটারগুলি পাস করে তার একটি সারাংশ এখানে তালিকাভুক্ত করা হয়েছে:

  1. uri

    সর্বদা একটি বিষয়বস্তু Uri , নিম্নরূপ বিন্যাসিত:

    content://your.authority/optional.suggest.path/SUGGEST_URI_PATH_QUERY
    

    ডিফল্ট আচরণ হল সিস্টেমের জন্য এই URI পাস করার জন্য এবং এতে ক্যোয়ারী টেক্সট যোগ করা:

    content://your.authority/optional.suggest.path/SUGGEST_URI_PATH_QUERY/puppies
    

    শেষের ক্যোয়ারী পাঠ্যটি URI এনকোডিং নিয়ম ব্যবহার করে এনকোড করা হয়েছে, তাই আপনাকে অনুসন্ধান করার আগে এটিকে ডিকোড করতে হতে পারে।

    optional.suggest.path অংশটি শুধুমাত্র URI-তে অন্তর্ভুক্ত করা হয় যদি আপনি android:searchSuggestPath অ্যাট্রিবিউট সহ আপনার অনুসন্ধানযোগ্য কনফিগারেশন ফাইলে এমন একটি পথ সেট করেন। আপনি একাধিক অনুসন্ধানযোগ্য কার্যকলাপের জন্য একই সামগ্রী প্রদানকারী ব্যবহার করলেই এটি প্রয়োজনীয়। যদি এটি হয়, পরামর্শ ক্যোয়ারী উৎস দ্ব্যর্থতা.

  2. projection
    সর্বদা শূন্য।
  3. selection
    আপনার অনুসন্ধানযোগ্য কনফিগারেশন ফাইলের android:searchSuggestSelection অ্যাট্রিবিউটে প্রদত্ত মান, অথবা যদি আপনি android:searchSuggestSelection অ্যাট্রিবিউট ঘোষণা না করেন তাহলে শূন্য। নিম্নলিখিত বিভাগে এটি আরও আলোচনা করা হয়েছে।
  4. selectionArgs
    আপনি যদি আপনার অনুসন্ধানযোগ্য কনফিগারেশনে android:searchSuggestSelection বৈশিষ্ট্যটি ঘোষণা করেন তবে অ্যারের প্রথম এবং একমাত্র উপাদান হিসাবে অনুসন্ধান ক্যোয়ারী ধারণ করে৷ আপনি যদি android:searchSuggestSelection ঘোষণা না করেন, তাহলে এই প্যারামিটারটি শূন্য। নিম্নলিখিত বিভাগে এটি আরও আলোচনা করা হয়েছে।
  5. sortOrder
    সর্বদা শূন্য।

সিস্টেম আপনাকে দুটি উপায়ে অনুসন্ধান ক্যোয়ারী পাঠ্য পাঠাতে পারে। ডিফল্ট উপায় হল ক্যোয়ারী টেক্সট uri প্যারামিটারে পাস করা কন্টেন্ট URI-এর শেষ পাথ হিসেবে অন্তর্ভুক্ত করা। যাইহোক, যদি আপনি আপনার অনুসন্ধানযোগ্য কনফিগারেশনের android:searchSuggestSelection অ্যাট্রিবিউটে একটি নির্বাচন মান অন্তর্ভুক্ত করেন, তাহলে ক্যোয়ারী টেক্সটটি এর পরিবর্তে selectionArgs স্ট্রিং অ্যারের প্রথম উপাদান হিসেবে চলে যাবে। এই দুটি বিকল্প পরবর্তী বর্ণনা করা হয়.

উরিতে প্রশ্নটি পান

ডিফল্টরূপে, ক্যোয়ারীটি uri প্যারামিটারের শেষ সেগমেন্ট হিসেবে যুক্ত করা হয়—একটি Uri অবজেক্ট। এই ক্ষেত্রে ক্যোয়ারী টেক্সট পুনরুদ্ধার করতে, getLastPathSegment() ব্যবহার করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

কোটলিন

val query: String = uri.lastPathSegment.toLowerCase()

জাভা

String query = uri.getLastPathSegment().toLowerCase();

এটি Uri এর শেষ সেগমেন্টটি ফেরত দেয়, যা ব্যবহারকারীর প্রবেশ করা ক্যোয়ারী টেক্সট।

নির্বাচন আর্গুমেন্টে প্রশ্ন পান

ইউআরআই ব্যবহার করার পরিবর্তে, আপনার query() পদ্ধতিটি লুক-আপ সঞ্চালনের জন্য প্রয়োজনীয় সমস্ত কিছু গ্রহণ করার জন্য এটি আরও অর্থবহ হতে পারে এবং আপনি selection এবং selectionArgs প্যারামিটারগুলিকে উপযুক্ত মান বহন করতে চাইতে পারেন। এই ক্ষেত্রে, আপনার SQLite নির্বাচন স্ট্রিং এর সাথে আপনার অনুসন্ধানযোগ্য কনফিগারেশনে android:searchSuggestSelection অ্যাট্রিবিউট যোগ করুন। নির্বাচন স্ট্রিং-এ, প্রকৃত অনুসন্ধান ক্যোয়ারির জন্য একটি স্থানধারক হিসাবে একটি প্রশ্ন চিহ্ন ( ? ) অন্তর্ভুক্ত করুন। সিস্টেমটি selection প্যারামিটার হিসেবে সিলেকশন স্ট্রিং সহ query() কল করে এবং selectionArgs অ্যারের প্রথম উপাদান হিসেবে অনুসন্ধান ক্যোয়ারী কল করে।

উদাহরণস্বরূপ, একটি পূর্ণ-পাঠ্য অনুসন্ধান বিবৃতি তৈরি করতে আপনি কীভাবে android:searchSuggestSelection বৈশিষ্ট্য তৈরি করতে পারেন তা এখানে রয়েছে:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint"
    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:searchSuggestSelection="word MATCH ?">
</searchable>

এই কনফিগারেশনের সাথে, আপনার query() পদ্ধতি selection প্যারামিটারটিকে "word MATCH ?" এবং সার্চ ক্যোয়ারী হিসাবে selectionArgs প্যারামিটার। আপনি যখন এগুলিকে একটি SQLite query() পদ্ধতিতে পাস করেন, তাদের নিজ নিজ আর্গুমেন্ট হিসাবে, সেগুলি একসাথে সংশ্লেষিত হয়—অর্থাৎ, প্রশ্ন চিহ্নটি ক্যোয়ারী পাঠ্যের সাথে প্রতিস্থাপিত হয়। আপনি যদি এইভাবে সাজেশন ক্যোয়ারী পান এবং ক্যোয়ারী টেক্সটে ওয়াইল্ডকার্ড যোগ করতে চান, তাহলে সেগুলিকে selectionArgs প্যারামিটারে যুক্ত করুন বা উপসর্গ করুন, কারণ এই মানটি উদ্ধৃতিতে মোড়ানো হয় এবং প্রশ্ন চিহ্নের জায়গায় ঢোকানো হয়।

পূর্ববর্তী উদাহরণে আরেকটি বৈশিষ্ট্য হল android:searchSuggestIntentAction , যা ব্যবহারকারী যখন একটি পরামর্শ নির্বাচন করে তখন প্রতিটি অভিপ্রায়ের সাথে পাঠানো অভিপ্রায় ক্রিয়াকে সংজ্ঞায়িত করে৷ এটি পরামর্শ বিভাগে আরও আলোচনা করা হয়েছে।

একটি সাজেশন টেবিল তৈরি করুন

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

সিস্টেমটি বেশ কয়েকটি কলাম বোঝে, তবে তাদের মধ্যে শুধুমাত্র দুটি প্রয়োজন:

_ID
প্রতিটি পরামর্শের জন্য একটি অনন্য পূর্ণসংখ্যা সারি ID। একটি ListView এ পরামর্শ উপস্থাপন করার জন্য সিস্টেমের এটি প্রয়োজন।
SUGGEST_COLUMN_TEXT_1
একটি পরামর্শ হিসাবে উপস্থাপন করা হয় যে স্ট্রিং.

নিম্নলিখিত কলাম সব ঐচ্ছিক. বেশিরভাগই নিম্নলিখিত বিভাগে আরও আলোচনা করা হয়েছে।

SUGGEST_COLUMN_TEXT_2
একটি স্ট্রিং। যদি আপনার Cursor এই কলামটি অন্তর্ভুক্ত করে, তাহলে সমস্ত পরামর্শ একটি দুই-লাইন বিন্যাসে প্রদান করা হয়। এই কলামের স্ট্রিংটি প্রাথমিক পরামর্শ পাঠ্যের নীচে পাঠ্যের দ্বিতীয়, ছোট লাইন হিসাবে প্রদর্শিত হয়। কোন সেকেন্ডারি টেক্সট নির্দেশ করতে এটি শূন্য বা খালি হতে পারে।
SUGGEST_COLUMN_ICON_1
একটি অঙ্কনযোগ্য সম্পদ, বিষয়বস্তু বা ফাইল URI স্ট্রিং। যদি আপনার Cursor এই কলামটি অন্তর্ভুক্ত করে, তাহলে সমস্ত পরামর্শ একটি আইকন-প্লাস-টেক্সট বিন্যাসে বাম দিকে আঁকাযোগ্য আইকন সহ দেওয়া হয়। এই সারিতে কোন আইকন নেই তা বোঝাতে এটি শূন্য বা শূন্য হতে পারে।
SUGGEST_COLUMN_ICON_2
একটি অঙ্কনযোগ্য সম্পদ, বিষয়বস্তু বা ফাইল URI স্ট্রিং। যদি আপনার Cursor এই কলামটি অন্তর্ভুক্ত করে, তাহলে সমস্ত পরামর্শ একটি আইকন-প্লাস-টেক্সট বিন্যাসে ডানদিকে আইকন সহ দেওয়া হয়। এই সারিতে কোন আইকন নেই তা বোঝাতে এটি শূন্য বা শূন্য হতে পারে।
SUGGEST_COLUMN_INTENT_ACTION
একটি অভিপ্রায় কর্ম স্ট্রিং. যদি এই কলামটি বিদ্যমান থাকে এবং প্রদত্ত সারিতে একটি মান ধারণ করে, এখানে সংজ্ঞায়িত ক্রিয়াটি পরামর্শের অভিপ্রায় তৈরি করার সময় ব্যবহৃত হয়। যদি উপাদানটি প্রদান করা না হয়, তাহলে আপনার অনুসন্ধানযোগ্য কনফিগারেশনের android:searchSuggestIntentAction ক্ষেত্র থেকে পদক্ষেপ নেওয়া হয়। যদি আপনার ক্রিয়াটি সমস্ত পরামর্শের জন্য একই হয় তবে android:searchSuggestIntentAction ব্যবহার করে ক্রিয়াটি নির্দিষ্ট করা এবং এই কলামটি বাদ দেওয়া আরও কার্যকর।
SUGGEST_COLUMN_INTENT_DATA
একটি ডেটা URI স্ট্রিং। যদি এই কলামটি বিদ্যমান থাকে এবং প্রদত্ত সারিতে একটি মান ধারণ করে, তাহলে পরামর্শের উদ্দেশ্য তৈরি করার সময় এই ডেটা ব্যবহার করা হয়। যদি উপাদানটি প্রদান করা না হয়, আপনার অনুসন্ধানযোগ্য কনফিগারেশনের android:searchSuggestIntentData ফিল্ড থেকে ডেটা নেওয়া হয়৷ যদি কোন উৎস প্রদান করা না হয়, তাহলে অভিপ্রায়ের ডেটা ক্ষেত্রটি শূন্য। যদি আপনার ডেটা সমস্ত পরামর্শের জন্য একই হয়, বা একটি ধ্রুবক অংশ এবং একটি নির্দিষ্ট আইডি ব্যবহার করে বর্ণনা করা যেতে পারে, তাহলে android:searchSuggestIntentData ব্যবহার করে এটি নির্দিষ্ট করা এবং এই কলামটি বাদ দেওয়া আরও কার্যকর।
SUGGEST_COLUMN_INTENT_DATA_ID
একটি URI পাথ স্ট্রিং। যদি এই কলামটি বিদ্যমান থাকে এবং প্রদত্ত সারিতে একটি মান থাকে, তাহলে "/" এবং এই মানটি উদ্দেশ্যের ডেটা ক্ষেত্রে যুক্ত করা হয়। শুধুমাত্র অনুসন্ধানযোগ্য কনফিগারেশনে android:searchSuggestIntentData অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা ডেটা ফিল্ডটি ইতিমধ্যেই একটি উপযুক্ত বেস স্ট্রিং-এ সেট করা থাকলেই এটি ব্যবহার করুন৷
SUGGEST_COLUMN_INTENT_EXTRA_DATA
নির্বিচারে তথ্য। যদি এই কলামটি বিদ্যমান থাকে এবং একটি প্রদত্ত সারিতে একটি মান ধারণ করে, তাহলে পরামর্শের উদ্দেশ্য তৈরি করার সময় এটি অতিরিক্ত ডেটা ব্যবহার করা হয়। যদি প্রদান না করা হয়, অভিপ্রায়ের অতিরিক্ত ডেটা ক্ষেত্রটি শূন্য। এই কলামটি পরামর্শগুলিকে অতিরিক্ত ডেটা প্রদান করতে দেয় যা অভিপ্রায়ের EXTRA_DATA_KEY কী-তে অতিরিক্ত হিসাবে অন্তর্ভুক্ত করা হয়েছে৷
SUGGEST_COLUMN_QUERY
যদি এই কলামটি বিদ্যমান থাকে এবং এই উপাদানটি প্রদত্ত সারিতে বিদ্যমান থাকে, তাহলে এটি সেই ডেটা যা পরামর্শের ক্যোয়ারী তৈরি করার সময় ব্যবহার করা হয়, যা অভিপ্রায়ের QUERY কী-তে অতিরিক্ত হিসাবে অন্তর্ভুক্ত করা হয়। পরামর্শের ক্রিয়াটি ACTION_SEARCH হলে এটি প্রয়োজন, কিন্তু অন্যথায় ঐচ্ছিক৷
SUGGEST_COLUMN_SHORTCUT_ID
দ্রুত অনুসন্ধান বাক্সের জন্য পরামর্শ প্রদান করার সময় শুধুমাত্র ব্যবহার করা হয়। এই কলামটি নির্দেশ করে যে একটি অনুসন্ধানের পরামর্শ একটি শর্টকাট হিসাবে সংরক্ষণ করা আবশ্যক এবং এটি বৈধ করা আবশ্যক কিনা। ব্যবহারকারী দ্রুত অনুসন্ধান বাক্স থেকে একটি পরামর্শ আলতো চাপলে সাধারণত শর্টকাট তৈরি হয়। অনুপস্থিত থাকলে, ফলাফলটি শর্টকাট হিসাবে সংরক্ষণ করা হয় এবং কখনও রিফ্রেশ করা হয় না। SUGGEST_NEVER_MAKE_SHORTCUT এ সেট করা থাকলে, ফলাফলটি শর্টকাট হিসাবে সংরক্ষণ করা হয় না। অন্যথায়, SUGGEST_URI_PATH_SHORTCUT ব্যবহার করে একটি আপ-টু-ডেট পরামর্শের জন্য শর্টকাট আইডি ব্যবহার করা হয়।
SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING
দ্রুত অনুসন্ধান বাক্সের জন্য পরামর্শ প্রদান করার সময় শুধুমাত্র ব্যবহার করা হয়। এই কলামটি নির্দিষ্ট করে যে SUGGEST_COLUMN_ICON_2 থেকে একটি আইকনের পরিবর্তে একটি স্পিনার অবশ্যই দেখানো হবে যখন এই পরামর্শের শর্টকাটটি দ্রুত অনুসন্ধান বাক্সে রিফ্রেশ হচ্ছে৷

এই কলামগুলির বেশিরভাগই নিম্নলিখিত বিভাগে আরও আলোচনা করা হয়েছে।

পরামর্শের জন্য একটি অভিপ্রায় ঘোষণা করুন

ব্যবহারকারী অনুসন্ধান ডায়ালগ বা উইজেটের অধীনে প্রদর্শিত তালিকা থেকে একটি পরামর্শ নির্বাচন করলে, সিস্টেম আপনার অনুসন্ধানযোগ্য কার্যকলাপে একটি কাস্টম Intent পাঠায়। আপনি অভিপ্রায় জন্য কর্ম এবং ডেটা সংজ্ঞায়িত করতে হবে.

অভিপ্রায় কর্ম ঘোষণা

একটি কাস্টম পরামর্শের জন্য সবচেয়ে সাধারণ অভিপ্রায় ক্রিয়া হল ACTION_VIEW , যা উপযুক্ত যখন আপনি কিছু খুলতে চান, যেমন একটি শব্দের সংজ্ঞা, একজন ব্যক্তির যোগাযোগের তথ্য, বা একটি ওয়েব পৃষ্ঠা৷ যাইহোক, অভিপ্রায় ক্রিয়া অন্য যেকোন ক্রিয়া হতে পারে এবং প্রতিটি পরামর্শের জন্য আলাদা হতে পারে।

আপনি সমস্ত পরামর্শ একই অভিপ্রায় ক্রিয়া ব্যবহার করতে চান কিনা তার উপর নির্ভর করে, আপনি দুটি উপায়ে ক্রিয়াটি সংজ্ঞায়িত করতে পারেন:

  • আপনার অনুসন্ধানযোগ্য কনফিগারেশন ফাইলের android:searchSuggestIntentAction বৈশিষ্ট্যটি ব্যবহার করুন সমস্ত পরামর্শের জন্য অ্যাকশনটি সংজ্ঞায়িত করতে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
    <?xml version="1.0" encoding="utf-8"?>
    <searchable xmlns:android="http://schemas.android.com/apk/res/android"
        android:label="@string/app_label"
        android:hint="@string/search_hint"
        android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"
        android:searchSuggestIntentAction="android.intent.action.VIEW" >
    </searchable>
    
  • পৃথক পরামর্শের জন্য ক্রিয়াটি সংজ্ঞায়িত করতে SUGGEST_COLUMN_INTENT_ACTION কলামটি ব্যবহার করুন৷ এটি করার জন্য, আপনার পরামর্শের টেবিলে SUGGEST_COLUMN_INTENT_ACTION কলামটি যোগ করুন এবং প্রতিটি পরামর্শের জন্য এটিতে ব্যবহার করার জন্য অ্যাকশন রাখুন—যেমন "android.intent.action.VIEW"

আপনি এই দুটি কৌশল একত্রিত করতে পারেন। উদাহরণস্বরূপ, আপনি android:searchSuggestIntentAction বৈশিষ্ট্যটি ডিফল্টরূপে সমস্ত পরামর্শের সাথে ব্যবহার করার জন্য একটি ক্রিয়া সহ অন্তর্ভুক্ত করতে পারেন, তারপর SUGGEST_COLUMN_INTENT_ACTION কলামে একটি ভিন্ন ক্রিয়া ঘোষণা করে কিছু পরামর্শের জন্য এই ক্রিয়াটিকে ওভাররাইড করুন৷ আপনি যদি SUGGEST_COLUMN_INTENT_ACTION কলামে একটি মান অন্তর্ভুক্ত না করেন, তাহলে android:searchSuggestIntentAction অ্যাট্রিবিউটে দেওয়া উদ্দেশ্য ব্যবহার করা হয়।

অভিপ্রায় তথ্য ঘোষণা

যখন ব্যবহারকারী একটি পরামর্শ নির্বাচন করেন, তখন আপনার অনুসন্ধানযোগ্য কার্যকলাপ আপনার সংজ্ঞায়িত কর্মের সাথে অভিপ্রায় গ্রহণ করে — যেমনটি পূর্ববর্তী বিভাগে আলোচনা করা হয়েছে — তবে কোন পরামর্শটি নির্বাচন করা হয়েছে তা সনাক্ত করতে অভিপ্রায় আপনার কার্যকলাপের ডেটাও বহন করতে হবে৷ বিশেষভাবে, প্রতিটি পরামর্শের জন্য ডেটা অবশ্যই অনন্য কিছু হতে হবে, যেমন আপনার SQLite টেবিলের সাজেশনের জন্য সারি আইডি। অভিপ্রায় প্রাপ্ত হলে, আপনি getData() বা getDataString() দিয়ে সংযুক্ত ডেটা পুনরুদ্ধার করতে পারেন।

আপনি উদ্দেশ্য সহ অন্তর্ভুক্ত ডেটা দুটি উপায়ে সংজ্ঞায়িত করতে পারেন:

  • আপনার পরামর্শ টেবিলের SUGGEST_COLUMN_INTENT_DATA কলামের মধ্যে প্রতিটি পরামর্শের জন্য ডেটা সংজ্ঞায়িত করুন।

    SUGGEST_COLUMN_INTENT_DATA কলামটি অন্তর্ভুক্ত করে এবং তারপর প্রতিটি সারির জন্য অনন্য ডেটা দিয়ে এটিকে পপুলেট করে প্রস্তাবনা সারণীতে প্রতিটি উদ্দেশ্যের জন্য প্রয়োজনীয় সমস্ত ডেটা তথ্য প্রদান করুন৷ এই কলামের ডেটা আপনি এই কলামে যেভাবে সংজ্ঞায়িত করেছেন ঠিক সেইভাবে উদ্দেশ্যের সাথে সংযুক্ত করা হয়েছে। তারপর আপনি getData() বা getDataString() দিয়ে এটি পুনরুদ্ধার করতে পারেন।

  • একটি ডেটা URI কে দুই ভাগে ভাগ করুন: অংশটি সকল পরামর্শের জন্য সাধারণ এবং প্রতিটি পরামর্শের জন্য অনন্য অংশ। এই অংশগুলিকে যথাক্রমে অনুসন্ধানযোগ্য কনফিগারেশনের android:searchSuggestintentData অ্যাট্রিবিউট এবং আপনার পরামর্শ টেবিলের SUGGEST_COLUMN_INTENT_DATA_ID কলামে রাখুন।

    নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে ইউআরআই-এর অংশটি ঘোষণা করা যায় যা আপনার অনুসন্ধানযোগ্য কনফিগারেশনের android:searchSuggestIntentData বৈশিষ্ট্যের সমস্ত পরামর্শের জন্য সাধারণ:

      <?xml version="1.0" encoding="utf-8"?>
      <searchable xmlns:android="http://schemas.android.com/apk/res/android"
          android:label="@string/app_label"
          android:hint="@string/search_hint"
          android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"
          android:searchSuggestIntentAction="android.intent.action.VIEW"
          android:searchSuggestIntentData="content://com.example/datatable" >
      </searchable>
      

    আপনার পরামর্শ টেবিলের SUGGEST_COLUMN_INTENT_DATA_ID কলামে প্রতিটি পরামর্শের জন্য চূড়ান্ত পথটি অন্তর্ভুক্ত করুন—অনন্য অংশ। যখন ব্যবহারকারী একটি পরামর্শ নির্বাচন করে, সিস্টেমটি android:searchSuggestIntentData থেকে স্ট্রিং নেয়, একটি স্ল্যাশ ( / ) যুক্ত করে এবং তারপর একটি সম্পূর্ণ সামগ্রী URI তৈরি করতে SUGGEST_COLUMN_INTENT_DATA_ID কলাম থেকে সংশ্লিষ্ট মান যোগ করে। তারপর আপনি getData() দিয়ে Uri পুনরুদ্ধার করতে পারেন।

আরো তথ্য যোগ করুন

আপনি যদি আপনার অভিপ্রায়ের সাথে আরও তথ্য প্রকাশ করতে চান, আপনি অন্য একটি টেবিল কলাম যোগ করতে পারেন, যেমন SUGGEST_COLUMN_INTENT_EXTRA_DATA , যা প্রস্তাবনা সম্পর্কে অতিরিক্ত তথ্য সঞ্চয় করতে পারে৷ এই কলামে সংরক্ষিত ডেটা উদ্দেশ্যের অতিরিক্ত বান্ডেলের EXTRA_DATA_KEY এ রাখা হয়েছে।

অভিপ্রায় সামলাও

আপনি কাস্টম অভিপ্রায় সহ কাস্টম অনুসন্ধান পরামর্শ প্রদান করার পরে, ব্যবহারকারী যখন একটি পরামর্শ নির্বাচন করেন তখন এই উদ্দেশ্যগুলি পরিচালনা করার জন্য আপনার অনুসন্ধানযোগ্য কার্যকলাপের প্রয়োজন৷ এটি ACTION_SEARCH অভিপ্রায় পরিচালনার অতিরিক্ত, যা আপনার অনুসন্ধানযোগ্য কার্যকলাপ ইতিমধ্যেই করে। আপনার কার্যকলাপের onCreate() কলব্যাকের সময় আপনি কীভাবে উদ্দেশ্যগুলি পরিচালনা করতে পারেন তার একটি উদাহরণ এখানে রয়েছে:

কোটলিন

when(intent.action) {
    Intent.ACTION_SEARCH -> {
        // Handle the normal search query case.
        intent.getStringExtra(SearchManager.QUERY)?.also { query ->
            doSearch(query)
        }
    }
    Intent.ACTION_VIEW -> {
        // Handle a suggestions click, because the suggestions all use ACTION_VIEW.
        showResult(intent.data)
    }
}

জাভা

Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
    // Handle the normal search query case.
    String query = intent.getStringExtra(SearchManager.QUERY);
    doSearch(query);
} else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
    // Handle a suggestions click, because the suggestions all use ACTION_VIEW.
    Uri data = intent.getData();
    showResult(data);
}

এই উদাহরণে, উদ্দেশ্য ক্রিয়াটি হল ACTION_VIEW এবং ডেটা প্রস্তাবিত আইটেমটির দিকে নির্দেশ করে একটি সম্পূর্ণ URI বহন করে, যেমনটি android:searchSuggestIntentData স্ট্রিং এবং SUGGEST_COLUMN_INTENT_DATA_ID কলাম দ্বারা সংশ্লেষিত। URI তারপর স্থানীয় showResult() পদ্ধতিতে চলে যায় যা URI দ্বারা নির্দিষ্ট আইটেমের জন্য সামগ্রী প্রদানকারীকে জিজ্ঞাসা করে।

ক্যোয়ারী টেক্সট পুনরায় লিখুন

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

আপনি নিম্নলিখিত উপায়ে ক্যোয়ারী পাঠ্যটি পুনরায় লিখতে পারেন:

  • "queryRewriteFromText" মান দিয়ে আপনার অনুসন্ধানযোগ্য কনফিগারেশনে android:searchMode অ্যাট্রিবিউট যোগ করুন। এই ক্ষেত্রে, পরামর্শের SUGGEST_COLUMN_TEXT_1 কলামের বিষয়বস্তু ক্যোয়ারী টেক্সট পুনরায় লেখার জন্য ব্যবহার করা হয়।
  • "queryRewriteFromData" মান সহ আপনার অনুসন্ধানযোগ্য\ কনফিগারেশনে android:searchMode বৈশিষ্ট্য যোগ করুন। এই ক্ষেত্রে, পরামর্শের SUGGEST_COLUMN_INTENT_DATA কলামের বিষয়বস্তু ক্যোয়ারী টেক্সট পুনরায় লেখার জন্য ব্যবহার করা হয়। এটি শুধুমাত্র ইউআরআই বা অন্যান্য ডেটা ফরম্যাটের সাথে ব্যবহার করুন যা ব্যবহারকারীর জন্য দৃশ্যমান, যেমন HTTP ইউআরএল। এইভাবে ক্যোয়ারী পুনরায় লেখার জন্য অভ্যন্তরীণ URI স্কিম ব্যবহার করবেন না।
  • আপনার পরামর্শ টেবিলের SUGGEST_COLUMN_QUERY কলামে একটি অনন্য ক্যোয়ারী পাঠ্য স্ট্রিং প্রদান করুন। যদি এই কলামটি উপস্থিত থাকে এবং বর্তমান পরামর্শের জন্য একটি মান ধারণ করে, তাহলে এটি ক্যোয়ারী টেক্সট পুনরায় লিখতে এবং পূর্ববর্তী বাস্তবায়নের যেকোনো একটিকে ওভাররাইড করতে ব্যবহৃত হয়।

দ্রুত অনুসন্ধান বাক্সে অনুসন্ধান পরামর্শ প্রকাশ করুন

একবার আপনি কাস্টম অনুসন্ধান পরামর্শ প্রদানের জন্য আপনার অ্যাপটি কনফিগার করলে, সেগুলিকে বিশ্বব্যাপী অ্যাক্সেসযোগ্য দ্রুত অনুসন্ধান বাক্সে উপলব্ধ করা android:includeInGlobalSearch মান "true" অন্তর্ভুক্ত করার জন্য আপনার অনুসন্ধানযোগ্য কনফিগারেশন পরিবর্তন করার মতোই সহজ৷

যখন আপনার সামগ্রী প্রদানকারী একটি পড়ার অনুমতি দাবি করে তখনই অতিরিক্ত কাজ করা প্রয়োজন। সেই ক্ষেত্রে, আপনাকে আপনার সামগ্রী প্রদানকারীকে দ্রুত অনুসন্ধান বাক্স পড়ার অ্যাক্সেস প্রদানের জন্য প্রদানকারীর জন্য একটি <path-permission> উপাদান যোগ করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<provider android:name="MySuggestionProvider"
          android:authorities="com.example.MyCustomSuggestionProvider"
          android:readPermission="com.example.provider.READ_MY_DATA"
          android:writePermission="com.example.provider.WRITE_MY_DATA">
  <path-permission android:pathPrefix="/search_suggest_query"
                   android:readPermission="android.permission.GLOBAL_SEARCH" />
</provider>

এই উদাহরণে, প্রদানকারী বিষয়বস্তু পড়তে এবং লেখার অ্যাক্সেস সীমাবদ্ধ করে। <path-permission> উপাদানটি "android.permission.GLOBAL_SEARCH" অনুমতি থাকা অবস্থায় "/search_suggest_query" পাথ প্রিফিক্সের ভিতরে সামগ্রীতে পড়ার অ্যাক্সেস মঞ্জুর করে সীমাবদ্ধতা সংশোধন করে। এটি দ্রুত অনুসন্ধান বাক্সে অ্যাক্সেস মঞ্জুর করে যাতে এটি পরামর্শের জন্য আপনার সামগ্রী প্রদানকারীকে জিজ্ঞাসা করতে পারে৷

যদি আপনার বিষয়বস্তু প্রদানকারী পঠন অনুমতি প্রয়োগ না করে, তাহলে দ্রুত অনুসন্ধান বাক্স ডিফল্টরূপে এটি পড়ে।

একটি ডিভাইসে পরামর্শ সক্রিয় করুন

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

দ্রুত অনুসন্ধান বাক্সে উপলব্ধ প্রতিটি অ্যাপের অনুসন্ধানযোগ্য আইটেম সেটিংস পৃষ্ঠায় একটি এন্ট্রি রয়েছে৷ এন্ট্রিতে অ্যাপের নাম এবং অ্যাপ থেকে কোন বিষয়বস্তু অনুসন্ধানযোগ্য তার একটি সংক্ষিপ্ত বিবরণ রয়েছে এবং দ্রুত অনুসন্ধান বাক্সে পরামর্শের জন্য উপলব্ধ করা হয়েছে। আপনার অনুসন্ধানযোগ্য অ্যাপের জন্য বর্ণনা পাঠ্য সংজ্ঞায়িত করতে, আপনার অনুসন্ধানযোগ্য কনফিগারেশনে android:searchSettingsDescription বৈশিষ্ট্যটি যোগ করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint"
    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:includeInGlobalSearch="true"
    android:searchSettingsDescription="@string/search_description" >
</searchable>

android:searchSettingsDescription এর জন্য স্ট্রিংটি যতটা সম্ভব সংক্ষিপ্ত করুন এবং অনুসন্ধানযোগ্য বিষয়বস্তু উল্লেখ করুন। উদাহরণস্বরূপ, একটি সঙ্গীত অ্যাপের জন্য "শিল্পী, অ্যালবাম এবং ট্র্যাক" বা একটি নোটপ্যাড অ্যাপের জন্য "সংরক্ষিত নোট"৷ এই বিবরণ প্রদান করা গুরুত্বপূর্ণ যাতে ব্যবহারকারী জানেন কি ধরনের পরামর্শ প্রদান করা হয়েছে। android:includeInGlobalSearch সত্য হলে সর্বদা এই বৈশিষ্ট্যটি অন্তর্ভুক্ত করুন।

কারণ ব্যবহারকারীকে আপনার অ্যাপের জন্য অনুসন্ধানের পরামর্শগুলি সক্ষম করতে সেটিংস মেনুতে যেতে হবে, যদি অনুসন্ধানটি আপনার অ্যাপের একটি গুরুত্বপূর্ণ দিক হয় তবে কীভাবে তা আপনার ব্যবহারকারীদের কাছে পৌঁছে দেওয়া যায় তা বিবেচনা করুন। উদাহরণস্বরূপ, আপনি একটি নোট প্রদান করতে পারেন যখন একজন ব্যবহারকারী প্রথমবার অ্যাপটি চালু করেন যেটি ব্যাখ্যা করে যে কীভাবে দ্রুত অনুসন্ধান বাক্সের জন্য অনুসন্ধান পরামর্শগুলি সক্ষম করতে হয়৷

দ্রুত অনুসন্ধান বাক্স পরামর্শ শর্টকাট পরিচালনা করুন

ব্যবহারকারী কুইক সার্চ বক্স থেকে যে পরামর্শগুলি নির্বাচন করে তা স্বয়ংক্রিয়ভাবে শর্টকাট তৈরি করা যেতে পারে। এগুলি এমন পরামর্শ যা সিস্টেম আপনার সামগ্রী প্রদানকারীর কাছ থেকে অনুলিপি করে যাতে এটি আপনার সামগ্রী প্রদানকারীকে পুনরায় জিজ্ঞাসা করার প্রয়োজন ছাড়াই দ্রুত পরামর্শটি অ্যাক্সেস করতে পারে৷

ডিফল্টরূপে, দ্রুত অনুসন্ধান বাক্স দ্বারা পুনরুদ্ধার করা সমস্ত পরামর্শের জন্য এটি সক্ষম করা হয়েছে, কিন্তু যদি আপনার পরামর্শের ডেটা সময়ের সাথে পরিবর্তিত হয়, তাহলে আপনি শর্টকাটগুলিকে রিফ্রেশ করার অনুরোধ করতে পারেন৷ উদাহরণস্বরূপ, যদি আপনার পরামর্শগুলি ডায়নামিক ডেটার উল্লেখ করে, যেমন একটি পরিচিতির উপস্থিতি স্থিতি, তাহলে ব্যবহারকারীকে দেখানো হলে পরামর্শ শর্টকাটগুলি রিফ্রেশ করার অনুরোধ করুন৷ এটি করার জন্য, আপনার পরামর্শ সারণীতে SUGGEST_COLUMN_SHORTCUT_ID অন্তর্ভুক্ত করুন৷ আপনি নিম্নলিখিত উপায়ে প্রতিটি পরামর্শের জন্য শর্টকাট আচরণ কনফিগার করতে এই কলামটি ব্যবহার করতে পারেন:

  • পরামর্শ শর্টকাটের একটি নতুন সংস্করণের জন্য দ্রুত অনুসন্ধান বাক্সকে আপনার সামগ্রী প্রদানকারীকে পুনরায় জিজ্ঞাসা করুন৷

    SUGGEST_COLUMN_SHORTCUT_ID কলামে একটি মান প্রদান করুন যাতে প্রতিবার শর্টকাট প্রদর্শিত হলে একটি নতুন সংস্করণের জন্য পুনরায় জিজ্ঞাসা করা যায়৷ রিফ্রেশ ক্যোয়ারী রিফ্রেশ না হওয়া পর্যন্ত শর্টকাটটি সাম্প্রতিক সময়ে পাওয়া যাই হোক না কেন ডেটার সাথে দ্রুত প্রদর্শন করে, এই সময়ে পরামর্শটি নতুন তথ্যের সাথে রিফ্রেশ করা হয়। রিফ্রেশ ক্যোয়ারী SUGGEST_URI_PATH_QUERY এর পরিবর্তে SUGGEST_URI_PATH_SHORTCUT এর একটি URI পাথ সহ আপনার সামগ্রী প্রদানকারীকে পাঠানো হয়।

    আপনি Cursor ফেরত দিয়েছেন তাতে মূল পরামর্শের মতো একই কলাম ব্যবহার করে একটি পরামর্শ রাখুন বা খালি রাখুন, ইঙ্গিত করে যে শর্টকাটটি আর বৈধ নয়—এই ক্ষেত্রে, পরামর্শটি অদৃশ্য হয়ে যায় এবং শর্টকাটটি সরানো হয়।

    যদি কোনও পরামর্শ এমন ডেটার উল্লেখ করে যা রিফ্রেশ হতে বেশি সময় নিতে পারে, যেমন একটি নেটওয়ার্ক-ভিত্তিক রিফ্রেশ, আপনি SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING কলামটি সঠিক মান সহ আপনার পরামর্শ টেবিলে যোগ করতে পারেন যাতে ডানদিকের আইকনের জন্য একটি অগ্রগতি স্পিনার দেখানো হয় রিফ্রেশ সম্পূর্ণ সত্য ছাড়া অন্য কোনো মান অগ্রগতি স্পিনার দেখায় না।

  • পরামর্শটিকে একেবারে শর্টকাটে কপি করা থেকে বিরত রাখুন।

    SUGGEST_COLUMN_SHORTCUT_ID কলামে SUGGEST_NEVER_MAKE_SHORTCUT এর একটি মান দিন৷ এই ক্ষেত্রে, পরামর্শটি কখনই শর্টকাটে অনুলিপি করা হয় না। এটি শুধুমাত্র তখনই প্রয়োজনীয় যদি আপনি পূর্বে অনুলিপি করা প্রস্তাবনাটি উপস্থিত হতে চান না৷ আপনি যদি কলামের জন্য একটি স্বাভাবিক মান প্রদান করেন, তাহলে রিফ্রেশ ক্যোয়ারী ফিরে না আসা পর্যন্ত সাজেশন শর্টকাটটি প্রদর্শিত হবে।

  • ডিফল্ট শর্টকাট আচরণ প্রযোজ্য হতে দিন।

    পরিবর্তন হয় না এবং শর্টকাট হিসাবে সংরক্ষণ করা যেতে পারে এমন প্রতিটি পরামর্শের জন্য SUGGEST_COLUMN_SHORTCUT_ID খালি রাখুন৷

যদি আপনার কোনো প্রস্তাবনা পরিবর্তন না হয়, তাহলে আপনার SUGGEST_COLUMN_SHORTCUT_ID কলামের প্রয়োজন নেই৷

কুইক সার্চ বক্স সাজেশন র‍্যাঙ্কিং সম্পর্কে

একবার আপনি দ্রুত অনুসন্ধান বাক্সে আপনার অ্যাপের অনুসন্ধান পরামর্শগুলি উপলব্ধ করলে, দ্রুত অনুসন্ধান বাক্সের র‍্যাঙ্কিং নির্ধারণ করে যে পরামর্শগুলি একটি নির্দিষ্ট প্রশ্নের জন্য ব্যবহারকারীর কাছে কীভাবে উপস্থিত হবে৷ এটি নির্ভর করতে পারে অন্য কতগুলি অ্যাপের সেই প্রশ্নের জন্য ফলাফল রয়েছে এবং ব্যবহারকারী অন্যান্য অ্যাপের তুলনায় কত ঘন ঘন আপনার ফলাফল নির্বাচন করে। আপনার পরামর্শগুলি কীভাবে র‌্যাঙ্ক করা হয়েছে বা প্রদত্ত প্রশ্নের জন্য আপনার অ্যাপের পরামর্শগুলি আদৌ দেখাবে কিনা সে সম্পর্কে কোনও গ্যারান্টি নেই৷ সাধারণভাবে, মানসম্পন্ন ফলাফল প্রদান করলে আপনার অ্যাপের প্রস্তাবনাগুলি একটি বিশিষ্ট অবস্থানে প্রদানের সম্ভাবনা বৃদ্ধি পায় এবং যে অ্যাপগুলি নিম্নমানের পরামর্শ প্রদান করে সেগুলিকে নিম্ন র‍্যাঙ্ক করা বা প্রদর্শিত না হওয়ার সম্ভাবনা বেশি।