Magento कैटलॉग को उसके इंडेक्सर को बाधित किए बिना समृद्ध करें
कई Magento उपयोगकर्ता एक ही समस्या का सामना करते हैं। आपके पास हजारों उत्पाद हो सकते हैं जिनमें एट्रिब्यूट्स (attributes) गायब हैं, विवरण (descriptions) अधूरे हैं, या कोई अनुवाद नहीं है।
डेटा स्रोत खोजना आसान है। कठिन हिस्सा उस डेटा को अपने कैटलॉग में डालना है, वह भी अपने स्टोर को क्रैश किए बिना।
सामान्य गलती उत्पादों को एक-एक करके सहेजने (save करने) के लिए एक साधारण लूप का उपयोग करना है।
यदि आप लूप में product repository save method का उपयोग करते हैं, तो आप प्रत्येक आइटम के लिए एक पूर्ण लाइफसाइकिल (lifecycle) ट्रिगर करते हैं। आप हजारों बार वैलिडेशन (validation), ऑब्जर्वर्स (observers) और रीइंडेक्सिंग ट्रिगर्स चलाते हैं। इससे स्क्रिप्ट घंटों तक चलती रहती है और आपका एडमिन पैनल बहुत धीमा हो जाता है।
सेव पाथ (save path) एक समय में एक उत्पाद को संपादित करने वाले मनुष्यों के लिए बनाया गया है। यह बल्क अपडेट (bulk updates) के लिए गलत टूल है।
अपने कैटलॉग को सुरक्षित रूप से अपडेट करने के लिए इन चरणों का पालन करें:
मास एट्रिब्यूट अपडेट (mass attribute updates) का उपयोग करें। पूरे प्रोडक्ट मॉडल को सेव करने के बजाय,
Magento\Catalog\Model\Product\Actionका उपयोग करें। सीधे डेटाबेस टेबल में लिखने के लिएupdateAttributesमेथड का उपयोग करें। इसे एक बार में 1,000 से 2,000 IDs के बैच में करें।अपनी इंडेक्सर सेटिंग्स बदलें। शुरू करने से पहले अपने इंडेक्सर्स को 'Update by Schedule' पर सेट करें। यदि आप 'Update on Save' का उपयोग करते हैं, तो हर राइट (write) एक सिंक्रोनस रीइंडेक्स (synchronous reindex) को ट्रिगर करता है। शेड्यूल पर, राइट्स एक चेंजलॉग (changelog) में जाते हैं और क्रॉन जॉब (cron job) काम को संभालती है।
अनुवादों (translations) को सही ढंग से प्रबंधित करें। एक अनुवाद किसी विशिष्ट स्टोर व्यू (store view) के लिए एक एट्रिब्यूट वैल्यू है।
updateAttributesमेथड को सही स्टोर ID पास करें। स्थानीय भाषाएं जोड़ते समय अपने ग्लोबल डिफॉल्ट मानों (global default values) को ओवरराइट न करें।AI कंटेंट को सावधानी से संभालें। LLMs बेहतरीन कॉपी लिखते हैं लेकिन अक्सर तथ्यों में भ्रम (hallucinate) पैदा करते हैं। वे कह सकते हैं कि शर्ट कॉटन की है जबकि वह पॉलिएस्टर की है। • पहले AI कंटेंट को एक स्टेजिंग फील्ड (staging field) या डिसेबल्ड स्कोप (disabled scope) में लिखें। • लाइव होने से पहले एक छोटा सैंपल रिव्यू करें। • आयाम (dimensions) और सामग्री (materials) जैसे तकनीकी विवरणों को सत्यापित डेटा से ही प्राप्त करें।
बल्क एनरिचमेंट (bulk enrichment) के लिए सारांश:
- इंडेक्सर्स को शेड्यूल्ड मोड पर सेट करें।
- नए डेटा के लिए स्टेजिंग फील्ड का उपयोग करें।
- 1,000 से 2,000 IDs के बैच में अपडेट लागू करें।
- फुल प्रोडक्ट सेव पाथ से बचें।
- परिवर्तनों को रीइंडेक्स करें।
- अपने प्रोडक्ट पेजों के एक सैंपल का परीक्षण करें।
डेटा स्रोत आसान हिस्सा हैं। लाइव कैटलॉग को प्रबंधित करने के लिए एक अलग दृष्टिकोण की आवश्यकता होती है।
स्रोत: https://dev.to/iamrobindhiman/enriching-a-large-magento-catalog-without-melting-the-indexer-3mk9
