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