Eine einfache und simple PostgreSQL -Erweiterung, die eine Volltext -Such -Wörterbuchvorlage für hebräischen Text basierend auf HSpell bietet.
Die hebräische Sprache wird traditionell als schwierig angesehen, Dokumente Abrufaufgaben aufzuführen. Seine reichhaltige Morphologie bedeutet, dass Wörter einerseits eine sehr große Menge an Beugung aufweisen, und die weit verbreitete Präsenz von Homographien führt zu Unklarheiten. All dies bedeutet, dass Volltext -Suchsysteme im Umgang mit hebräischen Texten tendenziell unter dem schlechten Rückruf leiden.
pg_hspell ist eine PostgreSQL-Erweiterung, die versucht, solche Aufgaben zu unterstützen, wenn das integrierte Volltextsuche-Subsystem der Datenbank verwendet wird. Es verwendet die vom HSpell -Projekt bereitgestellten Wörterbuch- und Sprachinformationen, um eine Postgres -Wörterbuchvorlage bereitzustellen, die hebräische Wörter als Teil einer Konfigurationspipeline lemmatisiert.
Es werden nur hebräische Token behandelt; Jeglicher Token, das keine hebräischen Briefe enthält, wird nicht erkannt und wird an ein folgendes Wörterbuch in der Konfiguration weitergeleitet.
Hebräische Token, die in einer konfigurierbaren Stopp -Word -Liste erscheinen, werden fallen gelassen.
Für Token, die gültige Einträge in Hspells Wörterbuch sind, werden alle möglichen Lemmas als unterschiedliche Varianten emittiert.
Alle anderen Token werden als Is emittiert.
Ein GNU/Linux -System
PostgreSQL 9.6+ - Frühere Versionen können auch funktionieren, werden jedoch offiziell offiziell unterstützt
libhspell, kompiliert mit dem Flag --enable-linginfo Konfigurieren (Verteilungspakete sind normalerweise)
Derzeit muss pg_hspell aus dem Quellcode erstellt werden. Stellen Sie sicher, dass Sie Entwicklungsunterstützungsdateien (Header usw.) für PostgreSQL und Hspell zur Verfügung haben.
Um zu bauen und zu installieren, führen Sie aus:
$ make install
Dies wird gegen die PostgreSQL -Installation erstellt und installiert, die durch die erste Instanz von pg_config im aktuellen Pfad festgelegt wird. Um eine bestimmte Installation (oder nicht im Pfad) abzuzielen:
$ make install PG_CONFIG=/path/to/pg_config
Um die Erweiterung in eine Datenbank zu laden, führen Sie den folgenden SQL -Befehl als angemessener genehmigter Benutzer aus:
CREATE EXTENSION pg_hspell; Dies wird in das aktuelle Schema ein Volltext -Wörterbuch namens hspell eingebaut, das mit einer gebündelten Liste gemeinsamer hebräischer Stoppwörter konfiguriert ist. Um ein Wörterbuch mit einer anderen Stop -Word -Liste (oder gar keine) zu erstellen, machen Sie so etwas wie den folgenden SQL -Befehl:
CREATE TEXT SEARCH DICTIONARY my_hspell_dict (
TEMPLATE = hspell,
[ STOPWORDS = my_stop_words_file ]
); Wie bei allen anderen Text -Such -Wörterbuchvorlagen muss die Liste der Stoppwörter eine Datei sein, die im Verzeichnis $SHAREDIR/tsearch_data des Datenbankservers gespeichert ist und eine .stop -Erweiterung hat. Das obige Beispiel wird nach $SHAREDIR/tsearch_data/my_stop_words_file.stop suchen
Das Wörterbuch muss dann in eine Textsuchkonfiguration integriert werden, wie im PostgreSQL -Handbuch beschrieben. Diese Erweiterung liefert keine vordefinierten Konfigurationen.
Da die hspell Verzeichnisvorlage nur Token erkennen, die hebräische Zeichen enthalten, ist es nur sinnvoll, Wörterbücher in den Zuordnungen für word , hword und hword-part -Typ-Token zu setzen (unter der Annahme des Standard-Parsers).
Wie oben erwähnt, werden alle möglichen Lemmas, wenn ein Token von Hspells Wörterbuch erkannt wird (z. B. für das Wort הרכבת - רכבת , הרכבה und הרכיב alle emittiert). Dies ist vorteilhaft für den Rückruf, kann aber natürlich Präzision verletzen. Zu diesem Zeitpunkt führt diese Erweiterung keine morphologische Disambiguierung durch - und dies erfordert jedenfalls einen Satzkontext, der das vollständige Text -Such -Framework von PostgreSQL in Wörterbuchvorlagen nicht wirklich unkompliziert macht.
Auf Eingabestoken selbst wird das Wortfiltering angewendet. Stopp -Wortmehrdeutigkeit ist besonders problematisch mit Hebräisch (beispielsweise siehe diesen Blog -Beitrag). Berücksichtigen Sie dies also, wenn Sie eine Stop -Word -Liste erstellen oder ob Sie überhaupt eine verwenden möchten.
HSpell kann nicht gepunktete Text nutzen, und in der Tatsächlich kann ein solcher Text auch nicht in der ISO-8859-8-Codierung dargestellt werden, mit der Libhspell arbeitet. Derzeit werden Token, die NIQQUD enthalten, daher nicht von dieser Wörterbuchvorlage anerkannt!
Wenn der verarbeitete Text -Text gewünscht wird, muss Niqqud vor dem Übergeben von Text an ein pg_hspell -Wörterbuch abgezogen werden. Dies kann erreicht werden, indem ein geeigneter Regelsatz für das nicht akzentuelle Modul erstellt wird. In Zukunft könnte pg_hspell dies direkt ausführen.
Bitte beachten Sie, dass der in PostgreSQL enthaltene Standard -Parser -Parser nicht korrekt für Hebräische mit Eckfällen handelt, bei denen die Zeichen normalerweise als Interpunktion (dh Apostroph und Zitatmarke) angesehen werden, wenn sie in ein Wort eingebettet sind. Solche Fälle sind in hebräischen Computertexten bei Akronymen und Abkürzungen üblich, die möglicherweise nicht wie erwartet tokenisiert werden.
Zum Beispiel:
postgres=# select * from ts_parse('default', $$ נתב"ג $$);
tokid | token
-------+-------
2 | נתב
12 | "
2 | ג
Dies ist nicht spezifisch für pg_hspell oder innerhalb seines Umfangs. Wenn es bestimmte Fälle gibt, die besonders lästig sind, können sie mit einem Thesaurus -Wörterbuch herumgearbeitet werden. Sie können auch den von der Erweiterung pg_icu_parser bereitgestellten Parser berücksichtigen, der dies korrekt behandelt.
pg_hspell selbst ist unter der Mozilla Public Lizenz 2.0 lizenziert. Die enthaltene Stop -Word -Liste basiert auf einer von Guy Saar erstellten und von https://github.com/fergiemcdowall/Stopword, veröffentlicht, unter der MIT -Lizenz veröffentlicht.