Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

perubahan mysql ft_min_word_len di ubuntu tidak berfungsi

Saya dapat menemukan masalah dan perbaikannya.

Pengaturan pencarian teks lengkapnya bagus karena saya ingin mencari dengan alt east 2 kata dan saya punya ft_min_word_len = 2

Sekarang saat melakukan lebih banyak pengujian, saya menemukannya secara acak mencari beberapa kata 2 karakter dan mengabaikan yang lain.

Ini contohnya

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)

Tapi yang berikut ini berhasil

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

Jadi ini sesuatu yang lain dan ternyata menemukan ft_stopword_file yang memiliki daftar kata dan tidak melakukan apa pun jika pencarian terjadi dengan salah satunya.

Daftarnya ada di sini http://dev.mysql.com /doc/refman/5.1/en/fulltext-stopwords.html

Jadi dalam hal ini untuk memungkinkan pencarian kata dengan panjang minimal 2 karakter

  • Setel ft_min_word_len ke 2
  • Kemudian di file konfigurasi mysql , untuk debian /etc/mysql/my.cnf tambahkan ft_stopword_file='path/to/stopword_file.txt'
  • Kami dapat mengosongkan file ini jika diperlukan.

Oh satu hal lagi setelah kita melakukan pengaturan di atas kita perlu me-restart mysql dan jika kita mengubah ft_min_word_len maka kita perlu membangun kembali indeks atau memperbaiki tabel.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memecahkan kegagalan tautan komunikasi dengan JDBC dan MySQL

  2. Bagaimana cara menambahkan batasan CHECK khusus pada tabel MySQL?

  3. cara memformat bidang tanggal di MYSQL

  4. Menghapus Substring yang Digandakan

  5. Sphinx Cari klien mysql di server produksi