Làm giàu Danh mục Magento mà không làm hỏng Bộ lập chỉ mục
Nhiều người dùng Magento gặp cùng một vấn đề. Bạn có hàng ngàn sản phẩm bị thiếu thuộc tính, mô tả sơ sài hoặc không có bản dịch.
Tìm nguồn dữ liệu thì dễ. Phần khó là đưa dữ liệu đó vào danh mục mà không làm sập cửa hàng của bạn.
Sai lầm phổ biến là sử dụng một vòng lặp đơn giản để lưu từng sản phẩm một.
Nếu bạn sử dụng phương thức lưu của product repository trong một vòng lặp, bạn sẽ kích hoạt toàn bộ vòng đời cho mỗi mục. Bạn chạy các bước kiểm tra (validation), trình quan sát (observers) và các trình kích hoạt lập chỉ mục lại (reindexing triggers) hàng ngàn lần. Điều này khiến các tập lệnh chạy trong nhiều giờ và làm bảng điều khiển quản trị (admin panel) của bạn chậm như rùa bò.
Quy trình lưu (save path) được xây dựng để con người chỉnh sửa từng sản phẩm một. Nó không phải là công cụ phù hợp để cập nhật hàng loạt.
Hãy làm theo các bước sau để cập nhật danh mục của bạn một cách an toàn:
Sử dụng cập nhật thuộc tính hàng loạt (mass attribute updates). Thay vì lưu toàn bộ model sản phẩm, hãy sử dụng
Magento\Catalog\Model\Product\Action. Sử dụng phương thứcupdateAttributesđể ghi trực tiếp vào các bảng cơ sở dữ liệu. Thực hiện việc này theo từng đợt (batch) từ 1.000 đến 2.000 ID mỗi lần.Thay đổi cài đặt bộ lập chỉ mục (indexer). Hãy đặt các bộ lập chỉ mục của bạn thành Update by Schedule trước khi bắt đầu. Nếu bạn sử dụng Update on Save, mỗi lần ghi sẽ kích hoạt việc lập chỉ mục lại đồng bộ. Với chế độ theo lịch trình (on a schedule), các bản ghi sẽ được đưa vào nhật ký thay đổi (changelog) và cron job sẽ xử lý công việc đó.
Quản lý bản dịch một cách chính xác. Một bản dịch là một giá trị thuộc tính cho một chế độ xem cửa hàng (store view) cụ thể. Hãy truyền đúng store ID vào phương thức
updateAttributes. Đừng ghi đè các giá trị mặc định toàn cầu (global default values) khi thêm các ngôn ngữ địa phương.Xử lý nội dung AI một cách cẩn thận. Các LLM viết nội dung rất hay nhưng thường xuyên "ảo tưởng" về các sự thật. Chúng có thể nói một chiếc áo sơ mi làm bằng cotton trong khi thực tế nó là polyester. • Viết nội dung AI vào một trường tạm thời (staging field) hoặc một phạm vi (scope) bị vô hiệu hóa trước. • Kiểm tra một mẫu nhỏ trước khi đưa lên chính thức. • Giữ các thông số kỹ thuật như kích thước và chất liệu từ các nguồn dữ liệu đã được xác minh.
Tóm tắt cho việc làm giàu dữ liệu hàng loạt:
- Đặt bộ lập chỉ mục sang chế độ theo lịch trình (scheduled mode).
- Sử dụng trường tạm thời (staging field) cho dữ liệu mới.
- Áp dụng các bản cập nhật theo từng đợt từ 1.000 đến 2.000 ID.
- Tránh sử dụng quy trình lưu sản phẩm đầy đủ (full product save path).
- Lập chỉ mục lại các thay đổi.
- Kiểm tra thử một số trang sản phẩm của bạn.
Nguồn dữ liệu là phần dễ dàng. Quản lý một danh mục đang hoạt động đòi hỏi một cách tiếp cận khác.
Nguồn: https://dev.to/iamrobindhiman/enriching-a-large-magento-catalog-without-melting-the-indexer-3mk9
