تتيح حزمة تطوير البرامج (SDK) الخاصة بالموصّل وGoogle Cloud Search API إنشاء قوائم انتظار الفهرسة في Cloud Search التي تُستخدَم لتنفيذ المهام التالية:
الحفاظ على حالة كل مستند (الحالة وقيم التجزئة وما إلى ذلك) التي يمكن استخدامها للحفاظ على مزامنة الفهرس مع المستودع
الاحتفاظ بقائمة بالعناصر التي سيتم فهرسة محتواها أثناء عملية الزحف
تحديد أولويات العناصر في قوائم الانتظار استنادًا إلى حالة العنصر
الاحتفاظ بمعلومات حالة إضافية لدمج البيانات بكفاءة، مثل نقاط التحقّق ورمز التغيير وما إلى ذلك
قائمة الانتظار هي تصنيف يتم تعيينه لعنصر مفهرس، مثل "تلقائي" لقائمة الانتظار التلقائية أو "ب" لقائمة الانتظار "ب".
الحالة والأولوية
تستند أولوية المستند في قائمة الانتظار إلى رمز
ItemStatus
. في ما يلي رموز
ItemStatus
المحتملة بترتيب الأولوية (يتم التعامل معها من الأعلى إلى الأسفل):
ERROR
- حدث خطأ غير متزامن أثناء عملية الفهرسة ويجب إعادة فهرسة العنصر.
MODIFIED
: عنصر تمت فهرسته سابقًا وتم تعديله منذ ذلك الحين في المستودع منذ آخر عملية فهرسة
NEW_ITEM
: عنصر غير مفهرسACCEPTED
: مستند تمت فهرسته سابقًا ولم يتغير في المستودع منذ آخر عملية فهرسة.
عندما يكون لعنصرَين في قائمة الانتظار الحالة نفسها، تُمنح الأولوية للعناصر التي بقيت في قائمة الانتظار لأطول فترة زمنية.
نظرة عامة على استخدام قوائم انتظار الفهرسة لفهرسة عنصر جديد أو معدَّل
يعرض الشكل 1 خطوات فهرسة عنصر جديد أو معدَّل باستخدام قائمة انتظار الفهرسة. تعرض هذه الخطوات طلبات بيانات من واجهة REST API. للاطّلاع على طلبات حزمة تطوير البرامج (SDK) المكافئة، يُرجى الرجوع إلى عمليات قائمة الانتظار (حزمة تطوير البرامج الخاصة بأداة الربط).

يستخدم موصّل المحتوى
items.push
لنقل العناصر (البيانات الوصفية والتجزئة) إلى قائمة انتظار الفهرسة من أجل تحديد حالة العنصر (MODIFIED
وNEW_ITEM
وDELETED
). إليك التفاصيل:- عند إرسال البيانات، يتضمّن الموصل بشكل صريح عملية إرسال
type
أوcontentHash
. - إذا لم يتضمّن الموصل السمة
type
، سيستخدم Cloud Search تلقائيًا السمةcontentHash
لتحديد حالة العنصر. - إذا كان العنصر غير معروف، يتم ضبط حالة العنصر على
NEW_ITEM
. - إذا كان العنصر متوفّرًا وتتطابق قيم التجزئة، تظل الحالة
ACCEPTED
. - إذا كان العنصر متوفّرًا وكانت رموز التجزئة مختلفة، ستصبح الحالة
MODIFIED
.
لمزيد من المعلومات حول كيفية تحديد حالة العنصر، راجِع نموذج الرمز Traversing the GitHub repositories في البرنامج التعليمي حول كيفية بدء استخدام Cloud Search.
عادةً، يرتبط الإرسال بعمليات التنقّل في المحتوى و/أو رصد التغييرات في الموصل.
- عند إرسال البيانات، يتضمّن الموصل بشكل صريح عملية إرسال
يستخدم موصّل المحتوى
items.poll
لإجراء استطلاع في قائمة الانتظار لتحديد العناصر التي سيتم فهرسها. يُخبر Cloud Search الموصل بالعناصر التي تحتاج إلى الفهرسة بشكل أكبر، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت الذي استغرقته في قائمة الانتظار.يستردّ الموصل هذه العناصر من المستودع وينشئ طلبات Index API.
يستخدم الموصّل
items.index
لفهرسة العناصر. لا تنتقل الحالة إلىACCEPTED
إلا بعد أن تنتهي Cloud Search من معالجة العنصر بنجاح.
يمكن للموصل أيضًا حذف عنصر إذا لم يعُد متوفّرًا في المستودع، أو إعادة إرسال عنصر إذا لم يتم تعديله أو إذا حدث خطأ في مستودع المصدر. للحصول على معلومات حول عمليات حذف العناصر، يُرجى الاطّلاع على القسم التالي.
نظرة عامة على استخدام قوائم انتظار الفهرسة لحذف عنصر
تستخدم استراتيجية التنقّل الكامل عملية تتضمّن قائمتَي انتظار لفهرسة العناصر ورصد عمليات الحذف. تعرض الصورة 2 خطوات حذف عنصر باستخدام قائمتَي انتظار للفهرسة. على وجه التحديد، يعرض الشكل 2 عملية الاجتياز الثانية التي تم تنفيذها باستخدام استراتيجية الاجتياز الكامل. تستخدِم هذه الخطوات طلبات REST API. للاطّلاع على مكافئات طلبات حزمة تطوير البرامج (SDK)، يُرجى الرجوع إلى عمليات قائمة الانتظار (حزمة تطوير البرامج الخاصة بأداة الربط).

عند إجراء عملية الزحف الأولية، يستخدم موصّل المحتوى
items.push
لدفع العناصر (البيانات الوصفية والتجزئة) إلى قائمة انتظار الفهرسة، "قائمة الانتظار أ"، باعتبارهاNEW_ITEM
لأنّها غير متوفّرة في قائمة الانتظار. يتم تخصيص التصنيف "أ" لكل عنصر في "قائمة الانتظار أ". يتم فهرسة المحتوى في Cloud Search.يستخدم موصّل المحتوى
items.poll
لإجراء استطلاع في قائمة الانتظار A لتحديد العناصر التي سيتم فهرسها. يُخبر Cloud Search الموصل بالعناصر التي تحتاج إلى الفهرسة بشكل أكبر، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت الذي استغرقته في قائمة الانتظار.يستردّ الموصل هذه العناصر من المستودع وينشئ طلبات Index API.
يستخدم الموصّل
items.index
لفهرسة العناصر. لا تنتقل الحالة إلىACCEPTED
إلا بعد أن تنتهي Cloud Search من معالجة العنصر بنجاح.يتم استدعاء الطريقة
deleteQueueItems
في "قائمة الانتظار B". ولكن لم تتم إضافة أي عناصر إلى قائمة الانتظار B، وبالتالي لا يمكن حذف أي عناصر.في عملية الاجتياز الكاملة الثانية، يستخدم موصّل المحتوى
items.push
لنقل العناصر (البيانات الوصفية والتجزئة) إلى قائمة الانتظار B:- عند إرسال البيانات، يتضمّن الموصل بشكل صريح عملية إرسال
type
أوcontentHash
. - إذا لم يتضمّن الموصل السمة
type
، سيستخدم Cloud Search تلقائيًا السمةcontentHash
لتحديد حالة العنصر. - إذا كان العنصر غير معروف، يتم ضبط حالة العنصر على
NEW_ITEM
وتغيير تصنيف قائمة الانتظار إلى "B". - إذا كان العنصر متوفّرًا وتتطابق قيم التجزئة، تبقى الحالة
ACCEPTED
ويتم تغيير تصنيف قائمة الانتظار إلى "B". - إذا كان العنصر متوفّرًا وكانت قيم التجزئة مختلفة، ستتغيّر الحالة إلى
MODIFIED
وسيتم تغيير تصنيف قائمة الانتظار إلى "B".
- عند إرسال البيانات، يتضمّن الموصل بشكل صريح عملية إرسال
يستخدم موصّل المحتوى
items.poll
لإجراء استطلاع في قائمة الانتظار لتحديد العناصر التي سيتم فهرسها. يُخبر Cloud Search الموصل بالعناصر التي تحتاج إلى الفهرسة بشكل أكبر، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت الذي استغرقته في قائمة الانتظار.يستردّ الموصل هذه العناصر من المستودع وينشئ طلبات Index API.
يستخدم الموصّل
items.index
لفهرسة العناصر. لا تنتقل الحالة إلىACCEPTED
إلا بعد أن تنتهي Cloud Search من معالجة العنصر بنجاح.أخيرًا، يتم استدعاء
deleteQueueItems
في قائمة الانتظار A لحذف جميع عناصر CCloud Search التي تمت فهرستها سابقًا والتي لا يزال لديها تصنيف قائمة انتظار "A".في عمليات التنقّل الكاملة اللاحقة، يتم تبديل قائمة الانتظار المستخدَمة للفهرسة بقائمة الانتظار المستخدَمة للحذف.
عمليات قائمة الانتظار (حزمة تطوير البرامج (SDK) الخاصة بأداة الربط)
توفّر حزمة تطوير البرامج (SDK) الخاصة بأداة ربط المحتوى عمليات لإضافة عناصر إلى قائمة انتظار واسترداد عناصر منها.
لتجميع عنصر وإرساله إلى قائمة انتظار، استخدِم فئة pushItems
builder.
ليس عليك اتّخاذ أي إجراءات محدّدة لسحب عناصر من قائمة انتظار بغرض معالجتها. بدلاً من ذلك، تسحب حزمة SDK العناصر تلقائيًا من قائمة الانتظار حسب الأولوية باستخدام طريقة getDoc
في فئة Repository.
عمليات قائمة الانتظار (REST API)
توفّر واجهة REST API الطريقتَين التاليتَين لنقل العناصر إلى قائمة انتظار واستردادها منها:
- لدفع عنصر إلى قائمة انتظار، استخدِم
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
.