カテゴリーがAlinous-Coreになっているのは、ちょいとご愛嬌(笑)
PostgreSQLでの日本語全文検索ネタは、意外とみなさんやられているようで・・・
Web上には、かなり文献がごろごろとしているようだ。
webを斜め読みしたところ
1.PostgreSQL + Tsearch2日本語化パッチ
2.Ludia
あたりがメジャーかと推測。
いつものことながら、rpmが整備されていそうな方を着目してみる。
Ludiaは最近(まさに今月だ)バージョンUPされたようで
前提となる
mecab,sennaを検索してみると、rpmを作った方がいるようだ。
mecabはFedoraでrpmを提供しているし、sennaもtarボールの中にspecファイルのテンプレートが入っていた。
中身を見ると、あまりディストリビューションに依存しないようで、汎用rpmでも行けるかなぁと推測。
sennaはfedoraで無かったので、ためしに作成してみた。
senna-1.0.8-1.i386.rpm
senna-devel-1.0.8-1.i386.rpm
作成したsennaのrpmは依存関係としてmecab0.8以上を必要としている。
ソースから入れた場合はNGなので、別途mecabをrpmで探して入れてからどうぞ。
※とりあえず自分の環境では動作確認したけど、動作保証するものではないので、各自の責任で。
※今のとこ、サポートもしません(笑)
mecabは分かち書きのプロセスで、これを経由して、全文検索を行っているようだ。
分かち書き用に辞書があり、分かち書きの精度は、インストールされた辞書によるものが大きい。
以前、日本語FEPを評価したときの文字列を入れて、試してみた。
mecab
きょうのきょうはあめだった
きょう 名詞,副詞可能,*,*,*,*,きょう,キョウ,キョー
の 助詞,連体化,*,*,*,*,の,ノ,ノ
きょう 名詞,副詞可能,*,*,*,*,きょう,キョウ,キョー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
あめ 名詞,一般,*,*,*,*,あめ,アメ,アメ
だっ 助動詞,*,*,*,特殊・ダ,連用タ接続,だ,ダッ,ダッ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
なかなか、うまく分解してくれているようだ。
自分の環境は、表示、db(PostgreSQL)、htmlエンコード いずれも、utf8を使用している。
webの資料では、mecabのデフォルトエンコードはeucのようだが、自分の環境ではツインヘッダー(?)のようで、utf8でも問題なく動作していた。
mecab,mecab-ipadic(辞書),sennaをセットアップ後、Ludiaを入れる。
(Ludiaのtarにはspecテンプレートが無いようだが、いずれ作成してみたい)
D/LしたLudiaのセットアップマニュアルにしたがって、インストールする。
自分の環境では、/lib ,/usr/bin 以下のシステムディレクトリにバイナリーが配置された。
Ludia導入用のSQLは、sennaが用意していて、/usr/share/pgsql/pgsenna2.sql に配置されていた。
つづいて、これをPostgreSQLに適用してみた。PostgreSQLも例のごとく、rpmで導入してある。
rpmで導入すると、dbのディレクトリは、 /var/lib/pgsql/data/ 以下に配置される。
このディレクトリに設定ファイルである、postgresql.confがある。
ここに、日本語全文検索用の設定を仕込んで、PostgreSQLを再起動する。
----
custom_variable_classes = 'ludia'
ludia.max_n_sort_result = 100000
ludia.enable_seqscan = on
ludia.sen_index_flags = 31
----
他にも設定するところはあるらしいのだが、とりあえずこれで動く。
続いて、dbをリスタートし、適当なdbに接続。
(dbが無ければ、新規に作成すること)
接続時に、先ほどのsqlを実行する。
たとえば、
psql -f /usr/share/pgsql/pgsenna2.sql postgres
こんな感じ。
この後に、sqlを適用したdbに接続して、評価用のテーブルを作成し、確認してみる。
※ちょっと長くなったので、あとで追記する予定
コメント (1)
「全文検索」について、
トラックバックさせていただきました
投稿者: tak | 2007年12月22日 09:17
日時: 2007年12月22日 09:17