textsearch-ja ホームページへようこそ


形態素解析 または N-gram を使用した、組み込み型の日本語全文検索です。 また、検索の他にも日本語を扱うためのユーティリティを提供しています。

この textsearch-ja プロジェクトは PostgreSQL コミュニティによる pgFoundry の中のプロジェクトです。

Here is an English page.

このプロジェクトでは「textsearch_ja」と「textsearch_senna」の2種類の全文検索インデックスがあります。 それぞれ特徴があるため、用途に応じて使い分けてください。 一般的には、文法的に整った文書を検索する場合には textsearch_ja (形態素解析) 、LIKE 演算子に近い結果を得たい場合には textsearch_senna (N-gram) が適しています。

EUDC モジュールは全文検索ではありませんが、PostgreSQL で外字領域を含む日本語文書を扱う際に役立つユーティリティです。

textsearch_ja : 形態素解析

textsearch_ja は形態素解析を用いた全文検索機能です。 PostgreSQL 8.3 で追加された組み込みテキスト検索を拡張するため、 英語文書の検索と同様の方法で、日本語文書を検索することができます。 検索は形態素解析を利用した単語単位で行われます。 形態素解析には MeCab を使用しています。

利点として、GIN または GiST インデックスをベースにしているため、全文検索用のインデックスがリカバリ可能であることが挙げられます。 また、既に tsearch2 に対応している欧米言語を対象とした製品を大きく改変することなく、日本語対応できる強みがあります。

textsearch_senna : N-gram

textsearch_senna では N-gram ベースの全文検索を行います。 検索には、全文検索エンジン Senna を使用しています。

利点として、文字すべてをインデックス化するため LIKE 中間一致検索に近い結果を得ることができます。 また、既に tsearch2 互換のインタフェースを備えるため、少々の設定変更で textsearch-ja と textsearch_senna を切り替えて使用することができます。 ただし、クラッシュ・リカバリやアーカイブ・リカバリに対応していないことに注意してください。リカバリ後にインデックスの再作成を行う必要があります。

textsearch_groonga

textsearch_groonga では N-gram ベースの全文検索とスカラー値の検索の両方を行います。 検索には、全文検索 / 列指向データベースである groonga を使用しています。

EUDC (End User Defined Character) : 外字対応文字コード

eudc モジュールは、外字領域の文字コード変換をサポートしたエンコーディングです。 シフトSJIS (SJIS) や EUC_JP と、UTF-8 の変換において、外字領域の変換を追加します。 絵文字等の外字を扱う必要があり、かつクライアント・アプリケーションとデータベースで異なる文字コードを使う場合に有用です。