programing

MariaDB 10의 FULLTEXT 색인

newsource 2022. 10. 26. 21:05

MariaDB 10의 FULLTEXT 색인

MariaDB 문서에서는 InnoDB용 FULLTEXT 인덱스가 버전 10.0.5부터 지원되고 있습니다(https://mariadb.com/kb/en/mariadb/documentation/optimization-and-tuning/optimization-and-indexes/full-text-indexes/fulltext-index-overview/)

최근에 MariaDB 10.0.13을 설치하고 다음과 같이 MyISAM 테이블을 InnoDB로 변환하려고 했습니다.

MariaDB [(test)]> ALTER TABLE field_values ENGINE=InnoDB;

그러나 다음과 같은 오류가 발생했습니다.

ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes

여기 있습니다.SHOW INDEXES테이블에 대한 쿼리:

MariaDB [(test)]> show indexes in  field_values;
+--------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table                    | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| field_values |          0 | PRIMARY  |            1 | productid   | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               |
| field_values |          0 | PRIMARY  |            2 | fieldid     | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| field_values |          1 | value    |            1 | value       | NULL      |        NULL |     NULL | NULL   |      | FULLTEXT   |         |               |
+--------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 rows in set (0.00 sec)

MariaDB 설명서에는 CHAR, VARCHAR 또는 TEXT 열에 대해서만 생성할 수 있는 인덱스가 나와 있습니다.자, 여기 있습니다DESCRIBE TABLE테이블용:

MariaDB [(test)]> describe  field_values ;
+-----------+-----------+------+-----+---------+-------+
| Field     | Type      | Null | Key | Default | Extra |
+-----------+-----------+------+-----+---------+-------+
| productid | int(11)   | NO   | PRI | 0       |       |
| fieldid   | int(11)   | NO   | PRI | 0       |       |
| value     | char(255) | NO   | MUL |         |       |
+-----------+-----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

해당 필드(value)가 지원되고 있습니다.CHAR.

마지막으로 My MariaDB 버전을 소개합니다.

mysql  Ver 15.1 Distrib 10.0.13-MariaDB, for Linux (x86_64) using readline 5.1

따라서 적어도 MariaDB 문서에 따르면 이 작업은 지원되어야 하지만 오류가 발생하고 있습니다.MariaDB 10.0.13에서 FULLTEXT 인덱스를 활성화하려면 다른 작업을 수행해야 합니까?

그래서 MariaDB를 10.0.14로 업그레이드한 후 Fulltext Index를 수동으로 추가했는데 완벽하게 작동했습니다.MyIsam Index에서 XtraDB/InnoDB Index로의 변환 오류가 있을 수 있습니다.

하지만 제대로 작동했어야 하는 것은 다음과 같습니다.

  1. MyIsam에서 인덱스 삭제
  2. MariaDB를 10.x로 업그레이드
  3. MyIsam을 InnoDB로 전환
  4. 수동으로 인덱스 추가

다음과 같이 MariaDB에 전체 텍스트 색인을 추가할 수 있습니다.

ALTER TABLE your_table ADD FULLTEXT INDEX `ft_column_name` (column_name);

그런 다음 예상대로 쿼리를 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/25416423/fulltext-indexes-in-mariadb-10