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

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

  • الاحتفاظ بحالة كل مستند (الحالة، والتجزئة، وما إلى ذلك) للحفاظ على مزامنة الفهرس
  • الاحتفاظ بقائمة بالعناصر التي سيتم فهرسة محتواها، كما تم رصدها أثناء الزحف
  • تحديد أولويات العناصر استنادًا إلى حالتها
  • الاحتفاظ بمعلومات الحالة، مثل نقاط التحقّق ورموز التغيير

قائمة الانتظار هي تصنيف يتم تعيينه لعنصر مفهرس (مثلاً، "default").

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

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

  • ERROR: حدث خطأ غير متزامن في العنصر ويجب إعادة فهرسته.
  • MODIFIED: تم فهرسة العنصر سابقًا، ولكن تم تغييره في المستودع.
  • NEW_ITEM: لم تتم فهرسة السلعة بعد.
  • ACCEPTED: تمت فهرسة العنصر سابقًا ولم يتغير.

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

فهرسة عنصر جديد أو معدَّل

يوضّح الشكل 1 خطوات فهرسة عنصر جديد أو معدَّل باستخدام قائمة انتظار الفهرسة. تعكس هذه الخطوات طلبات REST API، وللاطّلاع على ما يعادلها في حزمة تطوير البرامج (SDK)، راجِع عمليات قائمة الانتظار (حزمة تطوير البرامج للموصل).

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

حذف عنصر

تستخدم استراتيجية التنقّل الكامل قائمتَي انتظار لفهرسة العناصر ورصد عمليات الحذف. يوضّح الشكل 2 عملية الانتقال الثانية في هذه الاستراتيجية.

نظرة عامة على فهرسة Cloud Search
الشكل 2. حذف العناصر
  1. عند إجراء عملية الزحف الأولية، يدفع الموصل العناصر إلى "قائمة الانتظار A" على النحو التالي:NEW_ITEM. يتم تصنيف كل عنصر على أنّه "أ".
  2. يطلب الموصل بيانات من قائمة الانتظار (أ) ويفهرس العناصر.
  3. في عملية الاجتياز الكامل الثانية، تدفع أداة الربط العناصر إلى "قائمة الانتظار B".
    • تتلقّى العناصر غير المعروفة التصنيف "ب" والحالة NEW_ITEM.
    • يتم تغيير تصنيف العناصر الحالية التي تتضمّن تجزئات مطابقة إلى "ب" وتبقى ACCEPTED.
    • يتم تغيير تصنيف العناصر الحالية التي تتضمّن رموزًا مختلفة إلى "ب" وتصبح MODIFIED.
  4. يفحص الموصل قائمة الانتظار B بشكل متكرر ويفهرس العناصر.
  5. أخيرًا، يستدعي الموصل deleteQueueItems في قائمة الانتظار A. يؤدي ذلك إلى حذف جميع العناصر المفهرسة سابقًا والتي لا يزال لديها التصنيف "أ".
  6. في عمليات الاجتياز اللاحقة، يتم تبديل أدوار قائمتَي الانتظار.

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

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

عمليات قائمة الانتظار (REST API)

  • لإرسال إشعار، استخدِم Items.push.
  • لإجراء استطلاع، استخدِموا Items.poll.

يمكنك أيضًا استخدام Items.index لدفع العناصر أثناء الفهرسة. تتلقّى هذه العناصر الحالة ACCEPTED تلقائيًا.

Items.push

تضيف هذه الطريقة أرقام تعريف إلى قائمة الانتظار. يحدّد type النتيجة. يؤدي إرسال معرّف جديد إلى إضافة إدخال بالحالة NEW_ITEM. يتم عرض الحمولة الاختيارية أثناء الاستطلاع.

يتم حجز العناصر التي تم استطلاعها، ولا يمكن إرجاعها من خلال طلبات استطلاع أخرى. يؤدي استخدام Items.push مع ضبط type على NOT_MODIFIED أو REPOSITORY_ERROR أو REQUEUE إلى إلغاء حجز الإدخالات.

Items.push with hashes

تحديد البيانات الوصفية أو تجزئة المحتوى في طلب الإرسال تقارن Cloud Search هذه القيم بالقيم المخزّنة. إذا لم تتطابق القيمتان، سيصبح الإدخال MODIFIED. تصبح أرقام التعريف غير المتطابقة وغير المتوفّرة NEW_ITEM.

Items.poll

يستردّ هذا الإجراء الإدخالات ذات الأولوية العالية. يتم حجز كل إدخال تم إرجاعه إلى أن تنتهي مهلته أو تتم إعادة فهرسته أو يتم إلغاء حجزه باستخدام Items.push.