textsearch_groonga

PostgreSQL全文検索 textsearch_groongaインストールめも


参考サイト
textsearch_groonga

概要
日本語テキストの全文検索を行います。形態素解析ベースである textsearch-ja とは異なり、textsearch_groonga では N-gram ベースの全文検索を行います。検索には、全文検索エンジン / 列指向データベースである Groonga を使用しています。

対応環境

PostgreSQL : 8.3, 8.4, 9.0, 9.1dev
・Groonga : (最新版を使うこと)

インストール

・groongaインストール
・textsearch_groonga インストール
・データベースに関数を登録
・インデックスを作ってみる

postgresqlのインストールディレクトリ:{$PG}

groonga

groonga インストール
http://groonga.org/docs/install.html

textsearch_groonga

textsearch_groonga インストール

wget http://pgfoundry.org/frs/download.php/2888/textsearch_groonga-0.1.tar.bz2
tar xvfj textsearch_groonga-0.1.tar.bz2
cd textsearch_groonga

Makefileでpg_configを使っているため、パスの設定をちゃんとしないとだめな模様。
とりあえず、groongaのヘッダファイルをコピーする

cp /usr/local/include/groonga/groonga.h .

8.3環境だと、以下の関数でエラーになるので修正

textsearch_groonga.c

diff -r ../textsearch_groonga_org/textsearch_groonga.c ./textsearch_groonga.c
537c537
<                       IndexBuildHeapScan(heap, index, indexInfo, true, GrnBuildCallback, &state);
---
>                       IndexBuildHeapScan(heap, index, indexInfo, GrnBuildCallback, &state);

make, make install

make
su
make install
exit

シンボリックリンクの作成

cd {$PG}/lib
ln -s /usr/local/lib/libgroonga.so.0
ln -s /usr/local/lib/libgroonga.so
データベースに関数を登録
# psql -f {$PG}/share/contrib/textsearch_groonga.sql -d {database名}
psql -f {$PG}/share/contrib/textsearch_groonga.sql -d testdb
インデックス
CREATE INDEX test_gidx_01 ON test USING groonga (name);

ANALYZE;

explain select * from test where name %% 'くん';
                                         QUERY PLAN
--------------------------------------------------------------------------------------------
 Index Scan using test_gidx_01 on test  (cost=0.25..163.90 rows=80 width=592)
   Index Cond: ((name)::text %% 'くん'::text)
(2 rows)