ここでは、当サイトのメニューにある様な検索フォームを設置して、キーワードでサイト内を検索できるシステムを導入します。

namazuのシステムは、キーワードと、そのキーワードを含むファイル名の対応関係が記述したインデックスと言うファイルを作成します。
このインデックスファイルを検索する事で、高速で、低負荷な全文検索が可能となります。

namazu のインストール

私の場合は、namazuがインストールされていなかったので、apt-getでインストールしました。

※ もしnamazuが入っている場合は、「kakasi」もインストールされているか調べてください。


# apt-get install namazu ← インストール
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下の追加パッケージがインストールされます:
 kakasi perl-File-MMagic
以下のパッケージが新たにインストールされます:
 kakasi namazu perl-File-MMagic
アップグレード: 0 個, 新規インストール: 3 個, 削除: 0 個, 保留: 1 個
1561kB のアーカイブを取得する必要があります。
展開後に 4033kB のディスク容量が追加消費されます。
続行しますか? [Y/n]y
取得:1 http://updates.vinelinux.org 3.2/i386/main kakasi 2.3.4-0vl5 [1025kB]
取得:2 http://updates.vinelinux.org 3.2/i386/main perl-File-MMagic 1.22-0vl1 [25.1kB]
取得:3 http://updates.vinelinux.org 3.2/i386/main namazu 2.0.13-1vl4.1 [511kB]
1561kB を 0s 秒で取得しました (1567kB/s)
変更を適用しています...
準備中...                   ########################################### [100%]
   1:kakasi                 ########################################### [ 33%]
   2:perl-File-MMagic       ########################################### [ 66%]
   3:namazu                 ########################################### [100%]
完了

インデックスの作成


インデックス作成ツール設定

# vi /etc/namazu/mknmzrc ← インデックス作成ツール設定ファイル編集
# $DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*";
$DENY_FILE = ".*\\.(gif|png|jpg|jpeg|cgi|pl|log|dat|txt|css)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*";
 
 # を削除して検索対象外ファイルにcgi、pl、log、dat、txt、cssを追加



エラーメッセージ対処

# vi /usr/bin/mknmz ← mknmzコマンド編集
#! /usr/bin/perl -w ← -wを削除

#! /usr/bin/perl


インデックスファイル格納ディレクトリの作成

ドキュメントルート内でなくても任意でOKです。
私の場合/home/httpd/ ディレクトリ内に設置しました。

# cd /home/httpd ← 移動

# mkdir namazu ← namazuディレクトリ作成

# cd ./namazu ← 移動

# mkdir index ← インデックス専用ディレクトリ作成


インデックス作成コマンド実行

mknmz --output-dir=出力先のパス インデックス化するファイルが格納されているパス

# mknmz --output-dir=/home/httpd/namazu/index /home/httpd/html


※インデックス対象外ディレクトリが有る場合

mknmz コマンドに--exclude オプションを付けて除外ディレクトリを指定して実行します。
下記は私の例です。

# mknmz --output-dir=/home/httpd/namazu/index --exclude="(cgi-bin|images|log|snort)" /home/httpd/html
検索対象のファイルを調べています...
7個のファイルがインデックス作成の対象として見つかりました
1/7 - /home/httpd/html/aaaa.html [text/html]
2/7 - /home/httpd/html/bbbb.html [text/html]
3/7 - /home/httpd/html/cccc.html [text/html]
4/7 - /home/httpd/html/dddd.html [text/html]
5/7 - /home/httpd/html/eeee.html [text/html]
6/7 - /home/httpd/html/ffff.html [text/html]
7/7 - /home/httpd/html/gggg.html [text/html]
インデックスを書き出しています...
[基本]
日付:                Tue Jan 31 19:53:56 2006
追加された文書の数:  7
サイズ (bytes):      211,003
合計の文書数:        7
追加キーワード数:    3,068
合計キーワード数:    3,068
わかち書き:          module_kakasi -ieuc -oeuc -w
経過時間 (秒):       6
ファイル/秒:         6.00
システム:            linux
Perl:                5.008002
Namazu:              2.0.13

namazu動作テスト




# namazu apache /home/httpd/namazu/index ← apacheをキーワードに検索(キーワードは任意)
検索結果

参考ヒット数: [ apache: 2 ]

検索式にマッチする 2 個の文書が見つかりました。

1. SquirrelMail Documentation (スコア: 6)
著者: 不明
日付: Thu, 14 Jul 2005 13:20:00
SquirrelMail Documentation SquirrelMail Logo Sorry for the lack of cohesion in the SquirrelMail documentation, but here is a conglomeration of all the docs that we have accumulated so far. We are wo
/home/httpd/html/webmail/doc/index.html (3,708 bytes)



2. Vinen Linuxで自宅サーバー apacheの設定 (スコア: 2)
著者: 不明
日付: Thu, 26 Jan 2006 15:23:43
apacheの基礎設定 apacheの設定は…
/home/httpd/html/apache.html (3,927 bytes)



現在のリスト: 1 - 2

WEB インターフェースの作成

WEB ページ上でキーワードを入力してnamazuを動作させるには、namazu.cgi を CGI が動作するディレクトリに
設置する必要があります。

また、namazu の個別設定ファイル .namazurcを同じディレクトリに設置する必要があります。

※ もし複数サイトで設置する場合は、「namazu.cgi」と「.namazurc」を設置したいサイトのCGIが動作するディレクトリに
   コピーして下記要領で編集してください。


# updatedb ← locateコマンド用データベースの更新
# locate namazu.cgi  ← namazu.cgiがインストールされているかチェック

※ Yosiの場合インストールされていなかったので下記コマンドでインストールしました。

# apt-get install namazu-cgi ← インストール
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
  namazu-cgi
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 1 個
40.1kB のアーカイブを取得する必要があります。
展開後に 89.6kB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 3.2/i386/updates namazu-cgi 2.0.13-1vl4.1 [40.1kB]
40.1kB を 0s 秒で取得しました (187kB/s)
変更を適用しています...
準備中...                   ########################################### [100%]
   1:namazu-cgi             ########################################### [100%]
完了


WEB インターフェースの作成前の設定

# updatedb ← locateコマンド用データベースの更新
# locate namazu.cgi ← namazu.cgiの場所を検索
/home/httpd/cgi-bin/namazu.cgi

 namazu.cgiを当サイトのapacheの設定のcgiディレクトリに合わせて移動します。

※ namazu.cgiの設置場所は各自の環境に合わせてください

# cd /home/httpd/cgi-bin ← 移動

# mv namazu.cgi /home/httpd/html/cgi-bin ← namazu.cgiの移動

# locate .namazurc ← .namazurcの場所を検索
/home/httpd/cgi-bin/.namazurc

# cd /home/httpd/cgi-bin ← 移動

# mv .namazurc /home/httpd/html/cgi-bin ← .namazurcをcgiディレクトリに移動


移動の確認

# updatedb ← locate コマンド用データベースの更新

# locate namazu.cgi ← namazu.cgiの場所を検索
/home/httpd/html/cgi-bin/namazu.cgi

# locate .namazurc ← .namazurcの場所を検索
/home/httpd/html/cgi-bin/.namazurc


個別設定ファイル.namazurcの編集

# vi /home/httpd/html/cgi-bin/.namazurc ← 編集

# インデックスファイルが格納されている場所を指定
Index         /home/httpd/namazu/index

# テンプレートが格納されている場所を指定
Template      /home/httpd/namazu/index

# 検索結果を URL に変換する様に設定
Replace       /home/httpd/html		http://xxxxx.com ← ドメイン名指定

# 日本語を指定
Lang          ja_JP.eucJP

http://xxxxx.com/cgi-bin/namazu.cgiにアクセスすると、「Namazu による全文検索システム」というページが
表示されるので、実際にキーワード検索して下さい。


当サイトの様に検索フォームを設置する場合は、設置したい場所に、以下のFORMタグを追加してください。

<FORM method="get" action="cgi-bin/namazu.cgi">サイト内検索
<INPUT type="text" name="query" size="15">
<INPUT type="submit" name="submit" value="検索">
<INPUT type="hidden" name="max" value="20">
<INPUT type="hidden" name="result" value="normal">
<INPUT type="hidden" name="sort" value="score">
</FORM>

インデックス作成の自動化


# vi namazu.sh ← 実行スクリプト作成

i キー(入力モード)
#!/bin/sh

export LANG=ja_JP.eucJP
export PEAL_BADLANG=0

mknmz --output-dir=/home/httpd/namazu/index --exclude="(txt|image)" /home/httpd/html > /var/log/mknmz.log

# 複数サイトで設置する場合
# インデックス作成コマンドを複数指定して下さい。(ログへの出力は「>>」です)
mknmz --output-dir=/home/xxxx/namazu/index --exclude="(txt|image)" /home/xxxx/public_html >> /var/log/mknmz.log

chmod 600 /var/log/mknmz.log

記載したら Esc キー(コマンドモード):wq で保存

# chmod +x namazu.sh ← 実行権を付加

# crontab -e ←Cronの編集
移動したら i キー(入力モード)

00 00 * * * /root/namazu.sh ← 例ではスクリプトが毎日00時に実行されます

記載したら Esc キー(コマンドモード):wq で保存

# /etc/rc.d/init.d/crond restart ← Cron再起動

検索結果ページをカスタマイズする場合



検索結果ページを編集する場合、/cgi-bin/namazu/indexディレクトリにある検索結果表示用のテンプレートを編集します。
htmlファイルを編集する事で、検索結果ページを自由にカスタマイズする事が可能です。

MMZ」で始まり「ja」で終わるファイルが日本語表示用のファイルです。

※ 標準で十分な場合は編集する必要はないです。

ファイル名 ファイル内容
NMZ.head.ja ヘッダ部分の表示
NMZ.body.ja 直接 namazu.cgi が呼び出された時に表示
(検索方法が記載されている)
NMZ.foot.ja フッタ部分の表示
NMZ.result.normal.ja 検索結果の表示形式が「標準」モードの場合に表示
NMZ.result.short.ja 検索結果の表示形式が「簡潔」モードの時に表示
NMZ.tips.ja 検索の結果、該当記事が1件も無い場合に表示
(検索のコツ)




Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.