mod_estraier

english page.

概要

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 の基に配布されます。

mod_estraier-0.3.2.tar.gz

プレゼン資料

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 の再起動

次に Apache の再起動を行います。 多くのディストリビューションで以下のようなものが有効であると思います。

estmaster の実行

既存の 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 に記述できます。

EstraierNode

Hyper Estraier のノードサーバとノードを指定します。 指定しなければ mod_estraier は動作しません。

EstraierUser, EstraierPass

ノードサーバのユーザ名、パスワードを指定します。 指定しなければ mod_estraier は動作しません。

EstraierProxyHost, EstraierProxyPort

ノードサーバにアクセスする際に HTTP プロキシを使用する場合に指定します。 省略するとプロキシを使わない設定となります。

EstraierTimeout

ノードサーバにアクセスする際のタイムアウトを秒で指定します。 デフォルトは5秒となっています。

EstraierDenyURI

DB に登録しない URI を正規表現で指定します。 例えば google を DB に登録したくない場合は、

EstraierDenyURI http://[a-z]*.?google.co

などと指定すれば良いでしょう。 このオプションは複数個指定することができます。

EstraierAllowURI

DB に登録する URI を正規表現で指定します。 例えば google のみを DB に登録したい場合は、

EstraierDenyURI .*
EstraierAllowURI http://[a-z]*.?google.co

などと指定すれば良いでしょう。 このオプションは複数個指定することができます。

EstraierDenyURI と EstraierAllowURI は、 後に来るものの効果が優先されます。

EstraierLanguage

Hyper Estraier に登録する際に用いる言語を指定します。 日本語環境の人であれば、

EstraierLanguage ja

としておけばだいたい大丈夫だと思います。 en, ja, zh, ko, misc の中から指定することができ、 デフォルトは en となっています。

EstraierDetachThread

DB の登録をデタッチしたスレッドで行います。 レスポンスが高速になる予定ですが、 今のところ大きな効果は見られていません。 複数 CPU のマシンでは効果が大きくなるかもしれません。 デフォルトでは off となっています。

EstraierDenyRequestHeader

リクエストヘッダの条件によって DB に登録しないことができます。 例えば

EstraierDenyRequestHeader Authorization .*

などとすることによって、認証がかかっている場所を DB に登録しないことができます。 この条件はヘッダ・内容ともに正規表現で記述します。

EstraierDenyResponseHeader

レスポンスヘッダの条件によって DB に登録しないことができます。

EstraierUseWeight

複数回参照した URL に重みをつけていくようにできます。 デフォルトでは off となっています。

EstraierFilterCommand

特定の Content-Type に対してフィルタにするコマンドを指定します。 例えば

EstraierFilterCommand ^application/pdf H@/usr/local/share/hyperestraier/filter/estfxpdftohtml

などとすると pdf を Hyper Estraier 付属の estfxpdftohtml を 用いてフィルタするようになります。フィルタされた後の文書が、 html なら H@ 、 text なら T@ をコマンドに前置して指定して下さい。 フィルタが文書ドラフトに変換する場合は何もつけなくてかまいません。

EstraierFilterTmpdir

上記フィルタコマンドが使用する一時ディレクトリを指定します。 例えば

EstraierFilterTmpdir /tmp

などとして下さい。

EstraierDocumentSizeLimit

処理する文書の最大サイズを指定できます。 デフォルトは 10000000 で、 10MB です。

mod_estraier_search

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

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>

などと設定して、これをプロキシとしてブラウズして下さい。