تسمح حزمة تطوير البرامج (SDK) للموصل وواجهة برمجة التطبيقات Google Cloud Search API بإنشاء قوائم انتظار الفهرسة في Cloud Search المستخدمة لتنفيذ المهام التالية:
يمكنك الحفاظ على حالة كل مستند (الحالة وقيم التجزئة وما إلى ذلك) التي يمكن استخدامها للحفاظ على مزامنة الفهرس مع المستودع.
الاحتفاظ بقائمة بالعناصر التي تريد فهرستها عند اكتشافها أثناء عملية الاجتياز.
يمكنك منح الأولوية للعناصر في قوائم الانتظار بناءً على حالة العنصر.
يمكنك الاحتفاظ بمعلومات حالة إضافية لتحقيق تكامل فعال مثل نقاط الفحص وتغيير الرمز المميز وما إلى ذلك.
قائمة الانتظار هي تسمية يتم تعيينها لعنصر مفهرس، مثل "الافتراضية" لقائمة الانتظار الافتراضية أو "B" لقائمة الانتظار "ب".
الحالة والأولوية
تستند أولوية المستند في قائمة الانتظار إلى رمز
ItemStatus
. في ما يلي رموز
ItemStatus
المحتملة حسب الأولوية (يتم التعامل معها أولاً قبل الانتهاء منها):
ERROR
: حدث خطأ غير متزامن في العنصر أثناء عملية الفهرسة ويجب إعادة فهرسته.MODIFIED
: العنصر الذي سبق أن تمت فهرسته وتم تعديله في المستودع منذ آخر عملية فهرسةNEW_ITEM
: عنصر غير مفهرسACCEPTED
- المستند الذي تمت فهرسته سابقًا ولم يتم تغييره في المستودع منذ آخر عملية فهرسة
عندما يكون هناك نفس الحالة لعنصرين في قائمة الانتظار، يتم منح أولوية أعلى للعناصر التي كانت في قائمة الانتظار لأطول فترة زمنية.
نظرة عامة على استخدام قوائم انتظار الفهرسة لفهرسة عنصر جديد أو تم تغييره
يعرض الشكل 1 خطوات فهرسة عنصر جديد أو تم تغييره باستخدام قائمة انتظار فهرسة. تعرض هذه الخطوات طلبات البيانات من واجهة برمجة التطبيقات REST. للحصول على طلبات مكافئة لحزمة تطوير البرامج (SDK)، يُرجى الاطّلاع على العمليات في قائمة انتظار (حزمة تطوير البرامج (SDK) للموصل).
![نظرة عامة على فهرسة Google Cloud Search](https://developers.google.cn/static/cloud-search/images/architecture-queues-add.png?authuser=7&hl=ar)
يستخدم موصِّل المحتوى
items.push
لإرسال العناصر (البيانات الوصفية والتجزئة) إلى قائمة انتظار الفهرسة لتحديد حالة العنصر (MODIFIED
أوNEW_ITEM
أوDELETED
)، وتحديدًا:- عند الدفع، يشتمل الموصِّل بشكل واضح على رمز الدفع
type
أوcontentHash
. - إذا لم يتضمّن الموصِّل
type
، سيستخدم Cloud SearchcontentHash
تلقائيًا لتحديد حالة العنصر. - إذا كان العنصر غير معروف، يتم ضبط حالته على
NEW_ITEM
. - في حال توفّر العنصر وتطابُق قيم التجزئة، يتم الاحتفاظ بالحالة
ACCEPTED
. - في حال توفّر العنصر واختلاف علامات التجزئة، تصبح الحالة
MODIFIED
.
لمزيد من المعلومات حول كيفية تحديد حالة العنصر، يمكنك الاطّلاع على رمز نموذج اجتياز مستودعات GitHub في الدليل التعليمي حول بدء استخدام Cloud Search.
عادة ما يرتبط الدفع بعمليات اجتياز المحتوى و/أو اكتشاف التغيير في الموصل.
- عند الدفع، يشتمل الموصِّل بشكل واضح على رمز الدفع
يستخدم موصِّل المحتوى
items.poll
لاستطلاع قائمة الانتظار لتحديد العناصر المراد فهرستها. تخبر خدمة Cloud Search الموصِّل بالعناصر الأكثر احتياجًا إلى الفهرسة، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت في قائمة الانتظار.يسترد الموصل هذه العناصر من المستودع وينشئ طلبات واجهة برمجة التطبيقات للفهرسة.
يستخدم الموصِّل
items.index
لفهرسة العناصر. لا يدخل العنصر إلى الحالةACCEPTED
إلا بعد انتهاء Cloud Search من معالجة العنصر بنجاح.
يمكن للموصل أيضًا حذف عنصر إذا لم يعد موجودًا في المستودع، أو دفعه مرة أخرى إذا لم يتم تعديله أو إذا كان هناك خطأ في مستودع المصدر. للحصول على معلومات حول عمليات حذف العناصر، راجع القسم التالي.
نظرة عامة على استخدام قوائم انتظار الفهرسة لحذف عنصر
تستخدم استراتيجية الاجتياز الكامل عملية في قائمتَي انتظار لفهرسة العناصر ورصد عمليات الحذف. يوضح الشكل 2 خطوات حذف عنصر باستخدام قائمتي انتظار للفهرسة. على وجه التحديد، يوضح الشكل 2 الاجتياز الثاني الذي تم إجراؤه باستخدام استراتيجية الاجتياز الكامل. تستخدم هذه الخطوات طلبات البيانات من واجهة برمجة التطبيقات REST. للحصول على طلبات SDK المكافئة، ارجع إلى عمليات قائمة الانتظار (حزمة تطوير البرامج (SDK) للموصل).
![نظرة عامة على فهرسة Google Cloud Search](https://developers.google.cn/static/cloud-search/images/architecture-queues-delete.png?authuser=7&hl=ar)
عند الاجتياز الأولي، يستخدم موصِّل المحتوى
items.push
لدفع العناصر (البيانات الوصفية والتجزئة) إلى قائمة انتظار الفهرسة، حيث يتم تطبيق "قائمة الانتظار أ" علىNEW_ITEM
لأنّها غير متوفّرة في قائمة الانتظار. يتم تعيين التسمية "A" لكل عنصر لـ "قائمة الانتظار أ". تمت فهرسة المحتوى في Cloud Search.يستخدم موصِّل المحتوى
items.poll
لقائمة انتظار الاستطلاع A لتحديد العناصر المراد فهرستها. تخبر خدمة Cloud Search الموصِّل بالعناصر الأكثر احتياجًا إلى الفهرسة، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت في قائمة الانتظار.يسترد الموصل هذه العناصر من المستودع وينشئ طلبات واجهة برمجة التطبيقات للفهرسة.
يستخدم الموصِّل
items.index
لفهرسة العناصر. لا يدخل العنصر إلى الحالةACCEPTED
إلا بعد انتهاء Cloud Search من معالجة العنصر بنجاح.يتم استدعاء الطريقة
deleteQueueItems
في "قائمة الانتظار ب". ولكن، لم يتم دفع أي عناصر إلى قائمة الانتظار ب، لذلك لا يمكن حذف أي شيء.في الاجتياز الثاني الكامل، يستخدم موصِّل المحتوى
items.push
لدفع العناصر (البيانات الوصفية والتجزئة) إلى قائمة الانتظار (ب):- عند الدفع، يشتمل الموصِّل بشكل واضح على رمز الدفع
type
أوcontentHash
. - إذا لم يتضمّن الموصِّل
type
، سيستخدم Cloud SearchcontentHash
تلقائيًا لتحديد حالة العنصر. - إذا كان العنصر غير معروف، يتم ضبط حالته على
NEW_ITEM
وتغيير تصنيف قائمة المحتوى التالي إلى "B". - إذا كان العنصر موجودًا وتتطابق قيم التجزئة، يتم الاحتفاظ بالحالة
ACCEPTED
ويتم تغيير تصنيف قائمة الانتظار إلى "B". - إذا كان العنصر متوفرًا واختلفت علامات التجزئة، ستصبح الحالة
MODIFIED
وسيتم تغيير تصنيف قائمة الانتظار إلى "B".
- عند الدفع، يشتمل الموصِّل بشكل واضح على رمز الدفع
يستخدم موصِّل المحتوى
items.poll
لاستطلاع قائمة الانتظار لتحديد العناصر المراد فهرستها. تخبر خدمة Cloud Search الموصِّل بالعناصر الأكثر احتياجًا إلى الفهرسة، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت في قائمة الانتظار.يسترد الموصل هذه العناصر من المستودع وينشئ طلبات واجهة برمجة التطبيقات للفهرسة.
يستخدم الموصِّل
items.index
لفهرسة العناصر. لا يدخل العنصر إلى الحالةACCEPTED
إلا بعد انتهاء Cloud Search من معالجة العنصر بنجاح.أخيرًا، يتم استدعاء الرمز
deleteQueueItems
في قائمة الانتظار أ لحذف جميع عناصر CCloud Search التي تمت فهرستها سابقًا والتي لا تزال تحمل التصنيف "A" في قائمة الانتظار.فمع عمليات الاجتياز الكاملة اللاحقة، يتم تبديل قائمة الانتظار المستخدمة للفهرسة وقائمة الانتظار المستخدمة للحذف.
عمليات قائمة الانتظار (حزمة تطوير البرامج للموصل)
توفر حزمة 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
.