1. I. Full text search là gì?
FTS (full text search) là phương pháp tìm kiếm thông tin tự nhiên nhất, giống như Google, chỉ cần nhập từ khóa và nhấn enter để nhận kết quả. Bài viết này giới thiệu một cách ngắn gọn về FTS trong MySQL, không đề cập đến các công cụ FTS như Sphinx hay Solr.
2. II. Tại sao chúng ta phải dùng Full text search?
Thường, chúng ta sử dụng câu truy vấn sau để tìm kiếm dữ liệu.
SELECT id, title, description FROM book WHERE title LIKE ‘%keyword%’
Tuy nhiên, phương pháp tìm kiếm này gặp một số hạn chế sau:
3. III. Một số đặc tính khi sử dụng full text search:
Một trong những lợi ích của A là:
Có rất nhiều kết quả được trả về khi tìm kiếm.
Index là một tệp riêng biệt được lưu trữ trên máy chủ và chỉ chứa các trường mà bạn muốn nó chứa. Nếu bạn tạo một Index cho trường user_id (mã số người dùng), MySQL sẽ dễ dàng tìm ra mã số 1 một cách nhanh chóng. Trong ví dụ về quyển sách, khi cần tìm kiếm thông tin, chúng ta thường xem phần “Mục Lục” và tìm từ đó để tăng tốc độ tìm kiếm. Tạo Index này sẽ làm cho cơ sở dữ liệu của bạn hoạt động nhanh hơn đáng kể.
B. Nhược điểm: Tuy nhiên, có một số điểm chưa hoàn hảo.
Giả sử bạn có một câu truy vấn với mệnh đề LIKE như sau: Title LIKE ‘%one%’. Kết quả trả về có thể bao gồm: one, zone, money, phone. Tuy nhiên, dải kết quả trả về có thể rất rộng và chứa nhiều kết quả không mong muốn.
Input: Từ đồng nghĩa (synonyms) Như chúng ta đã biết, mỗi ngôn ngữ đều có những từ có nghĩa tương đương. Ví dụ, trong tiếng Việt, xe hơi và ô tô, bao thư và phong bì là những từ đồng nghĩa. Tiếng Anh cũng có những từ tương tự như color-colour, check-cheque, developer-programmer và nhiều hơn nữa. Tuy nhiên, việc sử dụng các phép toán như LIKE hay = (hoặc cả Full-text search của MySQL) không đủ để giải quyết vấn đề từ đồng nghĩa này.
Nếu ta đặt wildcard ‘%’ ở đầu, MySQL sẽ thực hiện câu truy vấn mà không sử dụng index, điều này làm cho câu truy vấn chạy chậm hơn so với việc tìm kiếm trên index. Điều này tương tự như việc tìm từng trang trong một cuốn sách thay vì tìm trong trang index ở cuối cuốn sách.
Giả sử chúng ta lưu trữ tiếng Việt có dấu trong cơ sở dữ liệu, nhưng nếu người dùng nhập tiếng Việt không dấu, thì mệnh đề LIKE chắc chắn sẽ không tìm thấy dữ liệu mà chúng ta cần.
Có một số cách giải quyết, ví dụ như lưu 2 trường dữ liệu: một trường có dấu và một trường không dấu. Tuy nhiên, phương pháp này không hiệu quả và không hỗ trợ tìm kiếm gần đúng. Khi người dùng nhập “co be mua dong”, câu truy vấn LIKE sẽ không tìm thấy “Cô bé mùa Đông”, nhưng FTS có thể giải quyết vấn đề này.
4. IV. Tổng kết:
Bài viết đã trình bày tổng quan về Full Text Search Engine và giới thiệu một số tính năng của nó. Khi bạn nhập một câu lệnh tìm kiếm vào ô tìm kiếm của Google, bạn có thể hình dung được một phần quá trình xảy ra sau đó (mặc dù thực tế việc Google làm sẽ phức tạp hơn rất nhiều).

Tôi là Nguyễn Văn Sỹ có 15 năm kinh nghiệm trong lĩnh vực thiết kế, thi công đồ nội thất; với niềm đam mê và yêu nghề tôi đã tạo ra những thiết kếtuyệt vời trong phòng khách, phòng bếp, phòng ngủ, sân vườn… Ngoài ra với khả năng nghiên cứu, tìm tòi học hỏi các kiến thức đời sống xã hội và sự kiện, tôi đã đưa ra những kiến thức bổ ích tại website nhaxinhplaza.vn. Hy vọng những kiến thức mà tôi chia sẻ này sẽ giúp ích cho bạn!