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

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

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

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

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

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

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

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

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

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

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

  • NEW_ITEM: عنصر غير مفهرس

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

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

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

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

نظرة عامة على فهرسة 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 في "قائمة الانتظار ب". ولكن، لم يتم دفع أي عناصر إلى قائمة الانتظار ب، لذلك لا يمكن حذف أي شيء.

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

    • عند الدفع، يشتمل الموصّل بشكل صريح على دفعة. 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 في قائمة الانتظار أ لحذف جميع عناصر CCloud Search التي تمت فهرستها سابقًا والتي لا تزال تحتوي على قائمة الانتظار "A" التصنيف.

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

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

توفر حزمة تطوير البرامج (SDK) لـ Content Connector عمليات لإرسال العناصر وسحب من العناصر، قائمة انتظار.

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

لا تحتاج إلى القيام بأي شيء محدد لسحب العناصر من قائمة انتظار قيد المعالجة. بدلاً من ذلك، تسحب حزمة SDK تلقائيًا العناصر من قائمة الانتظار حسب الأولوية بالترتيب، باستخدام صف المستودع 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.