غنی‌سازی کاتالوگ‌های Magento بدون از کار انداختن ایندکسر آن

بسیاری از کاربران Magento با مشکل مشابهی روبرو هستند. شما هزاران محصول دارید که ویژگی‌های (attributes) آن‌ها ناقص است، توضیحات کمی دارند یا فاقد ترجمه هستند.

یافتن منابع داده آسان است. بخش دشوار، وارد کردن آن داده‌ها به کاتالوگ بدون از کار افتادن فروشگاه است.

اشتباه رایج، استفاده از یک حلقه (loop) ساده برای ذخیره محصولات به صورت تک‌به‌تک است.

اگر از متد product repository save در یک حلقه استفاده کنید، برای هر آیتم یک چرخه کامل (lifecycle) را فعال می‌کنید. شما اعتبارسنجی (validation)، مشاهده‌گرها (observers) و محرک‌های بازسازی ایندکس (reindexing triggers) را هزاران بار اجرا می‌کنید. این کار باعث می‌شود اسکریپت‌ها ساعت‌ها طول بکشند و پنل مدیریت شما را به شدت کند کند.

مسیر ذخیره‌سازی برای انسان‌هایی طراحی شده که یک محصول را ویرایش می‌کنند. این ابزار مناسبی برای به‌روزرسانی‌های انبوه (bulk updates) نیست.

برای به‌روزرسانی ایمن کاتالوگ خود، این مراحل را دنبال کنید:

  • از به‌روزرسانی‌های دسته‌جمعی ویژگی‌ها استفاده کنید. به جای ذخیره کل مدل محصول، از Magento\Catalog\Model\Product\Action استفاده کنید. از متد updateAttributes برای نوشتن مستقیم در جداول پایگاه داده استفاده کنید. این کار را در دسته‌های ۱,۰۰۰ تا ۲,۰۰۰ شناسه (ID) در هر مرحله انجام دهید.

  • تنظیمات ایندکسر خود را تغییر دهید. قبل از شروع، ایندکسرهای خود را روی Update by Schedule تنظیم کنید. اگر از Update on Save استفاده کنید، هر عملیات نوشتن باعث اجرای همزمان (synchronous) بازسازی ایندکس می‌شود. در حالت زمان‌بندی شده (on a schedule)، نوشته‌ها به یک فایل تغییرات (changelog) می‌روند و یک cron job کار را مدیریت می‌کند.

  • ترجمه‌ها را به درستی مدیریت کنید. یک ترجمه، در واقع مقدار یک ویژگی برای یک نمای فروشگاه (store view) خاص است. شناسه فروشگاه (store ID) صحیح را به متد updateAttributes پاس دهید. هنگام اضافه کردن زبان‌های محلی، مقادیر پیش‌فرض جهانی (global default values) خود را بازنویسی نکنید.

  • با محتوای تولید شده توسط هوش مصنوعی با دقت برخورد کنید. مدل‌های زبانی بزرگ (LLMs) متن‌های بسیار خوبی می‌نویسند اما اغلب در بیان واقعیت‌ها دچار توهم (hallucinate) می‌شوند. آن‌ها ممکن است بگویند یک پیراهن از جنس پنبه است، در حالی که از پلی‌استر ساخته شده است. • ابتدا محتوای هوش مصنوعی را در یک فیلد موقت (staging field) یا یک محدوده غیرفعال (disabled scope) بنویسید. • قبل از انتشار نهایی، نمونه کوچکی را بررسی کنید. • مشخصات فنی مانند ابعاد و مواد تشکیل‌دهنده را از داده‌های تأیید شده دریافت کنید.

خلاصه برای غنی‌سازی انبوه:

  1. ایندکسرها را روی حالت زمان‌بندی شده (scheduled mode) قرار دهید.
  2. از یک فیلد موقت (staging field) برای داده‌های جدید استفاده کنید.
  3. به‌روزرسانی‌ها را در دسته‌های ۱,۰۰۰ تا ۲,۰۰۰ شناسه اعمال کنید.
  4. از مسیر کامل ذخیره‌سازی محصول خودداری کنید.
  5. تغییرات را مجدداً ایندکس کنید.
  6. نمونه‌ای از صفحات محصول خود را تست کنید.

یافتن منابع داده بخش آسان کار است. مدیریت یک کاتالوگ فعال (live) نیازمند رویکرد متفاوتی است.

منبع: https://dev.to/iamrobindhiman/enriching-a-large-magento-catalog-without-melting-the-indexer-3mk9