Home > Latest topics

Latest topics > mod_estraierによる履歴全文検索

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

mod_estraierによる履歴全文検索 - May 11, 2006

今月のオープンソースマガジンで僕が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のさらに便利な使いかたや、動作原理などについては、オープンソースマガジン本誌の特集記事をご覧下さい。

分類:Web技術, , , , , 時刻:23:11 | Comments/Trackbacks (0) | Edit

Comments/Trackbacks

TrackBack ping me at


の末尾に2014年1月19日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2006-05-11_mod_estraier.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2014年1月19日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード