/ / Wyszukiwanie pełnotekstowe w Postgresie: wiele kolumn, tabela krzyżowa - postgresql, wyszukiwanie pełnotekstowe, tsvector

Wyszukiwanie pełnego tekstu Postgres: wiele kolumn, tabela krzyżowa - postgresql, wyszukiwanie pełnotekstowe, tsvector

Jestem nowy w Postgres i natknąłem się na funkcję wyszukiwania pełnotekstowego. Chcę osiągnąć następujące rzeczy:

  • Określ tabelę i pola do wyszukiwania.
  • Kiedy użytkownik szuka jakiegoś tekstu, powinien on być przeszukiwany na wyżej określonych polach tabeli.

na przykład

CREATE TABLE customer (name text)
CREATE TABLE address (city text)

Szukaj "Ram" powinien znaleźć zarówno nazwę "Ram *" i miasto "Ram *" (może być maksymalnie 10 rekordów).

Punkt otwarty: ranking.

Rozumiem, że nie jest to proste, ale czy możesz podać przykładowe stwierdzenia, aby osiągnąć podobne wyniki?

Odpowiedzi:

3 dla odpowiedzi № 1

Jest to dość dobrze omówione w Dokumentacja PostgreSQL przy wyszukiwaniu pełnotekstowym, który pokazuje przykłady przeszukiwania wielu kolumn i ważenia ich.

Zobacz w szczególności kontrolowanie wyszukiwania pełnotekstowego i manipulowanie dokumentami. Ranking jest również tam, w ranking wyników wyszukiwania.

W rzeczywistości nie dostarczyłeś wystarczająco dużo informacji, by powiedzieć o wiele więcej JOIN tabele następnie je sprawdzają lub, dla najlepszej wydajności, tworzą zmaterializowany widok, który można indeksować, a następnie zapytać.

Jeśli tabele są niezależne i niepowiązane, nie ma sensu zadawać im zapytań w jednym zapytaniu, zwykle używa się do tego wielu zapytań tsearch2. Myślę, że to możliwe, że możesz UNION ALL wyniki zapytania następnie szeregują je, ale nie ma gwarancji, że ranking będzie spójny między dwiema tabelami.