无法在 MYSQL 中为阿拉伯文本创建 FULLTEXT INDEX
Unable to create FULLTEXT INDEX in MYSQL for Arabic Text
我有一个很大的 MySQL 数据库。一个 table 'news' 有超过 600 万个条目。两列是阿拉伯语文本。我可以使用以下方法为两列创建索引:
mysql> CREATE FULLTEXT INDEX news_index ON news(news_title, news_text);
但索引为空,当我尝试执行全文搜索时收到以下错误:
mysql> SELECT news_title FROM news WHERE MATCH(news_title) AGAINST('أردوغان');
ERROR 1191 (HY000): Can't find FULLTEXT index matching the column list
数据库使用InnoDB和UTF-8。列编码是 utf8_unicode_ci,我认为这可能是问题所以我将两列更改为 utf8_general_ci。
创建索引时,索引列表显示:
+-------+------------+---------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+---------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| news | 0 | PRIMARY | 1 | news_id | A | 4293286 | NULL | NULL | | BTREE | | |
| news | 1 | fk_news_1_idx | 1 | news_country | A | 18 | NULL | NULL | | BTREE | | |
| news | 1 | news_index | 1 | news_title | NULL | 4293286 | NULL | NULL | YES | FULLTEXT | | |
| news | 1 | news_index | 2 | news_text | NULL | 4293286 | NULL | NULL | YES | FULLTEXT | | |
+-------+------------+---------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
我也试过用以下方法建立索引:
mysql> ALTER TABLE news ADD FULLTEXT(news_title, news_text);
但又一次,运气不好。我遗漏了一些东西,当我创建索引时,它运行了一个多小时,所以 某些事情 正在发生。我错过了什么?
由于您的全文索引应用于两个 news_title,news_text
列,因此您应该在 MATCH()
关键字
中同时使用 to
SELECT news_title FROM news WHERE MATCH(news_title,news_text) AGAINST('أردوغان');
我有一个很大的 MySQL 数据库。一个 table 'news' 有超过 600 万个条目。两列是阿拉伯语文本。我可以使用以下方法为两列创建索引:
mysql> CREATE FULLTEXT INDEX news_index ON news(news_title, news_text);
但索引为空,当我尝试执行全文搜索时收到以下错误:
mysql> SELECT news_title FROM news WHERE MATCH(news_title) AGAINST('أردوغان');
ERROR 1191 (HY000): Can't find FULLTEXT index matching the column list
数据库使用InnoDB和UTF-8。列编码是 utf8_unicode_ci,我认为这可能是问题所以我将两列更改为 utf8_general_ci。
创建索引时,索引列表显示:
+-------+------------+---------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+---------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| news | 0 | PRIMARY | 1 | news_id | A | 4293286 | NULL | NULL | | BTREE | | |
| news | 1 | fk_news_1_idx | 1 | news_country | A | 18 | NULL | NULL | | BTREE | | |
| news | 1 | news_index | 1 | news_title | NULL | 4293286 | NULL | NULL | YES | FULLTEXT | | |
| news | 1 | news_index | 2 | news_text | NULL | 4293286 | NULL | NULL | YES | FULLTEXT | | |
+-------+------------+---------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
我也试过用以下方法建立索引:
mysql> ALTER TABLE news ADD FULLTEXT(news_title, news_text);
但又一次,运气不好。我遗漏了一些东西,当我创建索引时,它运行了一个多小时,所以 某些事情 正在发生。我错过了什么?
由于您的全文索引应用于两个 news_title,news_text
列,因此您应该在 MATCH()
关键字
SELECT news_title FROM news WHERE MATCH(news_title,news_text) AGAINST('أردوغان');