Bỏ qua, đến nội dung

Câu hỏi thường gặp (FAQ) — Multi Keyword Filter

Sử dụng

Operator "Bằng bất kỳ" khác gì "Chứa"?

OperatorSQL tương đươngMô tả
Bằng bất kỳ ($in)WHERE field IN ('a', 'b', 'c')So sánh chính xác — giá trị phải trùng hoàn toàn
Chứa ($includes)WHERE field LIKE '%keyword%'So sánh một phần — giá trị chứa từ khoá

Ví dụ: Từ khoá "iPhone"

  • $in: Chỉ match record có giá trị chính xác là "iPhone"
  • $includes: Match "iPhone 15 Pro", "iPhone 14", "Ốp lưng iPhone"

Có thể dùng logic AND không?

Plugin sử dụng $in (bất kỳ giá trị nào — tương đương OR). Nếu cần AND (tất cả từ khoá đều phải khớp), bạn cần kết hợp nhiều filter riêng biệt, mỗi filter một từ khoá.

Hỗ trợ những loại trường nào?

Plugin đăng ký operator cho 9 field interface: input, phone, email, uuid, sequence, integer, number, percent, nanoid.

Không hỗ trợ: trường quan hệ (relation), ngày tháng (date), boolean, JSON, rich text.

Import Excel hỗ trợ định dạng nào?

Hỗ trợ file .xlsx.xls. Plugin sử dụng thư viện xlsx để đọc file. Lưu ý:

  • Chỉ đọc sheet đầu tiên của file
  • Dòng đầu tiên được coi là header (tên cột)
  • Giá trị rỗng, null, undefined sẽ bị bỏ qua
  • Nếu nhiều cột, giá trị từ các cột được gộp và loại trùng

Từ khoá có phân biệt hoa thường không?

Phụ thuộc vào database:

DatabaseMặc định
PostgreSQL phân biệt hoa thường
MySQLKhông phân biệt (collation utf8_general_ci)
SQLiteKhông phân biệt

Nếu cần tìm kiếm không phân biệt hoa thường trên PostgreSQL, sử dụng operator $includes (ILIKE) thay vì $in.

Lỗi thường gặp

Filter không trả về kết quả?

Kiểm tra theo thứ tự:

  1. Operator đúng chưa? $in so sánh chính xác — "iPhone 15" không match "iPhone 15 Pro"
  2. Khoảng trắng: Plugin tự động trim, nhưng kiểm tra xem giá trị trong database có khoảng trắng ẩn không
  3. Kiểu dữ liệu: Với trường số (integer, number), đảm bảo từ khoá là số hợp lệ — giá trị không parse được sẽ bị loại bỏ
  4. Case sensitivity: Trên PostgreSQL, "iPhone" ≠ "iphone"

URL quá dài khi lọc nhiều từ khoá — lỗi 414?

Plugin tự động xử lý URL dài bằng cách chuyển params vào POST body khi URL vượt 2000 ký tự. Nếu vẫn gặp lỗi:

  • Kiểm tra plugin đã được kích hoạt (cần cả client và server)
  • Middleware bodyToQueryMiddleware phải chạy sau bodyParser
  • Kiểm tra reverse proxy (Nginx) có giới hạn body size — tăng client_max_body_size

Import Excel bị lỗi "Failed to parse Excel"?

Nguyên nhân có thể:

Vấn đềGiải pháp
File bị hỏngThử mở và lưu lại file bằng Excel
File có passwordBỏ mật khẩu bảo vệ
Định dạng cũ (.xls)Chuyển sang .xlsx
File quá lớnGiảm số dòng hoặc chia nhỏ file

Giá trị số bị sai khi import?

Plugin sử dụng parseInt() cho trường integer/numberparseFloat() cho percent:

  • "42.7"42 (với integer — mất phần thập phân)
  • "abc" → bị loại bỏ (NaN)
  • "100%" → bị loại bỏ (không parse được)

Đảm bảo file Excel chứa giá trị số thuần tuý, không có ký tự đặc biệt.

Hiệu năng

Lọc nhiều từ khoá có chậm không?

Hiệu năng phụ thuộc vào:

Yếu tốẢnh hưởng
Số từ khoá< 100: nhanh, 100–1000: chấp nhận được, > 1000: có thể chậm
Kích thước bảngBảng lớn + nhiều từ khoá = chậm
IndexTrường có index sẽ nhanh hơn nhiều
Database enginePostgreSQL xử lý IN clause tốt hơn MySQL với số lượng lớn

Khuyến nghị: Tạo index cho các trường thường xuyên sử dụng multi-keyword filter.