Невозможно создать ИНДЕКС FULLTEXT в MYSQL для арабского текста - PullRequest
0 голосов
/ 31 марта 2019

У меня есть большая база данных MySQL. Одна таблица «Новости» содержит более 6 миллионов записей. Два столбца - текст на арабском языке. Я могу создать индекс для двух столбцов, используя:

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);

Но опять же, не повезло. Я что-то упустил, когда я создаю индекс, он работает более часа, поэтому что-то происходит. Чего мне не хватает?

1 Ответ

0 голосов
/ 31 марта 2019

Поскольку ваш полнотекстовый индекс применяется к обоим news_title,news_text столбцам, вы должны использовать оба ключевых слова to in MATCH()

SELECT news_title FROM news WHERE MATCH(news_title,news_text) AGAINST('أردوغان');
...