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

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

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

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

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

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

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

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

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

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

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

  • NEW_ITEM - এমন একটি আইটেম যা সূচীবদ্ধ নয়।

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

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

নতুন বা পরিবর্তিত আইটেম সূচী করার জন্য সূচী সারি ব্যবহারের সংক্ষিপ্তসার

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

কন্টেন্ট কানেক্টর SDK একটি সারিতে আইটেম পুশ করার এবং সেখান থেকে আইটেম টেনে আনার জন্য অপারেশন প্রদান করে।

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

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

সারিবদ্ধ ক্রিয়াকলাপ (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 Cloud Search API Items.index অনুরোধগুলিতে মেটাডেটা এবং কন্টেন্ট হ্যাশ মান নির্দিষ্ট করতে সহায়তা করে। type নির্দিষ্ট করার পরিবর্তে, মেটাডেটা এবং/অথবা কন্টেন্ট হ্যাশ মানগুলি একটি পুশ অনুরোধের মাধ্যমে নির্দিষ্ট করা যেতে পারে। ক্লাউড অনুসন্ধান সূচীকরণ সারি প্রদত্ত হ্যাশ মানগুলিকে ডেটা উৎসে আইটেমের সাথে উপলব্ধ সঞ্চিত মানের সাথে তুলনা করে। যদি মিল না হয়, তাহলে সেই এন্ট্রিটিকে MODIFIED হিসাবে চিহ্নিত করা হয়। যদি সূচীতে কোনও সংশ্লিষ্ট আইটেম বিদ্যমান না থাকে, তাহলে স্থিতি হল NEW_ITEM

Items.poll

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

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

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