LIKE/ILIKE: khớp mẫu chuỗi đơn giản.col LIKE '%from%'với%ở đầu không dùng được B-tree index → quét toàn bảng, chậm trên dữ liệu lớn. Không hiểu ngôn ngữ: không phân biệt gốc từ, thứ hạng, dấu câu.- Full-text search (FTS): hiểu văn bản theo từ (token). PostgreSQL chuyển văn bản thành
tsvector(tách từ, chuẩn hóa gốc từ/stemming, bỏ stop word) và truy vấn bằngtsquery:
sql
SELECT * FROM articles
WHERE to_tsvector('english', body) @@ to_tsquery('english', 'index & btree');Ưu điểm FTS:
- Index GIN trên tsvector → tìm nhanh trên khối văn bản lớn.
- Khớp theo gốc từ (running ~ run), toán tử logic (AND/OR/NOT), và xếp hạng độ liên quan (ts_rank).
Khi nào dùng gì: mẫu ngắn/tiền tố (abc%) hoặc so khớp chính xác → LIKE (kèm text_pattern_ops index cho tiền tố). Tìm kiếm ngôn ngữ tự nhiên trên đoạn văn → FTS. Cần fuzzy/typo hay tiếng Việt có dấu phức tạp → cân nhắc pg_trgm hoặc công cụ chuyên (Elasticsearch, Meilisearch).