Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tạo hệ thống tìm kiếm từ khóa trong MySQL với LIKE

Giới thiệu

Toán tử LIKE kết hợp ký tự đại diện % cho phép xây dựng chức năng tìm kiếm đơn giản: tìm các bản ghi chứa từ khóa ở bất kỳ vị trí nào trong cột văn bản.

Ví dụ thực hành

1. Tạo bảng DemoTable812

mysql> CREATE TABLE DemoTable812 (Comments TEXT);

2. Chèn bình luận mẫu

mysql> INSERT INTO DemoTable812 VALUES
    ('Good Looking'),('Awesome'),('Looking Gorgeous'),('Good Luck'),('Have a nice day');

3. Tìm bình luận chứa từ 'Look'

mysql> SELECT * FROM DemoTable812 WHERE Comments LIKE '%Look%';

4. Kết quả

+------------------+
| Comments         |
+------------------+
| Good Looking     |
| Looking Gorgeous |
+------------------+

Mở rộng: Tìm kiếm đa từ khóa

-- Tìm chứa 'Good' HOẶC 'Awesome'
SELECT * FROM DemoTable812 WHERE Comments LIKE '%Good%' OR Comments LIKE '%Awesome%';

-- Tìm chứa CẢ 'Good' VÀ 'Luck'
SELECT * FROM DemoTable812 WHERE Comments LIKE '%Good%' AND Comments LIKE '%Luck%';

Hiệu suất & Thay thế chuyên nghiệp

  • LIKE '%keyword%' không dùng được index → quét toàn bảng (full table scan). Chậm trên dữ liệu lớn.
  • Full-Text Search (MyISAM, InnoDB 5.6+): ALTER TABLE t ADD FULLTEXT(col); SELECT * FROM t WHERE MATCH(col) AGAINST('keyword'); — nhanh, hỗ trợ xếp hạng độ liên quan.
  • Elasticsearch / Meilisearch: Giải pháp tìm kiếm chuyên nghiệp cho ứng dụng quy mô lớn.
  • Generated Column + Index: Tạo cột tách từ (tokenize) và index nếu chỉ cần tìm kiếm tiền tố.

Mẹo nhỏ

  • Chuẩn hóa từ khóa: loại bỏ ký tự đặc biệt, chuyển về chữ thường.
  • Escape ký tự đặc biệt của LIKE: \_, \%, \\ nếu tìm kiếm chuỗi chứa chúng.