Topik ini menjelaskan analyzers yang disediakan oleh AnalyticDB for MySQL, serta penggunaan dan efek segmentasi mereka.
Ikhtisar
AnalyticDB for MySQL menyediakan berbagai analyzer bawaan untuk mendukung indeks teks penuh, termasuk AliNLP analyzer, IK analyzer, Standard analyzer, Ngram analyzer, Edge_ngram analyzer, dan Pattern analyzer. Anda dapat menggunakan analyzer default atau analyzer bawaan lainnya sesuai dengan kebutuhan bisnis Anda. Analyzer default ditentukan berdasarkan aturan berikut:
Untuk kluster versi sebelum V3.1.4.15, AliNLP analyzer digunakan secara default.
Untuk kluster V3.1.4.15 atau lebih baru, IK analyzer digunakan secara default.
Untuk informasi lebih lanjut tentang cara melihat versi mesin minor kluster, lihat Bagaimana cara saya melihat versi minor kluster?
Tentukan analyzer
Sintaks
FULLTEXT INDEX idx_name(`column_name`) [ WITH ANALYZER analyzer_name ] [ WITH DICT tbl_dict_name];Parameter
idx_name: Nama indeks teks penuh.
column_name: Nama kolom tempat membuat indeks teks penuh.
WITH ANALYZER analyzer_name: Menentukan analyzer.
WITH DICT tbl_dict_name: Menentukan kamus kustom. AnalyticDB for MySQL mendukung kamus kustom. Untuk informasi lebih lanjut, lihat Kamus Kustom untuk Indeks Teks Penuh.
Contoh
Tentukan analyzer saat membuat tabel yang berisi indeks teks penuh.
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`), // Gunakan 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); AliNLP analyzer
AliNLP analyzer adalah toolkit analisis bahasa alami yang disediakan oleh Alibaba Cloud dan Akademi DAMO berdasarkan teknologi pemrosesan bahasa alami (NLP). Analyzer ini memungkinkan penggunaan entitas dan kata-kata stop dari kamus teks penuh kustom. AliNLP analyzer dapat membagi teks bahasa alami menjadi segmen-segmen yang sesuai. Berbagai bahasa didukung, termasuk Cina, Inggris, Indonesia, Melayu, Thailand, Vietnam, Prancis, dan Spanyol.
Parameter konfigurasi
Untuk informasi lebih lanjut tentang cara menanyakan dan memodifikasi konfigurasi analyzer, lihat bagian "Tanyakan dan Modifikasi Parameter Konfigurasi Analyzer" dari topik ini.
Parameter | Deskripsi |
FULLTEXT_SPLIT_GRANULARITY | Granularitas segmentasi. Nilainya harus bilangan bulat dari 2 hingga 8. Nilai default adalah 2. |
FULLTEXT_FILTER_ST_CONVERT_ENABLED | Menentukan apakah akan mengaktifkan konversi batang. Nilai default: false. Nilai valid:
Sebagai contoh, men diubah menjadi man, dan cars diubah menjadi car. |
FULLTEXT_TOKENIZER_CASE_SENSITIVE | Menentukan apakah segmentasi teks peka huruf besar/kecil. Nilai default: false. Nilai valid:
|
Efek segmentasi
Konfigurasi default menghasilkan efek segmentasi berikut:
Tanyakan efek segmentasi untuk teks Inggris.
/*+ mode=two_phase*/ SELECT fulltext_alinlp_test('Hello world');Informasi berikut dikembalikan:
[hello, , world]
Saat menggunakan pernyataan SELECT untuk menanyakan efek segmentasi, tambahkan /*+ mode=two_phase*/ di awal pernyataan.
IK analyzer
IK analyzer adalah toolkit analisis bahasa Tionghoa sumber terbuka ringan. Analyzer ini memungkinkan penggunaan entitas dan kata-kata stop dari kamus teks penuh kustom.
Parameter konfigurasi
Untuk informasi lebih lanjut tentang cara menanyakan dan memodifikasi konfigurasi analyzer, lihat bagian "Tanyakan dan Modifikasi Parameter Konfigurasi Analyzer" dari topik ini.
Parameter | Deskripsi |
CSTORE_IK_SEGMENTER_USE_SMART_ENABLE | Granularitas segmentasi. Nilai default: false. Nilai valid:
|
CSTORE_IK_SEGMENTER_LETTER_MIN_LENGTH | Panjang minimum segmen. Nilainya harus bilangan bulat dari 2 hingga 16. Nilai default adalah 3. |
CSTORE_IK_SEGMENTER_LETTER_MAX_LENGTH | Panjang maksimum segmen. Nilainya harus bilangan bulat dari 2 hingga 256. Nilai default adalah 128. |
Efek segmentasi
Konfigurasi default menghasilkan efek segmentasi berikut:
Tanyakan efek segmentasi untuk teks Inggris.
/*+ mode=two_phase*/ SELECT fulltext_ik_test('Hello world');Informasi berikut dikembalikan:
[hello, world, or]
Saat menggunakan pernyataan SELECT untuk menanyakan efek segmentasi, tambahkan /*+ mode=two_phase*/ di awal pernyataan.
Standard analyzer
Standard analyzer menerapkan aturan segmentasi teks yang berbeda untuk setiap bahasa. Untuk teks Inggris, analyzer ini mengubah teks menjadi huruf kecil dan menghapus kata-kata stop serta tanda baca sebelum melakukan segmentasi. Untuk teks Tionghoa, analyzer ini langsung membagi teks menjadi karakter individu. Standard analyzer mendukung penggunaan entitas dan kata-kata stop dari kamus teks penuh kustom.
Parameter konfigurasi
Untuk informasi lebih lanjut tentang cara menanyakan dan memodifikasi konfigurasi analyzer, lihat bagian "Tanyakan dan Modifikasi Parameter Konfigurasi Analyzer" dari topik ini.
Parameter | Deskripsi |
FULLTEXT_MAX_TOKEN_LENGTH | Panjang maksimum teks yang dapat disegmentasi. Nilainya harus bilangan bulat dari 1 hingga 1048576. Nilai default adalah 255. |
Efek segmentasi
Konfigurasi default menghasilkan efek segmentasi berikut:
Tanyakan efek segmentasi untuk teks Inggris.
/*+ mode=two_phase*/ SELECT fulltext_standard_test('Hello world');Informasi berikut dikembalikan:
[hello, world]
Saat menggunakan pernyataan SELECT untuk menanyakan efek segmentasi, tambahkan /*+ mode=two_phase*/ di awal pernyataan.
Ngram analyzer
Ngram analyzer membagi teks berdasarkan nilai parameter FULLTEXT_NGRAM_TOKEN_SIZE dan mendukung penggunaan entitas serta kata-kata stop dari kamus teks penuh kustom. Ngram analyzer dapat meningkatkan efisiensi pengambilan kabur.
Parameter konfigurasi
Untuk informasi lebih lanjut tentang cara menanyakan dan memodifikasi konfigurasi analyzer, lihat bagian "Tanyakan dan Modifikasi Parameter Konfigurasi Analyzer" dari topik ini.
Parameter | Deskripsi |
FULLTEXT_NGRAM_TOKEN_SIZE | Panjang segmen. Nilainya harus bilangan bulat dari 1 hingga 8. Nilai default adalah 2.
|
Efek segmentasi
Konfigurasi default menghasilkan efek segmentasi berikut:
Tanyakan efek segmentasi untuk teks Inggris.
/*+ mode=two_phase*/ SELECT fulltext_ngram_test('Hello world');Informasi berikut dikembalikan:
[he, el, ll, lo, o , w, wo, or, rl, ld]
Saat menggunakan pernyataan SELECT untuk menanyakan efek segmentasi, tambahkan /*+ mode=two_phase*/ di awal pernyataan.
Edge_ngram analyzer
Edge_ngram analyzer menggunakan metode segmentasi yang sama dengan ngram analyzer. Analyzer ini ideal untuk skenario segmentasi berbasis awalan dan pengambilan kata, serta mendukung penggunaan entitas dan kata-kata stop dari kamus teks penuh kustom.
Parameter konfigurasi
Untuk informasi lebih lanjut tentang cara menanyakan dan memodifikasi konfigurasi analyzer, lihat bagian "Tanyakan dan Modifikasi Parameter Konfigurasi Analyzer" dari topik ini.
Parameter | Deskripsi |
FULLTEXT_MIN_GRAM_SIZE | Panjang minimum segmen awalan. Nilainya harus bilangan bulat dari 1 hingga 8. Nilai default adalah 1. |
FULLTEXT_MAX_GRAM_SIZE | Panjang maksimum segmen awalan. Panjang maksimum harus lebih besar dari panjang minimum. Nilainya harus bilangan bulat dari 1 hingga 16. Nilai default adalah 2. |
Efek segmentasi
Konfigurasi default menghasilkan efek segmentasi berikut:
Tanyakan efek segmentasi untuk teks Inggris.
/*+ mode=two_phase*/ SELECT fulltext_edge_ngram_test('Hello world');Informasi berikut dikembalikan:
[h, he]
Saat menggunakan pernyataan SELECT untuk menanyakan efek segmentasi, tambahkan /*+ mode=two_phase*/ di awal pernyataan.
Pattern analyzer
Pattern analyzer membagi teks berdasarkan ekspresi reguler. Analyzer ini tidak mendukung penggunaan entitas dan kata-kata stop dari kamus teks penuh kustom atau mengeksekusi pernyataan SQL untuk menanyakan efek segmentasi.
Sintaks
FULLTEXT INDEX fidx_name(`column_name`) WITH ANALYZER pattern_tokenizer("Custom_rule") [ WITH DICT `tbl_dict_name` ];Parameter
Custom_rule: Ekspresi reguler.
Parameter konfigurasi
Untuk informasi lebih lanjut tentang cara menanyakan dan memodifikasi konfigurasi analyzer, lihat bagian "Tanyakan dan Modifikasi Parameter Konfigurasi Analyzer" dari topik ini.
Parameter | Deskripsi |
FULLTEXT_TOKENIZER_CASE_SENSITIVE | Menentukan apakah segmentasi teks peka huruf besar/kecil. Nilai default: false. Nilai valid:
|
Tanyakan dan modifikasi parameter konfigurasi analyzer
AnalyticDB for MySQL memungkinkan Anda menanyakan dan memodifikasi parameter konfigurasi analyzer.
Tanyakan parameter konfigurasi
Eksekusi pernyataan
SHOW adb_configuntuk menanyakan parameter konfigurasi.Sintaks
show adb_config key <analyzer_param>;Parameter
analyzer_param: Nama parameter konfigurasi.
Contoh
show adb_config key FULLTEXT_NGRAM_TOKEN_SIZE;CatatanPernyataan
SHOW adb_configdapat digunakan untuk menanyakan parameter konfigurasi default dan yang dimodifikasi.Eksekusi pernyataan SELECT untuk menanyakan parameter konfigurasi.
Sintaks
SELECT `key`, `value`, `update_time` FROM INFORMATION_SCHEMA.kepler_meta_configs WHERE key = '<analyzer_param>';Parameter
analyzer_param: Nama parameter konfigurasi.
Contoh
SELECT `key`, `value`, `update_time` FROM INFORMATION_SCHEMA.kepler_meta_configs WHERE key = 'FULLTEXT_NGRAM_TOKEN_SIZE';CatatanPernyataan SELECT dapat digunakan untuk menanyakan hanya parameter konfigurasi yang dimodifikasi. Jika Anda menggunakan pernyataan ini untuk menanyakan parameter konfigurasi default, nilai null akan dikembalikan.
Modifikasi parameter konfigurasi
Sintaks
set adb_config <analyzer_param>=<value>;Parameter
analyzer_param: Nama parameter konfigurasi.
value: Nilai parameter konfigurasi.
Contoh
set adb_config FULLTEXT_NGRAM_TOKEN_SIZE=3;