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

Boolean Full-Text Searches trong MySQL

Trong bài này mình sẽ giới thiệu thuật ngữ Boolean Full-Text Searches trong MySQL, đây là các chế độ tìm kiếm khi sử dụng để truy vấn cho những column có sử dụng chỉ mục full text search.

Mục lục

  • 1. MySQL Boolean Full-Text Searches là gì?
  • 2. Các toán tử trong Boolean Full-Text Searches
  • 3. Các tính chất của Boolean Full-Text Searches

1. MySQL Boolean Full-Text Searches là gì?

Ở bài trước mình có nhắc đến cụm từ IN NATURAL LANGUAGE MODE, đây là một trong những chế độ của Full-Text Searches.

Theo tìm kiếm tự nhiên thì trong văn bản chỉ cần xuất hiện một trong số những từ mà ta đặt nó ở đầu vào là sẽ trả kết quả về. Tuy nhiên có một số trường hợp mình muốn phải xuất hiện ít nhất 2 từ nào đó thì lúc này phải sử dụng các chế độ MODE.

Ví dụ: Tìm kiếm từ khóa Truck trong chế độ bắt buộc phải có (IN BOOLEAN MODE)

Bài viết này được đăng tại tranvanbinh.vn

1
2
3
4
SELECT productName, productline
FROM products
WHERE MATCH(productName)
      AGAINST('Truck' IN BOOLEAN MODE )

Kết quả:

mysql boolean tex searches product name with keyword truck png

Hai sản phẩm trả về do có chứa từ Truck.

Để tìm kiếm các record xuất hiện từ Truck nhưng không được xuất hiện từ Pickup thì bạn sử dụng dấu trừ - đằng trước cụm từ không muốn xuất hiện.

1
2
3
SELECT productName, productline
FROM products
WHERE MATCH(productName) AGAINST('Truck -Pickup' IN BOOLEAN MODE )

mysql boolean tex searches with Boolean operator png

2. Các toán tử trong Boolean Full-Text Searches

Dưới đây là danh sách những toán tử giúp bạn có thể xư lý tìm kiếm một cách linh động hơn.

Toán tửMô tả
+Từ phải xuất hiện
Từ không được xuất hiện
>Bao gồm từ này, và tăng giá trị xếp hạng
<Bao gồm từ này, và giảm giá trị xếp hạng
()Nhóm các từ thành các biểu thức con (cho phép chúng được bao gồm, loại trừ, xếp hạng, v.v. như một nhóm).
~Phủ định một từ được xếp hạng
*Ký tự đại diện ở cuối từ
“”Xác định một cụm từ (trái ngược với danh sách các từ riêng lẻ, toàn bộ cụm từ được khớp để đưa vào hoặc loại trừ).

Các ví dụ sau minh họa cách sử dụng các toán tử toàn văn bản boolean trong truy vấn tìm kiếm:

Ví dụ 1: Để tìm kiếm các hàng có ít nhất một trong hai từ: mysql hoặc tutorial.

1
‘mysql tutorial’

Ví dụ 2: Để tìm các hàng xuất hiện cả hai từ mysql và tutorial.

1
‘+mysql +tutorial’

Ví dụ 3: Để tìm các hàng bắt buộc có từ mysql nhưng từ tutorial thì có thể có hoặc không.

1
‘+mysql tutorial’

Ví dụ 4: Để tìm các hàng xuất hiện từ mysql nhưng không được xuất hiện từ tutorial.

1
‘+mysql -tutorial’

Ví dụ 5: Để tìm kiếm các hàng có chứa từ mysql và xếp hạng hàng thấp hơn nếu nó chứa từ tutorial.

1
‘+mysql ~tutorial’

Ví dụ 6: Để tìm kiếm các hàng có chứa các từ mysql và tutorial, hoặc tutorial và training, nhưng đặt các hàng có chứa mysql tutorial cao hơn so với mysql training.

1
‘+mysql +(>tutorial <training)’

Ví dụ 7: Để tìm kiếm các từ bắt đầu bằng chữ my, ví dụ mysqlmyadmin.

1
‘my*’

3. Các tính chất của Boolean Full-Text Searches

  • MySQL không tự động sắp xếp các hàng theo mức độ liên quan theo thứ tự giảm dần trong kỹ thuật Boolean full text search.
  • Để thực hiện các truy vấn Boolean, các bảng InnoDB yêu cầu tất cả các cột của biểu thức MATCH phải có chỉ mục FULLTEXT. Lưu ý rằng các bảng MyISAM không yêu cầu điều này, mặc dù tìm kiếm khá chậm.
  • MySQL không hỗ trợ nhiều toán tử Boolean trên truy vấn tìm kiếm trên các bảng InnoDB. Ví dụ từ '++ mysql' sẽ trả về một lỗi. Tuy nhiên, MyISAM thì lai khác, nó bỏ qua các toán tử khác và sử dụng toán tử gần nhất. Ví dụ từ '+ -mysql' sẽ trở thành ‘ -mysql'.
  • Full Text Search của InnoDB không hỗ trợ dấu cộng (+) hoặc dấu trừ (-) trong từ khóa tìm kiếm, nó chỉ hỗ trợ nằm ở hàng đầu vì đó là các toán tử boolean. MySQL sẽ báo lỗi nếu bạn tìm kiếm từ là 'mysql +', hoặc 'mysql-'.
  • Ngưỡng 50% có nghĩa là nếu một từ xuất hiện hơn 50% số hàng, MySQL sẽ bỏ qua từ đó trong kết quả tìm kiếm.

Trên là những thông tin hữu ích về cách sử dụng Boolean Full-Text Searches trong MySQL. Đây là bài khá quan trọng vì nó giúp bạn xử lý truy vấn lấy kết quả trả về một cách tốt hơn.

=============================
* 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

=============================
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