|
|
全文検索システムNamazuの構築
|
全文検索エンジンとはNamazuのインストールNamazuのファイル構成Apacheによる公開設定索引作成のための設定mknmzによる索引の作成検索出力のための設定namazu.cgiによる検索の実行出力デザインのカスタマイズNamazu検索窓の設置Namazuの運用のポイント |
索引データベースの作成設定ファイル "/var/www/namazudata/mknmzrc" の編集が終わったら、 "mknmz" コマンド で Namazu の索引 データベース を作成してみましょう。 mknmzの書式は以下のとおりです。
mknmz -f [初期設定ファイル] -O [索引の出力先] [コンテンツディレクトリ]
以下は WBEL3 及び CentOS3 での出力結果です。WBEL4及びCentOS4はこれとは少し異なるメッセージになります。 構築中のLinuxサーバー の処理能力にもよりますが、 コンテンツ の分量が多いときはそれなりに時間を要します。
例えば、「お便利サーバー.com」のコンテンツの場合
コマンドの実行は Ctrl + c で中断することができますから、途中で「おかしい」と思ったときはいつでも実行を中断できます。
このように、実行中に索引データベースに登録されるファイル名がすべて表示されますので、登録漏れがないか、あるいは登録しないつもりのファイルが登録されてないかを確認しましょう。 また、作成された索引データベースが、 "/var/www/namazudata/db/" 以下に出力されているはずですので、これも確認しておきましょう。 Namazuの索引データベースは一つのデータベースファイルではなく、 テキスト 形式の目次と バイナリ 形式のデータベース、更にテンプレートファイルによって構成されます。 |
||||||||
Namazuは
デフォルト
では
EUC
で日本語を出力しますので、
構築中のLinuxサーバー
のシステムの
文字セット
がEUCの場合は
文字化けせずに表示することができます。
|
また、索引データベースの作成中に発生したエラーは "NMZ.err" に テキスト で出力されていますので cat コマンドなどで内容を確認しておきましょう。 mknmzコマンドは、既に索引データベースが出力されているディレクトリに対して再出力を実行すると、作成対象のファイルの タイムスタンプ を頼りに、内容に変更が加えられたファイルに関するデータの更新と、新規に追加されたファイルに関するデータの追加、そして削除されたファイルに関するデータを削除して、 コンテンツ の内容と索引データベースが一致するようにデータ作成が行われます。 ただし、 "/var/www/namazudata/mknmzrc" の内容を書き換えて出力条件を変更したときは、古い条件で出力された索引データと新しい条件で出力された索引データが混在してしまいますので、こういう場合は一度 rm コマンドで "/var/www/namazudata/db/" 以下のファイルをすべて削除したあとにmknmzコマンドを実行し、最初から索引データベースを作り直すようにします。
|
||||||||
システム上のコマンド"namazu"でテスト検索を行うひとます索引データベースが作成できたら、 構築中のLinuxサーバー 上で検索を行う "namazu" コマンド で検索を行ってみましょう。 コマンドの書式は、
namazu [検索キーワード] [索引データベースのパス]
となります。試しに "named" を検索キーワードとして実行してみます。 ここでは作業の流れからroot アカウント のままコマンドを実行していますが、 "namazu" コマンドは任意のユーザーから実行できます。
↓
コマンドラインでの"namazu"の実行結果 このように検索結果がきちんと表示できれば、索引データベースの出力の設定はひとまずOKです。
|
|||||||||
索引データベース出力用シェルスクリプトの作成"mknmz" コマンドを実行するときはオプションスイッチが多いのでタイプするのが結構面倒です。 そこで予めオプションスイッチごと記述した シェル スクリプト を作成しておくと便利ですし、実行時のタイプミスなども防ぐことができます。 シェルスクリプトは、例えば以下のような内容になります。 |
|||||||||
|
汎用性を高めるため、このシェルスクリプトはカレントディレクトリを移動して実行するように作られています。
従って記述する コマンド はすべて 絶対パス 表記になっています。 コマンドのパスは which コマンドで調べることができます。 |
この内容のテキストファイルを 構築中のLinuxサーバー 上の適当な場所に実行形式で保存すればOKです。 ここではシェルスクリプト名を "makenamazu_def.bash" として作成します。 シェルスクリプトの保存場所は、ユーザーが作成した実行プログラムの格納場所として準備されている "/usr/local/bin" 以下とします。 |
||||||||
| ファイル名の末尾が ".bash" になっているのは、これがbashのスクリプトファイルであることを表すための「作法」のようなものだと思ってください。 |
"/usr/local/bin"
には
パス
が通っていますので
makenamazu_def.bash
と実行するだけで設定どおりの索引データベースが "/var/www/namazudata/db/" 以下に作成されるようになります。 さて、 Namazu の索引 データベース はWeb コンテンツ の内容が変わらなければ作り直す必要はありません。 従って makenamazu_def.bash は、Webコンテンツの内容が書き換えられたときにだけ実行すれば良いことになります。 例えばこの「お便利サーバー.com」のように、コンテンツの更新が数日〜一週間に一度であれば、 FTPクライアント からコンテンツデータを アップロード した後にだけ SSHクライアント で ログイン し、 "makenamazu_def.bash" を実行すれば良いだけですので、面倒ということはないはずです。 しかしながら、日ごと夜ごとにページ内容を更新するようなコンテンツでは、いちいちSSHからログインしてコマンドを実行するのは面倒ですから、 crond を利用して定期的に実行させておくと良いかもしれません。 "mknmz" 自身は Perl のスクリプトですので、動作負荷は小さいとはいえません。 ただ、ゼロから索引データベースを作るような作業は別として、更新が行われたいくつかのページの処理を行わせる程度であれば大した負荷にはならないでしょう。 一般的には、1時間に一回程度自動的に実行させておくようにしておけば良いと思います。
nanoエディタで
"/etc/crontab"
を開き
"/etc/crontab"
を保存したら、忘れずにcrondの再起動を行ってください
これで毎時30分に索引データベースの更新が行われるようになりました。 |
||||||||
|
Namazuの解説書です
↓ |
とろこがこのように "/etc/crontab" に直接実行スクリプトを記述する方法では、ドキュメントルート以外にも索引データベースの作成が必要になったときに "/etc/crontab" の記述が増え、管理が煩雑になってしまいます。
こういう問題を解消したい場合には、
"run-parts"
スクリプト
このパートでの説明は割愛しますが、要領は
|
|
|
索引作成のための設定
<<Previous
|
Next>>
検索出力のための設定
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |