AnalyticDB for MySQL menyediakan enam analyzer bawaan untuk indeks teks penuh: AliNLP, IK, Standard, Ngram, Edge_ngram, dan Pattern. Setiap analyzer menerapkan strategi tokenisasi berbeda—pilih sesuai kebutuhan bahasa, pola pencarian (fuzzy, awalan, atau kecocokan eksak), serta apakah Anda memerlukan pemrosesan teks bahasa Tiongkok.
Pilih analyzer
| Analyzer | Paling cocok untuk | Dukungan bahasa | Kamus kustom |
|---|---|---|---|
| AliNLP | Tokenisasi berbasis Pemrosesan Bahasa Alami (NLP) untuk teks Tiongkok dan multibahasa | Tiongkok, Inggris, Indonesia, Melayu, Thailand, Vietnam, Prancis, Spanyol | Ya |
| IK | Teks Tiongkok dengan granularitas yang dapat dikonfigurasi | Tiongkok | Ya |
| Standard | Teks Inggris dengan penyaringan kata penghubung (stop-word) | Aturan spesifik bahasa | Ya |
| Ngram | Pencarian substring fuzzy | Semua | Ya |
| Edge_ngram | Pencarian awalan dan pengisian otomatis (autocomplete) | Any | Ya |
| Pattern | Tokenisasi berbasis pembatas kustom melalui ekspresi reguler | Any | Tidak |
Analyzer default berdasarkan versi kluster:
Kluster sebelum V3.1.4.15: analyzer AliNLP
Kluster V3.1.4.15 atau lebih baru: analyzer IK
Untuk memeriksa versi minor kluster Anda, lihat Bagaimana cara melihat versi minor kluster?
Tentukan analyzer
Sintaksis
FULLTEXT INDEX idx_name(`column_name`) [ WITH ANALYZER analyzer_name ] [ WITH DICT tbl_dict_name];Parameter
| Parameter | Deskripsi |
|---|---|
idx_name | Nama indeks teks penuh. |
column_name | Nama kolom yang akan diindeks. |
WITH ANALYZER analyzer_name | Analyzer yang digunakan. Abaikan untuk menggunakan analyzer default. |
WITH DICT tbl_dict_name | Kamus kustom yang diterapkan. Untuk detailnya, lihat Kamus kustom untuk indeks teks penuh. |
Contoh
Pernyataan berikut membuat tabel dengan enam indeks teks penuh, satu untuk setiap analyzer:
CREATE TABLE `tbl_fulltext_demo` (
`id` int,
`content` varchar,
`content_alinlp` varchar,
`content_ik` varchar,
`content_standard` varchar,
`content_ngram` varchar,
`content_edge_ngram` varchar,
FULLTEXT INDEX fidx_c(`content`), -- Analyzer default
FULLTEXT INDEX fidx_alinlp(`content_alinlp`) WITH ANALYZER alinlp,
FULLTEXT INDEX fidx_ik(`content_ik`) WITH ANALYZER ik,
FULLTEXT INDEX fidx_standard(`content_standard`) WITH ANALYZER standard,
FULLTEXT INDEX fidx_ngram(`content_ngram`) WITH ANALYZER ngram,
FULLTEXT INDEX fidx_edge_ngram(`content_edge_ngram`) WITH ANALYZER edge_ngram,
PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(id);Pratinjau hasil tokenisasi
Sebelum menetapkan analyzer, uji cara analyzer tersebut melakukan tokenisasi terhadap teks Anda. Setiap analyzer memiliki fungsi uji khusus yang mengembalikan daftar token untuk string input tertentu.
Tambahkan awalan /*+ mode=two_phase*/ pada semua kueri uji tokenisasi; jika tidak, kueri tersebut tidak akan dieksekusi dengan benar.Contoh berikut menggunakan input yang sama — 'Hello world' — pada semua analyzer sehingga Anda dapat langsung membandingkan output-nya:
| Analyzer | Fungsi uji | Output untuk 'Hello world' |
|---|---|---|
| AliNLP | fulltext_alinlp_test() | [hello, , world] |
| IK | fulltext_ik_test() | [hello, world, or] |
| Standard | fulltext_standard_test() | [hello, world] |
| Ngram (ukuran token default: 2) | fulltext_ngram_test() | [he, el, ll, lo, o , w, wo, or, rl, ld] |
| Edge_ngram (min: 1, max: 2) | fulltext_edge_ngram_test() | [h, he] |
Penggunaan:
/*+ mode=two_phase*/ SELECT fulltext_edge_ngram_test('Hello world');[hello, world, or]Analyzer Pattern tidak mendukung pengujian tokenisasi berbasis SQL.
Analyzer AliNLP
Paling cocok untuk teks Tiongkok dan multibahasa. Analyzer AliNLP dikembangkan oleh Alibaba Cloud dan Akademi DAMO menggunakan teknologi Pemrosesan Bahasa Alami (NLP). Analyzer ini memecah teks bahasa alami berurutan menjadi segmen-segmen bermakna dan mendukung kamus kustom untuk entitas dan kata penghubung (stop words) yang ditentukan pengguna.
Bahasa yang didukung: Tiongkok, Inggris, Indonesia, Melayu, Thailand, Vietnam, Prancis, Spanyol
Hasil tokenisasi untuk teks Inggris:
/*+ mode=two_phase*/ SELECT fulltext_alinlp_test('Hello world');Hasil:
[hello, , world]
Contoh berikut menunjukkan hasil tokenisasi dengan konfigurasi default:
Parameter konfigurasi
| Parameter | Deskripsi | Default |
|---|---|---|
FULLTEXT_SPLIT_GRANULARITY | Granularitas segmentasi. Bilangan bulat dari 2 hingga 8. | 2 |
FULLTEXT_FILTER_ST_CONVERT_ENABLED | Mengaktifkan konversi bentuk dasar (misalnya, men → man, cars → car). | false |
FULLTEXT_TOKENIZER_CASE_SENSITIVE | Apakah tokenisasi peka huruf besar/kecil. | false |
FULLTEXT_FILTER_PINYIN_ENABLE | Menentukan apakah pencarian pinyin diaktifkan. Nilai yang valid:
| |
FULLTEXT_FILTER_PINYIN_ENABLE | Menentukan apakah pencarian pinyin diaktifkan. Nilai yang valid:
|
Analyzer IK
Paling cocok untuk teks Tiongkok. Analyzer IK adalah analyzer Tiongkok sumber terbuka yang ringan. Analyzer ini mendukung dua mode segmentasi — granularitas kasar dan granularitas halus — serta menerima kamus kustom untuk entitas dan kata penghubung (stop words).
Hasil tokenisasi untuk teks Inggris:
/*+ mode=two_phase*/ SELECT fulltext_ik_test('Hello world');Hasil:
[hello, world, or]
Contoh berikut menunjukkan hasil tokenisasi dengan konfigurasi default:
Parameter konfigurasi
| Parameter | Deskripsi | Default |
|---|---|---|
CSTORE_IK_SEGMENTER_USE_SMART_ENABLE | Mode segmentasi. true = granularitas kasar (mode ik_smart); false = granularitas halus (mode ik_max_word). | false |
CSTORE_IK_SEGMENTER_LETTER_MIN_LENGTH | Panjang segmen minimum. Bilangan bulat dari 2 hingga 16. | 3 |
CSTORE_IK_SEGMENTER_LETTER_MAX_LENGTH | Panjang segmen maksimum. Bilangan bulat dari 2 hingga 256. | 128 |
Analyzer Standard
Paling cocok untuk teks Inggris. Analyzer Standard menerapkan aturan spesifik bahasa: untuk bahasa Inggris, teks diubah menjadi huruf kecil dan kata penghubung (stop words) serta tanda baca dihapus sebelum dilakukan tokenisasi; untuk bahasa Tiongkok, teks dipisah menjadi karakter individual. Analyzer ini mendukung kamus kustom.
Hasil tokenisasi untuk teks Inggris:
/*+ mode=two_phase*/ SELECT fulltext_standard_test('Hello world');Hasil:
[hello, world]
Contoh berikut menunjukkan hasil tokenisasi dengan konfigurasi default:
Parameter konfigurasi
| Parameter | Deskripsi | Default |
|---|---|---|
FULLTEXT_MAX_TOKEN_LENGTH | Panjang token maksimum. Bilangan bulat dari 1 hingga 1.048.576. | 255 |
Analyzer Ngram
Paling cocok untuk pencarian substring fuzzy. Analyzer Ngram memecah teks menjadi semua substring kemungkinan dengan panjang tetap, sehingga efektif untuk kueri kecocokan parsial. Analyzer ini mendukung kamus kustom.
Hasil tokenisasi untuk teks Inggris:
/*+ mode=two_phase*/ SELECT fulltext_ngram_test('Hello world');Hasil:
[he, el, ll, lo, o , w, wo, or, rl, ld]
Contoh berikut menunjukkan hasil tokenisasi dengan konfigurasi default:
Parameter konfigurasi
| Parameter | Deskripsi | Default |
|---|---|---|
FULLTEXT_NGRAM_TOKEN_SIZE | Panjang token. Bilangan bulat dari 1 hingga 8. | 2 |
Analyzer Edge_ngram
Paling cocok untuk pencarian awalan dan pengisian otomatis (autocomplete/search-as-you-type). Analyzer Edge_ngram menghasilkan token awalan dengan panjang bertambah — misalnya, h, lalu he — sehingga ideal untuk mencocokkan kata dari awal. Analyzer ini mendukung kamus kustom.
Tips: Edge_ngram bekerja baik ketika istilah pencarian muncul di awal kata. Untuk pencocokan substring fuzzy di mana saja dalam teks, gunakan analyzer Ngram sebagai gantinya.
Hasil tokenisasi teks Inggris.
/*+ mode=two_phase*/ SELECT fulltext_edge_ngram_test('Hello world');Hasil:
[h, he]
Contoh berikut menunjukkan hasil tokenisasi dengan konfigurasi default:
Parameter konfigurasi
| Parameter | Deskripsi | Default |
|---|---|---|
FULLTEXT_MIN_GRAM_SIZE | Panjang awalan minimum. Bilangan bulat dari 1 hingga 8. | 1 |
FULLTEXT_MAX_GRAM_SIZE | Panjang awalan maksimum. Bilangan bulat dari 1 hingga 16. Harus lebih besar dari FULLTEXT_MIN_GRAM_SIZE. | 2 |
Analyzer Pattern
Paling cocok untuk pembatas kustom. Analyzer Pattern melakukan tokenisasi teks dengan memisahkan berdasarkan pola ekspresi reguler yang Anda tentukan. Analyzer ini tidak mendukung kamus kustom atau pengujian tokenisasi berbasis SQL.
Sintaksis
FULLTEXT INDEX fidx_name(`column_name`) WITH ANALYZER pattern_tokenizer("Custom_rule") [ WITH DICT `tbl_dict_name` ];Custom_rule adalah ekspresi reguler yang menentukan pola pemisahan.
Parameter konfigurasi
| Parameter | Deskripsi | Default |
|---|---|---|
FULLTEXT_TOKENIZER_CASE_SENSITIVE | Apakah tokenisasi peka huruf besar/kecil. | false |
Kelola konfigurasi analyzer
Kueri parameter konfigurasi
Gunakan salah satu metode berikut untuk memeriksa nilai saat ini dari parameter konfigurasi.
Metode 1: `SHOW adb_config`
Mengembalikan nilai default dan nilai yang telah dimodifikasi.
show adb_config key <analyzer_param>;Contoh:
show adb_config key FULLTEXT_NGRAM_TOKEN_SIZE;Metode 2: `SELECT` dari `INFORMATION_SCHEMA`
Hanya mengembalikan nilai yang telah dimodifikasi. Jika parameter belum pernah diubah dari nilai default-nya, kueri ini mengembalikan null.
SELECT `key`, `value`, `update_time`
FROM INFORMATION_SCHEMA.kepler_meta_configs
WHERE key = '<analyzer_param>';Contoh:
SELECT `key`, `value`, `update_time`
FROM INFORMATION_SCHEMA.kepler_meta_configs
WHERE key = 'FULLTEXT_NGRAM_TOKEN_SIZE';Modifikasi parameter konfigurasi
set adb_config <analyzer_param>=<value>;Contoh:
set adb_config FULLTEXT_NGRAM_TOKEN_SIZE=3;