このページでは全文検索エンジンNamazuを使用する際のいくつかのポイントについて初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
全文検索システムNamazuの構築

全文検索エンジンとは

Namazuのインストール

Namazuのファイル構成

Apacheによる公開設定

索引作成のための設定

mknmzによる索引の作成

検索出力のための設定

namazu.cgiによる検索の実行

出力デザインのカスタマイズ

Namazu検索窓の設置

Namazuの運用のポイント


時々は自サイトを検索してみましょう

Namazu デーモン ではありませんから、索引 データベース の作成対象となる コンテンツ を修正したときは "mknmz" を実行して索引データベースの作り直しをする必要があります mknmzによる索引データベースの作成について

このとき、 "mknmz" は前回の索引データベース作成時から変化のあったページのみを対象にしてデータベースの作り直しを行いますから、 サーバー にあまり負担をかけずに短時間で処理を終えることができます。

というわけで、 crondで自動的に索引データベースを更新する のように一定時間ごとに索引データベースを作り直すように設定を行っておけば本当に「手間要らず」の検索システムになります。

ただ非常に稀なケースですが、この索引データベースが破損して、検索機能が使えなくなってしまうことがあります。

そしてその場合は困ったことに、何度索引データベース「部分的な」の作り直しを行っても元に戻らなくなるのが普通です。

こういう場合は、検索が出来なくなっていることに自分自身で気付くか、「お宅の検索エンジン壊れてるよー。」と誰かが教えてくれないかぎりは「ずーっと壊れっぱなし。」になってしまうことになります。

という訳ですから、時々は自分のサイトの検索を行ってみて、きちんと検索できるかどうかを確認する習慣をつけておくほうが良いでしょう。

索引データベースが破損したときは、 "/var/www/namazudata/db/" 以下のファイルをすべて削除してから索引データベースの作成を実行すればOKです。

常に"最初から索引データベースを作り直す"運用方法

早い話、「変化があった部分だけ索引データベースを作り直す。」という運用方法をやめて、常に「元のデータを削除して最初から作り直す。」という運用方法をとれば、索引データベースの破損はまず気にしなくて良いことになります。

例えば、 サーバー の処理負担には目をつぶって、 シェルスクリプmakenamazu_def.bashの作成と運用について で作成した シェル スクリプト "makenamazu_def.bash" を、

#!/bin/bash
cd /var/www/namazudata
/bin/rm -f db/*
/usr/bin/mknmz -f mknmzrc -O db /var/www/html

のように修正し、「元のデータを一端削除してから索引データベースを作り直す」ようにしてやれば良いわけです。

ただしこの方法では、索引データベースを作り直すのに時間がかかるうえ、その間は "namazu.cgi" による検索を実行できないことになります。

対象となるデータの量とサーバーの性能にもよりますが、この作業に時間がかかるような場合はちょっと困りものです。

こういうケースでは以下のようなスクリプトを使うと良いでしょう。

#!/bin/bash
cd /var/www/namazudata
if [ -e temp ];
then
    /bin/rm -r -f temp
else
    /bin/mkdir temp
    /usr/bin/mknmz -f mknmzrc -O temp /var/www/html/
fi
if [ -e db_old ];
then
    /bin/rm -r -f db_old
fi
if [ -e db ];
then
    /bin/mv -f db db_old
fi
/bin/mv -f temp db

このスクリプト自身が途中で止まったときのためのエラー処理が紛れ込んでいますのでちょっとわかりにくいですが、そのエラー処理の部分を省略して説明すると、

「予め"temp"というフォルダを作成してその中に索引データベースを作成しておき、"db_old/"の削除、"db/"→"db_old/"への改名、"temp/"→"db/"への改名を行う。」

という動作をします。

つまり、先に索引データベースを削除してから作り直すのではなく、「索引データベースを作っておいてから所定のディレクトリ名に変更する。」という手順を踏むことで、新しい索引データベースの作成中は古い索引データベースを参照させておくわけです。

これで、索引データベースの作成にどれだけ時間を要しても、 "namazu.cgi" が利用できないのは、"db/"→"db_old/"への改名から"temp/"→"db/"への改名が終わるまでの ほんの一瞬 、ということになるわけです。

さて、もうお気づきの方もいるかもしれませんが、このスクリプトを実行すると、索引データベース内の "NMZ.slog" 、つまりアクセス ログ ファイルまで削除してしまうことになります。

Namazuの解説書です

そこでこのスクリプトにもう一行増やしましょう。

#!/bin/bash
cd /var/www/namazudata
if [ -e temp ];
then
    /bin/rm -r -f temp
else
    /bin/mkdir temp
    /usr/bin/mknmz -f mknmzrc -O temp /var/www/html/
fi
if [ -e db_old ];
then
    /bin/rm -r -f db_old
fi
if [ -e db ];
then
    /bin/cat db/NMZ.slog >> namazu.log
    /bin/mv -f db db_old
fi
/bin/mv -f temp db

これで、 "NMZ.slog" の内容は、索引データベースの作り直しを行うたびに "/var/www/namazudata/namazu.log" に追記されていくことになります。

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System