Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ค้นหาข้อความในคอลัมน์เฉพาะด้วย MATCH AGAINST ใน MySQL

การเตรียมตารางและดัชนี Full-Text

สร้างตารางและเพิ่ม FULLTEXT INDEX:

mysql> CREATE TABLE DemoTable1833 (
    Name VARCHAR(20)
);

mysql> ALTER TABLE DemoTable1833 ADD FULLTEXT(Name);

เพิ่มข้อมูลทดสอบ

mysql> INSERT INTO DemoTable1833 VALUES('John Doe');
mysql> INSERT INTO DemoTable1833 VALUES('Adam Smith');
mysql> INSERT INTO DemoTable1833 VALUES('Chris Brown');
mysql> INSERT INTO DemoTable1833 VALUES('John Smith');

การค้นหาแบบ Full-Text Search

ใช้ MATCH() AGAINST() ในโหมด Boolean Mode:

mysql> SELECT * FROM DemoTable1833
    WHERE MATCH(Name) AGAINST('+John +Smith' IN BOOLEAN MODE);

ผลลัพธ์:

+------------+
| Name       |
+------------+
| John Smith |
| John Doe   |
| Adam Smith |
+------------+

การทำงานของ Boolean Mode

  • + = ต้องมีคำนี้ (AND)
  • - = ห้ามมีคำนี้ (NOT)
  • * = Wildcard สำหรับคำนำหน้า
  • "" = ค้นหาข้อความที่ตรงกันทุกตัวอักษร

ข้อจำกัด

  • FULLTEXT INDEX ทำงานได้กับ MyISAM และ InnoDB (MySQL 5.6+)
  • คำที่สั้นกว่า 3-4 ตัวอักษร (ขึ้นกับการตั้งค่า) จะถูกเพิกเฉย
  • Stopwords จะไม่ถูกจัดทำดัชนี