Hyper Estraierを設定する(全文検索システム) | Solaris
- 2007.06.20
- 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は、比較的重い処理なので、週に一度で十分。企業利用だと毎日の方がよい場合もあるので、環境にあわせる。
-
前の記事
Hyper Estraierをインストールする(全文検索システム) | Solaris 2007.06.20
-
次の記事
glibcのバージョンを調べる 2007.07.08