mod_estraier は Hyper Estraier のノードAPI を用いて、 Apache を通過した html を検索 DB に自動的に登録する Apache のモジュールです。特に、プロクシを通過した ドキュメントを検索できるようにすることや、 Wiki や BBS などの動的なコンテンツの 検索 DB を随時更新することを主な目的として考えています。
Hyper Estraier については以下をご参照下さい。
http://hyperestraier.sourceforge.net/
mod_estraier の sf.net 上のプロジェクトページは、 http://sourceforge.net/projects/modestraier/ となっています。
mod_estraier は GPL2 の基に配布されます。
2005年8月24日の夏休みコード道場中間報告会の時の資料。
2005年10月23日の夏休みコード道場成果報告会の時の資料。
などを用いてテストされています。
mod_estraier のアーカイブを展開して、
$ ./configure $ make # make install
として下さい。これでコンパイル・インストールは完了です。
./configure のオプションとして、 --with-tidy で tidy の場所を指定でき、 --with-apxs で apxs の場所を指定することができます。
次に Apache の設定を行います。 httpd.conf に、例えば mod_estraier をプロクシとして使用する場合
LoadModule estraier_module 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/test 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/local/share/hyperestraier/filter/estfxpdftohtml EstraierFilterCommand ^application/msword H@/usr/local/share/hyperestraier/filter/estfxmsotohtml EstraierFilterCommand ^application/vnd.ms-(excel|powerpoint) H@/usr/local/share/hyperestraier/filter/estfxmsotohtml </Proxy>
などと加えます。
また、例えば mod_estraier をリバースプロキシとして使用するなら、
<Location /my_web/> SetOutputFilter estraier EstraierNode http://localhost:1978/node/test EstraierUser admin EstraierPass admin EstraierLanguage ja EstraierDenyURI favicon.ico EstraierUseWeight On </Location>
などと加えます。
それぞれのオプションの詳細については以下で述べます。 他のサンプルがパッケージ内の doc/recipes.conf にもあります。
次に Apache の再起動を行います。 多くのディストリビューションで以下のようなものが有効であると思います。
既存の DB が無いのであれば、適切なディレクトリの下で、
estmaster init casket
とすることによって初期化することができます。 初期化された後は、
estmaster start casket
として estmaster を起動します。 前述の設定の場合、 test というノードが必要ですので、 http://localhost:1978/master_ui にアクセスして、適切な設定を行って下さい。
ブラウザのプロキシの設定のホストを localhost 、ポートを 80 とします。 あとは通常通りブラウジングすれば、どんどん検索 DB が溜まっていきます。
http://localhost:1978/node/test/search_ui
など、適切なノード API クライアントを選択して検索することができます。
mod_estraier ではいくつかのオプションを httpd.conf に記述できます。
Hyper Estraier のノードサーバとノードを指定します。 指定しなければ mod_estraier は動作しません。
ノードサーバのユーザ名、パスワードを指定します。 指定しなければ mod_estraier は動作しません。
ノードサーバにアクセスする際に HTTP プロキシを使用する場合に指定します。 省略するとプロキシを使わない設定となります。
ノードサーバにアクセスする際のタイムアウトを秒で指定します。 デフォルトは5秒となっています。
DB に登録しない URI を正規表現で指定します。 例えば google を DB に登録したくない場合は、
EstraierDenyURI http://[a-z]*.?google.co
などと指定すれば良いでしょう。 このオプションは複数個指定することができます。
DB に登録する URI を正規表現で指定します。 例えば google のみを DB に登録したい場合は、
EstraierDenyURI .* EstraierAllowURI http://[a-z]*.?google.co
などと指定すれば良いでしょう。 このオプションは複数個指定することができます。
EstraierDenyURI と EstraierAllowURI は、 後に来るものの効果が優先されます。
Hyper Estraier に登録する際に用いる言語を指定します。 日本語環境の人であれば、
EstraierLanguage ja
としておけばだいたい大丈夫だと思います。 en, ja, zh, ko, misc の中から指定することができ、 デフォルトは en となっています。
DB の登録をデタッチしたスレッドで行います。 レスポンスが高速になる予定ですが、 今のところ大きな効果は見られていません。 複数 CPU のマシンでは効果が大きくなるかもしれません。 デフォルトでは off となっています。
リクエストヘッダの条件によって DB に登録しないことができます。 例えば
EstraierDenyRequestHeader Authorization .*
などとすることによって、認証がかかっている場所を DB に登録しないことができます。 この条件はヘッダ・内容ともに正規表現で記述します。
レスポンスヘッダの条件によって DB に登録しないことができます。
複数回参照した URL に重みをつけていくようにできます。 デフォルトでは off となっています。
特定の Content-Type に対してフィルタにするコマンドを指定します。 例えば
EstraierFilterCommand ^application/pdf H@/usr/local/share/hyperestraier/filter/estfxpdftohtml
などとすると pdf を Hyper Estraier 付属の estfxpdftohtml を 用いてフィルタするようになります。フィルタされた後の文書が、 html なら H@ 、 text なら T@ をコマンドに前置して指定して下さい。 フィルタが文書ドラフトに変換する場合は何もつけなくてかまいません。
上記フィルタコマンドが使用する一時ディレクトリを指定します。 例えば
EstraierFilterTmpdir /tmp
などとして下さい。
処理する文書の最大サイズを指定できます。 デフォルトは 10000000 で、 10MB です。
Apache 組み込みの簡易サーチャとして、 mod_estraier_search というモジュールも付属しています。
LoadModule estraier_search_module modules/mod_estraier_search.so <Location /moe/> SetHandler estraier_search EstsearchNode http://localhost:1978/node/test EstsearchUser admin EstsearchPass admin EstsearchTimeout 5 EstsearchNodeDepth 0 EstsearchTemplateHead /home/i/wrk/mod_estraier/tmpl/estseek.head EstsearchTemplateFoot /home/i/wrk/mod_estraier/tmpl/estseek.foot </Location>
などと設定して下さい。 EstsearchTemplate* は付属の estseek.* がある場所に書き換えてください。
この設定をして、 http://localhost/moe/ にアクセスすると この簡易サーチャを用いることができます。
このサーチャでは Google に似た記法で検索条件を指定できます。 つまり、 OR や | を使用すると or 検索ができ、 検索語を - で始めるとその単語を外すことができます。 link:URI で URI にリンクしているサイトを抽出でき、 site:URI で URI に含む単語を指定することができます。
mod_estraier_cache は実験的なモジュールです。 Hyper Estraier の DB からドキュメントを再生します。
LoadModule estraier_cache_module modules/mod_estraier_cache.so Listen *:8081 <VirtualHost *:8081> SetHandler estraier_cache EstcacheNode http://localhost:1978/node/web EstcacheUser admin EstcachePass admin </VirtualHost>
などと設定して、これをプロキシとしてブラウズして下さい。