« yahoo BBを使用 | メイン | Alinous-Coreの外部公開サーバー環境 »

PostgreSQLの日本語全文検索

カテゴリーが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に接続して、評価用のテーブルを作成し、確認してみる。

※ちょっと長くなったので、あとで追記する予定

この記事のパーマリンク

このエントリーのパーマリンクURL:
http://blog.sailine.net/2007/08/postgresql.html

ブラウザのURLが異なっており「キャッシュ」表記が無い場合は著作権侵害です。著作権者にご連絡ください。(以下URL)

http://fusekako.jp/contact/contact.html

トラックバック

このエントリーのトラックバックURL:
http://blog.sailine.net/bin/mt-tb.cgi/79

迷惑トラックバック撲滅中! 当ページへトラックバックしている旨の書込みをお願いします。

コメント (1)

tak:

「全文検索」について、
トラックバックさせていただきました

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

ご注意!!

著作権表示
このblogのオリジナルURLは
http://blog.sailine.net
です。
キャッシュで保持する場合はキャッシュであることを明示してください。明示しない場合は著作権侵害となります。
This blog is "http://blog.sailine.net" saving.
The contents must be displayed in above URL or based.
If you tried to show the blog with different the URL,you must license from the copyright holder.

About

Alinous-Coreに投稿された記事です。

ひとつ前の投稿は「yahoo BBを使用」です。

次の投稿は「Alinous-Coreの外部公開サーバー環境」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Copyright 2007-2010 ©彩らいん!もじサイト