غنیسازی کاتالوگهای 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) بنویسید. • قبل از انتشار نهایی، نمونه کوچکی را بررسی کنید. • مشخصات فنی مانند ابعاد و مواد تشکیلدهنده را از دادههای تأیید شده دریافت کنید.
خلاصه برای غنیسازی انبوه:
- ایندکسرها را روی حالت زمانبندی شده (scheduled mode) قرار دهید.
- از یک فیلد موقت (staging field) برای دادههای جدید استفاده کنید.
- بهروزرسانیها را در دستههای ۱,۰۰۰ تا ۲,۰۰۰ شناسه اعمال کنید.
- از مسیر کامل ذخیرهسازی محصول خودداری کنید.
- تغییرات را مجدداً ایندکس کنید.
- نمونهای از صفحات محصول خود را تست کنید.
یافتن منابع داده بخش آسان کار است. مدیریت یک کاتالوگ فعال (live) نیازمند رویکرد متفاوتی است.
منبع: https://dev.to/iamrobindhiman/enriching-a-large-magento-catalog-without-melting-the-indexer-3mk9
