Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mysql tìm kiếm chuỗi và số bằng MATCH () AGAINST ()

Nếu bạn cần Fiat500 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ử !!!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn Mysqli với trạng thái biến SET (tức là nhiều truy vấn)

  2. Cách sử dụng kết xuất MySQL từ một máy từ xa

  3. nhận giá trị của một cột bảng tổng hợp bổ sung laravel

  4. Đòi lại dung lượng đĩa sau khi thả cơ sở dữ liệu trong mysql

  5. Hiệu suất MySQL:nhiều bảng so với chỉ mục trên một bảng và phân vùng