Indeks teks penuh memungkinkan Anda menjalankan kueri pencarian teks penuh terhadap kolom VARCHAR di AnalyticDB for MySQL. Halaman ini mencakup pembuatan, verifikasi, dan penghapusan indeks teks penuh pada tabel baru maupun yang sudah ada.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster AnalyticDB for MySQL yang menjalankan versi V3.1.4.9 atau lebih baru (disarankan V3.1.4.17 atau lebih baru)
Untuk memeriksa versi kluster Anda, lihat Bagaimana cara menanyakan versi kluster AnalyticDB for MySQL?.
Batasan
Indeks teks penuh hanya dapat dibuat pada satu kolom dalam satu waktu. Untuk mengindeks beberapa kolom, jalankan pernyataan
FULLTEXTterpisah untuk setiap kolom.Indeks teks penuh hanya didukung pada kolom bertipe VARCHAR.
Cara kerja
Indeks teks penuh di AnalyticDB for MySQL diterapkan secara berbeda tergantung pada waktu penulisan data:
Data yang baru ditulis — diindeks secara real time; tidak diperlukan langkah tambahan.
Data historis — tidak diindeks secara otomatis. Setelah menambahkan indeks, jalankan
BUILD TABLE ... force=true;untuk mengindeks baris yang sudah ada. Kueri terhadap data historis tidak dipercepat hingga task BUILD selesai.
Buat indeks teks penuh saat membuat tabel
Sintaks
CREATE TABLE [IF NOT EXISTS] table_name (
column_name column_type [column_attributes] [column_constraints] [COMMENT 'string'],
[FULLTEXT [INDEX|KEY] [index_name] (column_name) [index_option]],
...
)
table_attribute
[partition_options]
[AS] query_expression
COMMENT 'string'Dengan index_option dapat berupa:
-- Tentukan alat analisis (opsional):
WITH ANALYZER analyzer_name
-- Tentukan kamus kustom (opsional):
WITH DICT tbl_dict_nameParameter
| Parameter | Deskripsi |
|---|---|
table_name | Nama tabel. Harus terdiri dari 1–127 karakter (huruf, angka, atau garis bawah) dan dimulai dengan huruf atau garis bawah. Gunakan format db_name.table_name untuk membedakan tabel dengan nama yang sama di database berbeda. |
column_name | Nama kolom. Harus terdiri dari 1–127 karakter (huruf, angka, atau garis bawah) dan dimulai dengan huruf atau garis bawah. |
column_type | Tipe data kolom. Setidaknya satu kolom harus bertipe VARCHAR. Untuk tipe data yang didukung, lihat Tipe data dasar. |
column_attributes | Atribut kolom. Untuk detailnya, lihat CREATE TABLE. |
column_constraints | Kendala kolom. Untuk detailnya, lihat CREATE TABLE. |
FULLTEXT | Mendeklarasikan indeks teks penuh. |
INDEX|KEY | Pengenal kata kunci untuk indeks. Baik INDEX maupun KEY dapat diterima. |
index_name | Nama indeks teks penuh. |
analyzer_name | Alat analisis yang digunakan untuk tokenisasi. Jika tidak ditentukan, alat analisis default akan digunakan. Untuk daftar alat analisis yang tersedia, lihat Alat analisis untuk indeks teks penuh. |
tbl_dict_name | Kamus kustom yang digunakan. Untuk detailnya, lihat Kamus kustom untuk indeks teks penuh. |
Contoh
Buat tabel bernama tbl_fulltext_name dengan indeks teks penuh pada kolom content:
CREATE TABLE `tbl_fulltext_name` (
`id` int,
`content` varchar,
`keyword` varchar,
FULLTEXT INDEX fidx_c(`content`),
PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(id);Verifikasi bahwa indeks telah dibuat:
SHOW INDEX FROM tbl_fulltext_name;Output yang diharapkan:
+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| tbl_fulltext_name | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| tbl_fulltext_name | 1 | id_0_idx | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| tbl_fulltext_name | 1 | keyword_2_idx | 1 | keyword | A | 0 | NULL | NULL | | BTREE | | |
| tbl_fulltext_name | 1 | fidx_c | 1 | content | A | 0 | NULL | NULL | | FULLTEXT | | |
+-------------------+------------+---------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+Entri fidx_c dengan Index_type = FULLTEXT mengonfirmasi bahwa indeks berhasil dibuat.
Tambahkan indeks teks penuh ke tabel yang sudah ada
Sintaks
ALTER TABLE `table_name` ADD FULLTEXT [INDEX|KEY] index_name (column_name) [index_option]Contoh
Langkah-langkah berikut menambahkan indeks teks penuh ke tabel yang sudah ada dan mengindeks data historisnya.
Buat tabel bernama
tbl_fulltext_name:CREATE TABLE `tbl_fulltext_name` ( `id` int, `content` varchar, `keyword` varchar, FULLTEXT INDEX fidx_c(`content`), PRIMARY KEY (`id`) ) DISTRIBUTED BY HASH(id) INDEX_ALL = 'N';Tambahkan indeks teks penuh bernama
fidx_kpada kolomkeywordmenggunakan alat analisisstandard:Jika tidak ada alat analisis yang ditentukan, alat analisis default akan digunakan. Untuk daftar alat analisis yang tersedia, lihat Alat analisis untuk indeks teks penuh.
ALTER TABLE `tbl_fulltext_name` ADD FULLTEXT INDEX fidx_k(`keyword`) WITH ANALYZER standard;Bangun indeks untuk data historis yang sudah ada. Baris yang ditulis sebelum langkah 2 tidak dapat dicari hingga task BUILD ini selesai.
BUILD TABLE `tbl_fulltext_name` force=true;Waktu yang dibutuhkan tergantung pada jumlah data dalam tabel.
Hapus indeks teks penuh
Sintaks
ALTER TABLE table_name DROP FULLTEXT INDEX index_name;Contoh
Hapus indeks teks penuh fidx_k dari tbl_fulltext_name:
ALTER TABLE `tbl_fulltext_name` DROP FULLTEXT INDEX fidx_k;