■インデックスの作成
mknmzrcの変更が完了したら、実際に検索対象とするファイルを用意してインデックスを作成してみましょう。まず、適当な内容のtextかhtmlファイルを用意します。最初から大量のファイルを処理しようとすると、動作に不具合が発生した場合などの問題の切り分けが難しくなります。

用意した検索対象にしたいファイルを格納するディレクトリ(フォルダ)を作成します。ここではCドライブにdocs(C:\docs)というディレクトリを作成する前提で進めます。適宜、読み替えてください。格納ディレクトリに特に制限はありません。Cドライブ以外のDやEといったドライブでも構いません。作成したC:\docsに用意したファイルをコピーします。

次に作成したインデックスを格納するディレクトリを用意します。 Namazu標準のC:\namazu\var\namazu\indexを使う場合は新たに用意する必要はありません。ここではCドライブにnmzindex(C:\nmzindex)というディレクトリを作成するという前提で進みます。

準備ができたら実際にインデックスを作成してみましょう。MS-DOSプロンプト(NT系はコマンドプロンプト)を起動し、mknmz -O C:\nmzindex C:\docsと入力し、Enterキーを押します。-Oはインデックスのoutput先を指定するオプションで、続くC:\nmzindexがインデックスの書き込みディレクトリになります。次のC:\docsが検索対象になる文書が置いてあるディレクトリです。

C:\WINDOWS>mknmz -O C:\nmzindex C:\docs
検索対象のファイルを調べています...
2個のファイルがインデックス作成の対象として見つかりました
1/2 - /C|/docs/test001.html [text/html]
2/2 - /C|/docs/test002.html [text/html]
インデックスを書き出しています...
[基本]
日付: Mon Mar 4 13:31:32 2002
追加された文書の数: 2
サイズ (bytes): 2,140
合計の文書数: 2
追加キーワード数: 179
合計キーワード数: 179
わかち書き: module_kakasi -ieuc -oeuc -w
経過時間 (秒): 20
ファイル/秒: 0.10
システム: MSWin32
Perl: 5.006001
Namazu: 2.0.12

このように表示されてmknmzが終了し、プロンプトが点滅した状態に戻れば、インデックスの作成は成功です。上の例だと、test001.htmlとtest002.htmlの2つのhtmlファイルをmknmzが認識し、179個の単語をインデックスに登録しています。

なお、mknmzはC:\namazu\etc\namazu\mknmzrcを設定ファイルとして読み込むはずですが、何らかの原因でC:\namazu\etc\namazu\mknmzrcが読み込まれず、大元の設定ファイルであるC:\namazu\share\namazu\pl\conf.plが読み込まれてしまうことがまれにあるようです。その場合は

mknmz --config=C:\namazu\etc\namazu\mknmzrc -O C:\nmzindex C:\docs

と設定ファイルの居場所を明示すればOKのはずです。

エクスプローラでインデックスを作成したディレクトリC:\nmzindexを見てみましょう。合計54個のファイルが生成されているはずです。

NMZ.body
NMZ.body.es
NMZ.body.fr
NMZ.body.ja
NMZ.field.date
NMZ.field.date.i
NMZ.field.from
NMZ.field.from.i
NMZ.field.message-id
NMZ.field.message-id.i
NMZ.field.newsgroups
NMZ.field.newsgroups.i
NMZ.field.size
NMZ.field.size.i
NMZ.field.subject
NMZ.field.subject.i
NMZ.field.summary
NMZ.field.summary.i
NMZ.field.to
NMZ.field.to.i
NMZ.field.uri
NMZ.field.uri.i
NMZ.foot
NMZ.foot.es
NMZ.foot.fr
NMZ.foot.ja
NMZ.head
NMZ.head.es
NMZ.head.fr
NMZ.head.ja
NMZ.i
NMZ.ii
NMZ.log
NMZ.p
NMZ.pi
NMZ.r
NMZ.result.normal
NMZ.result.normal.es
NMZ.result.normal.fr
NMZ.result.normal.ja
NMZ.result.short
NMZ.result.short.es
NMZ.result.short.fr
NMZ.result.short.ja
NMZ.slog
NMZ.status
NMZ.t
NMZ.tips
NMZ.tips.es
NMZ.tips.fr
NMZ.tips.ja
NMZ.version
NMZ.w
NMZ.wi
NMZ.bodyは検索画面を表示する際のtemplateの本体部分です。NMZ.bodyが英語、esはスペイン語、frはフランス語、jaは日本語でHTMLが記述されています。

NMZ.footは検索画面を表示するtemplateの末尾の部分です。

NMZ.headは検索画面を表示するtemplateの先頭の部分です。

NMZ.result.normalは検索で見つかったファイルを表示する際に使用するtemplateです。

NMZ.result.shortは検索で見つかったファイルを表示する際に使用するtemplateです。normalの簡易表示版です。

NMZ.tipsは検索方法を説明した文書が格納されています。

NMZ.wはインデックス化された単語が登録されています。
上記のファイルの中身はいずれもテキストファイルです。テキストエディタで開けますが、Windows標準の「メモ帳」は使えません。上記のファイルはいずれもEUCという文字コードで記述されているため、EUCに対応していないメモ帳で開くと日本語部分がすべて文字化けしてしまいます。メモ帳はShift JISという文字コードしか扱えません。

メモ帳で開くと、

<hr> <p> 、ウ、ホチエハクク。コ・キ・ケ・ニ・爨マ <strong><a href="http://www.namazu.org/">Namazu</a> <!-- VERSION --> v2.0.12 <!-- VERSION --></strong> 、ヒ、隍テ、ニケステロ、オ、・ニ、、、゙、ケ。」 </p> <address> <!-- ADDRESS --> <a href="miyazawat@hotmail.com">miyazawat@hotmail.com</a> <!-- ADDRESS --> </address> </body> </html>

こんな風になります。

<hr>
<p>
この全文検索システムは
<strong><a href="http://www.namazu.org/">Namazu</a> <!-- VERSION --> v2.0.12 <!-- VERSION --></strong>
によって構築されています。
</p>
<address>
<!-- ADDRESS -->
<a href="mailto:miyazawat@hotmail.com">miyazawat@hotmail.com</a>
<!-- ADDRESS -->
</address>
</body>
</html>

と表示されなければなりません。

日本語EUC(EUC-JP)対応のテキストエディタはシェア、フリーともたくさんあります。有償で有名なところでは秀丸エディタ、WZエディタなどでしょうか。今後、templateのカスタマイズなどでもEUC対応のエディタは欠かせません。ぜひ、入手しておきましょう。個人的にはWZエディタを使っています。最近、サクラエディタというフリーのテキストエディタの存在を知りました。とても高機能で使いやすいです。Unicodeにも対応しています。活発に開発が進んでいます。これもお勧めです。easy NKFというファイルの文字コードを一発で変換してくれるフリーのツールもあります。

インデックスが作成できたら、MS-DOSプロンプトでnamazuコマンドを使って実際に文書を検索してみましょう。namazuコマンドに続いて、検索したいキーワード、インデックスを保存したディレクトリを指定します。namazurcで

C:\WINDOWS>namazu 長野 C:\nmzindex

検索結果

参考ヒット数: [ 長野: 1 ]

検索式に 1 件の文書がマッチしました。

1. 飯田で初雪 (スコア: 2)
著者: 不明
日付: Tue, 22 Jan 2002 10:22:22
飯田で初雪 長野地方気象台は十二日、飯田で十一日に初雪を観測したと発表した。飯田での初雪は平年より十一日遅く、昨年より四日早い。
/C|/docs/test001.html (472 bytes)

現在のリスト: 1 - 1

Replaceを有効にしている場合はファイルの場所がhttp://というURLで表示されます。LocalなPCでSearch-S for namazuを利用して検索する場合はReplaceを有効にする必要はありません。Replaceの前にコメント記号(#)をつけておきましょう。

コマンドラインでnamazuコマンドを使って検索できることが確認できたらSearch-S for namazuをインストールしてGUIで検索とファイルの表示ができるようにしてみましょう。

 ■search-s for Namazuのインストール
search-s for Namazuは山下誠二(ハンドル名:S.Yam)さんが開発したGUI(グラフィカル・ユーザ・インタフェース)なWindows用namazu検索アプリケーションです。詳細はhttp://www.syam.net/library/search-s/index.htmlを参照してください。最新バージョンは0.9.2です。

入手先
http://www.syam.net/library/archive/srchs092.exe

セットアッププログラムが同梱されているので、自己解凍形式のsrchs092.exeをダブルクリックして実行するだけでインストールできます。

使い方は詳細なヘルプが付いていますので、これを参考にしてください。インデックスの作成などもできます。

 ■インデックスの自動更新
mknmzによるインデックスの作成を自動化してみましょう。Windowsではバッチファイルを作成し、Windows標準のタスクスケジューラなどと連携することで、決まった時間にmknmzを実行することができます。バッチファイルを作成しておけば、毎回、MS-DOSプロンプトにコマンドを入力しなくても、バッチファイルを実行するだけでインデックスが作成できます。

テキストエディタを開き、

mknmz -O C:\nmzindex C:\docs

と入力し、適当なファイル名(例えばmkindex.bat)を付けて保存します。拡張子は必ず、batにしてください。エディタで保存できるファイルの種類にbatはないと思います。この場合はファイル名をダブルクォーテーション(")で囲み、"mkindex.bat"のようにして保存してみてください。また、いったん、mkindex.txtとして保存し、ファイル名を変更しても構いません。保存先はどこでも構いませんが、Namazuの実行ファイルが置いてあるC:\namazu\binあたりに置いておくのが分かりやすいかもしれません。準備ができたら保存したmkindex.batをダブルクリックして実行してみましょう。MS-DOSプロンプトが開き、mknmzがインデックスの作成できれば成功です。

毎回、MS-DOSプロンプトが「通常のウインドウサイズ」で起動し、mknmz終了後もそのままデスクトップに残ってしまうのを改善したい場合はmkindex.batのアイコンを右クリックして「プログラム」タブを選び、実行時の大きさを「最小化の状態」にした上で「プログラム終了時にウインドウを閉じる」にチェックを入れておきましょう。これでMS-DOSプロンプトが最小化した状態で起動し、自動的に終了するようになります。NT系のコマンドプロンプトの場合は、ちょっと工夫が必要です。mkindex.batファイルそのものは最小化などの設定ができませんが、mkindex.batのショートカットファイルをつくれば、MS-DOSプロンプトと同様に最小化した状態で起動することができます。コマンドプロンプトはアプリケーションが終了すれば自動的に閉じます。

バッチファイルが作成できたらタスクスケジューラに登録してみましょう。「マイ コンピュータ」-「コントロールパネル」-「タスク」を開き、「タスクの追加」をダブルクリックし、タスクウィザードを起動します。「参照」ボタンを押し、mkindex.batを選択して、タスクを実行する間隔や開始時刻などを指定します。

TOPに戻る miyazawat@hotmail.com