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

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

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

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

  • منح الأولوية للعناصر في الطوابير استنادًا إلى حالة العنصر

  • الاحتفاظ بمعلومات إضافية عن الحالة لدمج فعال، مثل نقاط التفتيش وتغيير الرمز المميّز وما إلى ذلك

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

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

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

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

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

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

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

عندما يكون لعنصرَين في إحدى الطوابير الحالة نفسها، تُمنَح الأولوية الأعلى ل العناصر التي ظلّت في الطابور لأطول فترة زمنية.

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

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

نظرة عامة على فهرسة 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. يسترجع الموصّل هذه العناصر من المستودع وينشئ طلبات فهرس لواجهة برمجة التطبيقات.

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

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

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

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

نظرة عامة على فهرسة Google Cloud Search
الشكل 2. حذف العناصر
  1. في عملية التنقّل الأولية، يستخدم مُوصِّل المحتوى items.push لدفع العناصر (البيانات الوصفية والقيمة التجزئية) إلى "قائمة الانتظار أ"، لأنّه لا يتوفّر في "قائمة الانتظار ب".NEW_ITEM يتمّ تخصيص التصنيف "أ" لكل عنصر في "القائمة أ". يتم فهرسة المحتوى في 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. يسترجع الموصّل هذه العناصر من المستودع وينشئ طلبات فهرس لواجهة برمجة التطبيقات.

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

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

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

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