All Products
Search
Document Center

PolarDB:zhparser\ \(tokenisasi bahasa Tiongkok\)

Last Updated:Mar 29, 2026

zhparser adalah ekstensi PostgreSQL untuk pencarian teks penuh dalam bahasa Tiongkok. Ekstensi ini melakukan tokenisasi teks Tiongkok menjadi segmen kata sehingga Anda dapat membuat indeks teks penuh dan menjalankan kueri teks pada konten berbahasa Tiongkok di PolarDB for PostgreSQL.

Aktifkan zhparser

Langkah 1: Instal ekstensi dan buat konfigurasi pencarian teks.

CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;

Langkah 2: (Opsional) Konfigurasikan parameter segmentasi.

Tetapkan parameter pada level role untuk mengontrol cara zhparser membagi teks:

ParameterDefaultDeskripsi
zhparser.multi_shortoffMenggabungkan kata-kata pendek menjadi segmen majemuk

Untuk mengaktifkan multi_short untuk semua role:

ALTER ROLE ALL SET zhparser.multi_short = on;

Langkah 3: Uji parser.

Jalankan pengujian cepat untuk memverifikasi bahwa ekstensi berfungsi:

SELECT * FROM ts_parse('zhparser', 'hello world! 2010年保障房建设在全国范围内获全面启动,从中央到地方纷纷加大了保障房的建设和投入力度。2011年,保障房进入了更大规模的建设阶段。住房城乡建设部党组书记、部长姜伟新去年底在全国住房城乡建设工作会议上表示,要继续推进保障性安居工程建设。');

Verifikasi vektor pencarian teks dan fungsi kueri:

SELECT to_tsvector('testzhcfg', '"今年保障房新开工数量虽然有所下调,但实际的年度在建规模以及竣工规模会超以往年份,相对应的对资金的需求也会创历史纪录。"陈国强说。在他看来,与2011年相比,2012年的保障房建设在资金配套上的压力将更为严峻。');
SELECT to_tsquery('testzhcfg', '保障房资金压力');

Buat indeks teks penuh

Gunakan Generalized Inverted Index (GIN) untuk mengindeks teks Tiongkok guna pencarian teks penuh yang cepat. Contoh berikut membuat indeks GIN pada kolom name tabel t1:

-- Buat indeks GIN
CREATE INDEX idx_t1 ON t1 USING gin (to_tsvector('zhcfg', upper(name)));

-- Jalankan kueri menggunakan indeks
SELECT * FROM t1 WHERE to_tsvector('zhcfg', upper(t1.name)) @@ to_tsquery('zhcfg', '(防火)');

Menyesuaikan kamus segmentasi kata bahasa Tiongkok

Kamus default mencakup kata-kata umum dalam bahasa Tiongkok. Untuk istilah spesifik domain seperti jargon industri atau nama produk, tambahkan segmen kata kustom ke pg_ts_custom_word.

Langkah 1: Periksa hasil segmentasi saat ini.

SELECT to_tsquery('testzhcfg', '保障房资金压力');

Langkah 2: Tambahkan segmen kata kustom.

INSERT INTO pg_ts_custom_word VALUES ('保障房资');

Langkah 3: Sinkronkan kamus dan sambung ulang.

SELECT zhprs_sync_dict_xdb();

Setelah sinkronisasi selesai, tutup dan buka kembali koneksi:

\c

Langkah 4: Verifikasi hasil segmentasi baru.

SELECT to_tsquery('testzhcfg', '保障房资金压力');

Batasan

BatasanNilaiPerilaku saat melebihi batas
Segmen kata kustom1.000.000Segmen kata yang melebihi batas akan diabaikan
Panjang segmen kata128 byteByte yang melebihi 128 akan dipotong

Kamus kustom dan kamus default aktif secara bersamaan.

Setelah menambah, menghapus, atau memperbarui segmen kata, jalankan SELECT zhprs_sync_dict_xdb(); dan sambung ulang agar perubahan diterapkan.