Saya dapat menemukan masalah dan perbaikannya.
Pengaturan pencarian teks lengkapnya bagus karena saya ingin mencari dengan alt east 2 kata dan saya punya ft_min_word_len = 2
Sekarang saat melakukan lebih banyak pengujian, saya menemukannya secara acak mencari beberapa kata 2 karakter dan mengabaikan yang lain.
Ini contohnya
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
INSERT INTO articles (title,body) VALUES
('MySQL Tutorial','DBMS stands for DataBase ...'),
('How To Use MySQL Well','After you went through a ...'),
('Optimizing MySQL','In this tutorial we will show ...'),
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('use');
Empty set (0.00 sec)
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('Use');
Empty set (0.00 sec)
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('you');
Empty set (0.00 sec)
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('the');
Empty set (0.00 sec)
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('vs.');
Empty set (0.00 sec)
Tapi yang berikut ini berhasil
mysql> SELECT * FROM articles
-> WHERE MATCH (title,body) AGAINST ('run');
+----+-------------------+-------------------------------------+
| id | title | body |
+----+-------------------+-------------------------------------+
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
+----+-------------------+-------------------------------------+
Jadi ini sesuatu yang lain dan ternyata menemukan ft_stopword_file
yang memiliki daftar kata dan tidak melakukan apa pun jika pencarian terjadi dengan salah satunya.
Daftarnya ada di sini http://dev.mysql.com /doc/refman/5.1/en/fulltext-stopwords.html
Jadi dalam hal ini untuk memungkinkan pencarian kata dengan panjang minimal 2 karakter
- Setel ft_min_word_len ke 2
- Kemudian di file konfigurasi mysql , untuk debian /etc/mysql/my.cnf tambahkan ft_stopword_file='path/to/stopword_file.txt'
- Kami dapat mengosongkan file ini jika diperlukan.
Oh satu hal lagi setelah kita melakukan pengaturan di atas kita perlu me-restart mysql dan jika kita mengubah ft_min_word_len
maka kita perlu membangun kembali indeks atau memperbaiki tabel.