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.