... mit dem text search index

also ich moechte einen fulltext-index erstellen, der über mehrere felder geht und diesen einfach verwenden. in der doku scheint man es geschickt zu vermeiden darauf tiefer einzugehen …

man fuehrt am anfang den begriff “dokument” ein, der sich dann aber als nichts weiter enpuppt als ein ausdruck - im einfachen sinne concatenated columns …

weiter / spaeter erzaehlt man dann was von voll-text indizes ueber mehrfache felder - indem man eben wie oben beschrieben solche ts_vector mit einem komplexen ausdruck erzeugt und indiziert …

das problem aber, dass ich dann bloeder weisse den ganzen ausdruck auch so in meiner query benutzen MUSS, damit der index ueberhaupt greift - man vermeidet ganz geschickt - weil man wohl nicht moechte, dass irgendwer merkt - dass es dann doch nicht allzuviel taugt !?

hab ich das so richtig verstanden ? oder irgendwas uebersehen … warum stellt sich das PG dumm, und weiss einfach nicht, dass ein index “taugt” wenn ich nach einer untermenge der felder suche, die im vector des index-ausdruck vorhanden sind?

freilich kann ich mir ne einzelne text-spalte basteln in der ich alle felder reinstopfe und indiziere - aber das ist doch einfach nur mist … da brauch ich die felder im ts_vector nimmer verbinden … also irgendwie ist meine euphorie dahin … ich wollt mich schon freuen …

kann mich jemand beruhigen und mir den rettenden hinweis liefern wo ich was uebersehen haben koennte ?

Ich kann dir gerade nicht ganz folgen, was du uns sagen möchtest.

Kannst du das mal an einem Beispiel darlegen?

nehmen wir aus der doku

CREATE INDEX pgweb_idx ON pgweb USING gin(to_tsvector('english', title || body));

wenn ich dann nach

... where to_tsvector('english', title) @@ to_tsquery('english', 'blablubb')

suche wird der index leider nicht verwendet …

gruss

Dann such doch auch in title und body - oder leg einen Index für title und einen für body an - oder kombiniere alles zusammen in eine Spalte.

Wenn du einen Index über zwei Spalten anlegst, wolltest du auch in den beiden Spalten suchen und nicht nur in einer Spalte.

Möglichkeiten hast du genug. Manchmal befällt mich nur der Verdacht, du verlangst alles (un)mögliche :wink:

den overhead zu sparen, der durch eine aggregierte spalte entsteht … der dann den such-daten entspricht …

cool waere, wenn man nen text-search vector als such-spalte verwenden koennte …

wenn mich nicht alles täuscht dann kann man den suchvektor doch als spalte verwenden.

ich hab bei mir ne spalte vom typ ts_vector angelegt und die dann mit den werten aus to_tsvector() befüllt.


*gut mit einem jahr verspätung brauch man darauf wohl auch nicht mehr antworten…