TSearch2 Index über mehrere Tabellen

Hallo,

ich bräuchte einen Volltextindex der aus mehreren Splaten und Tabellen besteht. Mit mehreren Spalten in einer Tabelle habe ich noch hinbekommen aber mit mehreren Tabellen ist mir unklar.

Geht das?
Wenn ja wie erzeugt man einen solchen Index bzw. frägt ihn wieder ab?

Grüße
Alexander

Kannst Du mal erklären, was Du erreichen willst?

Andreas

Ich habe in zwei Tabellen in der einen sind Titel und der anderen Autoren gespeichert. Es sind immer mehrere Einträge pro Produkt möglich z.B Title, Untertitel oder Titel älterer Auflagen. Autoren kann es natürlich auch mehrere pro Produkt geben.

Meine Suchfunktion soll dann nach Stichwort die Treffer in den Spalten Titel und Autor liefern und als eine Ergenismenge nach der Product-Sprache sortieren. Auserdem müssen doppelte die gefunden wurden weil zum Beispiel der Autor im Titel vorkommt elimeniert werden.

Was ich vermeiden möchte ist dass (wie bei amazon zum Beispiel) die Suche nichts mehr findet wenn man ein Stichwort aus dem Titel und den Autor angibt.

Alexander

Dann machst Du 2 Abgfragen, welche via UNION die Ergebnissmengen vereint. Also etwa:

select autor from autoren_table where produkt_id = 4711 as treffer union all select titel from titel_table where produkt_id = 4711 order by treffer;

Das real anzupassen überlasse ich Dir

Ja, Union da is was dran, das mit dem anpassen sollte ich schon hinbekommen.

Danke für die schnelle Hilfe.

Alexander

Ich dachte zuerst die Idee mit Union ist gut hab aber leider was wichtiges übersehen. Ein union über zwei Suchbegriffe in verschiedenen Tabellen ist für das Ergebnis eine “oder” Verknüpfung. Brauchen würde ich aber eine “und” Verknüpfung.

Es wäre schon sinnvoll einen Volltextindex über beide Tabellen zu haben dann wäre es auch möglich die logischen Verknüpfungen zwischen den einzelnen Suchbegriffen nach belieben zu setzten. Auserdem muß noch die Beziehung zwischen den richtigen Datensätzen hergestellt werden. Also beim Suchen müssen die richtigen Autoren zum Titel berücksichtigt werden nicht einfach alle. Dieser Zusammenhang hat nämlich entscheidenden Einfluß auf das Suchergebnis.

Alexander

Spricht eigentlich irgendwas gegen eine solche konstruktion?

select distinct (Title.MyProductNr)
from   ProductTitle Title, ProductContributor Contr
where  Title.MyProductNr = Contr.MyProductNr              and
       Title.idxfti @@ to_tsquery ('default', 'verkauft') and
       Contr.idxfti @@ to_tsquery ('default', 'Lea & Ackermann');

hat zumindest bei meinen ersten Tests gemacht was es sollte.

Alexander