|
|
全文検索システムNamazuの構築
|
全文検索エンジンとはNamazuのインストールNamazuのファイル構成Apacheによる公開設定索引作成のための設定mknmzによる索引の作成検索出力のための設定namazu.cgiによる検索の実行出力デザインのカスタマイズNamazu検索窓の設置Namazuの運用のポイント |
時々は自サイトを検索してみましょう
Namazu
は
デーモン
ではありませんから、索引
データベース
の作成対象となる
コンテンツ
を修正したときは
"mknmz"
を実行して索引データベースの作り直しをする必要があります
このとき、 "mknmz" は前回の索引データベース作成時から変化のあったページのみを対象にしてデータベースの作り直しを行いますから、 サーバー にあまり負担をかけずに短時間で処理を終えることができます。
というわけで、
ただ非常に稀なケースですが、この索引データベースが破損して、検索機能が使えなくなってしまうことがあります。 そしてその場合は困ったことに、何度索引データベース「部分的な」の作り直しを行っても元に戻らなくなるのが普通です。 こういう場合は、検索が出来なくなっていることに自分自身で気付くか、「お宅の検索エンジン壊れてるよー。」と誰かが教えてくれないかぎりは「ずーっと壊れっぱなし。」になってしまうことになります。 という訳ですから、時々は自分のサイトの検索を行ってみて、きちんと検索できるかどうかを確認する習慣をつけておくほうが良いでしょう。 索引データベースが破損したときは、 "/var/www/namazudata/db/" 以下のファイルをすべて削除してから索引データベースの作成を実行すればOKです。
常に"最初から索引データベースを作り直す"運用方法早い話、「変化があった部分だけ索引データベースを作り直す。」という運用方法をやめて、常に「元のデータを削除して最初から作り直す。」という運用方法をとれば、索引データベースの破損はまず気にしなくて良いことになります。
例えば、
サーバー
の処理負担には目をつぶって、
のように修正し、「元のデータを一端削除してから索引データベースを作り直す」ようにしてやれば良いわけです。 ただしこの方法では、索引データベースを作り直すのに時間がかかるうえ、その間は "namazu.cgi" による検索を実行できないことになります。 対象となるデータの量とサーバーの性能にもよりますが、この作業に時間がかかるような場合はちょっと困りものです。 こういうケースでは以下のようなスクリプトを使うと良いでしょう。
このスクリプト自身が途中で止まったときのためのエラー処理が紛れ込んでいますのでちょっとわかりにくいですが、そのエラー処理の部分を省略して説明すると、 「予め"temp"というフォルダを作成してその中に索引データベースを作成しておき、"db_old/"の削除、"db/"→"db_old/"への改名、"temp/"→"db/"への改名を行う。」 という動作をします。 つまり、先に索引データベースを削除してから作り直すのではなく、「索引データベースを作っておいてから所定のディレクトリ名に変更する。」という手順を踏むことで、新しい索引データベースの作成中は古い索引データベースを参照させておくわけです。 これで、索引データベースの作成にどれだけ時間を要しても、 "namazu.cgi" が利用できないのは、"db/"→"db_old/"への改名から"temp/"→"db/"への改名が終わるまでの ほんの一瞬 、ということになるわけです。 さて、もうお気づきの方もいるかもしれませんが、このスクリプトを実行すると、索引データベース内の "NMZ.slog" 、つまりアクセス ログ ファイルまで削除してしまうことになります。 |
||||||||||
|
Namazuの解説書です
↓ |
そこでこのスクリプトにもう一行増やしましょう。
これで、 "NMZ.slog" の内容は、索引データベースの作り直しを行うたびに "/var/www/namazudata/namazu.log" に追記されていくことになります。
|
|
|
Namazu検索窓の設置
<<Previous
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |