Topik ini menjelaskan ekstensi pihak ketiga open source pg_jieba yang digunakan untuk pencarian teks lengkap dalam bahasa Mandarin.
Prasyarat
Ekstensi ini didukung pada kluster PolarDB for PostgreSQL (Compatible with Oracle) yang menjalankan mesin berikut:
PolarDB for PostgreSQL (Compatible with Oracle) 2.0 (versi revisi 2.0.14.2.0 atau lebih baru).
PolarDB for PostgreSQL (Compatible with Oracle) 1.0 (versi revisi 1.1.28 atau lebih baru).
Anda dapat mengeksekusi pernyataan berikut untuk melihat versi revisi dari kluster PolarDB for PostgreSQL (Compatible with Oracle):
SHOW polar_version;Ikhtisar
Ekstensi pg_jieba menyediakan mode pencarian teks berikut:
jiebacfg: exact mode. Mode ini membagi teks secara presisi tanpa kata-kata berlebihan.
jiebaqry: full mode. Mode ini mendapatkan semua kata yang cocok dalam teks, termasuk kata-kata berlebihan.
jiebacfg_pos: exact mode (with subscript position). Informasi posisi setiap kata ditambahkan ke hasil mode tepat. Kata-kata stop yang diabaikan dalam mode tepat (kata-kata dengan frekuensi tinggi yang tidak digunakan dalam pencarian) juga ditampilkan.
Penggunaan
Membuat dan menghapus ekstensi
Buat ekstensi pg_jieba.
CREATE EXTENSION pg_jieba;Hapus ekstensi pg_jieba.
DROP EXTENSION pg_jieba;
Hanya akun dengan hak istimewa yang berwenang yang dapat mengeksekusi pernyataan di atas.
Contoh
Contoh 1:
Mode tepat
SELECT * FROM to_tsvector('jiebacfg', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造');Hasil sampel:
to_tsvector ---------------------------------------------------------------------------------- '中国科学院':5 '小明':1 '日本京都大学':10 '毕业':3 '深造':11 '硕士':2 '计算所':6 (1 baris)Mode lengkap
SELECT * FROM to_tsvector('jiebaqry', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造');Hasil sampel:
to_tsvector ----------------------------------------------------------------------------------------------------------------------------------------------------------------- '中国':5 '中国科学院':9 '京都':16 '大学':17 '学院':7 '小明':1 '日本':15 '日本京都大学':18 '毕业':3 '深造':19 '硕士':2 '科学':6 '科学院':8 '计算':10 '计算所':11 (1 baris)Mode tepat (dengan posisi subscript)
SELECT * FROM to_tsvector('jiebacfg_pos', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造');Hasil sampel:
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 baris)
Contoh 2:
Mode tepat
SELECT * FROM to_tsvector('jiebacfg', '李小福是创新办主任也是云计算方面的专家');Hasil sampel:
to_tsvector ------------------------------------------------------------------- '专家':11 '主任':5 '云计算':8 '创新':3 '办':4 '方面':9 '李小福':1 (1 baris)Mode lengkap
SELECT * FROM to_tsvector('jiebaqry', '李小福是创新办主任也是云计算方面的专家');Hasil sampel:
to_tsvector ----------------------------------------------------------------------------- '专家':12 '主任':5 '云计算':9 '创新':3 '办':4 '方面':10 '李小福':1 '计算':8 (1 baris)Mode tepat (dengan posisi subscript)
SELECT * FROM to_tsvector('jiebacfg_pos', '李小福是创新办主任也是云计算方面的专家');Hasil sampel:
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 baris)
Fitur tambahan
Ekstensi pg_jieba memungkinkan Anda mengonfigurasi beberapa kamus kustom dan beralih di antara kamus tersebut.
Untuk menggunakan kamus kustom, tambahkan pg_jieba ke parameter shared_preload_libraries. Anda dapat mengonfigurasi shared_preload_libraries di konsol. Untuk informasi lebih lanjut, lihat Konfigurasikan Parameter Kluster. Kluster akan dimulai ulang setelah Anda mengonfigurasi parameter ini. Lanjutkan dengan hati-hati.
Masukkan data ke dalam kamus kustom pertama. Secara default, data dimasukkan ke dalam kamus kustom pertama, yang diwakili oleh angka 0. Nilai bobot kamus kustom pertama adalah 10.
INSERT INTO jieba_user_dict VALUES ('阿里云'); INSERT INTO jieba_user_dict VALUES ('研发工程师',0,10);Gunakan kamus yang telah ditentukan sebelumnya dalam ekstensi pg_jieba untuk memisahkan teks Cina.
SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师');Hasil sampel:
to_tsvector ------------------------------------------------------ 'zth':1 '一个':6 '云':4 '工程师':8 '研发':7 '阿里':3 (1 baris)Beralih ke kamus kustom 0.
SELECT jieba_load_user_dict(0);Hasil sampel:
jieba_load_user_dict ---------------------- (1 baris)Gunakan kamus kustom 0 untuk memisahkan kata.
SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师');Hasil sampel:
to_tsvector -------------------------------------------- 'zth':1 '一个':5 '研发工程师':6 '阿里云':3 (1 baris)