全文検索(Full Text Search)は、テキストを全文検索するための機能である。もちろんLIKEや正規表現検索を使えばPostgreSQLでも全文検索は可能だが、データ量が増えると現実的な検索速度が出ない。そこで全文検索用の専用ソフトを組み合わせるソリューションが使われてきたが、この方法では、アプリケーションの負担が増えたり、管理するデータがデータベースと全文検索のインデックスの2つになることにより、管理者の負担が増えるなどデメリットがある。

8.3では、データベースエンジン自体に全文検索の機能を組み込むことにより、デメリットが一掃され、全文検索ソフトのメリットだけを享受できるようになった。

8.3における全文検索の使い方

PostgreSQL 8.3の全文検索機能を使う方法はいろいろあるが、最も簡単なのはGINインデックスを追加することである。テーブル本体を変更する必要はないので、手軽に全文検索のメリットを体験できる。

t1というテーブルがあり、そのtという列に対して全文検索をしたいのであれば、以下のようにGINインデックスを作成する。

CREATE INDEX t1index ON t1 USING gin(to_tsvector('english',t));

ここでto_tsvector()は、全文検索用のデータ型「TSVECTOR」に変換するための関数である。

実際の検索は以下のように行う。

SELECT * FROM t1 WHERE 'foo' @@ to_tsvector('english', t);