Jika Anda membutuhkan Fiat
dan 500
di mana saja di mana ketertiban tidak masalah, maka
SELECT * FROM models MATCH(name) AGAINST('+Fiat +500');
Jika Anda membutuhkan Fiat 500
bersama-sama, lalu
SELECT * FROM models MATCH(name) AGAINST('+"Fiat 500"');
Jika Anda membutuhkan Fiat
dan nol atau lebih 500
, lalu
SELECT * FROM models MATCH(name) AGAINST('+Fiat 500');
Jika Anda membutuhkan 500
dan nol atau lebih Fiat
, lalu
SELECT * FROM models MATCH(name) AGAINST('Fiat +500');
Cobalah !!!
PERBARUI 28-01-2013 18:28 EDT
Berikut adalah pengaturan default untuk pencarian FULLTEXT
mysql> show variables like 'ft%';
+--------------------------+----------------+
| Variable_name | Value |
+--------------------------+----------------+
| ft_boolean_syntax | + -><()~*:""&| |
| ft_max_word_len | 84 |
| ft_min_word_len | 4 |
| ft_query_expansion_limit | 20 |
| ft_stopword_file | (built-in) |
+--------------------------+----------------+
5 rows in set (0.00 sec)
mysql>
Perhatikan bahwa ft_min_word_len adalah 4 secara default. Token 500 panjangnya 3. sehingga tidak akan diindeks sama sekali. Anda harus melakukan tiga (3) hal:
LANGKAH 01 :Konfigurasikan untuk token string yang lebih kecil
Tambahkan ini ke /etc/my.cnf
[mysqld]
ft_min_word_len = 1
LANGKAH 02 :Mulai ulang mysql
service mysql restart
LANGKAH 03 :Mengindeks ulang semua indeks di models
tabel
Anda bisa menjatuhkan dan menambahkan indeks FULLTEXT
atau lakukan secara bertahap dan lihat seberapa besar hasilnya
CREATE TABLE models_new LIKE models;
ALTER TABLE models_new DROP INDEX name;
ALTER TABLE models_new ADD FULLTEXT name (name);
ALTER TABLE models_new DISABLE KEYS;
INSERT INTO models_new SELECT * FROM models;
ALTER TABLE models_new ENABLE KEYS;
ALTER TABLE models RENAME models_old;
ALTER TABLE models_new RENAME models;
Ketika Anda puas ini berhasil, lalu jalankan
DROP TABLE models_old;
Cobalah !!!