Mysql

如何在 MySql 8 上啟用全文搜尋?

  • August 14, 2020

我正在使用 MySql 8。我想加快對錶格的搜尋速度

select * FROM dirctory_coop where name like '%mystr%';

有人提到使用全文搜尋 - https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html。但是,我對此有疑問。下面是我的表…

mysql> desc directory_coop;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int          | NO   | PRI | NULL    | auto_increment |
| name     | varchar(250) | NO   |     | NULL    |                |
| enabled  | tinyint(1)   | NO   |     | NULL    |                |
| phone_id | int          | YES  | MUL | NULL    |                |
| email_id | int          | YES  | MUL | NULL    |                |
| web_site | longtext     | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

我嘗試了以下語句來更新我的列定義,但出現以下錯誤…

mysql> alter table directory_coop modify column name FULLTEXT;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULLTEXT' at line 1
mysql> alter table directory_coop modify name FULLTEXT;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULLTEXT' at line 1

我還需要做什麼來啟用全文搜尋應該提供的性能優化?

您必須添加或創建一個像

ALTER TABLE directory_coop ADD FULLTEXT idx_name(name);

有關更多資訊,請閱讀手冊ALTER TABLE

您必須做的第一件事是創建一個FULLTEXT索引,如下所示:

ALTER TABLE directory_coop ADD FULLTEXT name_ftndx (name);

這只是開始。

您需要做的下一件事是了解使用FULLTEXT索引的 SQL 語法。

請閱讀關於全文索引的 MySQL 文件

在 DBA StackExchange 中有很多關於使用它們的文章。

這是一個很好的例子:為什麼全文搜尋返回的行數比 LIKE 少。這將向您展示使用 LIKE 和使用 MATCH 函式之間的區別。

我仍然建議在閱讀我的文章之前閱讀 MySQL 文件

警告

請注意InnoDB FULLTEXT Index 中不包含 36 個單詞

我在 DBA StackExchange 中提到過兩次

引用自:https://dba.stackexchange.com/questions/273760