All Products
Search
Document Center

AnalyticDB:Buat indeks teks penuh

Last Updated:Mar 29, 2026

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 FULLTEXT terpisah 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_name

Parameter

ParameterDeskripsi
table_nameNama 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_nameNama kolom. Harus terdiri dari 1–127 karakter (huruf, angka, atau garis bawah) dan dimulai dengan huruf atau garis bawah.
column_typeTipe data kolom. Setidaknya satu kolom harus bertipe VARCHAR. Untuk tipe data yang didukung, lihat Tipe data dasar.
column_attributesAtribut kolom. Untuk detailnya, lihat CREATE TABLE.
column_constraintsKendala kolom. Untuk detailnya, lihat CREATE TABLE.
FULLTEXTMendeklarasikan indeks teks penuh.
INDEX|KEYPengenal kata kunci untuk indeks. Baik INDEX maupun KEY dapat diterima.
index_nameNama indeks teks penuh.
analyzer_nameAlat 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_nameKamus 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.

  1. 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';
  2. Tambahkan indeks teks penuh bernama fidx_k pada kolom keyword menggunakan alat analisis standard:

    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;
  3. 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;

Langkah selanjutnya