ইনডেক্সার নষ্ট না করেই Magento ক্যাটালগ সমৃদ্ধ করুন

অনেক Magento ব্যবহারকারী একই সমস্যার সম্মুখীন হন। আপনার কাছে হাজার হাজার পণ্য থাকতে পারে যেগুলোর অ্যাট্রিবিউট (attributes) নেই, বর্ণনা খুব সংক্ষিপ্ত অথবা কোনো অনুবাদ নেই।

ডেটা সোর্স খুঁজে পাওয়া সহজ। আসল কঠিন কাজ হলো আপনার স্টোর ক্র্যাশ না করে সেই ডেটাগুলো আপনার ক্যাটালগে যুক্ত করা।

সাধারণ ভুলটি হলো একটি সাধারণ লুপ (loop) ব্যবহার করে একে একে পণ্য সেভ করা।

আপনি যদি একটি লুপের মধ্যে product repository save method ব্যবহার করেন, তবে প্রতিটি আইটেমের জন্য আপনি একটি পূর্ণাঙ্গ লাইফসাইকেল (lifecycle) ট্রিগার করেন। আপনি হাজার হাজার বার ভ্যালিডেশন (validation), অবজারভার (observers) এবং রি-ইনডেক্সিং ট্রিগার করেন। এটি স্ক্রিপ্ট চলাকালীন ঘণ্টার পর ঘণ্টা সময় নেয় এবং আপনার অ্যাডমিন প্যানেলকে অত্যন্ত ধীরগতির করে তোলে।

সেভ পাথ (save path) তৈরি করা হয়েছে একজন মানুষের জন্য যখন সে একটি পণ্য এডিট করে। বাল্ক আপডেটের (bulk updates) জন্য এটি সঠিক টুল নয়।

আপনার ক্যাটালগ নিরাপদে আপডেট করতে এই ধাপগুলো অনুসরণ করুন:

  • মাস অ্যাট্রিবিউট আপডেট (mass attribute updates) ব্যবহার করুন। পুরো প্রোডাক্ট মডেল সেভ করার পরিবর্তে Magento\Catalog\Model\Product\Action ব্যবহার করুন। সরাসরি ডেটাবেস টেবিলে লেখার জন্য updateAttributes মেথড ব্যবহার করুন। এটি প্রতিবারে ১,০০০ থেকে ২,০০০ আইডি-র ব্যাচে (batches) সম্পন্ন করুন।

  • আপনার ইনডেক্সার সেটিংস পরিবর্তন করুন। কাজ শুরু করার আগে আপনার ইনডেক্সারগুলোকে 'Update by Schedule' মোডে সেট করুন। আপনি যদি 'Update on Save' ব্যবহার করেন, তবে প্রতিটি রাইট (write) একটি সিনক্রোনাস রি-ইনডেক্স ট্রিগার করবে। শিডিউল মোডে থাকলে, রাইটগুলো একটি চেঞ্জলগে (changelog) জমা হয় এবং ক্রন জব (cron job) সেই কাজটি সম্পন্ন করে।

  • অনুবাদগুলো সঠিকভাবে পরিচালনা করুন। একটি অনুবাদ হলো একটি নির্দিষ্ট স্টোর ভিউ-এর জন্য একটি অ্যাট্রিবিউট ভ্যালু। updateAttributes মেথডে সঠিক স্টোর আইডি (store ID) পাস করুন। লোকাল ভাষা যোগ করার সময় আপনার গ্লোবাল ডিফল্ট ভ্যালুগুলো ওভাররাইট করবেন না।

  • AI কন্টেন্ট সতর্কতার সাথে হ্যান্ডেল করুন। LLM চমৎকার কপি লিখতে পারে কিন্তু প্রায়ই ভুল তথ্য (hallucinate facts) প্রদান করে। একটি শার্ট পলিয়েস্টার হওয়া সত্ত্বেও তারা বলতে পারে সেটি কটন। • প্রথমে AI কন্টেন্ট একটি স্টেজিং ফিল্ড (staging field) বা একটি ডিজেবলড স্কোপে (disabled scope) লিখুন। • লাইভ করার আগে একটি ছোট স্যাম্পল রিভিউ করুন। • ডাইমেনশন এবং ম্যাটেরিয়ালের মতো টেকনিক্যাল স্পেকসগুলো যাচাইকৃত ডেটা থেকে সংগ্রহ করুন।

বাল্ক এনরিচমেন্টের সারসংক্ষেপ:

  1. ইনডেক্সারগুলোকে শিডিউল মোডে সেট করুন।
  2. নতুন ডেটার জন্য একটি স্টেজিং ফিল্ড ব্যবহার করুন।
  3. ১,০০০ থেকে ২,০০০ আইডি-র ব্যাচে আপডেট প্রয়োগ করুন।
  4. ফুল প্রোডাক্ট সেভ পাথ এড়িয়ে চলুন।
  5. পরিবর্তনগুলো রি-ইনডেক্স করুন।
  6. আপনার প্রোডাক্ট পেজগুলোর একটি স্যাম্পল টেস্ট করুন।

ডেটা সোর্স খুঁজে পাওয়া সহজ অংশ। একটি লাইভ ক্যাটালগ পরিচালনা করার জন্য ভিন্নধর্মী পদ্ধতির প্রয়োজন।

উৎস: https://dev.to/iamrobindhiman/enriching-a-large-magento-catalog-without-melting-the-indexer-3mk9