ส่วนขยาย PostgreSQL ที่เรียบง่ายและเรียบง่ายโดยให้เทมเพลตพจนานุกรมค้นหาข้อความแบบเต็มสำหรับข้อความภาษาฮีบรูตาม HSPELL
ภาษาฮีบรูถือว่าเป็นเรื่องยากที่จะดำเนินงานการดึงเอกสาร สัณฐานวิทยาที่อุดมสมบูรณ์ของมันหมายความว่าคำพูดมีการผันมากมากในมือข้างหนึ่งและการปรากฏตัวของ homographs อย่างกว้างขวางนำไปสู่ความกำกวม ทั้งหมดนี้หมายความว่าระบบการค้นหาข้อความแบบเต็มมักจะประสบกับการเรียกคืนที่ไม่ดีออกจากกล่องเมื่อต้องรับมือกับข้อความภาษาฮีบรู
pg_hspell เป็นส่วนขยายของ PostgreSQL ที่พยายามช่วยงานดังกล่าวเมื่อใช้ระบบย่อยการค้นหาข้อความแบบเต็มรูปแบบของฐานข้อมูล มันใช้ข้อมูลพจนานุกรมและภาษาศาสตร์ที่จัดทำโดยโครงการ HSPELL เพื่อจัดทำเทมเพลตพจนานุกรม Postgres ซึ่งใช้คำภาษาฮีบรูเป็นส่วนหนึ่งของไปป์ไลน์การกำหนดค่า
มีเพียงโทเค็นฮีบรูเท่านั้นที่ได้รับการจัดการ โทเค็นใด ๆ ที่ไม่มีตัวอักษรฮีบรูใด ๆ ไม่ได้รับการยอมรับและจะถูกส่งต่อไปยังพจนานุกรมใด ๆ ต่อไปนี้ในการกำหนดค่า
โทเค็นฮีบรูซึ่งปรากฏในรายการคำหยุดที่กำหนดค่าได้จะถูกทิ้ง
สำหรับโทเค็นที่เป็นรายการที่ถูกต้องในพจนานุกรมของ HSPELL บทละครที่เป็นไปได้ทั้งหมดจะถูกปล่อยออกมาเป็นตัวแปรที่แตกต่างกัน
โทเค็นอื่น ๆ ทั้งหมดถูกปล่อยออกมาตามที่เป็นอยู่
ระบบ GNU/Linux
PostgreSQL 9.6+ - เวอร์ชันก่อนหน้านี้อาจใช้งานได้ แต่ยังไม่ได้รับการสนับสนุนอย่างเป็นทางการอยู่ดี
libhspell รวบรวมด้วย --enable-linginfo กำหนดค่าสถานะ (โดยทั่วไปแพ็คเกจการแจกจ่าย)
ปัจจุบัน pg_hspell จะต้องสร้างจากซอร์สโค้ด ตรวจสอบให้แน่ใจว่าคุณมีไฟล์สนับสนุนการพัฒนา (ส่วนหัว ฯลฯ ) สำหรับ PostgreSQL และ HSPell ที่มีอยู่
เพื่อสร้างและติดตั้งเรียกใช้:
$ make install
สิ่งนี้จะสร้างและติดตั้งลงในการติดตั้ง PostgreSQL ที่กำหนดโดยอินสแตนซ์แรกของ pg_config ที่พบในเส้นทางปัจจุบัน เพื่อกำหนดเป้าหมายการติดตั้งเฉพาะ (หรือไม่อยู่ในเส้นทาง):
$ make install PG_CONFIG=/path/to/pg_config
ในการโหลดส่วนขยายลงในฐานข้อมูลให้ดำเนินการคำสั่ง SQL ต่อไปนี้ในฐานะผู้ใช้ที่ได้รับอนุญาตอย่างเหมาะสม:
CREATE EXTENSION pg_hspell; สิ่งนี้จะวางลงในสคีมาปัจจุบันพจนานุกรมข้อความเต็มชื่อ hspell ซึ่งกำหนดค่าด้วยรายการที่รวมของคำภาษาฮีบรูหยุดทั่วไป ในการสร้างพจนานุกรมที่มีรายการคำหยุดที่แตกต่างกัน (หรือไม่มีเลย) ทำบางอย่างเช่นคำสั่ง SQL ต่อไปนี้:
CREATE TEXT SEARCH DICTIONARY my_hspell_dict (
TEMPLATE = hspell,
[ STOPWORDS = my_stop_words_file ]
); เช่นเดียวกับเทมเพลตพจนานุกรมการค้นหาข้อความอื่น ๆ ทั้งหมดรายการคำหยุดจะต้องเป็นไฟล์ที่บันทึกไว้ในไดเรกทอรี $SHAREDIR/tsearch_data ของเซิร์ฟเวอร์ฐานข้อมูลและมีส่วนขยาย. .stop ตัวอย่างข้างต้นจะค้นหา $SHAREDIR/tsearch_data/my_stop_words_file.stop
พจนานุกรมจะต้องรวมเข้ากับการกำหนดค่าการค้นหาข้อความตามที่อธิบายไว้ในคู่มือ PostgreSQL ส่วนขยายนี้ไม่ได้ให้การกำหนดค่าที่กำหนดไว้ล่วงหน้า
เนื่องจากเทมเพลตไดเรกทอรี hspell จะรับรู้เฉพาะโทเค็นที่มีอักขระภาษาฮีบรูมันจึงเหมาะสมที่จะตั้งค่าพจนานุกรมตามมันในการแมปสำหรับ word hword และ hword-part TOKENS (สมมติว่าตัวแยกวิเคราะห์เริ่มต้น)
ดังที่ได้กล่าวไว้ข้างต้นเมื่อโทเค็นได้รับการยอมรับจากพจนานุกรมของ HSPELL ทั้งหมดที่เป็นไปได้ทั้งหมดที่ถูกปล่อยออกมา (เช่นคำว่า הרכבת - רכבת , הרכבה และ הרכיב ทั้งหมดถูกปล่อยออกมา) สิ่งนี้เป็นประโยชน์สำหรับการเรียกคืน แต่แน่นอนว่าสามารถทำร้ายความแม่นยำได้ ในเวลานี้ส่วนขยายนี้ไม่ได้ดำเนินการ disambiguation ทางสัณฐานวิทยา - และอย่างไรก็ตามสิ่งนี้ต้องใช้บริบทประโยคซึ่งกรอบการค้นหาข้อความแบบเต็มของ PostgreSQL ไม่ได้ทำให้ตรงไปตรงมาในการใช้งานในพจนานุกรม
การกรองคำหยุดใช้กับโทเค็นอินพุตเอง หยุดความคลุมเครือของคำเป็นปัญหาโดยเฉพาะอย่างยิ่งกับภาษาฮีบรู (ตัวอย่างดูที่โพสต์บล็อกนี้) ดังนั้นโปรดคำนึงถึงสิ่งนั้นเมื่อสร้างรายการหยุดคำหรือพิจารณาว่าคุณต้องการใช้งานทั้งหมดหรือไม่
Hspell ไม่สามารถใช้ประโยชน์จากข้อความประและในความเป็นจริงข้อความดังกล่าวไม่สามารถแสดงได้ในการเข้ารหัส ISO-8859-8 ซึ่งเป็นสิ่งที่ Libhspell ทำงานด้วย ปัจจุบันโทเค็นที่มี NIQQUD จึงไม่ได้รับการยอมรับจากพจนานุกรมนี้!
หากต้องการการประมวลผลข้อความประนั้นจะต้องถูกถอดออกก่อนที่จะส่งข้อความไปยังพจนานุกรม pg_hspell สิ่งนี้สามารถทำได้โดยการสร้างกฎที่เหมาะสมสำหรับโมดูลที่ไม่ได้เทียบ ในอนาคต pg_hspell อาจทำงานได้โดยตรง
โปรดทราบว่าตัวแยกวิเคราะห์การค้นหาข้อความเริ่มต้นที่มาพร้อมกับ PostgreSQL ไม่สามารถจัดการกับกรณีมุมเฉพาะเฉพาะกับภาษาฮิบรูที่อักขระมักจะถือว่าเป็นเครื่องหมายวรรคตอน (เช่นเครื่องหมายอวกาศและเครื่องหมายคำพูด) ไม่ทำเช่นนี้เมื่อฝังลงในคำ กรณีดังกล่าวเป็นเรื่องธรรมดาในข้อความคอมพิวเตอร์ภาษาฮีบรูในตัวย่อและตัวย่อซึ่งอาจไม่เป็นไปตามที่คาดไว้
ตัวอย่างเช่น:
postgres=# select * from ts_parse('default', $$ נתב"ג $$);
tokid | token
-------+-------
2 | נתב
12 | "
2 | ג
นี่ไม่ใช่สิ่งที่เฉพาะเจาะจงสำหรับ pg_hspell หรือภายในขอบเขตของที่อยู่ หากมีกรณีเฉพาะที่น่ารำคาญโดยเฉพาะอย่างยิ่งพวกเขาอาจจะทำงานกับพจนานุกรมอรรถาภิธาน คุณอาจพิจารณาตัวแยกวิเคราะห์ที่จัดทำโดยส่วนขยาย PG_ICU_PARSER ซึ่งจัดการสิ่งนี้ได้อย่างถูกต้อง
pg_hspell นั้นได้รับใบอนุญาตภายใต้ใบอนุญาตสาธารณะ Mozilla 2.0 รายการคำหยุดที่รวมอยู่นั้นขึ้นอยู่กับหนึ่งที่สร้างโดย Guy Saar และสกัดจาก https://github.com/fergiemcdowall/stopword ที่เผยแพร่ภายใต้ใบอนุญาต MIT