全文検索システムnamazuの設定

2020.04.01
2016.05.03
Feb 2003

 

Webサイトでnamazuを使うには

日本語の全文検索をする場合、文章を正確に単語に分解してからインデックスを作成しておくという前処理をします。英文なら単語間に空白があるので 単語の区別がつきますが、日本語の文章は単語間に空白がないので分解する精度が問題になります。

1 インストール

namazuをインストールするには次のパッケージが必要です。
apt-get パッケージ名  
 でインストールします。

nkf             Kanji code conversion Filter  
                      sjis <--> euc などコード変換するプログラム
libnkf-perl           - Network Kanji code conversion Filter for Perl
kakasi                  KAnji KAna Simple Inverter
libtext-kakasi-perl     KAKASI interface for scripting language Perl.
namazu2                 Full text search engine (namazu binary and cgi)
namazu2-index-tools     Full text search engine (Tools for index handling)

2  設定


(1)/etc/namazu/namazurc
 
# 検索インデックスの出力場所 ほんとはコメントアウトしておくほうがよい
# ここではサイト内検索専用にしか使わないので下のように固定
Index         /home/karappi/public_html/namazu_index

#日本語指定
Lang          ja

(2)/etc/namazu/mknmzrc
 
# HTML、ドキュメントの拡張子
$HTML_SUFFIX = "html?|[ps]html|html\\.[a-z]{2}";

# インデックス対象のファイルの拡張子の指定
$ALLOW_FILE =   ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" . # HTML, plain text

# インデックスを作成しないファイルの拡張子を指定
$DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*";



3 Indexの作成

インデックスファイルは沢山できるので適当なディレクトリで作成を行います。

mknmz オプション 対象ディレクトリ

です。例えば、/home/usr/ 以下のディレクトリのインデックスを作成するには

mknmz /home/usr/
とします。(オプションは省略)

utf8のコードを使っている場合
mknmz 検索対象ディレクトリ  -o インデックスを出力するディレクトリ |& nkf -w


サイト内がutf8なので次のようにインデックスをeucで出力する (標準出力へのコメントは
nkf -w を後ろにつけてutf8で表示させる)
mknmz --indexing-lang=ja_JP.eucJP /home/karappi/public_html |& nkf -w




(2) 検索方法


namazu 検索したい文字列 インデックスのあるディレクトリ


「Unix」という単語のあるドキュメントを探すには カレントディレクトリを
インデックスのあるディレクトリに移動し、

namazu Unix .

とします。 最後のドット . はカレントディレクトリの意味です。

or や and も使えます。

namazu 'Unix or Linux' .

またワイルドカード(任意の文字列)は * です。
次のようにすると「入門Unix」 「Unix活用]などが検索できます。

namazu '*Unix*' .

utf8を使っている場合は(インストールという文字列の検索)
namazu 'インストール' インデックスのあるディレクトリ |& nkf -w



(3)参考
以下の文章フィルターによってテキスト形式以外のドキュメント内も
検索できるようになる。
ファイル形式 必要なフィルター(コマンド)
gzipで圧縮されたドキュメント
gzip
bzipで圧縮されたドキュメント
bzip2
PDF ファイル
pdftotext
Microsoft Word
wv
Microsoft Excel
xlhtml
Microsoft PowerPoint

一太郎

4 Webサイトでnamazuを使うには

例として
/home/karappi/public_html/以下のドキュメントを
検索できるようにします。

インデックスは/home/karappi/public_html/namazu_index/
にします。
(1)まず、/usr/lib/cgi-bin/namazu.cgi を/home/karappi/public_html/namazu_index/
にコピーします。
(2)おなじくそのディレクトリ内に .namazurc ファイルを作成します。
.namazurc
Index /home/karappi/public_html/namazu_index
Template /home/karappi/public_html/namazu_index
Replace /home/karappi/public_html/ http://karappi.minidns.net/
もし、3行目のReplaceの行が無いと検索結果のファイルをクリックしてもリンクが正しく
張られず何も表示されません。

(3)インデックスを作成します。
mknmz --indexing-lang=ja_JP.eucJP /home/karappi/public_html |& nkf -w

(4)アクセスしてみます。
http://サーバアドレス/nmz_index/namazu.cgi
無事成功したならcronで一定間隔でIndexを更新するようにします。

(5)crontabによるインデックスの自動更新の方法

crontab -e を実行すると登録のエディタ(vi と同じ)が起動する。

登録は 「分 時間 日 月 曜日 コマンド」の順である。
毎週、日曜日(0が日、1が月、2が火、・・6が土)、夜中の3時 0分に実行するには
0 3 * * 0 /usr/bin/mknmz /home/karappi/public_html/
となる。

5 追記

2020.04.01
echo $LANGコマンドで言語を確認。もし日本語になっていなかったら

#dpkg-reconfigure locales  でja_JP.UTF-8とデフォルトのLANGを設定
  ※これをやらないとnamazu2のnamazu.cgiがうまく動かない