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

mysql ft_min_word_len change trên ubuntu không hoạt động

Tôi đã có thể tìm thấy sự cố và cách khắc phục.

Cài đặt tìm kiếm toàn văn rất tốt vì tôi muốn tìm kiếm với 2 từ alt đông và tôi đã có ft_min_word_len = 2

Bây giờ trong khi thực hiện thêm thử nghiệm, tôi thấy nó ngẫu nhiên tìm kiếm một vài từ có 2 ký tự và bỏ qua các từ khác.

Đây là một ví dụ

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)

Nhưng những điều sau đây hoạt động

mysql> SELECT * FROM articles
    -> WHERE MATCH (title,body) AGAINST ('run');
+----+-------------------+-------------------------------------+
| id | title             | body                                |
+----+-------------------+-------------------------------------+
|  4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
+----+-------------------+-------------------------------------+

Vì vậy, một cái gì đó khác và dường như đã tìm thấy nó là ft_stopword_file trong đó có một danh sách các từ và không thực hiện bất kỳ điều gì nếu bất kỳ tìm kiếm nào xảy ra với một trong số chúng.

Danh sách ở đây http://dev.mysql.com /doc/refman/5.1/en/fulltext-stopwords.html

Vì vậy, trong trường hợp này, hãy cho phép bất kỳ tìm kiếm từ nào có độ dài ít nhất là 2 ký tự

  • Đặt ft_min_word_len thành 2
  • Sau đó, trong tệp cấu hình mysql, cho debian /etc/mysql/my.cnf, hãy thêm ft_stopword_file ='path / to / stopword_file.txt'
  • Chúng tôi có thể để trống tệp này nếu cần.

Còn một điều nữa khi chúng ta thực hiện các cài đặt trên, chúng ta cần khởi động lại mysql và nếu chúng ta thay đổi ft_min_word_len thì chúng ta cần xây dựng lại chỉ mục hoặc sửa chữa bảng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng GROUP BY và ORDER BY cùng nhau trong LARAVEL 5.6

  2. Làm thế nào để chuyển đổi thời gian MySQL

  3. Lược đồ cơ sở dữ liệu là gì?

  4. Lỗi liên kết truyền thông Openshift MySQL

  5. Cảnh báo:mysql_fetch_array () mong đợi tham số 1 là tài nguyên [...]