امتداد PostgreSQL البسيط والبسيط يوفر قالب قاموس البحث الكامل للنص للنص العبري على أساس HSPELL.
تعتبر اللغة العبرية تقليديًا من الصعب إجراء مهام استرجاع المستندات. يعني مورفولوجياها الغنية أن الكلمات لها كمية كبيرة جدًا من الانضمامات من جهة ، ووجودًا واسع النطاق للتجانس يؤدي إلى الغموض. كل هذا يعني أن أنظمة البحث النصية الكاملة تميل إلى المعاناة من سوء الاستدعاء خارج الصندوق عند التعامل مع النصوص العبرية.
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 (على افتراض المحلل الافتراضي).
As noted above, when a token is recognized by hspell's dictionary ALL possible lemmas for it are emitted (eg for the word הרכבת - רכבת , הרכבה , and הרכיב are all emitted). هذا مفيد للاستدعاء ، ولكن بالطبع يمكن أن يؤذي الدقة. في هذا الوقت ، لا يؤدي هذا الامتداد أي غموض مورفولوجي - وعلى أي حال ، يتطلب هذا سياق الجملة ، وهو إطار البحث عن النص الكامل في Postgresql لا يجعله واضحًا حقًا لاستخدامه في قوالب القاموس.
يتم تطبيق تصفية الإيقاف على الكلمات على رموز الإدخال نفسها. يعد إيقاف غموض Word مشكلة بشكل خاص مع العبرية (للحصول على أمثلة ، انظر منشور المدونة هذا) ، لذا ضع ذلك في الاعتبار عند إنشاء قائمة Word Stop ، أو النظر في ما إذا كنت تريد استخدام واحدة على الإطلاق.
لا يمكن لـ Hspell الاستفادة من النص المنقط ، وفي الواقع لا يمكن تمثيل هذا النص حتى في الترميز ISO-8859-8 وهو ما يعمل مع Libhspell. حاليًا ، لن يتم التعرف على الرموز التي تحتوي على niqqud من خلال قالب القاموس هذا!
إذا كان معالجة النص المنقط مطلوبًا ، فيجب تجريد 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 Public 2.0. تعتمد قائمة كلمات الإيقاف المضمّنة على قائمة أنشأتها Guy Saar واستخراجها من https://github.com/fergiemcdowall/stopword ، التي تم إصدارها تحت رخصة معهد ماساتشوستس للتكنولوجيا.