* Namazu for Win32 の評価 [Internet/Intranet]
検索対象としてプレーンテキスト、html、Word、Excel、Powerpoint、pdf を想定した Namazu の設定を行い、検索して動作の評価を行った。ここ2週間ほどのメモの大半がこのメモだったのをまとめた。
■パッケージ
評価用にインストールしたパッケージは以下のとおり
・ActivePerl-5.8.4.810-MSWin32-x86.msi
・kakasi-2.3.4.zip
・nmz2013beta.exe
・xpdf-3.00-win32.zip
・xpdf-japanese.tar.gz
これ以外に office のインストールは必須。
また、環境によっては Microsoft Windows Installer が必要になる場合がある。注)
注)Microsoft Windows Installerのインストール
Microsoft Windows Installerはマイクロソフトが提供しているmsiという拡張子
の形式のファイルをインストールするためのインストーラ。Active Perl や apache
は最近、msi形式でも提供されるようになった。最新の nmazu 2.0.13 for Win32
も msi 形式になる予定である。(評価したものはベータ版)
入手先:
9x系用 http://www.microsoft.com/downloads/release.asp?releaseid=32831
NT系用 http://www.microsoft.com/downloads/release.asp?releaseid=32832
Namazu 2.0.12 for Win32 をインストールする場合には ActivePerl は 5.6.1.633
以前を使う必要がある。しかも、テスト環境ではいくつかエラーが出る、インストール
できないモジュールがあるなど時間がかかりそうだったので、今回は見送った。
因みに Namazu 2.0.13 for Win32 のインストールは驚くほど簡単だった。
■ Active perl のインストール
Namazu はインデックスを作成する mknmz コマンドや各種文書フィルタなどが perl
で記述されている為 Perl が必要。インストールは全てデフォルトでよかった。
入手先:
http://www.activestate.com/
■ Kakasi のインストール
ルートに \kakasi フォルダを作成し、ディレクトリ構成を保ったままパッケージを
解凍する。ルート以外で使用する事も出来るかもしれないが、いろいろな部分で問題
がでるので今回はこの構成にした。
入手先:
http://www.namazu.org/windows/
■ namazu のインストール
exe を実行するとインストーラがルートに \namazu フォルダを作成し、以下に展開
される。ルート以外で使用する事も出来るかもしれないが、いろいろな部分で問題
がでるので今回はこの構成にした。インストールは全てデフォルトでよかった。
ファイルのコピー以外にインストーラによって環境変数が設定される。
動作確認として
C:\> namazu --help
C:\> mknmz --help
を実行できれば問題なし。Office がインストールされていないと mknmz --help
でエラーが出る。
入手先:
2.13β http://namazu.org/~takesako/pub/nmz2013beta.exe
2.12 http://www.namazu.org/windows/
(設定は後述)
■ PDF ファイルを検索するためのモジュールのインストール
PDF ファイルを Namazu の検索対象に加えるには xpdf に含まれる pdftotext と
pdfinfo、日本語用 Language Support Package が必要。(正確には後述の xpdfrc
も必要)pdftotext と pdfinfo は \namazu\bin 以下に置いた。日本語用 Language
Support Package は解凍後、xpdf-japanese と言うディレクトリを japanese に変更
し、\namazu\bin 以下に置いた。(設定は後述)
入手先:
http://www.foolabs.com/xpdf/
■ 環境の設定
以上の様にインストールが済んだ後、必要な動作を得るためには以下の様に環境設定
することが必要である。
1. namazurc
namazurcはnamazuコマンドで検索を実行する際の環境を設定する。
インストール時に C:\namazu\etc\namazu\mknmzrc-sample.win32 が mknmzrc
と言う名前のファイルにコピーされている。後述する理由(「実際の検索」
の項)で、以下の部分を変更する。
#Replace /home/foo/public_html/ http://www.foo.bar.jp/~foo/
2. mknmzrc
mknmzrcはmknmzプログラムで検索用のインデックスを作成する際の動作環境を
設定する。
C:\namazu\etc\namazu\namazurc-sample.win32 を mknmzrc と言う名前の
と言う名前のファイルにコピーされている。後述する理由(「実際の検索」
の項)で、以下の部分を変更する。
$TEXT_SIZE_MAX = 20000000;
$FILE_SIZE_MAX = 30000000;
3. xpdfrc
C:\namazu\bin\japanese ディレクトリの add-to-xpdfrc を xpdfrc と言う
名前のファイルにコピーし、ファイルの最後に以下の様に記述する。(後で
必要になるかもしれないので、念のため、オリジナルの add-to-xpdfrc は
変更せずに取っておく)
#----- begin Japanese support package (2002-jan-16)
cidToUnicode Adobe-Japan1 C:\xpdf\japanese\Adobe-Japan1.cidToUnicode
unicodeMap ISO-2022-JP C:\xpdf\japanese\ISO-2022-JP.unicodeMap
unicodeMap EUC-JP C:\xpdf\japanese\EUC-JP.unicodeMap
unicodeMap Shift-JIS C:\xpdf\japanese\Shift-JIS.unicodeMap
cMapDir Adobe-Japan1 C:\xpdf\japanese\CMap
toUnicodeDir C:\xpdf\japanese\CMap
#----- end Japanese support package
注)xpdf のバージョンが 3.00 より古い場合には以下の行が最後に
付加する。
displayCIDFontX Adobe-Japan1 "-*-fixed-medium-r-normal-*-%s-*-*-*-*-*-jisx0208.1983-0" ISO-2022-JP
これはバージョンが 3.00 からサポートされなくなったので、今回の
構成でこの行が含まれている場合、以下のようなメッセージが出る。
Error: Unknown config file command 'displayCIDFontX' (C:\namazu\bin\xpdfrc:117)
Error: -- Xpdf no longer supports X fonts
検索対象がインデックスされるかどうかは mknmz -C を使う
C:\>mknmz -C
読み込んだ設定ファイル: C:/namazu/etc/namazu/mknmzrc
システム: MSWin32
Namazu: 2.0.13
Perl: 5.008003
NKF: module_nkf
KAKASI: module_kakasi -ieuc -oeuc -w
茶筌: chasen -j -F '%m '
わかち書き: module_kakasi -ieuc -oeuc -w
メッセージの言語: ja_JP.SJIS
言語: ja_JP.SJIS
文字コード: sjis
CONFDIR: C:/namazu/etc/namazu
LIBDIR: C:/namazu/share/namazu/pl
FILTERDIR: C:/namazu/share/namazu/filter
TEMPLATEDIR: C:/namazu/share/namazu/template
Supported media types:
application/excel
application/ichitaro5
application/ichitaro6
application/ichitaro7
application/macbinary
application/msword
application/pdf
application/powerpoint
application/rtf
application/x-apache-cache
application/x-gzip
application/x-js-taro
message/news
message/rfc822
text/hnf
text/html
text/html; x-type=mhonarc
text/plain
text/plain; x-type=rfc
text/x-hdml
■ IIS と cgi のインストール
IIS は[コントロールパネル][Windowsコンポーネントの追加と削除]から[インター
ネットインフォメーションサービス(IIS)]を追加することでインストールされる。
Namazu を cgi として実行できるようにするためには c:\Inetpub\scripts などの
cgi を実行したいディレクトリのプロパティで[web共有]タブで[共有]が「既定の
webサイト」、[このフォルダを共有する]が「このフォルダを共有する」になってい
る必要がある。更に[エイリアス]に「scripts」などの名前でエイリアスを追加し、
[アプリケーションの許可]のボタンを「実行(スクリプトを含む)」にセットする。
次に c:\namazu\libexec にある namazu.cgi.exe を 上記で作成した CGI ディレ
クトリにコピーする。これが CGI 用の Namazu 実行プログラム。
■ 実際の検索
実際にドキュメントのインデックスを作成し、検索できるかどうか試してみた。
1. 検索結果のリンク先が /C|/doc/**** となってしまうので namazurc の
Replace 行を以下の様に変更する。
Replace /C\|/doc/ http://www.foo.bar.jp/
2. 実際の検索対象のファイルサイズにより、インデックス作成時に無視される
ので C:\namazu\etc\namazu\mknmzrc の以下の部分を修正
$TEXT_SIZE_MAX = 20000000;
$FILE_SIZE_MAX = 30000000;
3. インデックスを作成する
DOS 窓で mknmz -O C:\namazu\var\namazu\index\foo Q:\ を実行。
データが1万件以上あると初めてのときは1時間以上かかる。次回からは変更
差分だけをインデックス化するため速い。また、検索対象でファイルサイズの
大きなものをインデックス化するときには時間がかかる。
4. 検索用の html の設置
今回 cgi の実行ディレクトリを c:\inetpub\cgi-bin とした。
ここへ「IIS と cgi のインストール」での設定を施し、以下の html を置いた。
この基本部分を必要なページの html に付加するだけで検索窓が出来ることを
想定してある。これで検索が出来ることを確認した。
<html><body>
<!--Namazu による全文検索システム-->
<form action="/cgi-bin/namazu.ccgi" method="get">
<p>
<a href="http://www.namazu.org/"><strong>Namazu:</strong></a>
<input name="query" value="123" size="30" accessKey="T" tabIndex="10">
<input type="hidden" name="whence" value="0">
<input type="hidden" name="max" value="20">
<input type="hidden" name="result" value="normal">
<input type="hidden" name="sort" value="score">
<input type="hidden" name="idxname" value="pub,past"> 注)
<input type="submit" value="検索" accessKey="S" tabIndex="11">
[<a href="/cgi-bin/namazu.ccgi">説明</a>]
</p>
</form>
</body></html>
5. 検索結果の表示
今回は行わなかったが、検索結果の表示はカスタマイズできる。
カスタマイズするためには namazurc の以下の場所を有効にし、適切に設定
する。
#Template /usr/local/var/namazu/index
テンプレートは C:\namazu\share\namazu\template にある NMZ.body や
NMZ.body.jp である。
6. 定期的なインデックスの更新
インデックスを作成するコマンドを記述した
バッチファイルを作成し、infra_search.bat などの名前で保存する。
次に[コントロールパネル][タスク]を開き、「スケジュールされたタスク」
をダブルクリックする。タスクウィザードが開くので、。「参照」ボタンを
押し、先ほど作成したバッチファイルを登録、タスクを実行する間隔や開始
時刻などを指定する。これで、定期的なインデックスの構築が出来るように
なる。