[English | Japanese]
Namazu の最新情報は http://www.namazu.org/ か ら入手できます。Namazuは GNU General Public License version 2 に 従ったフリーソフトウェアです。完全に無保証です。
Namazuは全文検索システムです。Namazu はインデックスの作成を 行う mknmz コマンドと、検索を行う namazuコマンドから構成され ています。
大量の文書を高速に検索するためには、どの単語がどの文書で使わ れているかを記録した索引ファイル (インデックス) をあらかじめ 作成する必要があります。インデックスはちょうど書籍の索引と似 ています。
インデックスを作成するには mknmz コマンドを用います。mknmz の引数にインデックス作成の対象とするディレクトリ名を与えます。 たとえば、 /home/foo/public_html を対象とするなら ば
% mknmz
/home/foo/public_html
と実行します。すると、 /home/foo/public_html 以下 の *.html *.txt といったファイルについて索引づけを行い、 mknmz を実行したディレクトリに NMZ.* というファイルを作成し ます。この NMZ.* ファイルが Namazu のインデックスです。
作成されたインデックスに対して検索を行うには
namazu
コマンドを用います。
% namazu
bar /home/foo/Namazu/foobar
と実行すれば、/home/foo/Namazu/foobar にあるインデック スに対してキーワード bar を検索します。
mknmz 2.0.X, Namazu のインデックス作成プログラム 使い方: mknmz [オプション] <対象>... 対象ファイル: -a, --all すべてのファイルを対象とする -t, --media-type=MTYPE 対象ファイルの文書形式を指定する -h, --mailnews --media-type='message/rfc822' と同じ --mhonarc --media-type='text/html; x-type=mhonarc' と同じ -F, --target-list=FILE インデックス対象のファイルのリストを読み込む --allow=PATTERN 対象とするファイル名の正規表現を指定する --deny=PATTERN 拒絶するファイル名の正規表現を指定する --exclude=PATTERN 除外するパス名の正規表現を指定する -e, --robots 次の記述を含む HTMLファイルを除外する <meta name="ROBOTS" content="NOINDEX"> -M, --meta HTMLの metaタグをフィールド指定検索に用いる -r, --replace=CODE URIを置換するためのコードを指定する --html-split HTMLファイルを <a name="..."> 単位で分割処理する --mtime=NUM 変更日制限 find(1) の -mtime と同じ規則 例: -50 で 50 日以内、+50 で 50 日より古いものだけ 形態素解析: -b, --use-mecab 日本語の単語のわかち書きに MeCab を用いる -c, --use-chasen 日本語の単語のわかち書きに ChaSen を用いる -k, --use-kakasi 日本語の単語のわかち書きに KAKASI を用いる -m, --use-chasen-noun 名詞のみを抽出する -L, --indexing-lang=LANG インデックス時に言語に特化した処理を行なう 文字列処理: -E, --no-edge-symbol 単語の両端の記号は削除する -G, --no-okurigana 送り仮名を削除する -H, --no-hiragana 平仮名のみの単語は登録しない -K, --no-symbol 記号をすべて削除する --decode-base64 添付されたBase64エンコード部分をデコードする 要約: -U, --no-encode-uri URIのencodeを行わない -x, --no-heading-summary HTML のヘディングによる要約作成を行わない インデックス作成: --update=INDEX 更新するインデックスを指定する -z, --check-filesize サイズが変わったファイルも対象とする -Y, --no-delete 削除された文書の検出を行わない -Z, --no-update 文書の更新・削除を反映しない その他: -s, --checkpoint チェックポイント機構を作動させる -C, --show-config 現在の設定を表示する -f, --config=FILE 設定ファイルを指定する -I, --include=FILE カスタマイズ用ファイルを読み込む -O, --output-dir=DIR インデックスの出力先を指定する -T, --template-dir=DIR NMZ.{head,foot,body}.* のディレクトリを指定する -q, --quiet インデックス処理の最中にメッセージを表示しない -v, --version ヴァージョンを表示する -V, --verbose 口やかましいモード -d, --debug デバッグモード --help このヘルプを表示する --norc 設定ファイルを読み込まない -- オプションリストを終了する バグ報告は <http://www.namazu.org/trac-namazu/trac.cgi> または <bug-namazu@namazu.org> へどうぞ
mknmzrc および .mknmzrc ではいくつかの設定が行えます。 mknmz は
$(sysconfdir)/$(PACKAGE)/mknmzrc
の順で設定ファイルを探して読み込みます。複数、見つかった場合 はすべて読み込みます。
インストール直後の状態では
$(sysconfdir)/$(PACKAGE)/mknmzrc-sample
という
サンプルファイルが用意されています。これを
$(sysconfdir)/$(PACKAGE)/mknmzrc
にコピーする、
あるいは自分のホームディレクトリに ~/.mknmzrc としてコピーし
て利用します。
mknmzrc の設定項目の説明は mknmzrc-sample ファイルにコメント として書かれています。
mknmz は対象ファイルの文書形式を自動で判別して、適切なフィル
タ処理を行います。たとえば、 HTML文書では <title> の抽
出や、HTMLタグの除去を行います。この処理は
$(datadir)/$(PACKAGE)/filter
に置かれる文書フィ
ルタによって行われます。標準で用意されている文書フィルタは次
の通りです。
次の文書フィルタは Windows専用です。Windows環境でのみ動作します。
namazu 2.0.X, Namazu の検索プログラム 使い方: namazu [options] <query> [index]... -n, --max=NUM 一度に表示する件数 -w, --whence=NUM 表示する検索結果の先頭番号 -l, --list 検索結果を URI・パス名をリストで出力する -s, --short 短い書式で出力する --result=EXT 結果表示に用いる NMZ.result.EXT を指定する --late 検索結果を新しい順にソートする --early 検索結果を古い順にソートする --sort=METHOD ソート方法を指定する (score, date, field:name) --ascending ソートの方向を昇順にする (標準は降順) -a, --all 検索結果をすべて表示する -c, --count ヒット数のみを表示する -h, --html HTMLで出力する -r, --no-references 参考ヒット数を表示しない -H, --page 先の検索結果へのリンクを表示する (ほぼ無意味) -F, --form <form> ... </form> の部分を強制的に表示する -R, --no-replace URI の置き換えを行わない -U, --no-decode-uri URI encode の復元を行わない -o, --output=FILE 指定したファイルに検索結果を出力する -f, --config=FILE 設定ファイルを指定する -C, --show-config 設定を表示する -q, --quiet 検索結果以外のメッセージを表示しない -d, --debug デバッグモード -v, --version ヴァージョンを表示する --help このヘルプを表示する --norc 設定ファイルを読み込まない -- オプションリストを終了する バグ報告は <http://www.namazu.org/trac-namazu/trac.cgi> または <bug-namazu@namazu.org> へどうぞ
コマンド行引数の [index dir]...
に検索対象のイ
ンデックスを指定します。インデックスの指定を省略すると、基本インデックスが検索対象となりま
す。
また、 +foo, +bar のように頭に +
記号をつけると、
基本インデックスからの相対パスでインデックスを指定できます。
コマンド行から実行したときは標準では平文で検索結果を出力します。 HTML で出力する場合には -h オプションを指定します。
検索結果の 21 件目から 40 件目までを表示させたいときは -n 20 -w 20 と指定します。-w の値が 21 でないところに注意してくだ さい。
namazurc および .namazurc ではいくつかの設定が行えます。 namazu は
$(sysconfdir)/$(PACKAGE)/namazurc
の順で設定ファイルを探して読み込みます。複数、見つかった場合 はすべて読み込みます。
インストール直後の状態では
$(sysconfdir)/$(PACKAGE)/namazurc-sample
という
サンプルファイルが用意されています。これを
$(sysconfdir)/$(PACKAGE)/namazurc
にコピーする、
あるいは自分のホームディレクトリに ~/.namazurc としてコピー
して利用します。
namazurc の設定項目の説明は namazurc-sample ファイルにコメント として書かれています。
基本インデックスは、検索時にインデックスの指定が省略されたと きに検索対象となるインデックスです。基本インデックスは次の規 則に従います。
CGI (namazu.cgi) では、インデックスを選択する際に基本イン デックスからの相対パスで指定します。
CGIとして Namazuを利用するには、 namazu.cgi を用います。
namazu.cgi は $(libexecdir)
ディレクトリ (通常
は/usr/local/libexec) にインストールされます。CGI を設置した
いディレクトリに namazu.cgiをコピーすれば設置完了です。
namazu.cgi を設置したディレクトリに .namazurc ファイルを置く と、CGIの実行時に設定ファイルとして読み込まれます。日本語で 表示するには次の設定が必須です。
Lang ja
雛形ファイルは HTMLでの結果出力の書式を定義するファイル群で す。それぞれの役割は次の通りです。
これらのファイルは言語ごとに分かれています。ファイル名の末尾 が .ja で終わるものが日本語用です。末尾に何もついていないも のは英語用です。
formは NMZ.head に定義されています。CGI変数は次の通りです。
Webブラウザからインデックスを選択できるようにするには NMZ.head に次のように記述します。
<strong>検索対象:</strong> <select name="idxname"> <option selected value="foo">foo</option> <option value="bar">bar</option> <option value="baz">baz</option> </select>
この例では、 foo, bar, baz の中からインデックスを 選択可能にしています。foo が選ばれた時は基本インデックス の下にある foo インデックスを検索します。基本インデックスが /usr/local/var/namazu/index の場合は次のディレクトリ構成にな ります。
/ + usr/ + local/ + var/ + namazu/ + index/ + foo/ + bar/ + baz/
複数のインデックスを検索するは NMZ.head に checkbox の記述を します。
<strong>対象インデックス</strong> <ul> <li><input type="checkbox" name="idxname" value="foo">foo</li> <li><input type="checkbox" name="idxname" value="bar">bar</li> <li><input type="checkbox" name="idxname" value="baz">baz</li> </ul>
この例では foo, bar, baz から複数選択して検索できます。検索 結果に使われる雛形ファイルは namazurc の Template指示で指定したディレクトリのものが用いら れます。Template が指定されていないときは、次の規則に従いま す。
利用者が入力する検索式とは別に、補助検索式を設定できます。た とえば次の例では、検索対象のペイジを選択可能にしています。検 索対象の URIを +uri: で制限しているところが要です。
<strong>検索対象</strong> <select name="subquery"> <option value="">全体</option> <option value="+uri:/^http://foo.bar.jp/foo//">fooのペイジ</option> <option value="+uri:/^http://foo.bar.jp/bar//">barのペイジ</option> <option value="+uri:/^http://foo.bar.jp/baz//">bazのペイジ</option> <option value="+uri:/^http://foo.bar.jp/quux//">quuxのペイジ</option> </select> <input type="hidden" name="reference" value="off">
Webブラウザから検索結果の言語を選択できるようにするには CGI 変数 lang を用いて NMZ.head に次のように設定します。 .namazurc で Lang が設定されていると、そちらが優先されます。 CGI変数 langを用いるときは .namazurc に Lang の設定をしては いけません。
<strong>言語:</strong> <select name="lang"> <option selected value="ja">日本語</option> <option value="">英語</option> </select>
bnamazu は Webブラウザと連携して検索を行うツールです。検索結 果を Webブラウザ (標準では lynx ) に渡して 閲覧できます。コマンド行から次のように実行します。
% bnamazu [-n] [-b browser] [namazu's options] <query> [index]...
-b オプションで Webブラウザを指定できます。 -n はWebブラウザ が netscape のときのみ有効なオプションです。-n を指定すると、 新しい netscape の新しいウィンドウを開いて検索結果を表示しま す。
nmzgrep は namazu コマンドと連携して egrep を実行するツール です。検索にヒットした文書に対して、egrepをかけます。egrep を適用することで、そのキーワードがどの行に出現するかがわかり ます。コマンド行から次のように実行します。
% nmzgrep [egrep's options] <pattern> [index]...
たとえば、 ~/Namazu/foobar に置かれているインデックスに対して foo で検索し、ヒットした文書に対してさらに egrep をかけるに は、次のように実行します。
% nmzgrep foo ~/Namazu/foobar
文書の更新・削除を伴うインデックスの更新を繰り返していくと、 インデックス内に不要なデータが溜まっていきます。gcnmz はこの 不要なデータを削除するツールです。コマンド行から次のように実 行します。
% gcnmz [options] <target>...
たとえば、 ~/Namazu/foobar に置かれているインデックスをゴミ掃除 するなら、次のように実行します。
% gcnmz ~/Namazu/foobar
mailutime は Mail/News のファイルのタイムスタンプを Date: ヘッ ダに合わせるツールです。コマンド行から次のように実行します。
% mailutime <target>...
たとえば、 ~/Mail/ml/foobar に置かれているメイルのタイムスタ ンプを変更するなら、次のように実行します。
% mailutime ~/Mail/ml/foobar/*
vfnmz は検索結果の表示を preview するツールです。コマンド行 から次のように実行します。
% vfnmz <index> [NMZ.result.foobar]
たとえば、 ~/Namazu/foobar に置かれているインデックスを preview するなら、次のように実行します。
% vfnmz ~/Namazu/foobar > foobar.html
% lynx foobar.html # 出力をブラウザで閲覧する
rfnmz は NMZ.field.*.i を再構築するツールです。コマンド行か ら次のように実行します。
% rfnmz <index>
たとえば、 ~/Namazu/foobar に置かれている NMZ.field.*.i を再 構築するなら、次のように実行します。
% rfnmz ~/Namazu/foobar
lnnmz は、検索対象の HTML ファイルに含まれるハイパーリンクを抽出し たファイルである NMZ.field.link を作成するコマンドです。lnnmz 実行 時には元のHTML ファイルが読める必要があります。通常は関係ないはず ですが、リモートサイトの検索などで wget などで一時的に取ってきただ けという場合には注意が必要です。コマンド行から以下のように実行しま す。
% lnnmz [options] <target>...
たとえば、 ~/Namazu/foobar に置かれているインデックスの NMZ.field.link を作成するなら、次のように実行します。
% lnnmz ~/Namazu/foobar
なお、lnnmz は HTML ファイルのリンクしか検出しません。シンプルテキ ストやPDF 他のリンク構造は検出しないだけでエラーなどにはなりません。
adnmz は NMZ.field.link を使って検索対象のHTMLファイル間の相互のハ イパーリンク構造を示す NMZ.field.adjacency を作成するコマンドです。 文書間のリンク関係を文書IDに変換したもので、隣接リストそのものです。 実行時に NMZ.field.link が必要ですので、lnnmz と事実上セットである と考えるのが良いでしょう。コマンド行から以下のように実行します。
% adnmz [options] <target>...
たとえば、 ~/Namazu/foobar に置かれているインデックスの NMZ.field.adjacency を作成するなら、次のように実行します。
% adnmz ~/Namazu/foobar
kwnmz は NMZ.field.keywords を作成するコマンドです。 インデックス作成時に mknmz の --meta オプションで抽出された キーワードはそのまま残し、 それ以外の文書については、単語リストから適当な語を抜き出します。
% kwnmz [options] <target>...
nmzmerge は 2 つのインデックスを 1 つにまとめるコマンドです。
% nmzmerge <destination_dir> <source_dir1> <source_dir2>
たとえば、 ~/Namazu/afc ~/Namazu/nfc に置かれている 2 つのインデックスを ~/Namazu/nfl にマージするなら、次のように実行します。
% nmzmerge ~/Namazu/nfl ~/Namazu/afc ~/Namazu/nfc
nmzegrep は namazu コマンド、mknmz の文書フィルタと連携して egrep を実行するツールです。検索にヒットした文書に対して、egrepをかけます。 egrep を適用することで、そのキーワードがどの行に出現するかがわかり ます。コマンド行から次のように実行します。
% nmzegrep [egrep's options] <pattern> [index]...
たとえば、 ~/Namazu/foobar に置かれているインデックスに対して foo で検索し、ヒットした文書に対してさらに egrep をかけるに は、次のように実行します。
% nmzegrep foo ~/Namazu/foobar
注意:nmzgrep は検索でヒットした文書ファイルを直接 egrep にかけていますが、 nmzegrep では、検索でヒットした文書ファイルを mknmz の文書フィルタに通した 後で egrep をかけます。テキストファイル以外に対しても egrep がかけられます が、mknmz の文書フィルタを呼び出すため nmzgrep よりも処理に時間がかかります。
nmzcat は mknmz の文書フィルタと連携して 文書ファイルからテキストを 抽出するツールです。mknmz が文書ファイルからどのような情報を抽出しているか を確認することができます。コマンド行から次のように実行します。
% nmzcat <対象ファイル>...
注意:nmzcat は、文書ファイルを mknmz の文書フィルタに通しています。 扱うことができるのは、mknmz で対応可能になっている形式のファイルのみです。 mknmz の文書フィルタを呼び出すため多少処理に時間がかかります。
調べたい単語を一つ指定するだけのもっとも基本的な検索手法です。 例:
namazu
ある単語とある単語の両方を含む文書を検索します。検索結果を絞
り込むのに有効です。3つ以上の単語を指定することも可能です。
単語と単語の間に and
を挿みます。例:
Linux and Netscape
and
は省略できます。単語を空白で区切って羅列す
るとそれらの語すべてを含む文書をAND検索します。
ある単語とある単語のどちらかを含む文書を検索します。3つ以上
の単語を指定することも可能です。単語と単語の間に
or
を挿みます。例:
Linux or FreeBSD
ある単語を含み、ある単語を含まない文書を検索します。3つ以上
の単語を指定することも可能です。単語と単語の間に
not
を挿みます。例:
Linux not UNIX
AND検索、OR検索、NOT検索を括弧でグループ化できます。括弧の両 隣には空白を入れる必要があります。例:
( Linux or FreeBSD ) and Netscape not Windows
2語以上からなる複合語を検索します。 "..."
と2重引用符で、あるいは {...}
と中括弧で囲みます。Namazuのフ
レイズ検索は精度が 100 % ではないため、ときどき誤ることがあ
ります。例:
{GNU Emacs}
部分一致検索には前方一致、中間一致、後方一致の 3種類があります。
inter*
(inter
から始まる単語を含む文書を検索)*text*
(text
を内包する単語を含む文書を検索)*net
(net
で終わる単語を含む文書を検索)
検索するキーワードを正規表現で指定します。正規表現は
/.../
のようにスラッシュ記号で囲みます。正規表
現のエンジンにはRubyのコードを利用
しています。正規表現の書式はPerlとほぼ同じです。 例:
/インター?フェ[イー]ス/
Subject:
, From:
,
Message-Id:
といったフィールドを指定して検
索する手法です。特にMail/News のファイルを扱う際に効果を発揮
します。例:
+subject:Linux
Linux
が含まれる文書)
+subject:"GNU Emacs"
GNU Emacs
が含まれる文書)
+from:foo@bar.jp
foo@bar.jp
が含まれる文書)
+message-id:<199801240555.OAA18737@foo.bar.jp>
TCP/IP
。
ただし、記号の処理は完全ではないので TCP and IP
のように分割してAND検索をかけた方が取りこ
ぼしがありません (その代わり余計なファイルまでヒットしてしま
う可能性があります)。
and
, or
, not
を単語として検索したいときはそれ
ぞれ、 "..."
と2重引用符で、
あるいは {...}
と中括弧で囲みます。