形態素解析 または N-gram を使用した、組み込み型の日本語全文検索です。
この textsearch-ja プロジェクトは PostgreSQL コミュニティによる pgFoundry の中のプロジェクトです。
このプロジェクトでは「textsearch_ja」と「textsearch_senna」の2種類の全文検索インデックスがあります。 それぞれ特徴があるため、用途に応じて使い分けてください。 一般的には、文法的に整った文書を検索する場合には textsearch_ja (形態素解析) 、LIKE 演算子に近い結果を得たい場合には textsearch_senna (N-gram) が適しています。
textsearch_ja は形態素解析を用いた全文検索機能です。 PostgreSQL 8.3 で追加された組み込みテキスト検索を拡張するため、 英語文書の検索と同様の方法で、日本語文書を検索することができます。 検索は形態素解析を利用した単語単位で行われます。 形態素解析には MeCab を使用しています。
利点として、GIN または GiST インデックスをベースにしているため、全文検索用のインデックスがリカバリ可能であることが挙げられます。 また、既に tsearch2 に対応している欧米言語を対象とした製品を大きく改変することなく、日本語対応できる強みがあります。
textsearch_senna では N-gram ベースの全文検索を行います。 検索には、全文検索エンジン Senna を使用しています。
利点として、文字すべてをインデックス化するため LIKE 中間一致検索に近い結果を得ることができます。 また、既に tsearch2 互換のインタフェースを備えるため、少々の設定変更で textsearch-ja と textsearch_senna を切り替えて使用することができます。 ただし、クラッシュ・リカバリやアーカイブ・リカバリに対応していないことに注意してください。リカバリ後にインデックスの再作成を行う必要があります。