قوائم انتظار فهرسة Google Cloud Search

تسمح حزمة تطوير البرامج (SDK) للموصل وواجهة برمجة التطبيقات Google Cloud Search API بإنشاء قوائم انتظار الفهرسة في Cloud Search المستخدمة لتنفيذ المهام التالية:

  • يمكنك الحفاظ على حالة كل مستند (الحالة وقيم التجزئة وما إلى ذلك) التي يمكن استخدامها للحفاظ على مزامنة الفهرس مع المستودع.

  • الاحتفاظ بقائمة بالعناصر التي تريد فهرستها عند اكتشافها أثناء عملية الاجتياز.

  • يمكنك منح الأولوية للعناصر في قوائم الانتظار بناءً على حالة العنصر.

  • يمكنك الاحتفاظ بمعلومات حالة إضافية لتحقيق تكامل فعال مثل نقاط الفحص وتغيير الرمز المميز وما إلى ذلك.

قائمة الانتظار هي تسمية يتم تعيينها لعنصر مفهرس، مثل "الافتراضية" لقائمة الانتظار الافتراضية أو "B" لقائمة الانتظار "ب".

الحالة والأولوية

تستند أولوية المستند في قائمة الانتظار إلى رمز ItemStatus. في ما يلي رموز ItemStatus المحتملة حسب الأولوية (يتم التعامل معها أولاً قبل الانتهاء منها):

  • ERROR: حدث خطأ غير متزامن في العنصر أثناء عملية الفهرسة ويجب إعادة فهرسته.

  • MODIFIED: العنصر الذي سبق أن تمت فهرسته وتم تعديله في المستودع منذ آخر عملية فهرسة

  • NEW_ITEM: عنصر غير مفهرس

  • ACCEPTED - المستند الذي تمت فهرسته سابقًا ولم يتم تغييره في المستودع منذ آخر عملية فهرسة

عندما يكون هناك نفس الحالة لعنصرين في قائمة الانتظار، يتم منح أولوية أعلى للعناصر التي كانت في قائمة الانتظار لأطول فترة زمنية.

نظرة عامة على استخدام قوائم انتظار الفهرسة لفهرسة عنصر جديد أو تم تغييره

يعرض الشكل 1 خطوات فهرسة عنصر جديد أو تم تغييره باستخدام قائمة انتظار فهرسة. تعرض هذه الخطوات طلبات البيانات من واجهة برمجة التطبيقات REST. للحصول على طلبات مكافئة لحزمة تطوير البرامج (SDK)، يُرجى الاطّلاع على العمليات في قائمة انتظار (حزمة تطوير البرامج (SDK) للموصل).

نظرة عامة على فهرسة Google Cloud Search
الشكل 1. خطوات الفهرسة لإضافة عنصر أو تعديله
  1. يستخدم موصِّل المحتوى items.push لإرسال العناصر (البيانات الوصفية والتجزئة) إلى قائمة انتظار الفهرسة لتحديد حالة العنصر (MODIFIED أو NEW_ITEM أو DELETED)، وتحديدًا:

    • عند الدفع، يشتمل الموصِّل بشكل واضح على رمز الدفع type أو contentHash.
    • إذا لم يتضمّن الموصِّل type، سيستخدم Cloud Search contentHash تلقائيًا لتحديد حالة العنصر.
    • إذا كان العنصر غير معروف، يتم ضبط حالته على NEW_ITEM.
    • في حال توفّر العنصر وتطابُق قيم التجزئة، يتم الاحتفاظ بالحالة ACCEPTED.
    • في حال توفّر العنصر واختلاف علامات التجزئة، تصبح الحالة MODIFIED.

    لمزيد من المعلومات حول كيفية تحديد حالة العنصر، يمكنك الاطّلاع على رمز نموذج اجتياز مستودعات GitHub في الدليل التعليمي حول بدء استخدام Cloud Search.

    عادة ما يرتبط الدفع بعمليات اجتياز المحتوى و/أو اكتشاف التغيير في الموصل.

  2. يستخدم موصِّل المحتوى items.poll لاستطلاع قائمة الانتظار لتحديد العناصر المراد فهرستها. تخبر خدمة Cloud Search الموصِّل بالعناصر الأكثر احتياجًا إلى الفهرسة، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت في قائمة الانتظار.

  3. يسترد الموصل هذه العناصر من المستودع وينشئ طلبات واجهة برمجة التطبيقات للفهرسة.

  4. يستخدم الموصِّل items.index لفهرسة العناصر. لا يدخل العنصر إلى الحالة ACCEPTED إلا بعد انتهاء Cloud Search من معالجة العنصر بنجاح.

يمكن للموصل أيضًا حذف عنصر إذا لم يعد موجودًا في المستودع، أو دفعه مرة أخرى إذا لم يتم تعديله أو إذا كان هناك خطأ في مستودع المصدر. للحصول على معلومات حول عمليات حذف العناصر، راجع القسم التالي.

نظرة عامة على استخدام قوائم انتظار الفهرسة لحذف عنصر

تستخدم استراتيجية الاجتياز الكامل عملية في قائمتَي انتظار لفهرسة العناصر ورصد عمليات الحذف. يوضح الشكل 2 خطوات حذف عنصر باستخدام قائمتي انتظار للفهرسة. على وجه التحديد، يوضح الشكل 2 الاجتياز الثاني الذي تم إجراؤه باستخدام استراتيجية الاجتياز الكامل. تستخدم هذه الخطوات طلبات البيانات من واجهة برمجة التطبيقات REST. للحصول على طلبات SDK المكافئة، ارجع إلى عمليات قائمة الانتظار (حزمة تطوير البرامج (SDK) للموصل).

نظرة عامة على فهرسة Google Cloud Search
الشكل 2. حذف العناصر
  1. عند الاجتياز الأولي، يستخدم موصِّل المحتوى items.push لدفع العناصر (البيانات الوصفية والتجزئة) إلى قائمة انتظار الفهرسة، حيث يتم تطبيق "قائمة الانتظار أ" على NEW_ITEM لأنّها غير متوفّرة في قائمة الانتظار. يتم تعيين التسمية "A" لكل عنصر لـ "قائمة الانتظار أ". تمت فهرسة المحتوى في Cloud Search.

  2. يستخدم موصِّل المحتوى items.poll لقائمة انتظار الاستطلاع A لتحديد العناصر المراد فهرستها. تخبر خدمة Cloud Search الموصِّل بالعناصر الأكثر احتياجًا إلى الفهرسة، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت في قائمة الانتظار.

  3. يسترد الموصل هذه العناصر من المستودع وينشئ طلبات واجهة برمجة التطبيقات للفهرسة.

  4. يستخدم الموصِّل items.index لفهرسة العناصر. لا يدخل العنصر إلى الحالة ACCEPTED إلا بعد انتهاء Cloud Search من معالجة العنصر بنجاح.

  5. يتم استدعاء الطريقة deleteQueueItems في "قائمة الانتظار ب". ولكن، لم يتم دفع أي عناصر إلى قائمة الانتظار ب، لذلك لا يمكن حذف أي شيء.

  6. في الاجتياز الثاني الكامل، يستخدم موصِّل المحتوى items.push لدفع العناصر (البيانات الوصفية والتجزئة) إلى قائمة الانتظار (ب):

    • عند الدفع، يشتمل الموصِّل بشكل واضح على رمز الدفع type أو contentHash.
    • إذا لم يتضمّن الموصِّل type، سيستخدم Cloud Search contentHash تلقائيًا لتحديد حالة العنصر.
    • إذا كان العنصر غير معروف، يتم ضبط حالته على NEW_ITEM وتغيير تصنيف قائمة المحتوى التالي إلى "B".
    • إذا كان العنصر موجودًا وتتطابق قيم التجزئة، يتم الاحتفاظ بالحالة ACCEPTED ويتم تغيير تصنيف قائمة الانتظار إلى "B".
    • إذا كان العنصر متوفرًا واختلفت علامات التجزئة، ستصبح الحالة MODIFIED وسيتم تغيير تصنيف قائمة الانتظار إلى "B".
  7. يستخدم موصِّل المحتوى items.poll لاستطلاع قائمة الانتظار لتحديد العناصر المراد فهرستها. تخبر خدمة Cloud Search الموصِّل بالعناصر الأكثر احتياجًا إلى الفهرسة، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت في قائمة الانتظار.

  8. يسترد الموصل هذه العناصر من المستودع وينشئ طلبات واجهة برمجة التطبيقات للفهرسة.

  9. يستخدم الموصِّل items.index لفهرسة العناصر. لا يدخل العنصر إلى الحالة ACCEPTED إلا بعد انتهاء Cloud Search من معالجة العنصر بنجاح.

  10. أخيرًا، يتم استدعاء الرمز deleteQueueItems في قائمة الانتظار أ لحذف جميع عناصر CCloud Search التي تمت فهرستها سابقًا والتي لا تزال تحمل التصنيف "A" في قائمة الانتظار.

  11. فمع عمليات الاجتياز الكاملة اللاحقة، يتم تبديل قائمة الانتظار المستخدمة للفهرسة وقائمة الانتظار المستخدمة للحذف.

عمليات قائمة الانتظار (حزمة تطوير البرامج للموصل)

توفر حزمة SDK لـ Content Connector عمليات لإرسال العناصر إلى قائمة انتظار وسحبها منها.

لإضافة عنصر إلى قائمة الانتظار ووضعه في مجموعة، استخدِم فئة أداة إنشاء pushItems.

لا تحتاج إلى القيام بأي شيء محدد لسحب العناصر من قائمة انتظار المعالجة. وبدلاً من ذلك، تسحب حزمة تطوير البرامج (SDK) تلقائيًا العناصر من قائمة الانتظار بترتيب الأولوية باستخدام طريقة الفئة RepositorygetDoc.

عمليات قائمة الانتظار (REST API)

توفر واجهة برمجة تطبيقات REST الطريقتين التاليتين لإرسال العناصر إلى وسحب العناصر من قائمة الانتظار:

  • لإرسال عنصر إلى قائمة المحتوى التالي، استخدِم Items.push.
  • لإجراء استطلاع رأي في القائمة، استخدِم Items.poll.

يمكنك أيضًا استخدام السمة Items.index لإرسال العناصر إلى قائمة المحتوى التالي أثناء الفهرسة. لا تتطلّب العناصر التي يتم دفعها إلى قائمة الانتظار أثناء الفهرسة علامة type ويتم تلقائيًا تحديد الحالة ACCEPTED لها.

Items.push

تضيف الطريقة Items.push أرقام التعريف إلى قائمة الانتظار. يمكن استدعاء هذه الطريقة بقيمة type محددة تحدد نتيجة عملية الإرسال. للحصول على قائمة بقيم type، راجِع الحقل item.type في طريقة Items.push.

يؤدي دفع معرّف جديد إلى إضافة إدخال جديد بالرمز NEW_ITEM ItemStatus.

يتم دائمًا تخزين الحمولة الاختيارية ومعالجتها كقيمة مبهمة، ويتم عرضها من Items.poll.

عند إجراء استطلاع رأي بشأن عنصر، يتم حجزه ما يعني أنّه لا يمكن إرجاعه من خلال استدعاء آخر إلى Items.poll. يؤدي استخدام Items.push مع type مثل NOT_MODIFIED أو REPOSITORY_ERROR أو REQUEUE إلى عدم حجز إدخالات الاستطلاعات. لمزيد من المعلومات حول الإدخالات المحجوزة وغير المحجوزة، يُرجى الرجوع إلى القسم Items.poll.

Items.push مع علامات التجزئة

تتيح Google Cloud Search API تحديد البيانات الوصفية وقيم تجزئة المحتوى في طلبات Items.index. بدلاً من تحديد type، يمكن تحديد البيانات الوصفية و/أو قيم تجزئة المحتوى من خلال طلب الإرسال. تقارن قائمة انتظار الفهرسة في Cloud Search قيم التجزئة المقدَّمة بالقيم المخزَّنة المتاحة مع العنصر في مصدر البيانات. وفي حال عدم التطابق، يتم وضع علامة MODIFIED على هذا الإدخال. في حالة عدم وجود عنصر مطابق في الفهرس، تكون الحالة هي NEW_ITEM.

Items.poll

تسترد الطريقة Items.poll الإدخالات ذات الأولوية القصوى من قائمة الانتظار. تشير قيم الحالات المطلوبة والتي تم عرضها إلى حالات قوائم انتظار الأولوية المطلوبة أو حالة أرقام التعريف المعروضة.

يمكن إرجاع الإدخالات من أي قسم من قائمة الانتظار بشكل افتراضي بناءً على الأولوية. يتم حجز كل إدخال تم إرجاعه، ولا يتم إرجاعه من خلال الطلبات الأخرى إلى Items.poll حتى يتم استيفاء إحدى الحالات التالية:

  • انتهت مهلة الحجز.
  • أدرج Items.index الإدخال في قائمة الانتظار مرة أخرى.
  • يتم استدعاء الدالة Items.push باستخدام type قيمة NOT_MODIFIED أو REPOSITORY_ERROR أو REQUEUE.