Một cách tiếp cận là xem xét Khoảng cách Levenshtein giữa cụm từ tìm kiếm và danh sách từ khóa. Có một số ví dụ về cách thực hiện điều này trong MySQL, ví dụ. TẠI ĐÂY
Bởi vì bạn có một danh mục lớn như vậy, trước tiên bạn cần xem xét việc triển khai bộ lọc (có thể dựa trên tra cứu 'LIKE') để bạn không đo khoảng cách cho tất cả 1 triệu hàng.
Nếu bạn xếp hạng kết quả theo khoảng cách thì bạn sẽ có thể sắp xếp kết quả theo mức độ phù hợp với tìm kiếm.