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

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

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

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

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

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

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

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

تعتمد أولوية المستند في قائمة الانتظار على رمز ItemStatus الخاص به. في ما يلي رموز ItemStatus المحتمَلة مرتّبةً حسب الأولوية (يتم التعامل معها أولاً قبل التعامل معها في النهاية):

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

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

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

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

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

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

يوضح الشكل 1 خطوات فهرسة عنصر جديد أو عنصر تم تغييره باستخدام قائمة انتظار الفهرسة. تعرض هذه الخطوات طلبات البيانات من واجهة برمجة التطبيقات REST API. بالنسبة إلى عمليات استدعاء حزمة تطوير البرامج (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) للموصّل).

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

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

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

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

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

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

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

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

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

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

  11. مع الاجتيازات الكاملة اللاحقة، يتم تبديل اللائحة المستخدمة للفهرسة وقائمة الانتظار المستخدمة للحذف.

عمليات قائمة الانتظار (حزمة تطوير البرامج (SDK) للموصّل)

توفر حزمة SDK لـ Content Connector عمليات لإرسال العناصر إلى قائمة انتظار وسحب عناصر منها.

لتعبئة عنصر ونقله إلى قائمة الانتظار، استخدِم فئة أداة الإنشاء pushItems.

لا تحتاج إلى القيام بأي شيء محدد لسحب العناصر من قائمة الانتظار لمعالجتها. بدلاً من ذلك، تسحب حزمة تطوير البرامج (SDK) تلقائيًا العناصر من قائمة الانتظار، بترتيب الأولوية، باستخدام طريقة Repository للفئة getDoc.

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