Full Text Search là gì? Tại sao nên sử dụng trong MySQL? - MySQL nâng cao
Trong bài viết này mình sẽ giúp các bạn hiểu Full Text Search trong MySQL là gì và những lợi ích khi sử dụng Full Text Search trong dự án. Nếu bạn đã sử dụng các công cụ tìm kiếm như Google hoặc Bing tức là bạn đang sử dụng ứng dụng sư dụng kỹ thuật Full Text Searh. Các công cụ tìm kiếm thu thập ...
Trong bài viết này mình sẽ giúp các bạn hiểu Full Text Search trong MySQL là gì và những lợi ích khi sử dụng Full Text Search trong dự án.
Nếu bạn đã sử dụng các công cụ tìm kiếm như Google hoặc Bing tức là bạn đang sử dụng ứng dụng sư dụng kỹ thuật Full Text Searh. Các công cụ tìm kiếm thu thập nội dung từ các trang web vào cơ sở dữ liệu và cho phép bạn tìm kiếm dựa trên các từ khóa.
Đương nhiên không hẳn là Google sử dụng kỹ thuật này, bởi họ có cả một hệ thống dữ liệu phân tán và áp dụng nhiều ngôn ngữ vào dự án. Vậy full text search là gì thì hãy cùng mình tìm hiểu ngay nhé!
1. Full Text Search là gì?
Full Text Search là một kỹ thuật tìm kiếm các tài liệu không phù hợp với tiêu chí tìm kiếm. Tài liệu ở đây có thể là một mô tả sản phẩm, một bài viết được lưu trữ trong Database của MySQL.
Không phù hợp với tiêu chí tìm kiếm là như thế nào? Ví dụ bạn có 1000 bài viết và muốn tìm kiếm từ khóa "học lập trình miễn phí", nhưng trong đoạn văn đó không có từ khóa này, vì vậy cần phải tách nhỏ từ khóa đó ra để tìm kiếm đến bài có chứa các từ phù hợp nhất.
Thực tế bạn có thể sử dụng từ khóa Like trong MySQL đẻ tìm kiếm bằng cú pháp "%word1%word2%word3word1..." nhưng về tốc độ thì nó tốn khá nhiều tài nguyên, điều này xảy ra tình trạng overload nếu dữ liệu quá dài và quá nhiều.
2. Vậy tại sao nên sử dụng Full Text Search trong MySQL?
Để trả lời câu hỏi này thì a hay cùng phân tích đến một vài đặc điểm.
Hiệu suất
MySQL phải quét toàn bộ bảng để tìm văn bản chính xác dựa trên một mẫu trong câu lệnh LIKE, nhưng full text search là một thể loại index nên sẽ cho tốc độ tốt hơn nhiều.
Sự linh hoạt
Tìm kiếm nội dung trọng từ khóa rất linh hoạt, không cần phải xuất hiện nguyên từ khóa mà nó sẽ phân nhỏ từng từ ra để tìm kiếm.
Xếp hàng tìm kiếm
Thực tế thì MySQL không trả về một dãy dự liệu có xếp hạng, vì vậy bạn không thể biết được đâu là bài có nội dung phù hợp nhất.
Tuy nhiên kể từ phiên bản 5.6 trở đi thì bạn có thể sử dụng order by để sắp xếp. Chi tiết thế nào thì mình sẽ trình bày ở các bài tiếp theo.
3. Những đặc điểm của Full Text Search trong MySQL
Sau đây là một số tính năng quan trọng của full-text-search trong MySQL:
Hoạt động giống lệnh Like
MySQL cung cấp câu LIKE để thực hiện tìm kiếm toàn văn. Bạn có thể áp dụng nó như Full Text Serch.
Tự động cập nhật Index
MySQL tự động cập nhật chỉ mục của cột văn bản bất cứ khi nào dữ liệu của cột đó thay đổi.
Kích thước index vừa phải
Kích thước của chỉ số FULLTEXT tương đối nhỏ.
Tốc độ
Cuối cùng nhưng không kém phần quan trọng, full-text-search cho tốc độ tìm kiếm nhanh hơn những câu truy vấn thông thường, bởi nó đã được lập chỉ mục khi mới thêm / cập nhật data.
4. Một số thao tác với Full Text Search
Dưới đây là một số thao tác với full text search.
- Tạo Full Text Search
- Match và Against trong MySQL
- Boolean Full-Text Searches
- Query Expansion Search
* Lưu ý: Không phải tất cả các kiểu định dạng của table đều có thể áp dụng full text search. Trong phiên bản MySQL 5.6 trở lên, chỉ có các table thiết lập kiểu MyISAM và InnoDB là có hỗ trợ.
Như vậy là trong bài này mình đã giải thích cho các bạn hiểu ý nghĩa của full text search là gì trong MySQL rồi. Đây là bài lý thuyết nên cũng không có gì đặc biệt. Mình sẽ hướng dẫn cách tạo chi tiết hơn ở các bài tiếp theo.