全部产品
Search
文档中心

AnalyticDB:zhparser

更新时间:Jun 26, 2025

Topik ini menjelaskan cara menggunakan ekstensi zhparser untuk melakukan segmentasi kata dalam bahasa Tiongkok selama pencarian teks penuh di AnalyticDB for PostgreSQL.

Ikhtisar pencarian teks penuh

Secara default, PostgreSQL melakukan segmentasi kata berdasarkan spasi dan tanda baca. PostgreSQL tidak mendukung segmentasi kata dalam bahasa Tiongkok. AnalyticDB for PostgreSQL dapat diintegrasikan dengan ekstensi zhparser untuk mendukung segmentasi kata dalam bahasa Tiongkok.

Dalam kebanyakan kasus, Anda dapat menggunakan salah satu dari metode berikut untuk melakukan pencarian teks penuh:

  • Kueri data dalam tabel:

    SELECT name FROM <table...>
    WHERE to_tsvector('english', name) @@ to_tsquery('english', 'friend');
  • Buat indeks Generalized Inverted Index (GIN):

    CREATE INDEX <idx_...> ON <table...> USING gin(to_tsvector('english', name));

Konfigurasikan ekstensi zhparser

  1. Instal ekstensi zhparser.

    Sebelum menggunakan ekstensi zhparser untuk melakukan segmentasi kata dalam bahasa Tiongkok selama pencarian teks penuh di instance AnalyticDB for PostgreSQL, Anda harus menginstal ekstensi zhparser pada halaman Ekstensi instance tersebut. Untuk informasi lebih lanjut, lihat Instal, Perbarui, dan Hapus Ekstensi.

  2. Eksekusi pernyataan berikut untuk mengonfigurasi zhparser sebagai pengurai teks Tiongkok, lalu atur nama konfigurasi pencarian teks menjadi zh_cn:

    CREATE TEXT SEARCH CONFIGURATION zh_cn (PARSER = zhparser);

    Setelah konfigurasi selesai, Anda dapat menjalankan perintah \dF atau \dFp untuk melihat konfigurasi.

  3. Kueri jenis token yang digunakan untuk segmentasi kata.

    • Eksekusi pernyataan berikut untuk menanyakan konfigurasi kamus zhparser:

      SELECT ts_token_type('zhparser');

      Hasil berikut dikembalikan:

                ts_token_type
      ---------------------------------
       (97,a,"kata sifat")
       (98,b,"diferensiasi")
       (99,c,"konjungsi")
       (100,d,"kata keterangan")
       (101,e,"seruan")
       (102,f,"posisi")
       (103,g,"akar")
       (104,h,"kepala")
       (105,i,"idiom")
       (106,j,"singkatan")
       (107,k,"ekor")
       (108,l,"tmp")
       (109,m,"numeral")
       (110,n,"kata benda")
       (111,o,"onomatope")
       (112,p,"preposisional")
       (113,q,"kuantitas")
       (114,r,"kata ganti")
       (115,s,"spasi")
       (116,t,"waktu")
       (117,u,"penunjang")
       (118,v,"kata kerja")
       (119,w,"tanda baca")
       (120,x,"tidak dikenal")
       (121,y,"modal")
       (122,z,"status")
      (26 baris)
                                  
    • Eksekusi pernyataan berikut untuk menanyakan konfigurasi zh_cn:

      SELECT * FROM pg_ts_config_map 
      WHERE mapcfg=(SELECT oid FROM pg_ts_config WHERE cfgname='zh_cn');
  4. Tambahkan atau hapus jenis token.

    • Tambahkan jenis token.

      Eksekusi pernyataan berikut untuk menambahkan kata benda, kata kerja, kata sifat, idiom, seruan, dan idiom sementara sebagai jenis token yang digunakan untuk segmentasi kata:

      ALTER TEXT SEARCH CONFIGURATION zh_cn ADD MAPPING FOR n,v,a,i,e,l WITH simple;
    • Hapus jenis token.

      Eksekusi pernyataan berikut untuk menghapus kata benda, kata kerja, kata sifat, idiom, seruan, dan idiom sementara dari jenis token yang digunakan untuk segmentasi kata:

      ALTER TEXT SEARCH CONFIGURATION zh_cn DROP MAPPING IF EXISTS FOR n,v,a,i,e,l;
  5. Gunakan fungsi berikut untuk menguji fitur segmentasi kata Tiongkok selama pencarian teks penuh:

    • to_tsvector:

      SELECT to_tsvector('zh_cn', 'Ada dua metode untuk pencarian teks penuh');

      Hasil berikut dikembalikan:

       to_tsvector
      ---------------------------------------
      'pencarian teks penuh':4 'metode':2 'ada':1 'melakukan':3
      (1 BARIS)
    • to_tsquery:

      SELECT to_tsquery('zh_cn', 'Ada dua metode untuk pencarian teks penuh');

      Hasil berikut dikembalikan:

       to_tsquery
      -------------------------------------
       'ada' & 'metode' & 'melakukan' & 'pencarian teks penuh'
      (1 BARIS)

Kamus Kustom

Ekstensi zhparser mendukung kamus kustom di AnalyticDB for PostgreSQL. Anda dapat menambahkan data ke atau menghapus data dari tabel kamus kustom bernama zhparser.zhprs_custom_word untuk menambahkan atau menghapus kata kustom. Tabel zhparser.zhprs_custom_word memiliki struktur data berikut.

Catatan
  • Anda tidak perlu membuat tabel kamus secara manual. Saat Anda menginstal ekstensi zhparser, sistem secara otomatis membuat tabel kamus kustom bernama zhparser.zhprs_custom_word.

  • Jika Anda telah menginstal ekstensi zhparser, sistem secara otomatis membuat tabel kamus kustom bernama zhparser.zhprs_custom_word.

CREATE TABLE zhparser.zhprs_custom_word
(
    word text PRIMARY key,                                   --- Kata kustom
    tf FLOAT DEFAULT '1.0',                                  --- Frekuensi istilah (TF) kata tersebut. Nilai default: 1.0.
    idf FLOAT DEFAULT '1.0',                                 --- Frekuensi dokumen terbalik (IDF) kata tersebut. Nilai default: 1.0.
    attr CHAR DEFAULT '@', CHECK(attr = '@' OR attr = '!')   --- Jenis kata. Nilai valid: @ (kata baru) dan ! (kata stop).
);

Tambahkan konfigurasi kamus kustom

Eksekusi pernyataan berikut untuk menambahkan konfigurasi segmentasi kustom ke zh_cn:

ALTER TEXT SEARCH CONFIGURATION zh_cn ADD MAPPING FOR x with simple;

Tambahkan kata ke tabel kamus kustom

INSERT INTO zhparser.zhprs_custom_word(word, attr) VALUES('dua metode', '@');

Hapus kata dari tabel kamus kustom

DELETE FROM zhparser.zhprs_custom_word WHERE word='dua metode';

Kueri tabel kamus kustom

SELECT * FROM zhparser.zhprs_custom_word;

Muat ulang tabel kamus kustom

Setelah Anda menambahkan kata ke atau menghapus kata dari tabel zhparser.zhprs_custom_word, Anda harus memuat ulang tabel agar modifikasi berlaku. Eksekusi pernyataan berikut untuk memuat ulang tabel zhparser.zhprs_custom_word:

SELECT sync_zhprs_custom_word();

Periksa efek segmentasi kata Tiongkok

Eksekusi pernyataan berikut sebelum dan sesudah Anda mengonfigurasi tabel zhparser.zhprs_custom_word untuk memeriksa efek segmentasi kata Tiongkok:

SELECT to_tsvector('zh_cn', 'Ada dua metode untuk pencarian teks penuh');

Hasil segmentasi kata berikut dikembalikan:

Sebelum mengonfigurasi tabel zhparser.zhprs_custom_word

+---------------------------------------+
| to_tsvector             |  
+---------------------------------------+
|'pencarian teks penuh':4 'metode':2 'ada':1 'melakukan':3 |
+---------------------------------------+
(1 BARIS)

Setelah mengonfigurasi tabel zhparser.zhprs_custom_word

+---------------------------------------+
| to_tsvector             |  
+---------------------------------------+
|'dua metode':2 'pencarian teks penuh':4 'ada':1 'melakukan':3|
+---------------------------------------+
(1 BARIS)

Referensi