قوائم انتظار فهرسة Google Cloud Search

تسمح حزمة تطوير البرامج (SDK) للموصل وواجهة برمجة التطبيقات Google Cloud Search API بإنشاء قوائم انتظار الفهرسة في Cloud Search المستخدمة لتنفيذ المهام التالية:

  • يمكنك الحفاظ على حالة كل مستند (الحالة وقيم التجزئة وما إلى ذلك) التي يمكن استخدامها للحفاظ على مزامنة الفهرس مع المستودع.

  • الاحتفاظ بقائمة بالعناصر التي سيتم فهرستها عند اكتشافها أثناء عملية التنقّل

  • يمكنك منح الأولوية للعناصر في قوائم الانتظار بناءً على حالة العنصر.

  • يمكنك الاحتفاظ بمعلومات حالة إضافية لتحقيق تكامل فعال مثل نقاط الفحص وتغيير الرمز المميز وما إلى ذلك.

"القائمة الانتظار" هي تصنيف يتمّ تعيينه لعنصر مفهرَس، مثل "default" للقائمة الانتظار الافتراضية أو "B" للقائمة الانتظار B.

الحالة والأولوية

تستند أولوية المستند في إحدى الطوابير إلى رمزه ItemStatus. في ما يلي رموز ItemStatus المحتملة حسب الأولوية (يتم التعامل معها أولاً قبل الانتهاء منها):

  • ERROR - حدث خطأ غير متزامن في العنصر أثناء عملية الفهرسة ، ويجب إعادة فهرسته.

  • MODIFIED: العنصر الذي سبق أن تمت فهرسته وتم تعديله في المستودع منذ آخر عملية فهرسة

  • NEW_ITEM - عنصر لم تتم فهرسته

  • ACCEPTED: مستند سبق أن تمت فهرسته ولم يتغيّر في المستودع منذ آخر عملية فهرسة

عندما يكون لعنصرين في قائمة الانتظار الحالة ذاتها، يتم منح أولوية أعلى للعناصر التي كانت في قائمة الانتظار لأطول فترة زمنية.

نظرة عامة على استخدام قوائم انتظار الفهرسة لفهرسة عنصر جديد أو تم تغييره

يعرض الشكل 1 خطوات فهرسة عنصر جديد أو تم تغييره باستخدام ملف انتظار فهرسة. تعرض هذه الخطوات طلبات البيانات من واجهة برمجة التطبيقات REST. لمعرفة طلبات حزمة SDK المماثلة، يُرجى الرجوع إلى عمليات "القائمة الانتظار" (حزمة تطوير البرامج (SDK) لـ Connector).

نظرة عامة على فهرسة Google Cloud Search
الشكل 1. خطوات الفهرسة لإضافة عنصر أو تعديله
  1. يستخدم "موصّل المحتوى" items.push لدفع العناصر (البيانات الوصفية والقيمة التجزئية) إلى قائمة انتظار الفهرسة لتحديد حالة العنصر (MODIFIED أو NEW_ITEM أو DELETED). وعلى وجه التحديد:

    • عند الدفع، يشتمل الموصِّل بشكل واضح على رمز الدفع type أو contentHash.
    • إذا لم يتضمّن الموصّل type، ستستخدم خدمة Cloud Search contentHash تلقائيًا لتحديد حالة العنصر.
    • إذا كان العنصر غير معروف، يتم ضبط حالة العنصر على NEW_ITEM.
    • إذا كان العنصر متوفّرًا وكانت قيم التجزئة متطابقة، يتم الاحتفاظ بالحالة على أنّها ACCEPTED.
    • إذا كان العنصر متوفّرًا وكانت التجزئات مختلفة، تصبح الحالة MODIFIED.

    لمزيد من المعلومات حول كيفية تحديد حالة العنصر، يمكنك الاطّلاع على رمز نموذج اجتياز مستودعات GitHub في الدليل التعليمي حول بدء استخدام Cloud Search.

    وعادةً ما يكون الدفع مرتبطًا بعمليات تنقّل المحتوى و/أو رصد التغيُّرات في الموصّل.

  2. يستخدم مُوصِّل المحتوى items.poll لاستطلاع الانتظار لتحديد العناصر التي سيتمّ فهرستها. تُعلم خدمة Cloud Search أداة الربط بالعناصر التي تحتاج إلى الفهرسة أكثر من غيرها، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت في الانتظار.

  3. يسترجع الموصّل هذه العناصر من المستودع وينشئ طلبات فهرس API.

  4. يستخدم الموصّل items.index لفهرسة العناصر. لا يدخل العنصر إلى الحالة ACCEPTED إلا بعد انتهاء Cloud Search من معالجة العنصر بنجاح.

يمكن أيضًا للموصّل حذف عنصر إذا لم يعُد متوفّرًا في المستودع، أو دفع عنصر مرة أخرى إذا لم يتم تعديله أو إذا حدث خطأ في مستودع المصدر. للحصول على معلومات حول عمليات حذف العناصر، راجع القسم التالي.

نظرة عامة على استخدام قوائم انتظار الفهرسة لحذف عنصر

تستخدِم استراتيجية التنقّل الكامل عملية قائمة انتظار مزدوجة لفهرسة العناصر ورصد عمليات الحذف. يعرض الشكل 2 خطوات حذف عنصر باستخدام قائمتَي انتظار للفهرسة. على وجه التحديد، يوضح الشكل 2 الاجتياز الثاني الذي تم إجراؤه باستخدام استراتيجية الاجتياز الكامل. تستخدِم هذه الخطوات طلبات البيانات من واجهة برمجة التطبيقات REST API. للاطّلاع على طلبات حزمة تطوير البرامج (SDK) المماثلة، يُرجى الرجوع إلى عمليات "القائمة الانتظار" (حزمة تطوير البرامج (SDK) لـ Connector).

نظرة عامة على فهرسة Google Cloud Search
الشكل 2. حذف العناصر
  1. في عملية التنقّل الأولية، يستخدم مُوصِّل المحتوى items.push لدفع العناصر (البيانات الوصفية والقيمة التجزئية) إلى قائمة انتظار الفهرسة "قائمة الانتظار أ" على أنّه NEW_ITEM لأنّه غير متوفّر في قائمة الانتظار. يتم تعيين التسمية "A" لكل عنصر لـ "قائمة الانتظار أ". تمت فهرسة المحتوى في Cloud Search.

  2. يستخدم محوِّل المحتوى items.poll للاستعلام عن "القائمة A" لتحديد العناصر التي سيتم فهرستها. تُعلم خدمة Cloud Search أداة الربط بالعناصر التي تحتاج إلى الفهرسة أكثر من غيرها، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت في الانتظار.

  3. يسترجع الموصّل هذه العناصر من المستودع وينشئ طلبات فهرس لواجهة برمجة التطبيقات.

  4. يستخدم الموصّل items.index لفهرسة العناصر. لا يدخل العنصر إلى الحالة ACCEPTED إلا بعد انتهاء Cloud Search من معالجة العنصر بنجاح.

  5. يتمّ استدعاء الطريقة deleteQueueItems في "القائمة B". ولكن لم يتم دفع أي عناصر إلى "القائمة B"، لذلك لا يمكن حذف أي شيء.

  6. في عملية التنقّل الكاملة الثانية، يستخدم موصّل المحتوى items.push لدفع العناصر (البيانات الوصفية والقيمة التجزئية) إلى "القائمة ب":

    • عند الضغط، يتضمّن الموصّل رمزًا صريحًا للضغط type أو contentHash.
    • إذا لم يتضمّن الموصّل type، ستستخدم خدمة Cloud Search contentHash تلقائيًا لتحديد حالة العنصر.
    • إذا كان العنصر غير معروف، يتم ضبط حالة العنصر على NEW_ITEM ويتم تغيير تصنيف السلسلة إلى "ب".
    • إذا كان العنصر متوفّرًا وكانت قيم التجزئة متطابقة، يتم الاحتفاظ بالحالة على أنّها ACCEPTED ويتم تغيير تصنيف "القائمة" إلى "ب".
    • إذا كان العنصر متوفّرًا وكانت التجزئات مختلفة، تصبح الحالة MODIFIED ويتم تغيير تصنيف السلسلة في "قائمة الانتظار" إلى "ب".
  7. يستخدم مُوصِّل المحتوى items.poll لاستطلاع الانتظار لتحديد العناصر التي سيتمّ فهرستها. تُعلم خدمة Cloud Search أداة الربط بالعناصر التي تحتاج إلى الفهرسة أكثر من غيرها، ويتم ترتيبها أولاً حسب رمز الحالة ثم حسب الوقت في الانتظار.

  8. يسترجع الموصّل هذه العناصر من المستودع وينشئ طلبات فهرس API.

  9. يستخدم الموصِّل items.index لفهرسة العناصر. لا يدخل العنصر في الحالة ACCEPTED إلا بعد أن تنتهي خدمة Cloud Search بنجاح من معالجة العنصر.

  10. أخيرًا، يتم استدعاء الرمز deleteQueueItems في قائمة الانتظار أ لحذف جميع عناصر CCloud Search التي تمت فهرستها سابقًا والتي لا تزال تحمل التصنيف "A" في قائمة الانتظار.

  11. مع عمليات التنقّل الكاملة اللاحقة، يتم تبديل الطابور المستخدَم للفهرسة والطابور المستخدَم للحذف.

عمليات "القائمة الانتظار" (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.