Volltextsuche in PostgreSQL
  • 11 Apr 2023
  • 2 Minuten zu lesen

Volltextsuche in PostgreSQL


Article Summary

Die Volltextsuche (FTS) ermöglicht einen ausgeklügelten Ansatz bei der Textsuche in Totara, insbesondere innerhalb des Katalogs. Details zur Einrichtung mit PostgresSQL finden Sie auf dieser Seite.  

Standardmäßig unterstützt die PostgreSQL-Datenbank die Volltextsuche in Phrasen, Wörtern und Teilsuchen vom Anfang des Wortes (z. B. „Edu*“ gibt Elemente zurück, die das Wort „Bildung“ enthalten).

Sprache

PostgreSQL verwendet standardmäßig die 'Englische' Konfiguration für die Volltextsuche (FTS). Eine Liste der verfügbaren Optionen finden Sie in den Ergebnissen von "SELECT cfgname FROM pg_ts_config;". Zum Beispiel:

$CFG->dboptions['ftslanguage'] = 'englisch';
 $CFG->dboptions['ftslanguage'] = 'einfach';
$CFG->dboptions['ftslanguage'] = 'deutsch';

PostgreSQL unterstützt keine japanischen und anderen Sprachen mit sehr kurzen Wörtern ohne Leerzeichen dazwischen. Aktivieren Sie die folgende Einstellung, um eine grundlegende experimentelle Unterstützung dieser Sprachen zu erhalten:

$CFG->dboptions['fts3bworkaround'] = wahr;
Füllen Sie nach jeder dieser Änderungen die FTS-Tabellen erneut aus, indem Sie Folgendes ausführen:
Php admin/cli/fts_repopulate_tables.php

Mindestlänge des Suchbegriffs

PostgreSQL hat keine spezifischen Standardlängenanforderungen und kann alle Wörter finden, vorausgesetzt, es handelt sich um Wörter, die häufig in einem Wörterbuch gefunden werden. 

Stoppwörter

Stoppwörter sind eine Reihe von Wörtern, die von Index- und Suchanfragen ausgeschlossen werden. Sie hängen von der Sprache ab, die bei der Indizierung und Suche verwendet wird, sowie von der Präsenz des Wörterbuchs für die Datenbankinstallation.

Wenn ein Nutzer beispielsweise nach „Hotels in Wellington“ sucht, schließt das System „in“ aus der Suche aus.

Weitere Details zu PostgreSQL-Stoppwörtern finden Sie in der PostgreSQL-Hilfedokumentation.

Morphologische Suche

Es ist wichtig zu beachten, dass PostgreSQL keine erweiterten Sprachfunktionen unterstützt. Daher müssen Sie ein bestimmtes Hunspell-Wörterbuch für die Sprache installieren, die Sie verwenden möchten. Es gibt einige Möglichkeiten, um die Sprachen von herunterzuladen, z. B. LibreOffice Extensions und Mozilla Addons.

Unten finden Sie ein Beispiel für die Aktivierung der morphologischen Suche in PostgreSQL in Ubuntu 18.04 für die schwedische Sprache. Dies ist kein definitiver Leitfaden, sondern ein Beispiel dafür, wie dies in einem bestimmten Fall erfolgen kann. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation.

Wenn wir beispielsweise die schwedische Sprache verwenden, funktioniert Folgendes nicht sofort:

-- Dies wird {äppelträd} als Lexeme anstelle {äppelträd,äppel,träd} der erwarteten
Auswahl * von ts_debug('pg_catalog.swedish', 'äppelträd') zurückgegeben;

Damit PostgreSQL die obigen Elemente richtig interpretieren kann, müssen Sie das schwedische Hunspell-Wörterbuch wie folgt installieren:

  1. Gehen Sie zu Mozilla Addons und laden Sie das schwedische Wörterbuch herunter (klicken Sie mit der rechten Maustaste auf die Schaltfläche Zu Firefox hinzufügen und klicken Sie auf den Link Speichern unter).
  2. Die heruntergeladene Datei extrahieren (manchmal hat die heruntergeladene Datei keine Erweiterung, also einfach .oxt hinzufügen)
  3. Kopieren Sie die Dateien *.aff, *.dic in das tsearch_data Verzeichnis von PostgreSQL und benennen Sie sie in sv_se.affix und sv_se.dict um.
  4. Bestätigen Sie, dass die Dateien UTF-8-codiert sind. Im Folgenden wird die aktuelle Codierung der Dateien ausgedruckt: 
Datei -i sv_se.*

Wenn die Dateien nicht UTF-8-codiert sind, können Sie die folgenden Befehle ausführen (ersetzen Sie einfach ISO-8859-1 durch die Codierungsausgabe von oben):

iconv -f ISO-8859-1 -t UTF-8//TRANSLIT sv_se.affix -o sv_se.affix
iconv -f ISO-8859-1 -t UTF-8//TRANSLIT sv_se.dict -o sv_se.dict

  1. Führen Sie die folgenden Befehle in PostgreSQL aus:
TEXTSUCH-DIKTIONAR ERSTELLEN sv_hunspell(
 Template = ispell,
 DictFile = sv_se,
 AffFile = sv_se,
 Stopwords = schwedisch
);
 TEXTSUCH-KONFIGURATION 
 ERSTELLEN sv_hunspell(Parser = Standard);
ALTER TEXTSUCH-KONFIGURATION sv_hunspell ALTER MAPPING FÜR Asciiword, Ascihword, hword_asciipart,word, hword, hword_part MIT sv_hunspell;
Oben wird das Wörterbuch installiert und Sie können es dann wie folgt verwenden:
-- Dadurch werden die erwarteten L{äppelträd,äppel,träd}exemes zurückgegeben:
Wählen Sie * aus ts_debug('sv_hunspell', 'äppelträd');

 

© Copyright 2024 Totara Learning Solutions. All rights reserved. Some content originally obtained via GPLv3 license and continues to be available under GPLv3. All other content is the sole copyright of Totara Learning Solutions. 


War dieser Artikel hilfreich?

Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.