全文検索システム「Hyper Estraier」の導入

「Estraier」の後継である「Hyper Estraier」を導入する。
ここでは
/var/www/html/
以下のすべてを検索対象ディレクトリとし、インデックスを
/var/www/hyperestraier/
に作成するものとする。
なお、「Apache」の設定は完了済みとする。

「Hyper Estraier」のインストール

まず、「Hyper Estraier」の導入に必要なものをインストールする。
必要なものは以下の通り。
・libiconv : バージョン1.9.1以降(glibcにも同梱)
・zlib : バージョン1.2.1以降
・QDBM : バージョン1.8.75以降
おそらく、zlibは標準でインストールされているが、インストールされていない場合、yumでインストールする。

「libiconv」のインストール

「libiconv」をインストールするが、この時日本語のパッチも適用する。

[root@CentOS ~]# mkdir /usr/local/src/libiconv <= 作業用ディレクトリの作成
[root@CentOS ~]# chmod 777 /usr/local/src/libiconv <= 作業用ディレクトリのパーミッション変更
[root@CentOS ~]# exit <= 一般ユーザになる
[kaz@CentOS ~]$ cd /usr/local/src/libiconv <= 作業用ディレクトリへ移動
[kaz@CentOS libiconv]$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.10.tar.gz
 <= 「libiconv」のソースをダウンロード
[kaz@CentOS libiconv]$ wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.10-ja-1.patch.gz
 <= 「libiconv」のパッチをダウンロード
[kaz@CentOS libiconv]$ tar xzf libiconv-1.10.tar.gz <= ダウンロードしたファイルの展開
[kaz@CentOS libiconv]$ cd libiconv-1.10 <= 展開したディレクトリに移動
[kaz@CentOS libiconv-1.10]$ gzip -dc ../libiconv-1.10-ja-1.patch.gz | patch -p1
[kaz@CentOS libiconv-1.10]$ ./configure | tee configure.log 2>&1
[kaz@CentOS libiconv-1.10]$ make | tee make.log 2>&1 <= コンパイル
[kaz@CentOS libiconv-1.10]$ su <= スーパーユーザになる
Password: <= パスワードの入力
[root@CentOS libiconv-1.10]# make install | tee make-install.log 2>&1 <= インストール

「QDBM」のインストール

ソースからインストールするが、「zlib」を有効にする。
その為、もしインストールしていない場合、先にインストールしておく。

[root@CentOS ~]# mkdir /usr/local/src/qdbm <= 作業用ディレクトリの作成
[root@CentOS ~]# chmod 777 /usr/local/src/qdbm <= 作業用ディレクトリのパーミッション変更
[root@CentOS ~]# exit <= 一般ユーザになる
[root@CentOS ~]$ cd /usr/local/src/qdbm <= 作業用ディレクトリへ移動
[kaz@CentOS qdbm]$ wget http://qdbm.sourceforge.net/qdbm-1.8.75.tar.gz <= 「QDBM」のソースをダウンロード
[kaz@CentOS qdbm]$ tar xzf qdbm-1.8.75.tar.gz <= ダウンロードしたファイルの展開
[kaz@CentOS qdbm]$ cd qdbm-1.8.75 <= 展開したディレクトリに移動
[kaz@CentOS qdbm-1.8.75]$ ./configure --enable-zlib | tee configure.log 2>&1
[kaz@CentOS qdbm-1.8.75]$ make | tee make.log 2>&1 <= コンパイル
[kaz@CentOS qdbm-1.8.75]$ su <= スーパーユーザになる
Password: <= パスワードの入力
[root@CentOS qdbm-1.8.75]# make install | tee make-install.log 2>&1 <= インストール

「Hyper Estraier」のインストール

[root@CentOS ~]# mkdir /usr/local/src/hyperestraier <= 作業用ディレクトリの作成
[root@CentOS ~]# chmod 777 /usr/local/src/hyperestraier <= 作業用ディレクトリのパーミッション変更
[root@CentOS ~]# exit <= 一般ユーザになる
[kaz@CentOS ~]$ cd /usr/local/src/hyperestraier <= 作業用ディレクトリへ移動
[kaz@CentOS hyperestraier]$ wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.10.tar.gz
 <= 「Hyper Estraier」のソースをダウンロード
[kaz@CentOS hyperestraier]$ tar xzf hyperestraier-1.4.10.tar.gz <= ダウンロードしたファイルの展開
[kaz@CentOS hyperestraier]$ cd hyperestraier-1.4.10 <= 展開したディレクトリに移動
[kaz@CentOS hyperestraier-1.4.10]$ ./configure | tee configure.log 2>&1
[kaz@CentOS hyperestraier-1.4.10]$ make | tee make.log 2>&1 <= コンパイル
[kaz@CentOS hyperestraier-1.4.10]$ su <= スーパーユーザになる
Password: <= パスワードの入力
[root@CentOS hyperestraier-1.4.10]# make install | tee make-install.log 2>&1 <= インストール
「Hyper Estraier」の実行

インデックス格納先ディレクトリの作成

[root@CentOS ~]# mkdir /var/www/hyperestraier

「Hyper Estraier」の新規実行

「Hyper Estraier」を新規に実行する場合は以下のようにする。

[root@CentOS ~]# estcmd gather -il ja -bc -sd /var/www/hyperestraier/crimson-snow /var/www/html <= 文書の登録
[root@CentOS ~]# estcmd create -attr @title str -attr @mdate seq -attr @size seq /var/www/hyperestraier/crimson-snow <= 属性名とデータ型を指定

「Hyper Estraier」の実行

ページに更新があった後、「Hyper Estraier」を実行する場合は以下のようにする。

[root@CentOS ~]# estcmd gather -cl -il ja -bc -sd -cm /var/www/hyperestraier/crimson-snow /var/www/html <= 文書の登録
[root@CentOS ~]# estcmd create -attr @title str -attr @mdate seq -attr @size seq /var/www/hyperestraier/crimson-snow <= 属性名とデータ型を指定
[root@CentOS ~]# estcmd purge -cl /var/www/hyperestraier/crimson-snow <= 削除文書の反映
[root@CentOS ~]# estcmd optimize /var/www/hyperestraier/crimson-snow <= インデックスの最適化
「Hyper Estraier」の設置

設定ファイル等格納先ディレクトリの作成

[root@CentOS ~]# mkdir /var/www/cgi-bin/hyperestraier

各種ファイルのコピー

[root@CentOS ~]# cp /usr/local/libexec/estseek.cgi /var/www/cgi-bin/hyperestraier/estseek.cgi
[root@CentOS ~]# cp /usr/local/share/hyperestraier/locale/ja/estseek.conf /var/www/cgi-bin/hyperestraier/estseek.conf
[root@CentOS ~]# cp /usr/local/share/hyperestraier/locale/ja/estseek.tmpl /var/www/cgi-bin/hyperestraier/estseek.tmpl
[root@CentOS ~]# cp /usr/local/share/hyperestraier/locale/ja/estseek.top /var/www/cgi-bin/hyperestraier/estseek.top
[root@CentOS ~]# cp /usr/local/share/hyperestraier/locale/ja/estseek.help /var/www/cgi-bin/hyperestraier/estseek.help

「Hyper Estraier」の設定

[root@CentOS ~]# vi /var/www/cgi-bin/hyperestraier/estseek.conf <= 設定ファイルの編集
indexname: casket
↓
indexname: /var/www/hyperestraier/crimson-snow <= インデックスを指定

replace: ^file:///home/mikio/public_html/{{!}}http://localhost/
↓
replace: ^file:///var/www/html/{{!}}http://www.crimson-snow.net/ <= 検索対象ディレクトリの置換

formtype: normal
↓
formtype: web <= 入力フォームの種類をWebサイト用にする

ブラウザで
http://サーバのIPアドレス/cgi-bin/hyperestraier/estseek.cgi
とアクセスする。

サイト内に設置する場合

サイト内に検索用のFORMを設置する場合、設置したい場所に以下の内容を記述。

<FORM method="get" action="/cgi-bin/hyperestraier/estseek.cgi">
  <DIV>
    <INPUT type="text" name="phrase" value="" size="32" tabindex="1" />
    <INPUT type="submit" value="Search" tabindex="2" />
    <INPUT type="hidden" name="enc" value="UTF-8" />
  </DIV>
</FORM>
インデックスの自動作成&不要データ削除
[root@CentOS ~]# vi /root/hyperestraier.sh <= 文書の登録&インデックスの更新スクリプト作成
#!/bin/sh

ESTCMD='/usr/local/bin/estcmd'

$ESTCMD gather -cl -il ja -bc -sd -cm /var/www/hyperestraier/crimson-snow /var/www/html > /dev/null 2>&1
$ESTCMD create -attr @title str -attr @mdate seq -attr @size seq /var/www/hyperestraier/crimson-snow > /dev/null 2>&1


[root@CentOS ~]# chmod 744 /root/hyperestraier.sh <= 作成したスクリプトに実行権限付加

スクリプトの自動実行

[root@CentOS ~]# crontab -e <= 設定ファイルの編集
00 03 * * * /root/hyperestraier.sh <= 追加(毎日3:00にスクリプト実行)
10 03 * * 1 /usr/local/bin/estcmd purge -cl /var/www/hyperestraier/crimson-snow > /dev/null 2>&1 <= 追加(毎週月曜日に削除文書の反映)
30 03 1 * * /usr/local/bin/estcmd optimize /var/www/hyperestraier/crimson-snow > /dev/null 2>&1 <= 追加(毎月1回インデックスの最適化)
▲ページのトップへ