Google ক্লাউড সার্চ ইনডেক্সিং সারি

সংযোগকারী SDK এবং Google ক্লাউড অনুসন্ধান API নিম্নলিখিত কাজগুলি সম্পাদন করতে ব্যবহৃত ক্লাউড অনুসন্ধান সূচী সারি তৈরি করার অনুমতি দেয়:

  • প্রতি-নথির অবস্থা বজায় রাখুন (স্থিতি, হ্যাশ মান, এবং তাই) যা আপনার সূচিকে আপনার সংগ্রহস্থলের সাথে সিঙ্ক রাখতে ব্যবহার করা যেতে পারে।

  • ট্র্যাভার্সাল প্রক্রিয়া চলাকালীন আবিষ্কৃত হিসাবে সূচীকৃত আইটেমগুলির একটি তালিকা বজায় রাখুন।

  • আইটেমের অবস্থার উপর ভিত্তি করে সারিতে থাকা আইটেমগুলিকে অগ্রাধিকার দিন।

  • দক্ষ একীকরণের জন্য অতিরিক্ত রাষ্ট্রীয় তথ্য বজায় রাখুন যেমন চেকপয়েন্ট, টোকেন পরিবর্তন, ইত্যাদি।

একটি সারি হল একটি সূচীকৃত আইটেমের জন্য নির্ধারিত একটি লেবেল, যেমন ডিফল্ট সারির জন্য "ডিফল্ট" বা সারির B-এর জন্য "B"।

স্থিতি এবং অগ্রাধিকার

একটি সারিতে একটি নথির অগ্রাধিকার তার ItemStatus কোডের উপর ভিত্তি করে। নিম্নলিখিত সম্ভাব্য ItemStatus কোডগুলি অগ্রাধিকারের ক্রমানুসারে রয়েছে (প্রথমে পরিচালনা করা থেকে শেষটি পরিচালনা করা হয়েছে):

  • ERROR - সূচীকরণ প্রক্রিয়া চলাকালীন আইটেমটি অ্যাসিঙ্ক্রোনাস ত্রুটির সম্মুখীন হয়েছে এবং পুনরায় সূচীকরণ করা প্রয়োজন৷

  • MODIFIED - আইটেম যা পূর্বে সূচিত করা হয়েছিল এবং শেষ সূচীকরণের পর থেকে সংগ্রহস্থলে পরিবর্তন করা হয়েছে৷

  • NEW_ITEM - আইটেম যা ইন্ডেক্স করা হয়নি।

  • ACCEPTED - নথি যা পূর্বে সূচীকৃত ছিল এবং শেষ সূচীকরণের পর থেকে সংগ্রহস্থলে পরিবর্তিত হয়নি।

যখন একটি সারিতে থাকা দুটি আইটেমের একই অবস্থা থাকে, তখন সেই আইটেমগুলিকে উচ্চ অগ্রাধিকার দেওয়া হয় যা দীর্ঘতম সময়ের জন্য সারিতে রয়েছে।

একটি নতুন বা পরিবর্তিত আইটেম সূচীতে ইন্ডেক্সিং সারি ব্যবহার করার ওভারভিউ

চিত্র 1 একটি ইনডেক্সিং সারি ব্যবহার করে একটি নতুন বা পরিবর্তিত আইটেমকে ইন্ডেক্স করার ধাপগুলি দেখায়৷ এই পদক্ষেপগুলি REST API কলগুলি দেখায়৷ সমতুল্য SDK কলের জন্য, সারি অপারেশন (সংযোগকারী SDK) পড়ুন।

Google ক্লাউড সার্চ ইনডেক্সিংয়ের ওভারভিউ
চিত্র 1. একটি আইটেম যোগ বা আপডেট করার জন্য সূচীকরণের ধাপ
  1. বিষয়বস্তু সংযোগকারী আইটেমগুলির স্থিতি ( MODIFIED , NEW_ITEM , DELETED ) স্থাপন করতে আইটেমগুলিকে (মেটাডেটা এবং হ্যাশ) একটি ইন্ডেক্সিং সারিতে পুশ করতে items.push ব্যবহার করে৷ বিশেষভাবে:

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

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

    সাধারণত, ধাক্কাটি সংযোগকারীতে বিষয়বস্তু ট্রাভার্সাল এবং/অথবা পরিবর্তন সনাক্তকরণ প্রক্রিয়ার সাথে যুক্ত থাকে।

  2. বিষয়বস্তু সংযোগকারী সূচীতে আইটেম নির্ধারণ করতে সারিতে পোল করতে items.poll ব্যবহার করে। ক্লাউড সার্চ সংযোগকারীকে বলে যে কোন আইটেমগুলিকে সূচীকরণের সবচেয়ে বেশি প্রয়োজন, প্রথমে স্ট্যাটাস কোড এবং তারপর টাইম-ইন-কিউ অনুসারে সাজানো হয়।

  3. সংযোগকারী এই আইটেমগুলি সংগ্রহস্থল থেকে পুনরুদ্ধার করে এবং সূচক API অনুরোধ তৈরি করে।

  4. সংযোগকারী আইটেম সূচী করতে items.index ব্যবহার করে। ক্লাউড সার্চ সফলভাবে আইটেমটির প্রক্রিয়াকরণ শেষ করার পরে আইটেমটি শুধুমাত্র ACCEPTED অবস্থায় প্রবেশ করে৷

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

একটি আইটেম মুছে ফেলার জন্য ইন্ডেক্সিং সারি ব্যবহার করার ওভারভিউ

সম্পূর্ণ-ট্র্যাভার্সাল কৌশলটি আইটেমগুলিকে সূচী করতে এবং মুছে ফেলার সনাক্ত করতে একটি দ্বি-সারি প্রক্রিয়া ব্যবহার করে। চিত্র 2 দুটি ইনডেক্সিং সারি ব্যবহার করে একটি আইটেম মুছে ফেলার পদক্ষেপগুলি দেখায়৷ বিশেষভাবে, চিত্র 2 একটি সম্পূর্ণ-ট্রাভার্সাল কৌশল ব্যবহার করে সম্পাদিত দ্বিতীয় ট্রাভার্সাল দেখায়। এই পদক্ষেপগুলি REST API কলগুলি ব্যবহার করে৷ সমতুল্য SDK কলের জন্য, সারি অপারেশন (সংযোগকারী SDK) পড়ুন।

Google ক্লাউড সার্চ ইনডেক্সিংয়ের ওভারভিউ
চিত্র 2. আইটেম মুছে ফেলা হচ্ছে
  1. প্রাথমিক ট্রাভার্সালে, বিষয়বস্তু সংযোগকারী আইটেমগুলিকে (মেটাডেটা এবং হ্যাশ) একটি ইন্ডেক্সিং সারিতে পুশ করতে items.push ব্যবহার করে, "কিউ A" কে NEW_ITEM হিসাবে সারিতে বিদ্যমান নেই। প্রতিটি আইটেমকে "সারি A" এর জন্য "A" লেবেল বরাদ্দ করা হয়েছে। বিষয়বস্তু ক্লাউড অনুসন্ধানে ইন্ডেক্স করা হয়েছে।

  2. বিষয়বস্তু সংযোগকারী সূচীতে আইটেম নির্ধারণ করতে পোল সারি A-তে items.poll ব্যবহার করে। ক্লাউড সার্চ সংযোগকারীকে বলে যে কোন আইটেমগুলিকে সূচীকরণের সবচেয়ে বেশি প্রয়োজন, প্রথমে স্ট্যাটাস কোড এবং তারপর টাইম-ইন-কিউ অনুসারে সাজানো হয়।

  3. সংযোগকারী এই আইটেমগুলি সংগ্রহস্থল থেকে পুনরুদ্ধার করে এবং সূচক API অনুরোধ তৈরি করে।

  4. সংযোগকারী আইটেম সূচী করতে items.index ব্যবহার করে। ক্লাউড সার্চ সফলভাবে আইটেমটির প্রক্রিয়াকরণ শেষ করার পরে আইটেমটি শুধুমাত্র ACCEPTED অবস্থায় প্রবেশ করে৷

  5. deleteQueueItems পদ্ধতিটিকে "কিউ বি"-তে বলা হয়। কিন্তু, B সারিতে কোনো আইটেম পুশ করা হয়নি, তাই কিছুই মুছে ফেলা যাবে না।

  6. দ্বিতীয় পূর্ণ ট্রাভার্সালে, বিষয়বস্তু সংযোগকারী আইটেমগুলিকে (মেটাডেটা এবং হ্যাশ) সারিতে B তে পুশ করতে items.push ব্যবহার করে:

    • পুশ করার সময়, সংযোগকারী স্পষ্টভাবে একটি পুশ type বা contentHash অন্তর্ভুক্ত করে।
    • যদি সংযোগকারী type অন্তর্ভুক্ত না করে, তাহলে ক্লাউড অনুসন্ধান স্বয়ংক্রিয়ভাবে আইটেমের স্থিতি নির্ধারণ করতে contentHash ব্যবহার করে।
    • আইটেমটি অজানা হলে, আইটেমের স্থিতি NEW_ITEM এ সেট করা হয় এবং কিউ লেবেলটি "B" এ পরিবর্তিত হয়।
    • যদি আইটেমটি বিদ্যমান থাকে এবং হ্যাশ মান মেলে, স্ট্যাটাসটি ACCEPTED হিসাবে রাখা হয় এবং কিউ লেবেলটি "B" এ পরিবর্তিত হয়।
    • যদি আইটেমটি বিদ্যমান থাকে এবং হ্যাশগুলি ভিন্ন হয়, তাহলে স্থিতিটি MODIFIED হয়ে যায় এবং কিউ লেবেলটি "B" এ পরিবর্তিত হয়।
  7. বিষয়বস্তু সংযোগকারী সূচীতে আইটেম নির্ধারণ করতে সারিতে পোল করতে items.poll ব্যবহার করে। ক্লাউড সার্চ সংযোগকারীকে বলে যে কোন আইটেমগুলিকে সূচীকরণের সবচেয়ে বেশি প্রয়োজন, প্রথমে স্ট্যাটাস কোড এবং তারপর টাইম-ইন-কিউ অনুসারে সাজানো হয়।

  8. সংযোগকারী এই আইটেমগুলি সংগ্রহস্থল থেকে পুনরুদ্ধার করে এবং সূচক API অনুরোধ তৈরি করে।

  9. সংযোগকারী আইটেম সূচী করতে items.index ব্যবহার করে। ক্লাউড সার্চ সফলভাবে আইটেমটির প্রক্রিয়াকরণ শেষ করার পরে আইটেমটি শুধুমাত্র ACCEPTED অবস্থায় প্রবেশ করে৷

  10. অবশেষে, deleteQueueItems সারি A-তে বলা হয় যে সমস্ত পূর্বে সূচীকৃত CCloud অনুসন্ধান আইটেমগুলিতে এখনও একটি সারি "A" লেবেল রয়েছে।

  11. পরবর্তী সম্পূর্ণ ট্রাভার্সালের সাথে, সূচীকরণের জন্য ব্যবহৃত সারি এবং মুছে ফেলার জন্য ব্যবহৃত সারি অদলবদল করা হয়।

সারি ক্রিয়াকলাপ (সংযোগকারী SDK)

বিষয়বস্তু সংযোগকারী SDK একটি সারিতে আইটেমগুলিকে ঠেলে দেওয়া এবং আইটেমগুলিকে টেনে আনার জন্য ক্রিয়াকলাপ প্রদান করে।

একটি আইটেমকে সারিতে প্যাকেজ করতে এবং পুশ করতে, pushItems বিল্ডার ক্লাস ব্যবহার করুন।

প্রক্রিয়াকরণের জন্য একটি সারি থেকে আইটেমগুলি টানতে আপনাকে নির্দিষ্ট কিছু করার দরকার নেই। পরিবর্তে, রিপোজিটরি ক্লাসের getDoc পদ্ধতি ব্যবহার করে, SDK স্বয়ংক্রিয়ভাবে কিউ থেকে আইটেমগুলিকে অগ্রাধিকার ক্রমে টেনে আনে।

সারি অপারেশন (REST API)

REST API আইটেমগুলিকে একটি সারি থেকে আইটেমগুলিকে ঠেলে দেওয়ার জন্য নিম্নলিখিত দুটি পদ্ধতি প্রদান করে:

  • একটি আইটেমকে একটি সারিতে ঠেলে দিতে, Items.push ব্যবহার করুন।
  • সারিতে আইটেম পোল করতে, Items.poll ব্যবহার করুন।

আপনি সূচীকরণের সময় আইটেমগুলিকে সারিতে পুশ করতে Items.index ব্যবহার করতে পারেন। সূচীকরণের সময় সারিতে ঠেলে দেওয়া আইটেমগুলির জন্য কোনও type প্রয়োজন হয় না এবং স্বয়ংক্রিয়ভাবে ACCEPTED স্থিতি বরাদ্দ করা হয়৷

Items.push

Items.push পদ্ধতি সারিতে আইডি যোগ করে। এই পদ্ধতিটিকে একটি নির্দিষ্ট type মান দিয়ে বলা যেতে পারে যা পুশ অপারেশনের ফলাফল নির্ধারণ করে। type মানগুলির তালিকার জন্য, Items.push পদ্ধতিতে item.type ক্ষেত্রটি পড়ুন।

একটি নতুন আইডি পুশ করার ফলে একটি NEW_ITEM ItemStatus কোড সহ একটি নতুন এন্ট্রি যুক্ত হয়৷

ঐচ্ছিক পেলোড সবসময় সংরক্ষণ করা হয়, একটি অস্বচ্ছ মান হিসাবে গণ্য করা হয় এবং Items.poll থেকে ফেরত দেওয়া হয়।

যখন একটি আইটেম পোল করা হয়, তখন এটি সংরক্ষিত থাকে যার অর্থ Items.poll এ অন্য একটি কল দ্বারা এটি ফেরত দেওয়া যাবে না। NOT_MODIFIED , REPOSITORY_ERROR , বা REQUEUE type সহ Items.push ব্যবহার করে, পোল করা এন্ট্রিগুলি সংরক্ষণ করা হয় না । সংরক্ষিত এবং অসংরক্ষিত এন্ট্রি সম্পর্কে আরও তথ্যের জন্য, Items.poll বিভাগে পড়ুন..

হ্যাশ সহ Items.push

Google ক্লাউড অনুসন্ধান API Items.index অনুরোধগুলিতে মেটাডেটা এবং সামগ্রী হ্যাশ মানগুলি নির্দিষ্ট করা সমর্থন করে৷ type নির্দিষ্ট করার পরিবর্তে, মেটাডেটা এবং/অথবা বিষয়বস্তু হ্যাশ মান একটি পুশ অনুরোধের সাথে নির্দিষ্ট করা যেতে পারে। ক্লাউড সার্চ ইন্ডেক্সিং কিউ প্রদত্ত হ্যাশ মানগুলিকে ডেটা উৎসে আইটেমের সাথে উপলব্ধ সঞ্চিত মানগুলির সাথে তুলনা করে৷ অমিল হলে, সেই এন্ট্রিটিকে MODIFIED হিসেবে চিহ্নিত করা হয়। যদি একটি সংশ্লিষ্ট আইটেম সূচীতে বিদ্যমান না থাকে, তাহলে স্থিতি হল NEW_ITEM

Items.poll

Items.poll পদ্ধতি সারি থেকে সর্বোচ্চ অগ্রাধিকারের এন্ট্রিগুলি পুনরুদ্ধার করে৷ অনুরোধ করা এবং ফেরত দেওয়া স্ট্যাটাস মানগুলি অনুরোধ করা অগ্রাধিকার সারির অবস্থা(গুলি) বা ফেরত আইডিগুলির স্থিতি নির্দেশ করে৷

ডিফল্টরূপে, অগ্রাধিকারের ভিত্তিতে, সারির যেকোনো বিভাগ থেকে এন্ট্রি ফেরত দেওয়া যেতে পারে। প্রতিটি প্রত্যাবর্তিত এন্ট্রি সংরক্ষিত, এবং নিম্নলিখিত ক্ষেত্রেগুলির মধ্যে একটি পূরণ না হওয়া পর্যন্ত Items.poll এ অন্যান্য কল দ্বারা ফেরত দেওয়া হয় না:

  • রিজার্ভেশন বার আউট.
  • এন্ট্রিটি আবার Items.index দ্বারা সারিবদ্ধ করা হয়েছে।
  • Items.push NOT_MODIFIED , REPOSITORY_ERROR , বা REQUEUE type মান দিয়ে ডাকা হয়৷