Tạo Full Text Search trong MySQL
Trong bài này bạn sẽ được học các tạo index Full Text Search trong MySQL, bằng cách sử dụng từ khóa FULLTEXT trong lúc tạo bảng hoặc lệnh CREATE INDEX.
Trước khi thực hiện tìm kiếm bằng kỹ thuật full text search thì bạn phải lập chỉ mục cho cột đó, lúc này MySQL sẽ cập nhật chỉ mục mỗi khi có sự thay đổi dữ liệu, tên chỉ mục này là FULLTEXT.
* Lưu ý: Như bài trước mình có nhắc, MySQL chỉ hỗ trợ FULLTEXT cho các kiểu dữ liệu CHAR, VARCHAR hoặc TEXT, kiểu lưu trữ table phải là MyISAM hoặc InnoDB (từ phiên bản 5.6 mới có).
MySQL cho phép bạn tạo FULLTEXT ngay lệnh tạo bảng CREATE TABLE, hoặc lệnh ALTER TABLE, hoặc dùng lệnh CREATE INDEX để thêm chỉ mục vào table có sẵn.
Bài viết này được đăng tại [free tuts .net]
1. Tạo Full Text Search ngay lúc tạo bảng Create Table
Trong lệnh Create Table bạn dễ dàng thêm index full text search bằng cách sử dụng từ khóa FULLTEXT. Cú pháp như sau:
CREATE TABLE table_name( column_list, ..., FULLTEXT (column1,column2,..) );
Như vậy, để tạo ra nhiều index thì bạn hãy thêm nó và cahs nhau bởi dấu phẩy. Xem ví dụ dưới đây, mình đã thêm full text search cho field post_content nằm trong table posts khi vừa mới khởi tạo chúng.
CREATE TABLE posts ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(255) NOT NULL, body TEXT, PRIMARY KEY (id), FULLTEXT (post_content ) );
2. Tạo Full Text Search trong lệnh Alter Table
Cú pháp dưới đây giúp bạn tạo được index full text search bằng cách sử dụng lệnh alter table trong MySQL.
ALTER TABLE table_name ADD FULLTEXT(column_name1, column_name2,…)
Nếu bạn xem kỹ thì thực ra nó cũng không khác gì việc tạo các loại index khác, chỉ có điều kỹ thuật index mỗi loại mỗi khác.
Như phần 1, bạn có thể thêm nhiều column và cách nhau bởi dấu phâỷ.
Như trong ví dụ dưới đây mình đã thêm index cho 2 field productDescription và productLine.
ALTER TABLE products ADD FULLTEXT(productDescription,productLine)
3. Tạo Full Text Search bằng CREATE INDEX trong MySQL
Một cách khác cũng khá đơn giản đó là sử dụng lệnh CREATE INDEX để tạo index full text search cho một table bất kì.
CREATE FULLTEXT INDEX index_name ON table_name(idx_column_name,...)
Ví dụ: Tạo chỉ mục full text cho hai field (addressLine1, addressLine2) nằm trong table offices
.
CREATE FULLTEXT INDEX address ON offices(addressLine1,addressLine2)
Lưu ý rằng với những table đã có lượng dữ liệu lớn thì lệnh này sẽ chạy chậm hơn bình thường,bởi MySQL sẽ mất thời gian lập chỉ mục cho những record có sẵn đó. Vì vậy bạn nên thiết kế dữ liệu thuật chuẩn và tạo chỉ mục cẩn thận thì sẽ giúp MySQL hoạt động tốt hơn.
4. Xóa Index Full Text Search như thế nào?
Nếu bạn lỡ tay tạo rồi nhưng sau muốn xóa index full text search thì sử dụng lệnh ALTER TABLE DROP INDEX nhé.
ALTER TABLE table_name DROP INDEX index_name;
Theo như cú pháp này thì bạn phải đặt tên cho Index thì mới xóa được. Việc đặt tên cũng là cách tốt nhất để giúp bạn quản lý các chỉ mục tốt hơn.
Ví dụ dưới đây mình đã xóa Index có tên là Address
từ bảng offices
.
ALTER TABLE offices DROP INDEX address;
Như vậy là mình đã hướng dẫn xong các bước để tạo chỉ mục Full Text Search trong MySQL. Đây là bài kiến thức cơ bản và là tiền đề để bạn có thể học cách truy vấn Full Text bằng lệnh Select ở các bài tiếp theo.