Hyper Estraierを設定する(全文検索システム) | Solaris

 

■インデックスを作る

Webサイトのインデックスを作る。検索エンジンは、このインデックスを参照して検索結果を表示する。

作るインデックス: /export/home/www/www_index

対象ファイル:  /export/home/www/public_html/* 

$ cd /export/home/www/
$ estcmd gather -il ja -sd www_index /export/home/www/public_html

これで、public_html以下のhtmlファイルが収集されて、www_indexという名前のインデックスが出来上がり。

フルパスを後で、estseek.confで指定するのでメモしておく。

使用コマンド:   /usr/local/bin/estcmd

-il ja オプション:  日本語を優先するという意味。

-sd オプション:   ファイルの作成日時と更新日時を記録するという意味。

インデックスのフルパス:  /export/home/www/www_index

 

■CGIスクリプトを設置する

cgi-binに、バイナリ、設定ファイル、テンプレート、初期画面メッセージをコピーして置く。

$ cd /export/home/www/cgi-bin
$ cp /usr/local/libexec/estseek.cgi .
$ cp /usr/local/share/hyperestraier/estseek.* .
$ ls est*
estseek.cgi   estseek.conf  estseek.help  estseek.tmpl  estseek.top

 

estseek.cgi  検索用CGIスクリプト

estseek.conf  設定ファイル

estseek.tmpl  検索ページのテンプレート

estseek.top  検索ページの初期画面のメッセージ

 

■estseek.confを設定する

 viで、estseek.conf内の2行を編集する。

/export/home/www/cgi-bin/estseek.conf 

indexname: /export/home/www/www_index
・・・
replace: ^file:///export/home/www/public_html/{{!}}http://www.mydomain.com/
・・・

indexname

さきほど作ったインデックスをフルパスで指定する。

/export/home/www/www_index

 

replace

Apacheのhtmlディレクトリを指定する。

置き換え対象文字列: /export/home/www/public_html/

置き換え後文字列:  http://www.mydomain.com/ 

 

注意: htmlディレクトリが、/export/home/htdocs/ だとする。

シンボリックリンクで、/home/htdocs/ を作っていたとする。

この場合、シンボリックリンクを記述せず、きちんと /export/home/htdocs/ と書くこと。

 

 

 ■ブラウザでアクセスする

ブラウザでアクセスしてみる。 

http://mydomain/cgi-bin/estseek.cgi 

ところが、

500 Internal Server Error

というありがたくないメッセージが表示されてしまった。

 

■Hyper Estraierで500 Internal Server Errorが出たときの対処

LD_LIBRARY_PATHを疑ってみたところビンゴでした。

crleコマンドで基本的なライブラリパスを指定したところ、estseek.cgiが稼働を始めたのでめでたし、めでたし。(apacheを再起動する必要はなかった)

 Solarisのライブラリパス(LD_LIBRARY_PATH)

 

このエラーの他の対処方法として、HyperEstraierのconfigure時に–enable-staticオプションを付けてうまくいったという記事がありました。(試してないけど…)

 

■Hyper Estraierのヘルプ画面を日本語化する

日本語化されたファイルに置き換える。 

$ cd /export/home/www/cgi-bin
$ ls /usr/local/share/hyperestraier/locale/ja/estseek.* .
estseek.conf  estseek.help  estseek.tmpl  estseek.top

$ cp /usr/local/share/hyperestraier/locale/ja/estseek.help .
$ cp /usr/local/share/hyperestraier/locale/ja/estseek.tmpl .
$ cp /usr/local/share/hyperestraier/locale/ja/estseek.top . 

estseek.confも置き換えたら、設定をもう一度行っておくことを忘れずに。

 

■検索フォームを設置する

すでに設置してあるindex.html内に検索フォームを埋め込んだ。

Shift_JISで作ってあるページなので、そのように指定した。

<form action="http://mydomain/cgi-bin/estseek.cgi" method="get">
<div>
<input type="text" name="phrase" size="20" />
<input type="submit" value="検索" />
<input type="hidden" name="enc" value="Shift_JIS" />
</div>
</form>

encの指定は、

UTF-8, EUC-JP, Shift_JIS, ISO-2022-JP, ISO-8859-1等が使える。

 

 ■crontabで毎晩インデックスを更新する

毎晩インデックスを更新し、一週間に一度、日曜日の夜にpurgeする。

10 22 * * * /usr/local/bin/estcmd gather -cl -il ja -sd -cm /export/home/www/www_index /export/home/www/public_html
10 23 * * 0 /usr/local/bin/estcmd purge -cl /export/home/www/www_index

 

gather  ファイルシステムを探索して文書を登録する。

-cl  削除された文書が含んでいた語句のインデックスを再構築する。

-il ja  日本語を優先するという意味。

-sd  ファイルの作成日時と更新日時を記録するという意味。

-cm  まだインデックス内に存在していないか、前に登録したときより更新時刻が新しい文書のみを登録する。

purge  インデックス内に存在して、ファイルシステム上に存在しない文書の情報を削除する。

purgeは、比較的重い処理なので、週に一度で十分。企業利用だと毎日の方がよい場合もあるので、環境にあわせる。