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