Linuxに全文検索エンジンLudiaをインストール

LudiaはSennaを使ったPostgresSQL用の組み込み型全文検索インデックスエンジンです。

ダウンロード

下記サイトからダウンロード。
http://sourceforge.jp/projects/ludia/
MecabMeCab辞書、Sennaが含まれているludia-withdepsのパッケージをDLします。

インストール

解凍
$tar -zxvf ludia-withdeps-1.5.0.tar.gz
$cd ludia-1.5.0/deps
MeCabのインストール

分かち書き方式に形態素解析を利用しない場合は、 MeCab(と辞書)をインストールする必要はありません。その場合はSennaのインストールに進んでください。 (MeCabをインストールしない場合はSennaのインストールの際に、 --without-mecabオプションを指定する必要あり)

MeCabをインストールする場合は、アーカイブを展開し、以下の要領でビルドとインストールを行います。:

$ tar -zxvf mecab-0.97.tar.gz
$ cd mecab-0.97 
$ ./configure --with-charset=utf8
$ make
$ su
# make install

MeCab辞書のインストール

アーカイブを展開し、以下の要領でビルドとインストールを行います。:

$ tar -zxvf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf8
$ make
$ su
# make install

Sennaのインストール

アーカイブを展開し、以下の要領でビルドとインストールを行います。:

$ tar -zxvf senna-1.1.2.tar.gz
$ cd senna-1.1.2
$ ./configure
$ make
$ su
# make install

MeCabをインストールしていない場合には、以下のように --without-mecab オプションの指定が必要

$ ./configure --without-mecab

Ludiaのインストール

アーカイブを展開し、以下の要領でビルドとインストールを行います。:

$ ./../../
$ ./configure
$ make
$ su
# make install

pg_configコマンド、senna-cfgコマンドのインストール先にPATHが設定されていない場合、以下のようにそれぞれのpathをconfigureオプションで指定してください。:

$ ./configure --with-pg-config=/usr/local/pgsql/bin/pg_config \
              --with-senna-cfg=/usr/local/bin/senna-cfg

※pg_configの格納場所は、PostgreSQLのインストール方法により異なるので注意。

  • PostgreSQLをソースから導入した場合の例
    • /usr/local/pgsql/bin/pg_config
  • PostgreSQLRPMパッケージで導入した場合の例
    • /usr/bin/pg_config

インデックスアクセスメソッドの登録

$ psql -f /usr/share/pgsql/pgsenna2.sql fea -u

postgreSQLの設定ファイル編集

postgresql.confに下記の設定を追加

custom_variable_classes = 'ludia'
ludia.max_n_sort_result = 10000
ludia.enable_seqscan = on
ludia.seqscan_flags = 1
ludia.sen_index_flags = 31
ludia.max_n_index_cache = 16
ludia.initial_n_segments = 512

インデックスの作成

インデックス作成例:

CREATE INDEX employee_fulltext_index_name
  ON employee
  USING fulltext(name);

検索クエリ

SELECT * FROM employee WHERE name @@ 'もも';