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)