| トップ | Solaris | FreeBSD | Gentoo | CentOS | Fedora | Windows | Tips | 自宅サーバの動作確認 | サイト内検索(Namazu) | サイト内検索(HE) |
全文検索システムとしては「Namazu」が有名であるが、その他にもいくつかあり、
ここでは「Namazu」にも劣らない「Estraier」を導入する。
また、分かち書きには「ChaSen」を利用する。
なお、「Estraier」から「ChaSen」を利用する場合、文字コードがUTF-8の場合にオプションを渡せないので、
文字コードはEUC-JPであるとする。
ここでは
/var/www/html/
以下のすべてを検索対象ディレクトリとし、転置インデックスを
/var/www/estraier/
に作成するものとする。
なお、「Apache」の設定は完了済みとする。
「Darts」のインストール
まず、「ChaSen」を導入するが、「ChaSen」の導入に必要な「Darts」をインストールする。
[root@CentOS ~]# mkdir /usr/local/src/darts <= 作業用ディレクトリの作成 [root@CentOS ~]# chmod 777 /usr/local/src/darts <= 作業用ディレクトリのパーミッション変更 [root@CentOS ~]# exit <= 一般ユーザになる [kaz@CentOS ~]$ cd /usr/local/src/darts <= 作業用ディレクトリへ移動 [kaz@CentOS darts]$ wget http://www.chasen.org/~taku/software/darts/src/darts-0.3.tar.gz <= 「Darts」のソースをダウンロード [kaz@CentOS darts]$ tar xzf darts-0.3.tar.gz <= ダウンロードしたファイルの展開 [kaz@CentOS darts]$ cd darts-0.3 <= 展開したディレクトリに移動 [kaz@CentOS darts-0.3]$ ./configure | tee configure.log 2>&1 [kaz@CentOS darts-0.3]$ make | tee make.log 2>&1 <= コンパイル [kaz@CentOS darts-0.3]$ su <= スーパーユーザになる Password: <= パスワードの入力 [root@CentOS darts-0.3]# make install | tee make-install.log 2>&1 <= インストール |
「libiconv」のインストール
次に、「libiconv」をインストールするが、この時日本語のパッチも適用する。
[root@CentOS ~]# mkdir /usr/local/src/libiconv <= 作業用ディレクトリの作成 [root@CentOS ~]# chmod 777 /usr/local/src/libiconv <= 作業用ディレクトリのパーミッション変更 [root@CentOS ~]# exit <= 一般ユーザになる [root@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 <= インストール |
「ChaSen」のインストール
以下の場合、dartsdic.cppをそれぞれ変更する。
・「Darts」のバージョンが0.3の場合(当サイトの場合)、71行目を変更する。バージョン0.2では必要なし。
・gccのバージョンが3.4.3以降の場合、180行目を変更する。
[root@CentOS ~]# mkdir /usr/local/src/chasen <= 作業用ディレクトリの作成 [root@CentOS ~]# chmod 777 /usr/local/src/chasen <= 作業用ディレクトリのパーミッション変更 [root@CentOS ~]# exit <= 一般ユーザになる [root@CentOS ~]$ cd /usr/local/src/chasen <= 作業用ディレクトリへ移動 [kaz@CentOS chasen]$ wget http://chasen.naist.jp/stable/chasen/chasen-2.3.3.tar.gz <= 「ChaSen」のソースをダウンロード [kaz@CentOS chasen]$ tar xzf chasen-2.3.3.tar.gz <= ダウンロードしたファイルの展開 [kaz@CentOS chasen]$ cd chasen-2.3.3 <= 展開したディレクトリに移動 [kaz@CentOS chasen-2.3.3]$ vi lib/dartsdic.cpp darts->setArray(cha_mmap_map(da->da_mmap)); <= 71行目 ↓ darts->set_array(cha_mmap_map(da->da_mmap)); <= 変更 (const char*)keys[size] = key.data(); <= 180行目 ↓ keys[size] = (char*)key.data(); <= 変更 [kaz@CentOS chasen-2.3.3]$ ./configure | tee configure.log 2>&1 [kaz@CentOS chasen-2.3.3]$ make | tee make.log 2>&1 <= コンパイル [kaz@CentOS chasen-2.3.3]$ su <= スーパーユーザになる Password: <= パスワードの入力 [root@CentOS chasen-2.3.3]# make install | tee make-install.log 2>&1 <= インストール |
「ipadic」のインストール
「ChaSen」が利用する辞書の「ipadic」をインストールする。
[root@CentOS ~]# mkdir /usr/local/src/ipadic <= 作業用ディレクトリの作成 [root@CentOS ~]# chmod 777 /usr/local/src/ipadic <= 作業用ディレクトリのパーミッション変更 [root@CentOS ~]# exit <= 一般ユーザになる [kaz@CentOS ~]$ cd /usr/local/src/ipadic <= 作業用ディレクトリへ移動 [kaz@CentOS ipadic]$ wget http://chasen.naist.jp/stable/ipadic/ipadic-2.7.0.tar.gz <= 「ipadic」のソースをダウンロード [kaz@CentOS ipadic]$ tar xzf ipadic-2.7.0.tar.gz <= ダウンロードしたファイルの展開 [kaz@CentOS ipadic]$ cd ipadic-2.7.0 <= 展開したディレクトリに移動 [kaz@CentOS ipadic-2.7.0]$ ./configure | tee configure.log 2>&1 [kaz@CentOS ipadic-2.7.0]$ make | tee make.log 2>&1 <= コンパイル [kaz@CentOS ipadic-2.7.0]$ su <= スーパーユーザになる Password: <= パスワードの入力 [root@CentOS ipadic-2.7.0]# make install | tee make-install.log 2>&1 <= インストール |
「Estraier」のインストール
[root@CentOS ~]# mkdir /usr/local/src/estraier <= 作業用ディレクトリの作成 [root@CentOS ~]# chmod 777 /usr/local/src/estraier <= 作業用ディレクトリのパーミッション変更 [root@CentOS ~]# exit <= 一般ユーザになる [kaz@CentOS ~]$ cd /usr/local/src/estraier <= 作業用ディレクトリへ移動 [kaz@CentOS estraier]$ wget http://estraier.sourceforge.net/estraier-1.2.29.tar.gz <= 「Estraier」のソースをダウンロード [kaz@CentOS estraier]$ tar xzf estraier-1.2.29.tar.gz <= ダウンロードしたファイルの展開 [kaz@CentOS estraier]$ cd estraier-1.2.29 <= 展開したディレクトリに移動 [kaz@CentOS estraier-1.2.29]$ ./configure --enable-regex --enable-dlfilter --enable-chasen | tee configure.log 2>&1 [kaz@CentOS estraier-1.2.29]$ make | tee make.log 2>&1 <= コンパイル [kaz@CentOS estraier-1.2.29]$ su <= スーパーユーザになる Password: <= パスワードの入力 [root@CentOS estraier-1.2.29]# make install | tee make-install.log 2>&1 <= インストール |
転置インデックス格納先ディレクトリの作成
[root@CentOS ~]# mkdir /var/www/estraier |
「Estraier」の新規実行
「Estraier」を新規に実行する場合は以下のようにする。
[root@CentOS ~]# estindex register /var/www/estraier/crimson-snow /var/www/html <= 転置インデックスの作成 [root@CentOS ~]# estindex relate /var/www/estraier/crimson-snow <= 転置インデックスに関連文書検索用のスコア情報を追加 |
「Estraier」の実行
ページに更新があった後、「Estraier」を実行する場合は以下のようにする。
[root@CentOS ~]# estindex purge /var/www/estraier/crimson-snow <= サイトから削除された文書を転置インデックスからも削除 [root@CentOS ~]# estindex register /var/www/estraier/crimson-snow /var/www/html <= 転置インデックスの作成 [root@CentOS ~]# estindex optimize /var/www/estraier/crimson-snow <= 転置インデックスの更新で生じた不要な情報を削除 [root@CentOS ~]# estindex relate /var/www/estraier/crimson-snow <= 転置インデックスに関連文書検索用のスコア情報を追加 |
設定ファイル等格納先ディレクトリの作成
[root@CentOS ~]# mkdir /var/www/cgi-bin/estraier |
各種ファイルのコピー
[root@CentOS ~]# cp /usr/local/libexec/estsearch.cgi /var/www/cgi-bin/estraier/estsearch.cgi [root@CentOS ~]# cp /usr/local/share/estraier/locale/ja/estsearch.conf /var/www/cgi-bin/estraier/estsearch.conf [root@CentOS ~]# cp /usr/local/share/estraier/locale/ja/estsearch.tmpl /var/www/cgi-bin/estraier/estsearch.tmpl [root@CentOS ~]# cp /usr/local/share/estraier/locale/ja/estsearch.top /var/www/cgi-bin/estraier/estsearch.top |
「Estraier」の設定
[root@CentOS ~]# vi /var/www/cgi-bin/estraier/estsearch.conf <= 設定ファイルの編集 indexname: casket ↓ indexname: /var/www/estraier/crimson-snow <= 転置インデックスを指定 prefix: ./ ↓ #prefix: ./ <= コメントアウト replace: ↓ replace: /var/www/html/ http://www.crimson-snow.net/ <= 検索対象ディレクトリの置換 |
ブラウザで
http://サーバのIPアドレス/cgi-bin/estraier/estsearch.cgi
とアクセスする。
サイト内に設置する場合
サイト内に検索用のFORMを設置する場合、設置したい場所に以下の内容を記述。
<FORM method="get" action="/cgi-bin/estraier/estsearch.cgi">
<DIV>
<INPUT type="text" name="phrase" value="" size="64" tabindex="1" />
<INPUT type="submit" value="Search" tabindex="2" />
<INPUT type="hidden" name="enc" value="EUC-JP" />
</DIV>
</FORM>
|
[root@CentOS ~]# vi /root/estraier.sh <= 転置インデックスの自動作成&不要データ削除スクリプト作成 #!/bin/sh ESTINDEX='/usr/local/bin/estindex' $ESTINDEX purge /var/www/estraier/crimson-snow > /dev/null 2>&1 $ESTINDEX register /var/www/estraier/crimson-snow /var/www/html > /dev/null 2>&1 $ESTINDEX optimize /var/www/estraier/crimson-snow > /dev/null 2>&1 $ESTINDEX relate /var/www/estraier/crimson-snow > /dev/null 2>&1 [root@CentOS ~]# chmod 744 /root/estraier.sh <= 作成したスクリプトに実行権限付加 |
スクリプトの自動実行
[root@CentOS ~]# crontab -e <= 設定ファイルの編集 00 03 * * * /root/estraier.sh <= 追加(毎日3:00にスクリプト実行) |