Ekstensi PostgreSQL yang sederhana dan sederhana yang menyediakan template kamus pencarian teks lengkap untuk teks Ibrani berdasarkan hspell.
Bahasa Ibrani secara tradisional dianggap sulit untuk melakukan tugas pengambilan dokumen. Morfologinya yang kaya berarti bahwa kata -kata memiliki jumlah infleksi yang sangat besar di satu sisi, dan kehadiran homograf yang luas menyebabkan ambiguitas. Semua itu berarti bahwa sistem pencarian teks lengkap cenderung menderita penarikan yang buruk di luar kotak ketika berhadapan dengan teks -teks Ibrani.
pg_hspell adalah ekstensi PostgreSQL yang mencoba membantu dengan tugas-tugas tersebut saat menggunakan subsistem pencarian teks lengkap bawaan database. Ia menggunakan informasi kamus dan linguistik yang disediakan oleh proyek HSPELL untuk menyediakan template kamus postgres yang membuat kata -kata Ibrani sebagai bagian dari pipa konfigurasi.
Hanya token Ibrani yang ditangani; Token apa pun yang tidak mengandung huruf Ibrani tidak dikenali dan akan diteruskan ke kamus berikut dalam konfigurasi.
Token Ibrani yang muncul dalam daftar kata berhenti yang dapat dikonfigurasi dijatuhkan.
Untuk token yang merupakan entri yang valid dalam kamus hspell, semua kemungkinan lemma dipancarkan sebagai varian yang berbeda.
Semua token lain dipancarkan apa adanya.
Sistem GNU/Linux
PostgreSQL 9.6+ - Versi sebelumnya juga dapat berfungsi, tetapi toh tidak didukung secara resmi
libhspell, dikompilasi dengan bendera konfigurasi --enable-linginfo (paket distribusi biasanya)
Saat ini pg_hspell harus dibangun dari kode sumber. Pastikan Anda memiliki file dukungan pengembangan (header dll) untuk PostgreSQL dan HSPELL tersedia.
Untuk membangun dan menginstal, jalankan:
$ make install
Ini akan dibangun terhadap dan menginstal ke dalam instalasi PostgreSQL yang ditentukan oleh contoh pertama pg_config yang ditemukan di jalur saat ini. Untuk menargetkan instalasi tertentu (atau tidak ada di jalur):
$ make install PG_CONFIG=/path/to/pg_config
Untuk memuat ekstensi ke dalam database, jalankan perintah SQL berikut sebagai pengguna yang diizinkan:
CREATE EXTENSION pg_hspell; Ini akan menempatkan ke dalam skema saat ini sebuah kamus teks lengkap yang disebut hspell yang dikonfigurasi dengan daftar kata -kata penghentian bahasa Ibrani yang dibundel. Untuk membuat kamus dengan daftar kata stop yang berbeda (atau tidak sama sekali), lakukan sesuatu seperti perintah sql berikut:
CREATE TEXT SEARCH DICTIONARY my_hspell_dict (
TEMPLATE = hspell,
[ STOPWORDS = my_stop_words_file ]
); Seperti halnya semua templat kamus pencarian teks lainnya, daftar kata -kata berhenti harus merupakan file yang disimpan dalam direktori $SHAREDIR/tsearch_data server database dan memiliki ekstensi .stop . Contoh di atas akan mencari $SHAREDIR/tsearch_data/my_stop_words_file.stop
Kamus kemudian perlu diintegrasikan ke dalam konfigurasi pencarian teks, seperti yang dijelaskan dalam manual PostgreSQL. Ekstensi ini tidak memberikan konfigurasi yang telah ditentukan sebelumnya.
Karena template direktori hspell hanya akan mengenali token yang berisi karakter bahasa Ibrani, masuk akal untuk mengatur kamus berdasarkan pada pemetaan demi kata tipe word , hword dan hword-part (dengan asumsi parser default).
Seperti disebutkan di atas, ketika token diakui oleh Kamus Hspell, semua Lemma yang mungkin untuk itu dipancarkan (misalnya untuk kata הרכבת - רכבת , הרכבה , dan הרכיב semuanya dipancarkan). Ini bermanfaat untuk diingat, tetapi tentu saja dapat merusak ketepatan. Pada saat ini, ekstensi ini tidak melakukan disambiguasi morfologis - dan bagaimanapun ini membutuhkan konteks kalimat, yang kerangka kerja pencarian teks lengkap PostgreSQL tidak benar -benar membuat langsung digunakan dalam templat kamus.
STOP WORD Penyaringan diterapkan pada token input itu sendiri. Stop Word Ambiguity sangat bermasalah dengan bahasa Ibrani (misalnya, lihat posting blog ini), jadi pertimbangkan itu saat membuat daftar kata berhenti, atau mempertimbangkan jika Anda ingin menggunakannya sama sekali.
Hspell tidak dapat memanfaatkan teks bertitik, dan pada kenyataannya teks seperti itu bahkan tidak dapat diwakili dalam pengkodean ISO-8859-8 yang merupakan apa yang bekerja dengan Libhspell. Saat ini, token yang mengandung NiqQUD karena itu tidak akan diakui oleh template kamus ini!
Jika memproses teks bertitik diinginkan, NiqQUD harus dilucuti sebelum melewati teks ke kamus pg_hspell . Ini dapat dicapai dengan membuat aturan yang sesuai untuk modul yang tidak ada. Di masa depan, pg_hspell mungkin melakukan ini secara langsung.
Harap dicatat bahwa parser pencarian teks default yang disertakan dengan PostgreSQL tidak dengan benar menangani kasus sudut khusus untuk bahasa Ibrani di mana karakter biasanya dianggap tanda baca (yaitu apostrof dan tanda kutip) tidak bertindak seperti itu ketika tertanam menjadi kata. Kasus -kasus seperti itu biasa terjadi pada teks komputer Ibrani dalam akronim dan singkatan, yang mungkin tidak diperkirakan seperti yang diharapkan.
Misalnya:
postgres=# select * from ts_parse('default', $$ נתב"ג $$);
tokid | token
-------+-------
2 | נתב
12 | "
2 | ג
Ini bukan sesuatu yang spesifik untuk pg_hspell atau di dalam ruang lingkupnya untuk mengatasi. Jika ada contoh spesifik yang sangat mengganggu, mereka mungkin bekerja di sekitar dengan kamus tesaurus. Anda juga dapat mempertimbangkan parser yang disediakan oleh ekstensi PG_ICU_PARSER, yang menangani ini dengan benar.
pg_hspell sendiri dilisensikan di bawah Lisensi Publik Mozilla 2.0. Daftar STOP Words yang disertakan didasarkan pada yang dibuat oleh Guy Saar dan diekstraksi dari https://github.com/fergiemcdowall/stopword, dirilis di bawah lisensi MIT.