Magento ഇൻഡെക്സറിനെ (Indexer) തകരാറിലാക്കാതെ കാറ്റലോഗുകൾ മെച്ചപ്പെടുത്താം
പല Magento ഉപയോക്താക്കളും ഒരേ പ്രശ്നം നേരിടുന്നുണ്ട്. വിവരങ്ങൾ (attributes) വിട്ടുപോയതോ, അപൂർണ്ണമായ വിവരണങ്ങളോ (descriptions), അല്ലെങ്കിൽ വിവർത്തനങ്ങളോ (translations) ഇല്ലാത്തതോ ആയ ആയിരക്കണക്കിന് ഉൽപ്പന്നങ്ങൾ നിങ്ങളുടെ പക്കലുണ്ടാകാം.
ഡാറ്റാ സ്രോതസ്സുകൾ (data sources) കണ്ടെത്തുന്നത് എളുപ്പമാണ്. എന്നാൽ നിങ്ങളുടെ സ്റ്റോർ തകരാറിലാക്കാതെ ആ ഡാറ്റ കാറ്റലോഗിലേക്ക് ചേർക്കുക എന്നതാണ് പ്രയാസകരമായ കാര്യം.
ഉൽപ്പന്നങ്ങൾ ഓരോന്നായി സേവ് ചെയ്യാൻ ഒരു സിമ്പിൾ ലൂപ്പ് (simple loop) ഉപയോഗിക്കുന്നതാണ് സാധാരണയായി സംഭവിക്കാറുള്ള തെറ്റ്.
ഒരു ലൂപ്പിൽ product repository save method ഉപയോഗിക്കുകയാണെങ്കിൽ, ഓരോ ഐറ്റത്തിനും മുഴുവൻ ലൈഫ് സൈക്കിളും (full lifecycle) നിങ്ങൾ പ്രവർത്തിപ്പിക്കുന്നു. ഇത് ആയിരക്കണക്കിന് തവണ വാലിഡേഷൻ (validation), ഒബ്സർവേഴ്സ് (observers), റീഇൻഡെക്സിംഗ് ട്രിഗറുകൾ (reindexing triggers) എന്നിവ പ്രവർത്തിപ്പിക്കുന്നു. ഇത് സ്ക്രിപ്റ്റുകൾ മണിക്കൂറുകളോളം പ്രവർത്തിക്കാൻ കാരണമാവുകയും നിങ്ങളുടെ അഡ്മിൻ പാനലിന്റെ വേഗത വല്ലാതെ കുറയ്ക്കുകയും ചെയ്യുന്നു.
സേവ് പാത്ത് (save path) രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത് ഒരു ഉൽപ്പന്നം എഡിറ്റ് ചെയ്യുന്ന മനുഷ്യർക്ക് വേണ്ടിയാണ്. ബൾക്ക് അപ്ഡേറ്റുകൾക്ക് (bulk updates) ഇത് അനുയോജ്യമായ മാർഗ്ഗമല്ല.
നിങ്ങളുടെ കാറ്റലോഗ് സുരക്ഷിതമായി അപ്ഡേറ്റ് ചെയ്യാൻ ഈ ഘട്ടങ്ങൾ പിന്തുടരുക:
മാസ് അറ്റ്രിബ്യൂട്ട് അപ്ഡേറ്റുകൾ (mass attribute updates) ഉപയോഗിക്കുക. മുഴുവൻ പ്രോഡക്റ്റ് മോഡലും സേവ് ചെയ്യുന്നതിന് പകരം
Magento\Catalog\Model\Product\Actionഉപയോഗിക്കുക. ഡാറ്റാബേസ് ടേബിളുകളിലേക്ക് നേരിട്ട് എഴുതാൻupdateAttributesമെത്തേഡ് ഉപയോഗിക്കുക. ഇത് ഓരോ തവണയും 1,000 മുതൽ 2,000 വരെയുള്ള ഐഡികൾ (IDs) ഉൾപ്പെടുന്ന ബാച്ചുകളായി ചെയ്യുക.ഇൻഡെക്സർ സെറ്റിംഗുകൾ മാറ്റുക. തുടങ്ങുന്നതിന് മുമ്പ് നിങ്ങളുടെ ഇൻഡെക്സറുകൾ 'Update by Schedule' എന്ന രീതിയിലേക്ക് മാറ്റുക. നിങ്ങൾ 'Update on Save' ആണ് ഉപയോഗിക്കുന്നതെങ്കിൽ, ഓരോ തവണ ഡാറ്റ എഴുതപ്പെടുമ്പോഴും ഒരു സിൻക്രണസ് റീഇൻഡെക്സിംഗ് (synchronous reindex) നടക്കും. എന്നാൽ ഷെഡ്യൂൾ രീതിയിൽ, മാറ്റങ്ങൾ ഒരു ചേഞ്ച്ലോഗിലേക്ക് (changelog) പോവുകയും ക്രോൺ ജോബ് (cron job) ആ ജോലി കൈകാര്യം ചെയ്യുകയും ചെയ്യുന്നു.
വിവർത്തനങ്ങൾ (translations) ശരിയായി കൈകാര്യം ചെയ്യുക. ഒരു പ്രത്യേക സ്റ്റോർ വ്യൂവിനായുള്ള (store view) അറ്റ്രിബ്യൂട്ട് വാല്യൂ ആണ് വിവർത്തനം.
updateAttributesമെത്തേഡിലേക്ക് ശരിയായ സ്റ്റോർ ഐഡി (store ID) നൽകുക. പ്രാദേശിക ഭാഷകൾ ചേർക്കുമ്പോൾ നിങ്ങളുടെ ഗ്ലോബൽ ഡിഫോൾട്ട് വാല്യൂകൾ (global default values) ഓവർറൈറ്റ് ചെയ്യാതിരിക്കുക.AI ഉള്ളടക്കം ശ്രദ്ധയോടെ കൈകാര്യം ചെയ്യുക. LLM-കൾ മികച്ച കോപ്പി (copy) എഴുതുമെങ്കിലും പലപ്പോഴും വസ്തുതകളിൽ തെറ്റുകൾ വരുത്താൻ സാധ്യതയുണ്ട് (hallucinate). ഒരു ഷർട്ട് പോളിസ്റ്റർ ആണെങ്കിൽ പോലും അത് കോട്ടൺ ആണെന്ന് അവ പറയുമായിരിക്കും. • AI ഉള്ളടക്കം ആദ്യം ഒരു സ്റ്റേജിംഗ് ഫീൽഡിലോ (staging field) അല്ലെങ്കിൽ ഡിസേബിൾ ചെയ്ത സ്കോപ്പിലോ (disabled scope) എഴുതുക. • ലൈവ് ചെയ്യുന്നതിന് മുമ്പ് ചെറിയൊരു സാമ്പിൾ പരിശോധിക്കുക. • അളവുകൾ (dimensions), മെറ്റീരിയലുകൾ തുടങ്ങിയ സാങ്കേതിക വിവരങ്ങൾ (technical specs) പരിശോധിച്ചുറപ്പുവരുത്തിയ ഡാറ്റയിൽ നിന്ന് തന്നെ എടുക്കുക.
ബൾക്ക് എൻറിച്ച്മെന്റിനായുള്ള സംഗ്രഹം (Summary):
- ഇൻഡെക്സറുകൾ ഷെഡ്യൂൾഡ് മോഡിലേക്ക് മാറ്റുക.
- പുതിയ ഡാറ്റയ്ക്കായി ഒരു സ്റ്റേജിംഗ് ഫീൽഡ് ഉപയോഗിക്കുക.
- 1,000 മുതൽ 2,000 വരെയുള്ള ഐഡികളുടെ ബാച്ചുകളായി അപ്ഡേറ്റുകൾ നടപ്പിലാക്കുക.
- മുഴുവൻ പ്രോഡക്റ്റ് സേവ് പാത്തും ഒഴിവാക്കുക.
- മാറ്റങ്ങൾ റീഇൻഡക്സ് ചെയ്യുക.
- നിങ്ങളുടെ പ്രോഡക്റ്റ് പേജുകളുടെ ഒരു സാമ്പിൾ പരിശോധിക്കുക.
ഡാറ്റാ സ്രോതസ്സുകൾ കണ്ടെത്തുന്നത് എളുപ്പമാണ്. എന്നാൽ ഒരു ലൈവ് കാറ്റലോഗ് കൈകാര്യം ചെയ്യാൻ വ്യത്യസ്തമായ ഒരു സമീപനം ആവശ്യമാണ്.
Source: https://dev.to/iamrobindhiman/enriching-a-large-magento-catalog-without-melting-the-indexer-3mk9
