إثراء كتالوجات Magento دون تعطيل الفهرس (Indexer)

يواجه العديد من مستخدمي Magento نفس المشكلة. لديك آلاف المنتجات مع سمات (attributes) مفقودة، أو أوصاف قصيرة، أو بدون ترجمات.

العثور على مصادر البيانات أمر سهل. الجزء الصعب هو وضع تلك البيانات في الكتالوج الخاص بك دون التسبب في تعطل متجرك.

الخطأ الشائع هو استخدام حلقة (loop) بسيطة لحفظ المنتجات واحدًا تلو الآخر.

إذا استخدمت طريقة حفظ product repository داخل حلقة، فستقوم بتفعيل دورة حياة كاملة لكل عنصر على حدة. ستقوم بتشغيل عمليات التحقق (validation)، والمراقبين (observers)، ومحفزات إعادة الفهرسة (reindexing triggers) آلاف المرات. هذا يجعل السكربتات تعمل لساعات ويبطئ لوحة التحكم الخاصة بك بشكل كبير.

مسار الحفظ مصمم للبشر الذين يقومون بتحرير منتج واحد. إنه الأداة الخاطئة للتحديثات الجماعية (bulk updates).

اتبع هذه الخطوات لتحديث الكتالوج الخاص بك بأمان:

  • استخدم تحديثات السمات الجماعية (mass attribute updates). بدلاً من حفظ نموذج المنتج بالكامل، استخدم Magento\Catalog\Model\Product\Action. استخدم طريقة updateAttributes للكتابة مباشرة في جداول قاعدة البيانات. قم بذلك في مجموعات (batches) تتراوح بين 1,000 إلى 2,000 معرف (ID) في المرة الواحدة.

  • قم بتغيير إعدادات الفهرس (indexer). اضبط الفهارس الخاصة بك على Update by Schedule قبل البدء. إذا كنت تستخدم Update on Save فسيؤدي كل إجراء كتابة إلى تشغيل إعادة فهرسة متزامنة. عند استخدام الجدول الزمني (schedule)، تذهب عمليات الكتابة إلى سجل التغييرات (changelog) ويتولى الـ cron job القيام بالعمل.

  • أدر الترجمات بشكل صحيح. الترجمة هي قيمة سمة لعرض متجر (store view) محدد. مرر معرف المتجر (store ID) الصحيح إلى طريقة updateAttributes. لا تقم بالكتابة فوق القيم الافتراضية العالمية (global default values) عند إضافة لغات محلية.

  • تعامل مع محتوى الذكاء الاصطناعي بحذر. تكتب النماذج اللغوية الكبيرة (LLMs) نصوصاً رائعة ولكنها غالباً ما تهلوس بالحقائق. قد تقول إن القميص قطني بينما هو بوليستر. • اكتب محتوى الذكاء الاصطناعي في حقل مؤقت (staging field) أو نطاق معطل (disabled scope) أولاً. • راجع عينة صغيرة قبل النشر الفعلي. • حافظ على المواصفات الفنية مثل الأبعاد والمواد من مصادر بيانات موثقة.

ملخص للإثراء الجماعي:

  1. اضبط الفهارس على وضع الجدولة (scheduled mode).
  2. استخدم حقلاً مؤقتاً (staging field) للبيانات الجديدة.
  3. طبق التحديثات في مجموعات تتراوح بين 1,000 إلى 2,000 معرف.
  4. تجنب مسار حفظ المنتج الكامل.
  5. أعد فهرسة التغييرات.
  6. اختبر عينة من صفحات منتجاتك.

مصادر البيانات هي الجزء السهل. تتطلب إدارة كتالوج حي نهجاً مختلفاً.

المصدر: https://dev.to/iamrobindhiman/enriching-a-large-magento-catalog-without-melting-the-indexer-3mk9