Namazu Projectにより開発された、日本語を含む任意の文字列でファイル内の全文検索を行なうパッケージです。
Web上より、自サイト内の語句をインデックス化し検索エンジンを提供します。
# yum -y install namazu namazu-cgi namazuで使用するkakasi[漢字→かな(ローマ字)変換パッケージ]のインストール状況確認 kakasiには以下のパッケージが必要になります kakasi kakasi-devel kakasi-dict perl-Text-Kakasi # rpm -qa | grep kakasi kakasi-2.3.4-22.fc6 # rpm -qa | grep perl-Text-Kakasi perl-Text-Kakasi-2.04-3.fc6 「kakasi-devel」と「kakasi-dict」が不足しているのでインストール # yum -y install kakasi-devel kakasi-dict |
設定ファイルの編集 # vi /etc/namazu/mknmzrc #=================================================================== # # Administrator's email address # 先頭の#を削除し、サーバの管理者メールアドレスを設定 $ADDRESS = '[email protected]'; # # This pattern specifies file names which will NOT be targeted. # NOTE: It can be specified by --deny=regex option. # Do NOT use `$' or `^' anchors. # Case-insensitive. # 先頭の#を削除し、除外ファイルを設定 $DENY_FILE = ".*\\.(gif|png|jpg|jpeg|cgi|pl|log|dat|txt|css)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*"; インデックス除外パスの指定 # # This pattern specifies PATHNAMEs which will NOT be targeted. # NOTE: Usually specified by --exclude=regex option. # 「/var/www/html/cgi-bin」と「/var/www/html/image」のパスは除外する $EXCLUDE_PATH = "/var/www/html/cgi-bin|/var/www/html/image"; # vi /usr/bin/mknmz パラメータの-wを削除 #! /usr/bin/perl # -*- Perl -*- # mknmz - indexer of Namazu # $Id: mknmz.in,v 1.85.4.47 2004/04/08 08:34:42 opengl2772 Exp $ # # vi /etc/namazu/namazurc ## If you do not want to do the processing on command line use, ## run namazu with -U option. ## ## You can specify more than one Replace rules but the only ## first-matched rule are applied. ## 検索対象をURLに変更 Replace /var/www/html/ http://kajuhome.com/ ## ## Lang: Set the locale code such as `ja_JP.eucJP', `ja_JP.SJIS', ## `de', etc. This directive works only if the environment ## variable LANG is not set because the directive is mainly ## intended for CGI use. On the shell, You can set ## environemtnt variable LANG instead of using the directive. ## ## If you set `de' to it, namazu.cgi use ## NMZ.(head|foot|body|tips|results).de for displaying results ## and use a proper message catalog for `de'. ## 日本語化 Lang ja_JP.eucJP |
/var/www/html/のインデックスを/var/lib/namazu/index/に作成 # mknmz -aO /var/lib/namazu/index/ /var/www/html/ 検索対象のファイルを調べています... 27個のファイルがインデックス作成の対象として見つかりました 1/27 - /var/www/html/antivirmailgate.shtml [text/html] 2/27 - /var/www/html/apache.shtml [text/html] 3/27 - /var/www/html/apache_ssl.shtml [text/html] 4/27 - /var/www/html/apt_inst.shtml [text/html] 5/27 - /var/www/html/bind.shtml [text/html] 6/27 - /var/www/html/clam_antivirus.shtml [text/html] 7/27 - /var/www/html/cpan2rpm.shtml [text/html] 8/27 - /var/www/html/dhcp.shtml [text/html] 9/27 - /var/www/html/dovecot.shtml [text/html] 10/27 - /var/www/html/server_access.shtml [text/html] 11/27 - /var/www/html/fedora2_inst.shtml [text/html] 12/27 - /var/www/html/inst_after.shtml [text/html] 13/27 - /var/www/html/htaccess.shtml [text/html] 14/27 - /var/www/html/index.shtml [text/html] 15/27 - /var/www/html/j2sdk.shtml [text/html] 16/27 - /var/www/html/mail_ssl.shtml [text/html] 17/27 - /var/www/html/namazu.shtml [text/html] 18/27 - /var/www/html/ntp.shtml [text/html] 19/27 - /var/www/html/openssh.shtml [text/html] 20/27 - /var/www/html/postfix.shtml [text/html] 21/27 - /var/www/html/putty.shtml [text/html] 22/27 - /var/www/html/service_list.shtml [text/html] 23/27 - /var/www/html/squirrelmail.shtml [text/html] 24/27 - /var/www/html/tomcat.shtml [text/html] 25/27 - /var/www/html/index.shtml [text/html] 26/27 - /var/www/html/webalizer.shtml [text/html] 27/27 - /var/www/html/winscp.shtml [text/html] インデックスを書き出しています... [基本] 日付: Wed Oct 27 16:48:25 2004 追加された文書の数: 27 サイズ (bytes): 447,016 合計の文書数: 27 追加キーワード数: 6,628 合計キーワード数: 6,628 わかち書き: module_kakasi -ieuc -oeuc -w 経過時間 (秒): 11 ファイル/秒: 2.45 システム: linux Perl: 5.008003 Namazu: 2.0.13 |
インデックス化コマンドを実行した時、対象のファイルサイズは 0 Byte でないにも拘らず、以下の様なメッセージが出力され、インデックス化できない場合があります。(Fedora9 で確認)
# mknmz -aO /var/lib/namazu/index/ /var/www/html/ 検索対象のファイルを調べています... xxxx個のファイルがインデックス作成の対象として見つかりました sh: no: command not found 1/xxxx - /var/www/html/index.shtml はサイズが 0 なので無視します : : : |
このような場合、以下を実施します。
上記エラーとなった場合、ロックファイルが残ってしまうので削除 # rm /var/lib/namazu/index/NMZ.lock2 漢字コード変換フィルタ有無の確認 # rpm -qa nkf nkf-2.0.8b-2.fc9.x86_64 上記コマンド実行後、結果が何も表示されなかった場合はインストールされていません。 この場合、以下を実行して「nkf」をインストールします。 # yum -y install nkf 設定ファイルの変更 # vi /etc/namazu/mknmzrc : # # Network Kanji Filter nkf v1.71 or later # # $NKF = "module_nkf"; 行頭の「#」を取り、以下の様に変更 $NKF = "/usr/bin/nkf"; |
namazu検索エンジンで"namazu"という語句を検索 # namazu namazu /var/lib/namazu/index/ 検索結果 参考ヒット数: [ namazu: 1 ] 検索式にマッチする 1 個の文書が見つかりました。 1. はじめての自宅サーバ構築 - サイト内検索システムの構築(Namazu) - (スコア: 36) 著者: [email protected] 日付: Wed, 27 Oct 2004 16:47:29 最終更新日: namazuとは・・・ Namazu Projectにより開発された、日本語を含む任意の 文字列でファイル内の全文検索を行なうパッケージです。Web上より、自サイト内の語句 をインデックス化し検索エンジンを提供しま /var/www/html/namazu.shtml (12,814 bytes) 現在のリスト: 1 - 1 |
検索入力ボックスを表示したいhtmlに以下を追加する <FORM method="get" action="cgi-bin/namazu.cgi">サイト内検索 <INPUT type="text" name="query" size="15"> <INPUT type="submit" name="submit" value="Search"> <INPUT type="hidden" name="max" value="20"> <INPUT type="hidden" name="result" value="normal"> <INPUT type="hidden" name="sort" value="score"> </FORM> |
以下のファイルを変更する事により、namazuでの検索結果画面をカスタマイズすることが出来ます。
変更箇所 | 編集ファイル |
---|---|
ヘッダ部 | /var/lib/namazu/index/NMZ.head.ja |
フッタ部 | /var/lib/namazu/index/NMZ.foot.ja |
検索結果部(簡潔版) | /var/lib/namazu/index/NMZ.result.short.ja |
検索結果部(標準版) | /var/lib/namazu/index/NMZ.result.normal.ja |
検索方法部 | /var/lib/namazu/index/NMZ.body.ja |
検索ヒント部 | /var/lib/namazu/index/NMZ.tips.ja |
シェルスクリプトを作成 # vi /root/makenamazu.sh #!/bin/sh echo "Job Name (makenamazu.sh)" echo " 開始(`date +"%k時%M分%S秒"`)" export LANG=ja_JP.eucJP export PEAL_BADLANG=0 /usr/bin/mknmz -aO /var/lib/namazu/index/ /var/www/html/ echo " 終了(`date +"%k時%M分%S秒"`)" 作成したシェルスクリプトに実行権を与える # chmod 700 /root/makenamazu.sh プログラムを定期的に実行するcrondの設定ファイルを編集する # crontab -e 毎日00:00にnamazuのインデックス作成を行う 00 00 * * * /root/makenamazu.sh |