Выполнение полнотекстового поиска
Теперь, когда столбец tsvector и индекс GIN настроены, вы можете выполнять эффективный полнотекстовый поиск. Запросы строятся с использованием типа данных tsquery, который представляет собой текстовый запрос. Оператор @@ используется для сопоставления tsquery с tsvector.
Сначала найдем статьи, содержащие слово search. Функция to_tsquery преобразует строку поиска в tsquery.
SELECT title, content FROM articles WHERE search_vector @@ to_tsquery('english', 'search');
Этот запрос вернет статью о "Full Text Search".
title | content
----------------------------------+-----------------------------------------------------------------------
Full Text Search in PostgreSQL | Learn how to implement full text search using TSVECTOR in PostgreSQL.
(1 row)
Вы также можете использовать операторы в своем запросе. Оператор & (AND) находит документы, содержащие все указанные термины. Давайте найдем статьи, содержащие как PostgreSQL, так и performance.
SELECT title FROM articles WHERE search_vector @@ to_tsquery('english', 'PostgreSQL & performance');
Это вернет статью о настройке производительности.
title
-------------------------------
PostgreSQL Performance Tuning
(1 row)
Оператор | (OR) находит документы, содержащие хотя бы один из указанных терминов. Давайте найдем статьи, содержащие либо tutorial, либо tuning.
SELECT title FROM articles WHERE search_vector @@ to_tsquery('english', 'tutorial | tuning');
Этот запрос вернет две статьи.
title
-------------------------------
PostgreSQL Tutorial
PostgreSQL Performance Tuning
(2 rows)