サイト内検索システム構築(Namazu)

ホームへ戻る

更新日:06/06/21

 

Namazuのインストール <<TOP

@Namazuに必要なkakasiインストール
  最新版はダウンロードサイトで確認すること

[root@server ~]# wget http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz ← kakasiダウンロード
[root@server ~]# tar zxvf kakasi-2.3.4.tar.gz ← kakasi展開
[root@server ~]# cd kakasi-2.3.4 ← kakasi展開先ディレクトリへ移動
[root@server kakasi-2.3.4]# ./configure && make && make install ← kakasiインストール
[root@server kakasi-2.3.4]# cd ← kakasi展開先ディレクトリを抜ける
[root@server ~]# rm -rf kakasi-2.3.4 ← kakasi展開先ディレクトリを削除
[root@server ~]# rm -f kakasi-2.3.4.tar.gz ← ダウンロードしたkakasiを削除

ANamazuインストール
最新版はダウンロードサイトで確認すること

[root@server ~]# wget http://www.namazu.org/stable/namazu-2.0.14.tar.gz ← Namazuダウンロード
[root@server ~]# tar zxvf namazu-2.0.14.tar.gz ← Namazu展開
[root@server ~]# cd namazu-2.0.14/File-MMagic/ ← Namazu同梱のFile::MMagic展開先ディレクトリへ移動
[root@server File-MMagic]# perl Makefile.PL && make install ← File::MMagicインストール
[root@server File-MMagic]# cd .. ← Namazu展開先ディレクトリへ移動
[root@server namazu-2.0.14]# ./configure && make && make install ← Namazuインストール
[root@server namazu-2.0.14]# cd ← Namazu展開先ディレクトリを抜ける
[root@server ~]# rm -rf namazu-2.0.14 ← Namazu展開先ディレクトリを削除
[root@server ~]# rm -f namazu-2.0.14.tar.gz ← ダウンロードしたNamazuを削除

Namazu設定 <<TOP

@mknmzコマンド設定
検索に使用するインデックスを作成するmknmzコマンドを設定する

[root@server ~]# cp /usr/local/etc/namazu/mknmzrc-sample /usr/local/etc/namazu/mknmzrc ← サンプルより設定ファイルコピー
[root@server ~]# vi /usr/local/etc/namazu/mknmzrc ← mknmzコマンド設定ファイル編集

# $ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" . # HTML, plain text
#               "|.*\\.gz|.*\\.Z|.*\\.bz2" .       # Compressed files
#               "|.*\\.pdf|.*\\.ps" .              # PDF, PostScript
#               "|.*\\.tex|.*\\.dvi" .             # TeX, DVI
#               "|.*\\.rpm|.*\\.deb" .             # RPM, DEB
#               "|.*\\.doc|.*\\.xls|.*\\.pp[st]" . # Word, Excel, PowerPoint
#               "|.*\\.j[sabf]w|.*\\.jtd" .        # Ichitaro 4, 5, 6, 7, 8
#               "|.*\\.sx[widc]" .                 # OpenOffice Writer,Calc,Impress,Draw
#               "|.*\\.rtf" .                      # Rich Text Format
#               "|.*\\.hdml" .                     # HDML
#               "|.*\\.mp3" .                      # MP3
#               "|\\d+|[-\\w]+\\.[1-9n]";          # Mail/News, man
$ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)"; ← 追加(HTMLを検索対象にする)

その他の文書も検索対象にしたい場合は上記コメントを参考に設定を追加する


[root@server ~]# vi /usr/local/bin/mknmz ← mknmzコマンド編集
mknmzコマンドが"Use of uninitialized・・・"というエラーメッセージを出力しないようにする対処
#! /usr/bin/perl -w

#! /usr/bin/perl ← -wを削除

Anamazuコマンド設定
インデックスをもとに検索を行うnamazuコマンドを設定する

[root@linux ~]# cp /usr/local/etc/namazu/namazurc-sample /usr/local/etc/namazu/namazurc ← サンプルより設定ファイルコピー
[root@linux ~]# vi /usr/local/etc/namazu/namazurc ← namazuコマンド設定ファイル編集
##
## Replace: Replace TARGET with REPLACEMENT in URIs in search
## results.
##
## TARGET is specified by Ruby's perl-like regular expressions.
## You can caputure sub-strings in TARGET by surrounding them
## with `(' and `)'and use them later as backreferences by
## \1, \2, \3,... \9.
##
## To use meta characters literally such as `*', `+', `?', `|',
## `[', `]', `{', `}', `(', `)', escape them with `\'.
##
## e.g.,
##
## Replace /home/foo/public_html/ http://www.foobar.jp/~foo/
## Replace /home/(.*)/public_html/ http://www.foobar.jp/\1/
## Replace /C\|/foo/ http://www.foobar.jp/
##
## 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.
##
#Replace /home/foo/public_html/ http://www.foo.bar.jp/~foo/
Replace /var/www/html/ http://arisonsvr.org/
 ← 追加(/var/www/html/をhttp://arisonsvr.org/に置換する)

##
## 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

Lang ja_JP.eucJP ← 追加(検索結果の日本語化)

Namazu確認 <<TOP

@インデックス作成
  例として、/var/www/htmlのインデックスを/usr/local/var/namazu/index/searchに作成する

[root@server ~]# mkdir /usr/local/var/namazu/index/search ← インデックス作成先ディレクトリ作成
  
[root@server ~]# mknmz /var/www/html -O /usr/local/var/namazu/index/search|nkf -w ← インデックス作成

インデックスの作成状況が表示される

Aインデックスをもとに検索
[root@server ~]# namazu test /usr/local/var/namazu/index/search|nkf -w ← testというキーワードで検索してみる
検索結果が表示される

namazu.cgi設置 <<TOP

Webページ上からNamazuを利用するためのCGI(namazu.cgi)を設置する
[root@linux ~]# cp /usr/local/libexec/namazu.cgi /var/www/cgi-bin ← namazu.cgiをcgi-binへコピー

 

namazu.cgi設定 <<TOP

NMZ.head.ja (Namazu ヘッダファイルを編集する)
Winscpを用いて、ローカルでEmEditorのようなテキストエディターを用いて編集する(簡単なため)
編集するファイルか、フォルダは、WinScpでログインするユーザーで、編集できるように権限を移行しておく
CENTOSのシステムのコードはUTF-8のため、EUCへの変換をEmEditorを用いて行う。
その後、下記の部分を変更する。

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-jp"> ← 追加(NamazuWebインタフェースページの文字化け対処)
<!-- <input type="hidden" name="idxname" value="foobar"> -->
<input type="hidden" name="idxname" value="search"> ← コメントを解除してインデックス格納ディレクトリ名を指定
<a href="{cgi}">[検索方法]</a>
<a href="{cgi}?idxname=search">[検索方法]</a> ← インデックス格納ディレクトリ名を指定

同じようにして
NMZ.foot.ja(namazu.cgii検索結果ページフッタファイル編集)

この全文検索システムは
<strong><a href="http://www.namazu.org/">Namazu</a> <!-- VERSION --> v2.0.14 <!-- VERSION --></strong>

<strong><a href="http://www.namazu.org/">Namazu</a></strong> ← Namazuバージョン情報表示部分削除
以下の全行を削除(管理人メールリンク非表示化)
<address> <!-- ADDRESS --> <a href="mailto:webmaster@extras64">webmaster@extras64</a> <!-- ADDRESS --> </address>

編集したファイルは、WinScpを用いて、サーバーにアップする。

namazu.cgi確認 <<TOP

http://サーバー名/cgi-bin/namazu.cgi?idxname=searchにアクセスして「Namazu による全文検索システム」というページが表示されるので、
キーワードを入れて検索してみる。

※idxname=searchのsearchの部分は、インデックス作成先ディレクトリ名(ここでは/usr/local/var/namazu/index/search/なのでsearch)を指定する

インデックス更新自動化 <<TOP

スクリプトは、centossrv.comのオーナー作であるmknmz.shを利用しています。リンク先から参照してください。

[root@server ~]# chmod 700 mknmz.sh ← mknmz実行スクリプトに実行権限付加

[root@server ~]# crontab -e ← cron編集

00 01 * * * /root/mknmz.sh /var/www/html /usr/local/var/namazu/index/search  ← 追加(毎日01:00にmknmz実行スクリプトを実行する)

※インデックス作成対象ディレクトリ内で、インデックス作成対象外にしたいディレクトリまたはファイルがある場合

[root@server ~]# echo "/var/www/html/webdav/" >> mknmz.exclude ← /var/www/html/webdav/をインデックス作成対象外リストに追加

[root@linux ~]# ./mknmz.sh /var/www/html /usr/local/var/namazu/index/search mknmz.exclude
 ← インデックス作成対象外リストを指定してmknmz実行スクリプト実行

これで、毎日01:00に自動的にインデックスを更新するようになる。また、mknmzの実行結果は/var/log/messagesに保存される。

  <<TOP