Linuxに全文検索エンジンLudiaをインストール
LudiaはSennaを使ったPostgresSQL用の組み込み型全文検索インデックスエンジンです。
ダウンロード
下記サイトからダウンロード。
http://sourceforge.jp/projects/ludia/
Mecab、MeCab辞書、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
- PostgreSQLをRPMパッケージで導入した場合の例
- /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 @@ 'もも';