All Products
Search
Document Center

PolarDB:pg_jieba\ \(Tokenisasi bahasa Tiongkok\)

Last Updated:Mar 29, 2026

Pencarian teks penuh bawaan PostgreSQL mendukung bahasa berbasis alfabet, tetapi tidak dapat melakukan tokenisasi teks bahasa Tiongkok. Ekstensi pg_jieba mengatasi keterbatasan ini dengan melakukan tokenisasi teks bahasa Tiongkok menjadi leksem yang dapat dicari, sehingga memungkinkan pencarian teks penuh untuk konten berbahasa Tiongkok di PolarDB for PostgreSQL.

Versi yang didukung

pg_jieba tersedia pada kluster PolarDB for PostgreSQL yang menjalankan:

  • PostgreSQL 15 (versi revisi 15.7.2.0 atau lebih baru)

  • PostgreSQL 14 (versi revisi 14.5.2.0 atau lebih baru)

  • PostgreSQL 11 (versi revisi 1.1.28 atau lebih baru)

Untuk memeriksa versi revisi Anda saat ini:

  • PostgreSQL 15 dan 14:

    SELECT version();
  • PostgreSQL 11:

    SHOW polar_version;

Cara kerja

pg_jieba menyediakan tiga konfigurasi pencarian teks. Masing-masing menerapkan strategi tokenisasi berbeda yang sesuai untuk skenario pencarian tertentu:

KonfigurasiModePaling cocok untuk
jiebacfgMode eksakPengindeksan. Memisahkan teks menjadi kumpulan kata kunci paling tepat, tanpa sub-kata yang berlebihan.
jiebaqryMode lengkapMemaksimalkan recall dalam kueri. Mengekstraksi semua kombinasi kata yang mungkin, termasuk sub-kata.
jiebacfg_posMode eksak dengan posisiSaat Anda membutuhkan posisi offset karakter untuk setiap token. Juga menyertakan stop word yang diabaikan oleh mode eksak.

Memilih antara mode eksak dan mode lengkap: Gunakan jiebacfg untuk sebagian besar skenario indeks teks penuh—mode ini menghasilkan token yang lebih sedikit namun lebih tepat. Gunakan jiebaqry ketika melewatkan hasil pencarian lebih merugikan daripada adanya kebisingan; mode ini mengembalikan setiap sub-kata yang mungkin, sehingga meningkatkan recall dengan risiko hasil duplikat.

Aktifkan dan nonaktifkan ekstensi

Catatan

Hanya akun istimewa yang dapat menjalankan pernyataan ini.

Untuk membuat ekstensi pg_jieba:

CREATE EXTENSION pg_jieba;

Untuk menghapusnya:

DROP EXTENSION pg_jieba;

Lakukan tokenisasi teks bahasa Tiongkok

Ketiga konfigurasi bekerja dengan fungsi standar to_tsvector. Nama konfigurasi ditentukan sebagai argumen pertama.

Contoh 1 — Masukan: '小明硕士毕业于中国科学院计算所,后在日本京都大学深造'

Mode eksak (jiebacfg):

SELECT * FROM to_tsvector('jiebacfg', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造');
                        to_tsvector
----------------------------------------------------------------------------------
 '中国科学院':5 '小明':1 '日本京都大学':10 '毕业':3 '深造':11 '硕士':2 '计算所':6
(1 row)

Mode lengkap (jiebaqry) — menghasilkan lebih banyak token, termasuk sub-kata seperti '中国', '学院', dan '科学':

SELECT * FROM to_tsvector('jiebaqry', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造');
                                  to_tsvector
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 '中国':5 '中国科学院':9 '京都':16 '大学':17 '学院':7 '小明':1 '日本':15 '日本京都大学':18 '毕业':3 '深造':19 '硕士':2 '科学':6 '科学院':8 '计算':10 '计算所':11
(1 row)

Mode eksak dengan posisi (jiebacfg_pos) — menyertakan offset karakter dan stop word seperti '于', '后', '在':

SELECT * FROM to_tsvector('jiebacfg_pos', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造');
                                       to_tsvector
------------------------------------------------------------------------------------------------------------------------------------------
 '中国科学院:7':5 '于:6':4 '后:16':8 '在:17':9 '小明:0':1 '日本京都大学:18':10 '毕业:4':3 '深造:24':11 '硕士:2':2 '计算所:12':6 ',:15':7
(1 row)

Contoh 2 — Masukan: '李小福是创新办主任也是云计算方面的专家'

Mode eksak (jiebacfg):

SELECT * FROM to_tsvector('jiebacfg', '李小福是创新办主任也是云计算方面的专家');
                    to_tsvector
-------------------------------------------------------------------
 '专家':11 '主任':5 '云计算':8 '创新':3 '办':4 '方面':9 '李小福':1
(1 row)

Mode lengkap (jiebaqry) — juga mengembalikan '计算' sebagai sub-kata dari '云计算':

SELECT * FROM to_tsvector('jiebaqry', '李小福是创新办主任也是云计算方面的专家');
                          to_tsvector
-----------------------------------------------------------------------------
 '专家':12 '主任':5 '云计算':9 '创新':3 '办':4 '方面':10 '李小福':1 '计算':8
(1 row)

Mode eksak dengan posisi (jiebacfg_pos) — menyertakan stop word seperti '是', '也', '的' beserta offset-nya:

SELECT * FROM to_tsvector('jiebacfg_pos', '李小福是创新办主任也是云计算方面的专家');
                                              to_tsvector
---------------------------------------------------------------------------------------------------------------------------
 '专家:17':11 '主任:7':5 '也:9':6 '云计算:11':8 '创新:4':3 '办:6':4 '方面:14':9 '是:10':7 '是:3':2 '李小福:0':1 '的:16':10
(1 row)

Gunakan kamus kustom

pg_jieba mendukung beberapa kamus kustom. Muat istilah spesifik domain ke dalam kamus kustom untuk meningkatkan akurasi segmentasi konten Anda.

Penting

Sebelum menggunakan kamus kustom, tambahkan pg_jieba ke parameter shared_preload_libraries. Konfigurasikan ini di Konsol—lihat . Kluster akan restart setelah Anda menyimpan perubahan ini.

Contoh berikut menunjukkan bagaimana istilah dalam kamus kustom mengubah hasil segmentasi. Tanpa kamus kustom, '阿里云' dan '研发工程师' dipisahkan menjadi sub-kata. Setelah memuat kamus kustom, keduanya diperlakukan sebagai satu token.

  1. Masukkan istilah ke dalam kamus kustom pertama (indeks 0, bobot 10):

    INSERT INTO jieba_user_dict VALUES ('阿里云');
    INSERT INTO jieba_user_dict VALUES ('研发工程师', 0, 10);
  2. Periksa segmentasi dengan kamus bawaan. Pada tahap ini, kamus kustom belum aktif:

    SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师');
                    to_tsvector
    ------------------------------------------------------
     'zth':1 '一个':6 '云':4 '工程师':8 '研发':7 '阿里':3
    (1 row)

    Perhatikan bahwa '阿里云' dipisah menjadi '阿里' dan '云', serta '研发工程师' dipisah menjadi '研发' dan '工程师'.

  3. Beralih ke kamus kustom 0:

    SELECT jieba_load_user_dict(0);
     jieba_load_user_dict
    ----------------------
    
    (1 row)
  4. Jalankan kueri yang sama lagi. Istilah kustom kini dikenali sebagai satu token:

    SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师');
                    to_tsvector
    --------------------------------------------
     'zth':1 '一个':5 '研发工程师':6 '阿里云':3
    (1 row)

Langkah selanjutnya