FLnetでの全文検索システムとPC内検索システムの構築について
(NAMAZU for Win による)

§1 序

1−1 FLnetにおけるNAMAZU環境

 ・ FLnetではサーバーにNAMAZUがインストールされていて利用可能な状態になっています。

 ・ FAQには、「namazu.cgi と .namazurc をダウンロードし、.namazurcを3箇所書き換えて転送、namazu.cgiにリンク
 を張れば完成です。」とあります。このことはNAMAZU用の検索インデックスが  /usr/home/(*hoge*)/namazu に既
 に管理人さんによって作成されていることを意味します。
 筆者の /usr/home/(*hoge*)/namazu にはインデックスファイルが、がぁ〜〜〜〜 とありました。

 ・ しかも、このインデックスは毎日自動更新されています。

 ・ FLnet登録利用者がサイト内全文検索機能をつけるだけならFAQに記してあることを実行すれば殆ど完成です。

 ・ しかし、「このディレクトリは検索対象にしたくない」という方もおられるでしょう。そのような細かい設定をするには自分で
 インデックスを作成し更新していく必要があります。

1−2 NAMAZUの利用とこの記事の目的

 ・ 特定のディレクトリを検索対象から外すことはスクリプトを書いて Sh しても可能と思います。
  (この方法を採用したい方はNET上に様々な資料がありますので、そちらを参照してください。)

 ・ しかし、せっかくNAMAZUをものにしようというのですから、WEB上の検索システムだけでなく、自身のPCにも
 全文検索機能を付けてみよう。この記事はそういう目的で記しています。
 とりわけ、「私のあのファイルは、何処に行っちゃったのでしょう?」と、いつも嘆いているあなた(筆者だけ???)には
 PC内全文検索システムの構築は特にお奨めです。

1−3 読むに当っての留意点

 ・ この文書の作成開始は、2004/10/18です。この時点での情報です。

 ・ Windows98、Meは9x系、Windows2000、XPはNT系と記します。 

 ・ 筆者の環境に合わせて記しています。(OSはWindows Me)

 ・ NT系の方は適宜読み替えてください。

 ・ コード関連の<>はタグの解釈を避けるため全角で記述しています。実作業では半角に直してください。
 コード関連の操作に関しては、本稿のコピーを用いるのではなく、大元のファイルを使用するようにしてください。

 ・ WEBに検索機能をつけるだけでいい。ただ、NAMAZUのdefaultの画面はあまりに味気ないという方は
 「§8 NAMAZU表示画面のカスタマイズ」に進んで下さい。多少Graphicalになります。

 ・ 本稿はPC内全文検索機能を実現させますので、WEB用インデックスもPC内で作成する形で記しています。

1−4 本稿のウリ

 ・ 自身のPC内の全文検索ができるようになる。

 ・ 自身のWEBサイトにサイト内全文検索機能がつけられる。

 ・ NAMAZUの表示画面が多少グラフィカルにできる。


§2 インストール作業

2−1 ActivePerl 5.6.1.635

2−1−1 現在最新バージョンはActivePerl 5.6.1.638 です。筆者はひとつ前のバージョンをインストールしました。

2−1−2 配布元
 
・ http://ftp.activestate.com/ActivePerl/Windows/5.6/

2−1−3 インストール先
 
・ C:\perl  (フォルダを作成します)

2−1−4 インストール方法

 a. ActivePerl-5.6.1.635-MSWin32-x86.msiをダブルクリック。

 b. このとき警告メッセージが表示された場合は、先にInstMsiA.exeをインストールすることになります。


 ・ InstMsiA.exe 配布場所(以下のURLにアクセスするとダウンロードが開始されます)
98系⇒http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe

NT系⇒http://download.microsoft.com/download/WindowsInstaller/Install/2.0/NT45/EN-US/InstMsiW.exe

 ・ インストール先
 
Perlをダウンロードしたところと同じ場所で差し支えありません。

 ・ インストール終了後PC再起動


2−1−5 インストール後の確認事項

 a. [9x系] C:\Autoexec.batをメモ帳で開く。
 SET PATH=C:\Perl\bin;%PATH% と書き込まれていることを確認。
 [NT系] コントロールパネル>システム>環境タブ システム環境変数 PATHにPerlのパスが書き込まれていることを確認。

 b. 書き込まれていなければ、書き込む。

 c. [9x系] このとき、PATH C:\;C:\WINDOWS がなければ、これも書き込み上書き保存。
  SET PATH=C:\;%PATH%
  SET PATH=C:\windows;%PATH%
  と二行で記しても差し支えありません。

 d. PC再起動しAutoexec.batの設定を有効にします。

 e. スタート>アクセサリ>MS-DOSプロンプト を起動。(NT系はコマンドプロンプト)

 f. C:\windows> と表示されるので、続けて perl -v と入力します。

 g. C:\windows>perl -v としEnter。

 h. 以下のメッセージが表示されればPerlは正常。

*****************************

This is perl, v5.6.1 built for MSWin32-x86-multi-thread
   (with 1 registered patch, see perl -V for more detail
   Copyright 1987-2001, Larry Wall

(中略)

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'. If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.

*****************************

2−2 kakasi 2.3.4

2−2−1 kakasiの最新バージョンです。

2−2−2 配布元
 
・ http://www.namazu.org/win32/

2−2−3 インストール先
 
・ C:\kakasi (フォルダを作成する)

2−2−4 インストール方法
 
a. ダウンロードしたkakasi-2.3.4.zipを解凍。

 b. C:\kakasi に解凍したフォルダとファイルをすべてコピー。

2−2−5 インストール後のディレクトリ構造

2−2−6 [9x系]Autoexec.bat の確認

 ・ 以下を行末に手書きします。([NT系]はNAMAZUインストール後の確認事項参照)

REM ###### kakasi for Win32 Environment variable setting
SET KANWADICTPATH=C:\kakasi\share\kakasi\kanwadict
SET ITAIJIDICTPATH=C:\kakasi\share\kakasi\itaijidict

2−3 NAMAZU 2.0.12

2−3−1 namazuの最新バージョン。nmz2012.exeかnmz2012.zipのいずれかをダウンロードします。

2−3−2 配布元
 
・ http://www.namazu.org/windows/

2−3−3 インストール先
 
・ C:\namazu (フォルダを作成します)

2−3−4 インストール方法
 
a. ダウンロードしたnmz2012.exeをダブルクリック。

 b. インストーラがインストール先を尋いてきたら C:\ とします。 これで C:\namazu にインストールされます。

 c. インストールの途中で二度セットアップを尋ねてくるので、共にYを入力しENTER。

2−3−5 インストール後の確認事項

[9x系]

 ・ C:\Autoexec.batをメモ帳で開く。(NT系の場合は環境変数)

 ・ 以下が行末に記述されていることを確認する。不足しているコードがあれば手動で入力します。

REM ###### Namazu for Win32 Environment variable setting
SET PATH=C:\namazu\bin;%PATH%
SET NAMAZURC=C:\namazu\etc\namazu\namazurc
SET NAMAZULOCALEDIR=C:\namazu\share\locale
SET MKNMZRC=C:\namazu\etc\namazu\mknmzrc
SET HOME=C:\namazu
SET LANG=ja_JP.SJIS

[NT系]
 
・ コントロールパネル>システム>環境タブ システム環境変数 PATH に、パス \namazu\bin が追加され、
 以下の環境変数が追加されていることを確認します。不足しているコードがあれば手動で入力します。

HOME   C:\namazu
ITAIJIDICTPATH C:\kakasi\share\kakasi\itaijidict
KANWADICTPATH C:\kakasi\share\kakasi\kanwadict
LANG ja_JP.SJIS
MKNMZRC C:\namazu\etc\namazu\mkmnzrc
NAMAZULOCALEDIR C:\namazu\share\locale
NAMAZURC C:\namazu\etc\namazu\namazurc

 a. PC再起動後。

 b. MS-DOSプロンプト(NT系はコマンドプロンプト)を起動。

 c. c:\windows>namazu --help としEnter。

 d. 以下のメッセージが表示されたらNAMAZUは正常。

********************************

namazu 2.0.12, Namazu の検索プログラム
使い方: namazu [options] <query> [index]...
-n, --max=NUM 一度に表示する件数
-w, --whence=NUM 表示する検索結果の先頭番号

(中略)

-d, --debug デバッグモード
-v, --version ヴァージョンを表示する
--help このヘルプを表示する
バグ報告は <bug-namazu@namazu.org> へどうぞ


§3 インデックスの作成実験

3−1 必要な道具

3−1−1 テキストエディタ
 ・ 少なくとも EUC(EUC-JP)、SHIFT-JIS、JIS対応のテキストエディタを用意します。
 秀丸エディタ(シェアウェア) WZエディタ(シェアウェア) サクラエディタ(フリーウェア) TeraPad(フリーウェア)
等、気に入ったものをご使用ください。

3−2 mknmzrcの設定作業

3−2−1 ファイルの場所
  ・ C:\namazu\etc\namazu

3−2−2 mknmzrcの役割
 ・ インデックス作成プログラム mknmz の動作を設定するリソースファイル。

3−2−3 使用するファイル
 
 上記フォルダのmknmzrc、mknmzrc-sample、mknmzrc-sample.win32は全て内容は同じ。
  mknmzrc-sample.win32を使用する場合は、mknmzrcをmknmzrc_Unixとでも名前を変えた後、
 mknmzrc-sample.win32をmknmzrcと名前を変えて使用する。

3−2−4 mknmzrcの編集

 a. エディタでmknmzrcを開き、以下に示す各行のコメント(#)を外す。説明文はそのまま残します。

 b. 編集内容
 メールアドレスを自分のものに変更する以外は、行頭の#を外すだけ。

$ADDRESS = '自分のメールアドレスに変更';
$HTML_SUFFIX = "html?|[ps]html|html\\.[a-z]{2}"; 
$ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" # HTML, plain text  
"|.*\\.gz|.*\\.Z|.*\\.bz2" . # Compressed files  
"|.*\\.pdf|.*\\.ps" . # PDF, PostScript  
"|.*\\.tex|.*\\.dvi" . # TeX, DVI  
"|.*\\.rpm|.*\\.deb" . # RPM, DEB  
"|.*\\.doc|.*\\.xls|.*\\.ppt" . # Word, Excel, PowerPoint  
"|.*\\.j[sabf]w|.*\\.jtd" . # Ichitaro 4, 5, 6, 7, 8  
"|\\d+|[-\\w]+\\.[1-9n]"; # Mail/News, man  
$DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*";  
$EXCLUDE_PATH = undef;  
$DIRECTORY_INDEX = "";  
$REMAIN_HEADER = "From|Date|Message-ID";  
$SEARCH_FIELD = "message-id|subject|from|date|uri|newsgroups|to|summary|size";
$META_TAGS = "keywords|description";  
%FIELD_ALIASES = ('title' => 'subject', 'author' => 'from'); 
$NON_SEPARATION_ELEMENTS = 'A|TT|CODE|SAMP|KBD|VAR|B|STRONG|I|EM|CITE|FONT|U|'.
'STRIKE|BIG|SMALL|DFN|ABBR|ACRONYM|Q|SUB|SUP|SPAN|BDO'; 
$ON_MEMORY_MAX = 5000000;  
$FILE_SIZE_MAX = 2000000;  
$TEXT_SIZE_MAX = 600000;  
$WORD_LENG_MAX = 128;  
%Weight =   
(  
'html' => {  
'title' => 16,  
'h1' => 8,  
'h2' => 7,  
'h3' => 6,  
'h4' => 5,  
'h5' => 4,  
'h6' => 3,  
'a' => 4,  
'strong' => 2,  
'em' => 2,  
'kbd' => 2, 
'samp' => 2,  
'var' => 2,  
'code' => 2, 
'cite' => 2, 
'abbr' => 2, 
'acronym'=> 2,
'dfn' => 2, 
},  
'metakey' => 32, # for <meta name="keywords" content="foo bar">  
'headers' => 8, # for Mail/News' headers  
);  
$INVALID_LENG = 128;  
$MAX_FIELD_LENGTH = 200; 
$NKF = "module_nkf";  
$KAKASI = "module_kakasi -ieuc -oeuc -w";  
# $CHASEN = "chasen -j -F '\%m '"; 
<--将来、茶筅の利用を考慮してコメント行のまま残す。削除しても差し支えない。
# $CHASEN_NOUN = "chasen -j -F '\%m %H\\n'"; 
<--将来、茶筅の利用を考慮してコメント行のまま残す。削除しても差し支えない。
$WAKATI = $KAKASI;  
$LIBDIR = 'C:/namazu/share/namazu/pl';
$FILTERDIR = 'C:/namazu/share/namazu/filter';
$TEMPLATEDIR = 'C:/namazu/share/namazu/template';
1;

 c. 変更終了後上書き保存

3−2−5 動作確認

 a. MS-DOSプロンプト(NT系はコマンドプロンプト)を開き以下を実行。

 b. C:\windows>mknmz -C (オプション-CのCは必ず大文字)

 c. 以下が表示されればmknmzrcは正常。

*****************************

読み込んだ設定ファイル: C:/namazu/etc/namazu/mknmzrc
システム: MSWin32
Namazu: 2.0.12
Perl: 5.006001

(中略)

text/hnf
text/html
text/html; x-type=mhonarc
text/plain
text/plain; x-type=rfc
text/x-hdml

*****************************

3−3 namazurcの設定作業

3−3−1 ファイルの場所
 ・  C:\namazu\etc\namazu

3−3−2 namazurcの役割
 ・ namazuの実行に関する内容を記述したリソースファイル。

3−3−3 使用するファイル

 ・ 上記フォルダのnamazurc、namazurc-sample、namazurc-sample.win32は全て内容は同じ。
 ・ namazurc-sample.win32を使用する場合は、namazurcをnamazurc_Unixとでも名前を変えた後、
 namazurc-sample.win32をnamazurcと名前を変えて使用してください。

3−3−4 設定作業

 a. インデックスを作成するファイルを保存するフォルダを作成
 ・ C:\indxdata
 ・ MS-DOSの制限に合わせるためフォルダの名前は必ず半角英数8文字までにします。

 b. データの準備
 ・ 拡張子が".html"、".txt" の適当なファイルを5つほどこのフォルダにコピー。

 c. 作成したインデックスを保存するフォルダを作成。
 ・ C:\indxrslt
 ・ MS-DOSの制限に合わせるためフォルダの名前は必ず半角英数8文字までにします。

 d. エディタでnamazurcを開き、以下に示す各行のコメント(#)を外し上書き保存。説明文はそのままにしておく。
 namazurcは以下のように修正します。

Index  C:\indxrslt
Template C:\indxrslt
#Replace  /home/foo/public_html/ http://www.foo.bar.jp/~foo/
#Logging  off
Lang  ja_JP.SJIS
Scoring  tfidf
EmphasisTags "<strong class=\"keyword\">" "</strong>"
MaxHit  10000
MaxMatch  1000
#ContentType  "text/x-hdml"

・Index ⇒ 作成されたインデックスを格納するディレクトリを指定
・Template ⇒ 作成されたテンプレートを格納するディレクトリの指定。通常はIndexと同じ。
・Replace ⇒ ディレクトリ名部分を URL へ置換する設定。現段階では#をつけたままにします。
・Logging ⇒ 検索に使われたキーワードのログを取るか否かの指定。ログをとる場合は#をつけたままにします。
・Lang ⇒ 言語の指定。#を外します。
・Scoring ⇒ スコアの重みづけ方法を指定。#を外します。
・EmphasisTags ⇒ 検索されたキーワードの表示に強調表示を行う場合は#を外します。
・MaxHit ⇒ 1 回の検索によるヒット件数の上限を指定。#を外します。
・MaxMatch ⇒ 検索によってマッチする語の上限を指定。#を外します。
・ContentType ⇒ この#は外さない。ContentTypeは、HTML文書以外のテンプレートファイルを利用する場合の設定。
例えば携帯用。

3−3−5 動作確認

 a. MS-DOSプロンプト(NT系はコマンドプロンプト)を開き以下を実行。

 b. C:\windows>namazu -C (オプション-CのCは必ず大文字)としEnter。

 c. 以下が表示されればnamazurcは正常
 ・ namazurcはWEBにUPする時、もう一度設定変更しファイル名を変更します。

*********************************

読み込んだ設定ファイル: C:\namazu\etc\namazu\namazurc
--
インデックス (Index): C:\nmzindex
ログの記録 (Logging): off
使用する言語 (Lang): ja_JP.SJIS
スコア計算 (Scoring): tfidf
テンプレート (Template): C:\nmzindex
ヒット件数の上限 (MaxHit): 10000
一致する語の上限 (MaxMatch): 1000
強調タグ (EmphasisTags):

3−4 実験用インデックス作成手順

 a. MS-DOSプロンプト(NT系はコマンドプロンプト)を起動。

 b. C:\windows>mknmz -O C:\indxrslt C:\indxdata と入力しEnter。

 c. 以下が表示されたらインデックス作成成功。

***********************************

検索対象のファイルを調べています...
2個のファイルがインデックス作成の対象として見つかりました
1/5 - /C|/tmpindex/***.html [text/html]
2/5 - /C|/tmpindex/***.html [text/html]
3/5 省略
4/5 省略
5/5 省略
インデックスを書き出しています...
[基本]
日付: Sun Oct 15 23:00:00 2004
追加された文書の数: 5
サイズ (bytes): *****
合計の文書数: 5
追加キーワード数: ***
合計キーワード数: ***
わかち書き: module_kakasi -ieuc -oeuc -w
経過時間 (秒): **
ファイル/秒: 0.**
システム: MSWin32
Perl: 5.*******
Namazu: 2.0.12

3−5 作成されたインデックスファイルの説明

3−5−1 事前の確認
NAMAZUを初めて見る方は先にNAMAZUのdefaultの表示画面を確認。
此方の方のHPの検索機能を利用させていただきます。

 ・ NAMAZUの検索用画面⇒http://www.ki.nu/software/namazu/tutorial-search.cgi
 ・ NAMAZUの検索結果成功画面を表示する⇒上記URLでLinuxと入力して検索。
 ・ NAMAZUの検索失敗画面を表示する⇒上記URLで大阪で検索。

 ・ C:\indxrsltのファイルの内、末尾がes(スペイン語)、fr(フランス語)、ja(日本語)、何もな いのが英語。

 ・ NMZ.body
 NAMAZUの検索用画面の、検索式/単一単語検索〜特記事項までの部分のテンプレート。

 ・ NMZ.foot
 NAMAZUのdefault画面の、ページ最下部の水平線以下の部分のテンプレート。

 ・ NMZ.head
 NAMAZUのdefault画面の、ページの先頭〜NMZ.bodyの手前までの部分のテンプレート。

 ・ NMZ.result.normal
 表示形式”標準”でNAMAZUの検索結果成功画面の「1.」等数字で始まる検索結果表示部分の テンプレート。

 ・ NMZ.result.shortは検索で見つかったファイルを表示する際に使用するテンプレート。 normalの 簡易表示版。
 表示形式”簡単”でNAMAZUの検索結果成功画面の「1.」等数字で始まる検索結果表示部分。

 ・ NMZ.tips
 NAMAZUの検索失敗画面の、検索のコツ以下footの手前までの部分のテンプレート。

 ・ NMZ.w
 インデックス化された単語が登録されているファイル。

 ・ 留意点
 これらのファイルを開く時は必ず前記のエディタを使用。 文字化けした場合はエンコードをEUC-JPに変更して再読み込み。

3−6 検索実験

 a. MS-DOSプロンプト(NT系はコマンドプロンプト)を開き以下を実行。

 b. C:\windows>namazu 富士山 C:\nmzindex と入力しEnter。
 ただし、検索文字(富士山)は、各自のインデックスファイルに存在する名詞にしてください。

 c. MS-DOSで全角と半角の切り替えは、Alt+半角/全角。

 d. 検索結果が表示されればOK

***********************************

参考ヒット数: [ 富士山: * ]
検索式に * 件の文書がマッチしました。

以下省略


§4 検索拡張用フィルタ

4−1 配布元一覧

Namazu用の文書フィルタを提供しているページは以下です。
PDFの情報以外はNAMAZU本家から引用(Copy and Past)しています。
URLはコチラ ⇒ http://www.namazu.org/links.html

 ・ NAMAZUによる検索機能の追加
 菊地時夫さんによる pipermail 用の filter があります

 ・ Docuworksのフィルタ
 FUJI XEROXによる、DocuWorks Text Filter(Namazuのフィルタが付属しています)

 ・ namazu zip/tar/lzh 対応パッチ
 松村さんによる、zip/tar/lzh 対応パッチ

 ・ DWG、DXFのフィルタ
 独立行政法人 建築研究所による、DWG、DXFファイル用フィルタ

 ・ Pukiwiki用フィルタ
 PukiWiki Developers Teamによる、Pukiwiki用フィルタ

 ・ xdoc2txtを利用した文書フィルタ
 花井さんによる、xdoc2txtを使用したNamazu用MS-WORD文書フィルタ

 ・ Win32用XML汎用、SMIL、SVG用フィルタ
 koi_sanさんによる、Win32用XML汎用、SMIL、SVG用フィルタ

 ・ bmp,gif,jpeg,png画像フィルタ
 koi_sanさんによる、bmp,gif,jpeg,png画像フィルタ

 ・ Namazu Document Filter for Windows Media Format[WMV/WMA]
 星野さんによる、Windows Media Player形式動画/音声データフィルタ

 ・ foolabsによるPDFファイルのフィルタ⇒http://www.foolabs.com/xpdf/(英語)
 ・ 以下のアドレスにアクセスするとダウンロードが始まります。両方共ダウンロードします。
 xpdf本体3.00 ⇒ ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.00-win32.zip
 Language Support Package ⇒ ftp://ftp.foolabs.com/pub/xpdf/xpdf-japanese.tar.gz

4−2 PDFフィルタのインストール

4−2−1 インストール先

 ・  C:\xpdf (フォルダを作成する)

4−2−2 インストール方法

 a. xpdf-3.00-win32.zipを解凍。

 b. 解凍されたファイルすべてをC:\xpdfフォルダに移動。

4−2−3 インストール後の処理

 a. C:\xpdfフォルダ直下のsample-xpdfrcをxpdfrcに名前を変更。

 b. [9x系] ⇒ C:\Autoexec.batを開き、行末にSET PATH=C:\xpdf;"%PATH%"と記述し上書き保存。
  [NT系] ⇒ 環境変数のシステム変数でPATHの値にC:\xpdfを追加。

4−2−4 Language Support Package(xpdf-japanese.tar.gz)の解凍と処理

 ・ gzip形式の解凍をサポートしているアーカイバを使用。

 ・ ダウンロードサイトの各アーカイバの対応形式でgzip(もしくはGZ)と記されているものを使用するようにします。

*********************

解凍ソフトに関してユーザーが指定した場所以外のフォルダへファイルが解凍されてしまう脆弱性が存在することが
窓の杜によって検証されいます。
http://www.forest.impress.co.jp/article/2004/07/30/arcsecurity.html

*********************

 a. xpdf-japanese.tar.gzを解凍。解凍されたファイルの xpdf-japanese を japanese に名前を変更。

 b. japaneseフォルダごとC:\xpdfフォルダに移動。移動直後のディレクトリ構造は以下。

 c. C:\xpdf\japaneseフォルダの下のadd-to-xpdfrcをエディタで開く。

 d. 以下のように変更します。
#----- 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
displayCIDFontX Adobe-Japan1 "-*-fixed-medium-r-normal-*-%s-*-*-*-*-*-jisx0208.1983-0" ISO-2022-JP
#displayCIDFontTT Adobe-Japan1 /usr/..../kochi-mincho.ttf
#----- end Japanese support package

 e. C:\xpdf\xpdfrc を開き、行末に変更したadd-to-xpdfrcの全文を貼り付けます。

 d. MS-DOSプロンプトで
 ・ C:\windows>mknmz -C (Cは必ず大文字)と入力しEnter。 
 ・ 以下が表示されればpdfフィルタは正常に組み込まれています。

*******************************

(前段省略)
CONFDIR: C:/namazu/etc/namazu
LIBDIR: C:/namazu/share/namazu/pl
FILTERDIR: C:/namazu/share/namazu/filter
TEMPLATEDIR: C:/namazu/share/namazu/template
対応メディアタイプ:
application/excel
application/ichitaro4
application/ichitaro5
application/ichitaro6
application/ichitaro7
application/msword
application/pdf
<--これが表示されればPDFフィルタのインストールは正常
application/powerpoint
application/rtf
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

4−2−5 フィルター結果表示の説明
 ・ 上記は筆者の環境での結果です。

 ・ EXCEL、WORD、POWERPOINT等のファイルが検索可能になっています。
 これは各ソフトがNAMAZUのインストール前に存在しているからです。

 ・ 一太郎(ICHITARO)が検索対象になっています。
 これはWORDがインストールされていてWORDのファイルコンバータで一太郎をONにしていることによります。

 ・ Word、Excel、PowerPointをNAMAZUの検索対応メディアタイプにするには、NAMAZUのインストール前に
 各ソフトがインストールされている必要があります。

 ・ NAMAZUのインストール後に導入したWord、Excel、Power Pointを検索対象に加えるには
 Word、Excel、PowerPointインストール後、NAMAZUを再度インストールしてく ださい。


§5 実際に使用するインデックスの作成

 ・ 設定項目の多いWEB用の説明を先にします。

5−1 PCとWEBのディレクトリ構造の一致

 ・ PCとWEBのディレクトリの階層構造が完全に一致していないと、検索結果が正しいURLを戻してきません。
 ・ 一致していなければならない部分を赤で網掛けしています。

5−2 MS-DOSファイル名半角8文字制限への対応

5−2−1 フォルダ名の確認

 a. MS-DOSプロンプト(NT系はコマンドプロンプト)を起動。

 b. C:\WINDOWS>cd c:\ としEnter。

 c. C:\>dir /p としEnter 以下のように表示される。
 (/p をつけるとMS-DOS画面1ページ分を表示して止まる。次ページを表示するにはEnterを押す。)

***************************

SETUPXLG TXT 702 02-07-05 22:18 SETUPXLG.TXT
CONFIG SYS 0 04-10-16 17:16 CONFIG.SYS
WINDOWS <DIR> 00-12-04 21:20 WINDOWS
CONFIG BAK 0 04-10-16 17:16 CONFIG.BAK
AUTOEXEC BAK 604 04-10-16 17:16 AUTOEXEC.BAK
CDEXTRA JPN <DIR> 00-12-04 21:23 CDEXTRA.JPN
PROGRA~1 <DIR> 00-12-04 21:22 Program Files
MYDOCU~1 <DIR> 00-12-05 10:08 My Documents
MYMUSI~1 <DIR> 00-12-05 11:26 My Music

 ・ MS-DOSではMy Documentsのフォルダ名はMYDOCU~1 となります。
 ・ 上図のディレクトリ構造であれば、 C:\myhome~1 が検索対象のフォルダとなります。
 ・ MyHomePageがMydocumentsの下であれば、C:\mydocu~1\myhome~1 が検索対象のフォルダになります。
 ・ DOSの画面ではフォルダやファイルが半角8文字を越えるものは、半角6文字~1 と表示されることを覚えておきます。

5−2−2 ロングネームに対する対応方法

 ・ MS-DOSプロンプト(NT系はコマンドプロンプト)とエクスプローラを開き、画面を二分割する形で開きます。
 ・ C:\WINDOWS>cd_ (” _ ” はスペースです) と入力します。
 ・ エクスプローラから My Documents の中にあるロングファイルネームのフォルダ、もしくはファイルを
 ドラッグ&ドロップします。
 ・ MS-DOS形式の正しいフルパスが表示されています。

5−2−3 ワンポイント・アドバイス

 ・ MS-DOSプロンプトをフルスクリーン表示にして元に戻せない場合は、スタート>プログラム>・・・ と進み、
 MS-DOSのショートカットを右クリック。 プロパティからウィンドウ表示にチェックを入れると直ります。

************************
 ・ DOSの操作をGUI的に行いたい方は以下のURL参照しsearch-s for Namazu 0.9.2をダウンロードてください。
 ・ DOS画面より楽に設定できると思います。設定方法等はsearch-s for Namazu 0.9.2のマニュアル参照してください。
 ・ http://www.syam.net/library/search-s/index.html

5−3 WEB用検索インデックスの作成

 a. 作成されたインデックスを格納するフォルダ(C:\indxrslt)の中にあるファイルを全て削除。

 b. MS-DOSプロンプト起動(NT系はコマンドプロンプト)。

 c. C:\WINDOWS>mknmz -O [C:\作成したインデックスを保存するフォルダ] [C:\インデックスを作成するフォルダ]
 (-O のOは必ず大文字)
 例 C:\WINDOWS>mknmz -O C:\indxrslt C:\myhome~1
 フォルダ名がロングネームの場合や深層構造の場合は 5−2−2 に記した方法を忘れずに用いてください

 d. C:\indxrslt にインデックスが作成されたことを確認。

 e. インデックス化したくないフォルダは以下のように指定します。
 ・ C:\indxdata フォルダの下の doc1 というフォルダを検索対象から外す場合
 ・ C:\Windows>mknmz -O C:\indxrslt --exclude="[Cc]:/indxdata/doc1/.*" C:\indxdata
 ・ 或いは mknmzrc の $EXCLUDE_PATH で指定します。

 f. インデックスを作成するたびにDOSコマンドを打ち込むのは面倒なのでバッチファイルを作ります。
 ・ エディタを開き d. で実行したコマンドを入力。
 例 mknmz -O C:\indxrslt C:\myhome~1

 ・ 拡張子 .bat で保存。(例、ファイル名 indxweb.bat C:\namazu\bin に保存)

 g. indxweb.bat ファイルをエクスプローラ上でダブルクリックするとインデックスが更新されます。


§6 ftp、検索

6−1 WEBディレクトリ構造の一例

 ・ /public_html/NAMAZUディレクトリの下に作成したインデックスをUPする為のindexフォルダを作成します。

 ・ /public_html/NAMAZUディレクトリの下にtemplateフォルダを作成。当面、空のままです。

6−2 WEB用namazurcの編集とファイル名の変更方法

 a. WEB用とPC用の二通りの namazurc が必要なため C:\namazu\etc\namazu にあるnamazurc を C:\namazu\etc\namazu
 以外のフォルダにコピー(移動ではない)。ftpするので、それ用のフォルダが良いかもしれません

 b. 6-1に示したディレクトリ構造であればWEB用 namazurc を以下のように変更する。

Index /usr/home/(*hoge*)/public_html/NAMAZU/index 
Template 
/usr/home/(*hoge*)/public_html/NAMAZU/index
R eplace 
/[Cc]\|/myhome~1  http://www.(*hoge*).flnet.org/
#Logging off
Lang ja_JP.SJIS
Scoring tfidf
EmphasisTags "<strong class=\"keyword\">" "</strong>"
MaxHit 10000
MaxMatch 1000
#ContentType  "text/x-hdml"

 c. namazurc変更上の注意
  Index と Template は、サーバーのディレクトリを指定。
 ・ (*hoge*)は各自のアカウント
 ・ Replace の書式に注意。 /C|/ の部分は必ず /[Cc]\|/ と変換。
 例、 /C|/myhome~1/BBB/BBB_1.html がローカルのPC内でのパス。
  ⇒ /[Cc]\|/myhome~1/BBB/BBB_1.html としてUNIXが正しく認識できるパスに直します。
  ⇒ Replaceの指定で、 http://www.(*hoge*).flnet.org/BBB/BBB_1.html となり正しいURLに変換されます。
 ・ それ以外の \ は / に変換します。

 d. namazurc のファイル名を .namazurc に変更
 ・ 変更するファイル名の先頭が "." であることに注意。
 ・ エクスプローラ上で先頭に "." をつけたファイル名に変更すると拒否されます。
 ・ MS-DOSプロンプト(NT系はコマンドプロンプト)から
  C:\WINDOWS>cd C:\namazu\etc\namazu\namazurc
  C:\namazu\etc\namazu>ren namazurc .namazurc
 もしくは
  C:\namazu\etc\namazu>move namazurc .namazurc
 ・ namazurcをftpする時に、ftpソフトでファイル名を変更する方法もあります。

6−3 namazu.cgiのダウンロード

 ・ C:\namazu\bin\namazu.cgi.exe でもいいのでしょうが、サーバー側との整合性を取る意味でサーバーの提供する
 namazu.cgiをダウンロードして用いるようにしました。
 ・ ダウンロード先 http://www.hossy.flnet.org/download/namazu-cgi

 ・ namazu-cgiをnamazu.cgiにファイル名を変更します。

6−4 ftp

 a. C:\indxrslt 内のファイルをWEBの /public_html/NAMAZU/index にUP

 b. namazu.cgi、.namazurc(6−2でWEB用に修正したもの)、必要なら .htaccess を /public_html/NAMAZU にUP。

 c. パーミッションは namazu.cgi が700。 .namazurc は600。

6−5 検索

 a. WEBブラウザから namazu.cgi にアクセス。

 b. 検索語を入力し検索。

 c. URL等正しく表示されれば完了。


§7 PC内全文検索システムの構築

7−1 PC用検索インデックスの作成

 a. PC内全文検索用インデックスのフォルダとして C:\nmz_mypc を作成。

 b. こちらは、C:\namazu\etc\namazu にある namazurc を使用します。赤字部分を修正します。

Index  C:\nmz_mypc
Template
C:nmz_mypc
#Replace  /home/foo/public_html/ http://www.foo.bar.jp/~foo/
#Logging  off
Lang  ja_JP.SJIS
Scoring  tfidf
EmphasisTags "<strong class=\"keyword\">" "</strong>"
MaxHit  10000
MaxMatch  1000
#ContentType  "text/x-hdml"

 c. 画像も検索する場合は前記した画像フィルタを先にインストールします。

 d. MS-DOSプロンプト(NT系はコマンドプロンプト)から C:\ を検索ターゲットに指定。
 例 C:\WINDOWS>mknmz -O C:\nmz_mypc C:\ (データのあるルートを指定します)

 e. インデックス作成用バッチファイル mkindex.bat(これはWEB用)のPC版を作成します。
 ・ 内容は mknmz -O C:\nmz_mypc C:\
 ・ 適当なファイル名をつけて保存します。

7−2 検索方法

7−2−1 Serch-s for NAMAZU のインストール

 ・ MS-DOS画面での検索は厄介です。GUI的に検索するためにインストールします。

 ・ このソフトでインデックスを作成することも可能です。興味のある方はトライしてみてください。

 a. アプリケーション配布先

 ・ http://www.syam.net/library/search-s/ より srchs092.exe をダウンロードします。

 b. インストール方法

 ・ 自己解凍形式のファイルです。Explorer上でダブルクリックします。

 ・ インストール先は自由に設定してください。筆者は C:\namazu の下にしました。

7−2−2 検索方法

 ・ Serch-s for NAMAZU をクリックして起動。

 ・ 検索場所にインデックスを作成したフォルダを指定(この例では C:\nmz_mypc)。

 ・ 検索式に適当な言葉を入力し検索をクリック。
 これでNAMAZUの検索結果が表示されます。好みのファイルをクリックすれば表示されます。


§8 NAMAZU表示画面のカスタマイズ

8−1 編集するテンプレートファイル

 ・ NMZ.body.ja、NMZ.foot.ja、NMZ.head.ja、NMZ.result.normal.ja、NMZ.result.simplejas.ja、NMZ.tips.ja
 の6種類。

8−2 カスタマイズしたNAMAZUのインターフェイス

 ・ 上図はnamazu.cgiにアクセスした時に表示される画面。
 ・ 下図は検索結果表示画面です。

8−3 各テンプレートファイルの留意点

 ・ これらテンプレートファイルは全てHTMLで記述されています。エンコードは EUC-JP です。

 ・ テンプレートファイルはHTMLフラグメントです。一つのHTMLをいくつかに分割し、必要に応じて組み合わせて使用します。

8−3−1 HP作成ソフトが読み込まない場合

 ・ ファイル名の末尾に " .html " をつけてみます。

 ・ テキストエディタで読み込ませ、HTMLで保存したものを使用する。

8−3−2 表示が文字化け

 ・ HP作成ソフトの環境設定の標準エンコードを EUC-JP に変更したあとファイルを開く。

 ・ テキストエディタの文字化けは文字コードを EUC-JP に変更して再読み込み。

8−4 NAMAZU検索用インターフェイスの作成

 a. テンプレートファイルにこだわらず自由に作成しています。

 b. NMZ.head.ja から検索機能部分だけ抜き取ります。
 抜き取る部分は <form method ・・・・・・>〜</form>まで。

<form method="GET" action="{cgi}">
<p>
<trong>>:</strong>
<input type="text" name="query" size="40">
<input type="submit" value="Search!">
<input type="hidden" name="whence" value="0">
<!-- <nput type="hidden" name="idxname" value="foobar"<? -->
< href="{cgi}">><??]</a>

(省略)

</form>

 c. 上のHTMLの{cgi}をnamzu.cgiの相対パスかURLに変更します。

 d. 上のHTMLの{cgi}ヘルプを別に作成した場合は、ヘルプのHTMLファイルの相対パスかURLを指定します。
 7−2の上図のように検索機能の下にヘルプを表示している場合は削除可能です。

 e. 筆者の環境では、「著者 不明」としか表示されません。よって、ソートリストから、著者(昇順、降順 共)は削除しました。

 f. 他の部分は自由に作成します。

8−5 検索用小窓の作成

 a. 以下のHTMLのデザインを適当に修正します。

<form method="GET" action="namazu.cgiの相対パス>>
<table border="0" cellspacing="0" cellpadding="3">
<tr>
<td align="center"><small><font color="#400000"><b>Site内検索System</b> </font></small></td>
<td align="center">
<div align="center">
<small><a href="ヘルプの相対パス" target="main"><font color="blue" size="2">help</font></a></small></div>
</td>
</tr>
<tr>
<td valign="center" align="center"><small><input type="text" size="17" name="query" value=""></small></td>
<td valign="center" align="left"><mall>>?? input type="submit" value="Search"></small></td>
</tr>
</table>
</form>

−6 検索結果表示用インターフェイスの作成

8−6−1 namazuの表示方法

 ・ Defaultの検索画面は NMZ.head.ja + NMZ.body.ja + NMZ.foot.ja の組み合わせで表示されています。
 ・ 検索成功画面(詳細)は NMZ.head.ja + NMZ.result.normal.ja + NMZ.foot.ja の組み合わせで表示されています。
 ・ 検索成功画面(簡単)は NMZ.head.ja + NMZ.result.simple.ja + NMZ.foot.ja の組み合わせで表示されています。
 ・ 検索不成功画面は NMZ.head.ja + NMZ.tips.ja + NMZ.foot.ja の組み合わせで表示されています。
 ・ 検索方法(ヘルプ)はNMZ.body.ja です。

8−6−2 カスタマイズする際の留意点

 ・ HP作成ソフトで画像を設定しローカルの環境でWEBブラウザが画像を表示しても、WEBにアップすると表示されない場合
 があります。

 ・ この現象は逆の場合もあります。WEBにアップして試行錯誤するしか方法がないかもしれません。

 ・ WEB上でIEで表示されてもOpera等では表示されない場合があります。

8−6−3 カスタマイズしたインターフェイスのHTMLと画像

 ・ NAMAZUにアクセスした時に表示される検索画面に関しては、以下の筆者のホームページのソース参照してください。
 http://www.hippo.flnet.org/cgi_bin/namazu/namazu_new.html
 ・ NMZ.head.ja と画像データは文末に紹介しておきます。
 ・ 他のテンプレートファイルに関してはコードの紹介は省略いたします。

8−6−4 NMZ.head.ja の変更点

 ・ Topに画像を表示。

 ・ 文字のサイズを小さくしています。

 ・ 筆者の場合、検索すると「著者 不明」としか表示されないのでソートリストより、 著者(昇順、降順 共)を削除。

8−6−5 NMZ.result.normal.ja の変更点

 ・ 各データを表組みにしています。

 ・ データの区切りを明確にするため水平線を追加。

 ・ 文字サイズを小さくしています。

 ・ 著者を削除。

8−6−6 NMZ.result.simple.ja の変更点

 ・ 文字サイズを小さくしています。

8−6−7 NMZ.foot.ja の変更点

 ・ </body>、</html>。この二つの終了タグは削除してはいけません。それ以外は自由にカスタマイズしてください。

8−6−8 NMZ.tips.ja の変更点

 ・ 表示する文書を表組みにしています。

 ・ 文字サイズを小さくしています。

8−6−9 NMZ.body.ja の変更点

 ・ defaultのままです。

 ・ このファイルは実際には使用しませんが、WEB上の所定の場所に存在しないと、サーバーが warnlog を
 戻して来るようです。
 これを回避するために形式上UPします。
 warnlog の内容は以下のようなものです。
 namazu: /usr/home/(*hoge*)/public_html/NAMAZU/template/NMZ.body: No such file or directory

8−6−10 ftp

 ・ テンプレートファイルは /public_html/NAMAZU/template にアップします。

 ・ 完全にカスタマイズしたNAMAZUの検索画面は、/public_html/NAMAZU にUPします。

8−6−11 WEB用 namazurc の修正

 a. 6-1に示したディレクトリ構造であればWEB用 namazurc のTemplateを以下のように変更します。

Index /usr/home/(*hoge*)/public_html/NAMAZU/index 
Template  
/usr/home/(*hoge*)/public_html/NAMAZU/template
R eplace /[Cc]\|/myhome~1  http://www.(*hoge*).flnet.org/
#Logging off
Lang ja_JP.SJIS
Scoring tfidf
EmphasisTags "<strong class=\"keyword\">" "</strong>"
MaxHit 10000
MaxMatch 1000
#ContentType  "text/x-hdml"

 b. /public_html/NAMAZU にUPします。


§9 附記

 ・ AN HTTPD というソフトがあります。Windows環境自宅マシンを HTTP サーバ(Webサーバ)できるというものです。
 このソフトはスタンドアロンで(CGI等をサーバーにUPすることなしに) SSIやCGI のテストができます。 
 そのような用途には便利だと思います。


§10 結び

 ・ 本稿はNAMAZUによる検索システムを完成させたのちに思い出しながら記したものです。

 ・ 検索画面等のカスタマイズは外部参照CSSを利用すれば、もう少し柔軟なことができそうに思います。

 ・ 間違いがないように注意したつもりですが、誤りや付加事項がありましたら、ご指摘いただければ幸いです。

 ・ 本稿記載事項を実行した結果として発生したいかなる損害も免責とさせていただきます。
 あくまで自己責任で実行してください。

 ・ 本稿が読まれた方のパソコンライフの一助となることを祈りつつ筆をおきます。


参考文献(全てWEBサイトです)

 ・ 全文検索システム Namazu (NAMAZU本家)
 ・ Linux で自宅サーバ [ Home Server Technical. ]
 ・ SUPER LABORATORY (スーパー工房、略称SL)
 ・ NAMAZUを使おう
 ・ XREA SUPPORT BOARD - 日本語全文検索システムNAMAZUについて
 ・ マニュアルに書いてないNAMAZU
 ・ Search-s for Namazu 0.9.2

参考資料

検索画面に使用した画像
検索結果表示画面に使用した画像

NMZ.head.ja のHTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=Shift_JIS">
<!-- LINK-REV-MADE -->
<link rev=made href="mailto:自分のメールアドレス">
<!-- LINK-REV-MADE -->
<title>NAMAZU</title>
<style type="text/css"><!--
strong.keyword { color: Red; }
p.example { text-indent: 1em;
color: Navy;
font-weight: bold;
font-family: monospace; }
code { color: Navy;
font-family: monospace; }
code.example { color: Navy;
font-weight: bold;
font-family: monospace; }
code.operator { color: Navy;
font-family: monospace;
font-weight: bold; }
--></style>
</head>

<body bgcolor=white lang="ja">
<!--<h1>NAMAZU</h1>-->
<center>
<IMG SRC="/cgi_bin/namazu/template/resultLogo_2.gif">
<hr>
</center>
<form method="get" action="namazu.cgiへの相対パス">
<p>
<center>
<p><font size="2"><strong>Key Word:</strong> <input type="text" name="query" size="23"> <input type="submit" value="Search!"> <input type="hidden" name="whence" value="0"> <!-- <input type="hidden" name="idxname" value="foobar"> --><a href="NAMAZU検索画面への相対パス" target="main">[Help]</a></font></p>
<p><font size="2"><strong>Number:</strong>
<select name="max">
<option value="10">10
<option selected value="20">20
<option value="30">30
<option value="50">50
<option value="100">100
</select>
<strong>Result:</strong>
<select name="result">
<option selected value="normal">Normal<option value="short">Simple</select>
<strong>Sort:</strong>
<select name="sort">
<option selected value="score">Score
<option value="date:late">Date(New)
<option value="date:early">Date(Old)
<option value="field:subject:ascending">Subject(Ascending)
<option value="field:subject:descending">Subject(Descending)
<option value="field:from:ascending">Arthor(Ascending)
<option value="field:from:descending">Arthor (Descending)
<option value="field:size:ascending">Size(Ascending)
<option value="field:size:descending">Size (Descending)
<option value="field:uri:ascending">URI (Ascending)
<option value="field:uri:descending">URI (Descending)</option>
</select></font></p>
</center>
<!--
<p>
<strong>検索対象:</strong>
<ul>
<li><input type="checkbox" name="idxname" value="foo" checked>foo
<li><input type="checkbox" name="idxname" value="bar">bar
<li><input type="checkbox" name="idxname" value="baz">baz
</ul>
</p>
</form>
-->
<hr>

初版作成 2004/10/27

作成者 HIPPO