Nếu bạn cần Fiat
và 500
bất cứ nơi nào mà thứ tự không quan trọng, sau đó
SELECT * FROM models MATCH(name) AGAINST('+Fiat +500');
Nếu bạn cần Fiat 500
cùng nhau, sau đó
SELECT * FROM models MATCH(name) AGAINST('+"Fiat 500"');
Nếu bạn cần Fiat
và không hoặc nhiều hơn 500
, sau đó
SELECT * FROM models MATCH(name) AGAINST('+Fiat 500');
Nếu bạn cần 500
và không hoặc nhiều hơn Fiat
, sau đó
SELECT * FROM models MATCH(name) AGAINST('Fiat +500');
Hãy thử !!!
CẬP NHẬT 2013-01-28 18:28 EDT
Đây là cài đặt mặc định cho tìm kiếm 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>
Lưu ý rằng ft_min_word_len > là 4 theo mặc định. Mã thông báo 500 có độ dài 3. do đó nó sẽ không được lập chỉ mục nào cả. Bạn sẽ phải làm ba (3) điều:
BƯỚC 01:Định cấu hình cho mã thông báo chuỗi nhỏ hơn
Thêm cái này vào /etc/my.cnf
[mysqld]
ft_min_word_len = 1
BƯỚC 02:Khởi động lại mysql
service mysql restart
BƯỚC 03:Lập chỉ mục lại tất cả các chỉ mục trong models
bảng
Bạn chỉ có thể thả và thêm chỉ mục FULLTEXT
hoặc làm theo từng giai đoạn và xem trước nó sẽ lớn như thế nào
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;
Khi bạn hài lòng, điều này đã hoạt động, sau đó chạy
DROP TABLE models_old;
Hãy thử !!!