Postgres Volltextsuche: Mehrere Spalten -, Kreuz-Tabelle
Ich bin neu in Postgres und kam über Volltext-Suchfunktion. Ich möchte Folgendes erreichen:
- Angeben, einigen Tabellen und Felder für die Suche.
- Wenn der Benutzer die Suche nach bestimmten text gesucht werden soll, die auf den oben angegebenen Felder der Tabelle.
z.B.
CREATE TABLE customer (name text)
CREATE TABLE address (city text)
Suche nach " Ram " suchen sollten beide Namen 'Ram*' und die Stadt 'Ram*' (vielleicht max 10 Datensätze).
Offener Punkt: Ranking.
Ich verstehe es vielleicht nicht straighfoward, aber wenn Sie können, bieten Beispiel-Aussagen, ähnlich zu erreichen?
- Wie schlagen Sie vor, um die Ergebnisse der Suche in zwei verschiedenen Tabellen? Willst du für die Rückgabe von Zeilen wie
(tablename, table_row_id, matching_column, matching_text)
? Versuchen Sie mit der Bearbeitung Ihrer Frage-und das hinzufügen von ein echtes Beispiel für das, was Sie wollen: Dummy-Tabelle Definitionen und Daten, und die Ausgabe, die Sie erreichen wollen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dazu ganz gut in der PostgreSQL-Dokumentation full-text search, die zeigt Beispiele für die Suche in mehreren Spalten und Ihre Gewichtung.
Siehe insbesondere controlling voll-text-Suche und Manipulation von Dokumenten. Ranking ist auch genau dort, in ranking der Suchergebnisse.
Haben Sie nicht wirklich genug Informationen, um mehr zu sagen. Für die Suche über mehrere Tabellen möchten Sie in der Regel
JOIN
die Tabellen dann Fragen Sie, oder, um beste Leistung zu erzielen, erstellen Sie einen trigger-gepflegt, materialisierte Ansicht, die Sie indizieren können und dann Abfrage.Wenn die Tabellen unabhängig sind und keinen Bezug es nicht Tonnen von Sinn Abfragen in einer einzigen Abfrage; Sie würden in der Regel mehrere tsearch2-Abfragen für diese. Ich denke, es ist möglich, dass Sie könnte
UNION ALL
die Ergebnisse der Abfrage dann Rang Sie, aber es gibt keine Garantie, das ranking wäre konsistent zwischen den beiden Tabellen.