全部产品
Search
文档中心

AnalyticDB:Analyzers untuk indeks teks penuh

更新时间:Jul 06, 2025

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.

Catatan

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:

  • true: mengaktifkan konversi batang.

  • false: menonaktifkan konversi batang.

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:

  • true: Segmentasi teks peka huruf besar/kecil.

  • false: Segmentasi teks tidak peka huruf besar/kecil.

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]
Catatan

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:

  • true: segmentasi kasar dalam mode ik_smart

  • false: segmentasi halus dalam mode ik_max_word

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]
Catatan

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]
Catatan

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]
Catatan

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]
Catatan

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:

  • true: Segmentasi teks peka huruf besar/kecil.

  • false: Segmentasi teks tidak peka huruf besar/kecil.

Tanyakan dan modifikasi parameter konfigurasi analyzer

AnalyticDB for MySQL memungkinkan Anda menanyakan dan memodifikasi parameter konfigurasi analyzer.

Tanyakan parameter konfigurasi

  • Eksekusi pernyataan SHOW adb_config untuk 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;
    Catatan

    Pernyataan SHOW adb_config dapat 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';
    Catatan

    Pernyataan 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;