全文検索の実行
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) 演算子は、指定された用語の少なくとも 1 つを含むドキュメントを見つけます。tutorial または tuning のいずれかを含む記事を検索してみましょう。
SELECT title FROM articles WHERE search_vector @@ to_tsquery('english', 'tutorial | tuning');
このクエリは 2 つの記事を返します。
title
-------------------------------
PostgreSQL Tutorial
PostgreSQL Performance Tuning
(2 rows)