Pencarian Teks Penuh Bahasa Cina dengan ServBay: Panduan Penggunaan zhparser
zhparser
adalah modul ekstensi pihak ketiga yang tangguh untuk PostgreSQL, dirancang khusus agar efisien dalam menangani teks bahasa Cina. Ekstensi ini memberikan kemampuan segmentasi kata Cina dan pencarian teks penuh yang akurat untuk basis data PostgreSQL—sangat ideal digunakan pada aplikasi pencarian konten berbahasa Cina. ServBay sebagai lingkungan pengembangan web lokal yang komprehensif telah mengintegrasikan dan mendukung ekstensi zhparser
. Selain itu, ServBay juga telah menggabungkan pustaka segmentasi kata scws
(Simple Chinese Word Segmentation), sehingga zhparser
dapat memanfaatkan scws
untuk mendukung kamus kustom.
Dokumen ini akan memandu Anda secara detail tentang cara memasang (mengaktifkan) dan mengonfigurasi zhparser
dalam lingkungan ServBay, menerapkan pencarian teks penuh bahasa Cina, serta memanfaatkan fitur kamus khusus menggunakan scws
bawaan ServBay.
1. Ringkasan
Bagi aplikasi yang mengelola banyak teks bahasa Cina—seperti sistem manajemen konten, forum, atau platform e-commerce—kemampuan pencarian teks penuh yang efisien dan akurat sangatlah penting. PostgreSQL memang menawarkan fitur pencarian teks penuh secara bawaan, namun dukungan aslinya terhadap bahasa Cina kurang optimal karena berbasis pemisahan kata dengan spasi. Ekstensi zhparser
mengintegrasikan teknologi segmentasi kata bahasa Cina sehingga PostgreSQL mampu mengenali batas kata dengan benar—hal ini memungkinkan pencarian teks penuh bahasa Cina yang efektif.
ServBay sudah mengintegrasikan zhparser
secara siap pakai, menghilangkan kebutuhan kompilasi atau pemasangan manual ekstensi. Anda dapat dengan mudah membangun lingkungan pengembangan lokal yang mendukung pencarian teks Cina hanya dengan beberapa langkah sederhana.
2. Prasyarat
Sebelum menggunakan zhparser
, pastikan:
- ServBay telah terpasang di sistem Anda.
- Paket perangkat lunak PostgreSQL di ServBay sudah diaktifkan dan sedang berjalan. Anda dapat memonitor serta mengelola status paket melalui antarmuka aplikasi ServBay.
3. Memasang (Mengaktifkan) Ekstensi zhparser
ServBay telah menempatkan file modul zhparser
di lokasi yang dapat dikenali oleh PostgreSQL. Anda hanya perlu menjalankan perintah SQL di database target untuk mengaktifkannya.
Terhubung ke Database PostgreSQL Anda: Buka terminal dan gunakan alat baris perintah
psql
untuk terhubung ke PostgreSQL yang dijalankan oleh ServBay. Gantiservbay-demo
dengan nama pengguna database Anda yang sebenarnya, danyour_database_name
dengan nama basis data tempat mengaktifkanzhparser
.bashpsql -U servbay-demo -d your_database_name
1Jika Anda terhubung ke basis data default (biasanya sesuai dengan nama pengguna), Anda dapat mengabaikan parameter
-d
.Membuat Ekstensi
zhparser
: Di dalam antarmuka interaktifpsql
, jalankan perintah SQL berikut:sqlCREATE EXTENSION zhparser;
1Jika perintah berhasil, tidak akan ada pesan error. Jika muncul pesan bahwa ekstensi sudah ada, berarti ekstensi telah aktif sebelumnya.
Verifikasi Pemasangan
zhparser
: Anda dapat melihat daftar ekstensi yang terpasang di database dengan perintah berikut:sql\dx
1Pada daftar hasil, seharusnya tercantum
zhparser
beserta informasi versinya.
4. Konfigurasi zhparser
Setelah zhparser
diaktifkan, Anda perlu mengkonfigurasi fitur pencarian teks PostgreSQL agar dapat memanfaatkan segmentasi kata Cina. Hal ini terutama berkaitan dengan pembuatan konfigurasi pencarian teks (Text Search Configuration).
Membuat Konfigurasi Pencarian Teks: Konfigurasi pencarian teks mendefinisikan cara dokumen diubah menjadi
tsvector
(untuk pengindeksan) dan cara string pencarian diubah menjaditsquery
(untuk pencarian). Kita akan membuat konfigurasi bernamachinese
dan menentukanzhparser
sebagai parse engine-nya.sqlCREATE TEXT SEARCH CONFIGURATION chinese (PARSER = zhparser);
1Menambah Pemetaan Kamus (Dictionary Mapping): Selain parser, konfigurasi pencarian teks membutuhkan peta jenis token ke kamus (dictionary) tertentu.
zhparser
memberi label pada kata berdasarkan jenisnya—misal kata benda (n), kata kerja (v), kata sifat (a), dll. Di sini, kita memetakan kata dengan label n, v, a, i, e, l ke kamussimple
. Kamussimple
adalah kamus default yang tidak melakukan transformasi apapun, semua token darizhparser
akan diindeks apa adanya.sqlALTER TEXT SEARCH CONFIGURATION chinese ADD MAPPING FOR n,v,a,i,e,l WITH simple; -- Anda dapat mengubah atau menambah label token sesuai kebutuhan aplikasi.
1
2Perhatian: Label kata versi
zhparser
bisa berbeda dari standar NLP pada umumnya. Daftar di atas adalah label yang paling sering digunakan olehzhparser
.
5. Menggunakan zhparser untuk Pencarian Teks Penuh
Setelah konfigurasi selesai, Anda dapat segera mulai melakukan pencarian teks penuh bahasa Cina dengan zhparser
. Berikut adalah cara mudah untuk menerapkannya.
5.1 Membuat Tabel & Data Contoh
Buat tabel percobaan untuk menyimpan data teks bahasa Cina dan isikan beberapa contoh data.
Buat Tabel:
sqlCREATE TABLE documents ( id SERIAL PRIMARY KEY, content TEXT );
1
2
3
4Sisipkan Data Contoh:
sqlINSERT INTO documents (content) VALUES ('Saya suka pemrosesan bahasa alami'), ('Segmentasi kata Cina adalah langkah penting dalam pemrosesan teks'), ('zhparser adalah alat segmentasi kata Cina yang bagus'), ('ServBay memudahkan pengembangan lokal');
1
2
3
4
5
5.2 Membuat Indeks Pencarian Teks Penuh
Agar proses pencarian lebih cepat, terutama pada kumpulan data besar, sangat dianjurkan untuk membuat indeks pada kolom yang akan digunakan dalam pencarian teks penuh. Untuk kolom berjenis tsvector
, indeks GIN (Generalized Inverted Index) adalah pilihan utama karena sangat efisien dalam menangani query teks penuh.
Membuat Indeks GIN: Indeks akan dibuat di kolom
content
, menggunakan fungsito_tsvector('chinese', content)
untuk mengubah isi kolom menjadi formattsvector
, dan memastikan memakai konfigurasichinese
sehingga segmented denganzhparser
.sqlCREATE INDEX idx_gin_content ON documents USING gin (to_tsvector('chinese', content));
1
5.3 Menjalankan Query Pencarian Teks Penuh
Kini Anda dapat memakai to_tsquery
untuk mengonversi kata kunci pencarian menjadi query format, lalu mencocokkannya dengan kolom berindeks tipe tsvector
menggunakan operator @@
.
Menjalankan Query Pencarian: Contoh, mencari dokumen yang mengandung kata “Cina” dan “segmentasi kata” sekaligus:
sqlSELECT id, content, to_tsvector('chinese', content) AS content_tsvector -- Opsional: Lihat hasil segmentasi kata FROM documents WHERE to_tsvector('chinese', content) @@ to_tsquery('chinese', 'Cina & segmentasi kata');
1
2
3
4
5
6Query ini akan mengembalikan dokumen dengan
id
2 dan 3 karena keduanya mengandung kata “Cina” dan “segmentasi kata” pada kontennya.Anda juga dapat mencoba query lain:
- Mencari dokumen berisi “ServBay”:sql(Akan mengembalikan dokumen id 4)
SELECT * FROM documents WHERE to_tsvector('chinese', content) @@ to_tsquery('chinese', 'ServBay');
1 - Mencari dokumen yang mengandung “pemrosesan bahasa alami”:sql(Akan mengembalikan dokumen id 1. Perhatikan bahwa apakah istilah seperti “pemrosesan bahasa alami” diperlakukan sebagai satu kata atau terpecah menjadi beberapa token sangat tergantung pada mode segmentasi dan kamus yang Anda gunakan. Jika istilah ini ada di kamus khusus, hasil pencarian akan lebih akurat.)
SELECT * FROM documents WHERE to_tsvector('chinese', content) @@ to_tsquery('chinese', 'pemrosesan bahasa alami');
1
- Mencari dokumen berisi “ServBay”:
6. Membuat Kamus Khusus dengan scws Bawaan ServBay
ServBay telah mengintegrasikan pustaka scws
, dan zhparser
dapat dikonfigurasi untuk memanfaatkan file kamus scws
, termasuk kamus khusus buatan pengguna, untuk meningkatkan akurasi segmentasi kata, terutama untuk istilah teknis atau kata baru.
6.1 Membuat File Kamus Khusus
Buat atau Edit File Kamus Kustom: Disarankan agar file kamus kustom
scws
disimpan pada direktori/Applications/ServBay/etc/scws/
. Buat file bernamacustom_dict.txt
(atau edit jika sudah ada).bash# Membuat atau mengedit file melalui terminal nano /Applications/ServBay/etc/scws/custom_dict.txt
1
2Tambahkan Kosakata Khusus ke File Kamus: Pada file
custom_dict.txt
tersebut, tuliskan satu kata/frasa yang ingin dikenalizhparser
per baris. Contoh:plaintextpemrosesan bahasa alami segmentasi kata Cina ServBay lingkungan pengembangan lokal
1
2
3
4Simpan dan tutup file.
6.2 Mengatur zhparser untuk Menggunakan Kamus Kustom
Beritahukan pada zhparser
untuk memakai file kamus khusus ini.
Atur Parameter
zhparser.dict_path
: Pada sesi PostgreSQL Anda, jalankan perintah berikut untuk menyetel path kamus:sqlSET zhparser.dict_path = '/Applications/ServBay/etc/scws/custom_dict.txt'; -- Pastikan jalur sudah benar dan user PostgreSQL memiliki hak akses ke file tersebut.
1
2Catatan: Pengaturan melalui
SET
hanya berlaku di sesi database saat ini. Jika Anda ingin parameter ini berlaku secara global di setiap koneksi baru, tambahkan ke file konfigurasi PostgreSQLpostgresql.conf
:zhparser.dict_path = '/Applications/ServBay/etc/scws/custom_dict.txt'
lalu restart layanan PostgreSQL (melalui aplikasi ServBay). Untuk kebutuhan pengembangan/testing lokal, menggunakan perintahSET
sudah sangat praktis.
6.3 Memuat Ulang Kamus
Setelah mengedit file kamus, Anda perlu memberi tahu zhparser
untuk memuat ulang agar perubahan berlaku.
Panggil Fungsi Reload Kamus:
sqlSELECT zhprs_reload_dict();
1Setelah itu, semua proses segmentasi kata akan menggunakan kamus terbaru yang Anda buat.
7. Penyesuaian Mode Segmentasi Kata
zhparser
mendukung berbagai mode segmentasi yang memengaruhi tingkat perincian segmentasi kata. Salah satu parameter utama adalah zhparser.seg_with_duality
.
7.1 Mengatur Mode Segmentasi
- Atur Parameter
zhparser.seg_with_duality
:- Nilai
true
: Mengaktifkan mode “segmentasi bigram”, sehingga menghasilkan segmentasi yang lebih halus dan memperbesar cakupan pencarian (recall)—kata majemuk seperti “pemrosesan bahasa alami” akan dipecah menjadi beberapa bagian seperti “pemrosesan”, “bahasa”, “alami”, “pemrosesan bahasa”, dan “bahasa alami”.sqlSET zhparser.seg_with_duality = true;
1 - Nilai
false
: Menggunakan segmentasi kata kasar (granularitas lebih besar), pada umumnya menggunakan kecocokan terpanjang dengan kamus—misalnya “pemrosesan bahasa alami” hanya akan menjadi satu token jika ada di kamus.sqlSET zhparser.seg_with_duality = false;
1
postgresql.conf
. - Nilai
8. FAQ (Pertanyaan Umum)
- Q: Perintah
CREATE EXTENSION zhparser;
gagal/ekstensi tidak ditemukan? A: Pastikan paket PostgreSQL di ServBay sudah terpasang dan aktif. ServBay telah menempatkan file pustakazhparser
di direktori ekstensi PostgreSQL. Jika masalah tetap muncul, periksa instalasi ServBay dan PostgreSQL, atau coba restart ServBay. - Q: Kamus khusus tidak berfungsi? A: Periksa hal berikut:
- Pastikan parameter
zhparser.dict_path
sudah diarahkan ke path file kamus kustom (/Applications/ServBay/etc/scws/custom_dict.txt
). Path harus benar dan case sensitive. - Apakah Anda sudah menjalankan
SELECT zhprs_reload_dict();
setelah mengaturzhparser.dict_path
? - Format file kamus sudah benar (satu kata/frasa per baris)?
- Jika pengujian dilakukan pada sesi database baru, pastikan parameter melalui
SET
sudah dikonfigurasi, atau sudah dikonfigurasi dipostgresql.conf
dan layanan sudah direstart. - User PostgreSQL memiliki hak akses baca ke file kamus yang ditentukan.
- Pastikan parameter
- Q: Hasil pencarian teks penuh tidak sesuai harapan? A: Periksa apakah konfigurasi pencarian teks (
chinese
) sudah memetakan label token ke kamus dengan benar. Ubah parameterzhparser.seg_with_duality
dan amati perbedaannya. Gunakan perintahSELECT to_tsvector('chinese', 'teks bahasa Cina Anda');
untuk mendiagnosa hasil segmentasi dan mendebug. Cek apakah kata kunci dan operator logika (&
,|
,!
) sudah digunakan dengan benar dalamto_tsquery
. - Q: Performa pencarian teks penuh buruk? A: Pastikan Anda sudah membuat indeks GIN pada kolom hasil
to_tsvector(...)
. Untuk dataset ekstra-besar, Anda mungkin perlu mengoptimasi konfigurasi PostgreSQL lebih lanjut atau mempertimbangkan teknik pengindeksan lanjutan lainnya.
9. Kesimpulan
Dengan ServBay, penggunaan ekstensi zhparser
untuk pencarian teks penuh bahasa Cina di PostgreSQL menjadi efisien dan mudah. Cukup beberapa tahap sederhana untuk mengaktifkan ekstensi, mengatur konfigurasi pencarian teks, dan memanfaatkan pustaka scws
bawaan ServBay untuk mendukung kamus kustom. Menguasai penggunaan dasar zhparser
dan cara konfigurasinya akan sangat memperbesar kapabilitas lingkungan pengembangan lokal Anda dalam menangani data teks bahasa Cina—sehingga membangun aplikasi Cina kaya fitur semakin mudah dan sukses.