วิธียกเลิก fulltext stopword ใน MySQL

ยิ่งอยู่กับ Fulltext นานจึงรู้จักดีขึ้นเจอปัญหาที่ต้องแก้มากขึ้น เลยทำให้รู้ว่า คำว่า “Me” เป็นคำที่อยู่ใน Stopword แถมมีคำอื่นๆอีก ที่เราอาจจะต้องใช้หาใน Fulltext ผมเลยต้องการ Disabled Stopword ทั้งหมดแล้วปล่อยให้เป็นหน้าที่ของ ft_min_word_len กับ ft_max_word_len เป็นตัวทำ index ก็พอ เรามาดูวิธียกเลิกบน centos กัน

  1. เข้าไปที่ไฟล์ /etc/my.cnf เพิ่ม
     [mysqld]
     ft_stopword_file=””
     [myisamchk]
     ft_stopword_file=””
     โดยเหตุผลที่เพิ่มใน mysqld เพื่อบอก mysql ว่าหลังจากนี้ไม่ต้องใช้ stopword ละนะ แล้วที่เราบอก myisamchk เพื่อบอกว่า เวลา repair ให้ใช้ config นี้แทนแบบ default นะทำให้เมื่อเรา REPAIR TABLE `tbl` QUICK แล้วมันจะได้ไม่ใช้ stopword
  2. Restart MySQL
  3. ไปใน Database ที่มี Table Fulltext แล้วใช้คำสั่ง “REPAIR TABLE `table` QUICK” เป็นอันเสร็จครับ

ส่วนใครต้องการศึกษาวิธีเปลี่ยน ft_min_word_len , ft_max_word_len ก็เป็นแบบเดียวกันครับ ยกตัวอย่างเช่น

[mysqld]
 ft_min_word_len=2
 ft_max_word_len=56
 ft_stopword_file = “”; #Disable Stopword String

[myisamchk]
 ft_min_word_len=2
 ft_max_word_len=56
 ft_stopword_file = “”; #Disable Stopword String

เป็นต้นครับโดยต้องขอบคุณ Reference ทั้งสองที่นี้ไว้ด้วยครับ

http://dev.mysql.com/doc/refman/5.5/en/fulltext-stopwords.html

http://www.network-technologies.org/Projects/Virtual_Brain_Online.php/article/rebuild_repair_alter_MySQL_FULLTEXT_index/


Originally published at dominixz.com.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.