May 11, 2006
mod_estraierによる履歴全文検索
今月のオープンソースマガジンで僕がPart1とPart2を書いた特集記事のPart3で紹介されてるmod_estraierの、Ubuntu Dapperでの導入手順というか導入レポート。実際にはとぴんに助けてもらいまくった。ありがとうありがとう!
なんかサーバが落ちてて読めなかったんで困ったからこっちにもミラーしとく。
オープンソースマガジン2006年6月号で紹介されているmod_estraierは、Apacheをプロキシとして利用することでWebの閲覧履歴をキャッシュし、「自分が見たことのあるページ」だけを対象に全文検索を行えるようにするソフトウェアです。Web全体ではなく閲覧履歴だけを対象に検索できるので、「確かどこかで見たことがあったんだけど、どこだったかな……」といったうろ覚えのページを探すのに最適です。
風博士ではブラウザ自体にこのような機能を持たせていたり、Firefoxではファイルキャッシュを全文検索できるsearchcacheといった拡張機能が合ったりするのですが、mod_estraierを導入すると、以下のようなメリットがあります。
- プロキシとして動作するので、ブラウザに依存しないで使える(vs 風博士)
- 検索用のインデックスをバックグラウンドで生成するので、高速かつ高機能な検索が可能(vs Firefox + searchcache)
- 複数人でデータベースを共有できるため、チームでの利用が可能
- WWWサーバで利用すればサイト内検索システムにも応用可能
オープンソースマガジンの特集記事ではFedora CoreとDebian(sid?)の場合の導入手順が紹介されていますが、私の手元のUbuntu [Dappar Drake]ではそのままではうまくいかず、色々と手を入れなくてはなりませんでした。Ubuntu [Dapper Drake]での最終的な導入手順をここにまとめておきますので、同じような環境を使われている方は参考にしてみてください。
インストール
まず、必要なパッケージをインストールします。mod_estraier以外はaptで導入できますので、一括してインストールしてしまいましょう。
- $sudo apt-get install apache2 apache2-dev hyperestraier libtidy-dev libestraier-dev libqdbm-dev
mod_estraierは配布ページからソースコードをダウンロードして展開し、自分でビルドします。
- $./configure CPPFLAGS='-I/usr/include/estraier -I/usr/include/qdbm -I/usr/include/tidy' --with-apxs=/usr/bin/apxs2
- $make
- $sudo make install
オプションでパスや環境変数を指定しないとビルドに失敗してしまいますので、注意が必要です。
Hyper Estraierの設定
インストールまで完了したら、次は設定です。
まずHyper Estraier(mod_estraierが利用する全文検索システム)の設定を変更しておきます。初期状態では起動時にHyper Estraierを自動起動する設定になっていませんので、/etc/default/hyperestraier を編集して、自動的に起動するようにしておきましょう。
- $sudo gedit /etc/default/hyperestraier
NO_START=1
という行がありますので、これを以下のように書き換えて上書き保存してください。
NO_START=0
Hyper Estraierの起動とノードの作成
次に、Hyper Estraierを起動し、検索インデックスを保存するデータベース(ノード)を作成します。
- $sudo /etc/init.d/hyperestraier start
以上のコマンドでHyper Estraierを起動したら、Webブラウザで「http://localhost:1978/master_ui」を開きます。すると、Hyper Estraierの管理画面が読み込まれます。ここでメニューから「Manage Nodes」を選択し、2つあるテキストボックスの左側にノード名「web」、右側にその説明(適当で構いません。私は「for mod_estraier」としました)を入力して「create」ボタンをクリックします。これで、Hyper Estraierの準備はできました。
Apache2の設定
次は、Apache2をプロキシとして利用するための設定です。
Apache2では設定ファイルを分けておくのがマナーのようなのですが、話を単純にするために、後方互換性のために用意されているhttpd.confに設定を書くことにします。
- $sudo gedit /etc/apache2/httpd.conf
以下の内容をそのまま貼り付けてしまって構いません。なお、先の手順で作成したHyper Estraierのノードを「web」以外の名前にしていた場合は、以下の例の強調箇所もそれに合わせて書き換えてください。
LoadModule estraier_module /usr/lib/apache2/modules/mod_estraier.so ProxyRequests On <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 SetOutputFilter estraier EstraierNode http://localhost:1978/node/web EstraierUser admin EstraierPass admin EstraierLanguage ja EstraierDenyURI http://[a-z]*.?google.co EstraierAllowURI http://labs.google.com/ EstraierDenyURI favicon.ico EstraierUseWeight On EstraierFilterCommand ^application/pdf H@/usr/share/hyperestraier/filter/estfxpdftohtml EstraierFilterCommand ^application/msword H@/usr/share/hyperestraier/filter/estfxmsotohtml EstraierFilterCommand ^application/vnd.ms-(excel|powerpoint) H@/usr/share/hyperestraier/filter/estfxmsotohtml </Proxy>
また、このままだと文字コードが指定されていないページを読み込んだときにApache2が余計な文字コード指定を加えてしまうため、文字化けすることがあります。/etc/apache2/conf/charset の中にその定義がありますので、「#」文字でコメントアウトしておきましょう。
- $sudo gedit /etc/apache2/conf/charset
でファイルを開き、
AddDefaultCharset UTF-8
となっている行を
#AddDefaultCharset UTF-8
とコメントアウトし、上書き保存します。。
そして、Apache2のプロキシ機能を有効にし、Apache2を再起動します。
- $sudo a2enmod proxy
- $sudo /etc/init.d/apache2 restart
Webブラウザの設定
最後に、Webブラウザの設定も変更しておきます。Firefoxの場合は設定ダイアログを開いた後、「一般」タブの「接続」欄にある「接続設定」ボックスで、HTTPプロキシのホスト名を「localhost」、ポートを80番と記入して、ダイアログを閉じます。
以上で全ての設定は終わりです。mod_estraierのさらに便利な使いかたや、動作原理などについては、オープンソースマガジン本誌の特集記事をご覧下さい。
wikieditish message: Ready to edit this entry.