Stop Words bei Fulltext Suche

Allgemeines zu PostgreSQL.
Antworten
chkaufmann
Benutzer
Beiträge: 32
Registriert: Di 8. Mai 2018, 08:38

Stop Words bei Fulltext Suche

Beitrag von chkaufmann »

Bei meiner Tabelle mit Personen habe ich ein Feld "allnames". Dort werden alle Namen aus Vor- und Nachname sortiert reingeschrieben. Gibt also:
"Christian,Kaufmann"
"Hans,Muster"
"Meier,Peter,Walter"

Auf dieser Spalte habe ich ein Index:

Code: Alles auswählen

create index IX_ATHLETE_FTS on ATHLETE using gin(to_tsvector(''simple'',ALLNAMES))
und dann suche ich mit einem Query etwa so:

Code: Alles auswählen

select * from ATHLETE where to_tsvector('simple',allnames) @@ to_tsquery('kaufm:* & chr:*')
Das funktioniert soweit gut ausser dass der Vorname "Will" scheinbar ein Stop Word ist. Ich habe die Dateien english.stop / german.stop gefunden wo dieses Wort in beiden drin ist. Es ist auch das einzige Wort das gleichzeitig ein Name ist.

Meine Frage: Wie kann ich das am einfachsten entfernen, so dass auch nach "Will" gesucht werden kann? Kann ich das auf einer einzelnen Datenbank? Oder ist einfacher gleich in der Server Konfiguration?

Christian

akretschmer
Erfahrener Benutzer
Beiträge: 7714
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Stop Words bei Fulltext Suche

Beitrag von akretschmer »

Achtung, selber noch nie probiert!

https://www.postgresql.org/docs/current ... aries.html

Kopiere die Stopword-Liste, editiere diese, erstelle ein neues Dictionary, nutze es.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten