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