Thứ Tư, 26 tháng 7, 2023

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 tranvanbinh.vn

Mục lục

  • 1. Tạo Full Text Search ngay lúc tạo bảng Create Table
  • 2. Tạo Full Text Search trong lệnh Alter Table
  • 3. Tạo Full Text Search bằng CREATE INDEX trong MySQL
  • 4. Xóa Index Full Text Search như thế nào?

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:

1
2
3
4
5
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.

1
2
3
4
5
6
7
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.

1
2
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.

1
2
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ì.

1
2
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.

1
2
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é.

1
2
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.

1
2
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.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
Tạo Full Text Search trong MySQL, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master