はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/05/30
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> Webサーバ >> サイト内検索システムの構築(Namazu)
動作確認 [ FC1 / FC2 / FC3 / FC4 / FC5 / FC6 / Fedora7 / Fedora8 / Fedora9 / Fedora10 / Fedora11 / Fedora12 / Fedora13 / Fedora14 / Fedora15 ]
  1. namazuとは・・・
  2. namazuのインストール
  3. namazuの設定
  4. インデックスの作成
    インデックス化できない場合・・・
  5. namazuの動作確認
  6. Webインタフェースの追加
  7. namazuのカスタマイズ
  8. namazuの自動インデックス化

■ namazuとは・・・

Namazu Projectにより開発された、日本語を含む任意の文字列でファイル内の全文検索を行なうパッケージです。
Web上より、自サイト内の語句をインデックス化し検索エンジンを提供します。

■ namazuのインストール

# 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

■ namazuの設定

設定ファイルの編集
# 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 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

■ Webインタフェースの追加

検索入力ボックスを表示したい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のカスタマイズ

以下のファイルを変更する事により、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

■ namazuの自動インデックス化

シェルスクリプトを作成
# 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

■ コンテンツ関連

■ その他

ページ先頭へ

Copyright(©)2004-2018 First home server construction. All Right Reserved.