# 全文検索システム Namazu 説明書

Namazu の最新情報は http://www.namazu.org/ か ら入手できます。Namazuは GNU General Public License version 2 に 従ったフリーソフトウェアです。完全に無保証です。

## 目次

- Namazuの基本構成
- mknmzコマンド
  - mknmzコマンド行引数
  - mknmzrcの設定
  - 文書フィルタ
- namazuコマンド
  - namazuコマンド行引数
  - namazurcの設定
  - 基本インデックス
- namazu.cgi
  - namazu.cgiの設置
  - .namazurc の設定
  - 雛形ファイル
  - formの設定
  - インデックスを選択する
  - 複数のインデックスを選択する
  - 補助検索式の利用法
  - 検索結果の言語を選択する
- 付属ツール
  - bnamazu
  - nmzgrep
  - gcnmz
  - mailutime
  - vfnmz
  - rfnmz
  - lnnmz
  - adnmz
  - kwnmz
  - nmzmerge
  - nmzegrep
  - nmzcat
- 検索式
  - 単一単語検索
  - AND検索
  - OR検索
  - NOT検索
  - グループ化
  - フレイズ検索
  - 部分一致検索
  - 正規表現検索
  - フィールド指定の検索
  - 特記事項

## Namazuの基本構成

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コマンド

### mknmzコマンド行引数

        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 および .mknmzrc ではいくつかの設定が行えます。 mknmz は

1. `$(sysconfdir)/$(PACKAGE)/mknmzrc`
   通常は /usr/local/etc/namazu/mknmzrc
2. ~/.mknmzrc
3. -f, --config=FILE オプションで FILE に指定した mknmzrc(等)

の順で設定ファイルを探して読み込みます。複数、見つかった場合 はすべて読み込みます。

インストール直後の状態では `$(sysconfdir)/$(PACKAGE)/mknmzrc-sample` という サンプルファイルが用意されています。これを `$(sysconfdir)/$(PACKAGE)/mknmzrc` にコピーする、 あるいは自分のホームディレクトリに ~/.mknmzrc としてコピーし て利用します。

mknmzrc の設定項目の説明は mknmzrc-sample ファイルにコメント として書かれています。

### 文書フィルタ

mknmz は対象ファイルの文書形式を自動で判別して、適切なフィル タ処理を行います。たとえば、 HTML文書では <title> の抽 出や、HTMLタグの除去を行います。この処理は `$(datadir)/$(PACKAGE)/filter` に置かれる文書フィ ルタによって行われます。標準で用意されている文書フィルタは次 の通りです。

apachecache.pl
  Apacheのキャッシュファイルを扱う
  必需品: なし
  注意: 元のURIへ置き換える場合は mknmzに次のオプションを使用、 --replace=apachecache::replacecode
bzip2.pl
  bzip2で圧縮されたファイルを扱う
  必需品: bzip2 コマンド
compress.pl
  compressで圧縮されたファイルを扱う
  必需品: compressコマンド
deb.pl
  debパッケージを扱う
  必需品: dpkgコマンド
dvi.pl
  dviファイルを扱う
  必需品: dvi2tty, nkf
excel.pl
  Microsoft Excel文書を扱う
  依存フィルタ: html.pl
  必需品: xlhtml, (wvWare に付属の wvSummaryコマンド)
  依存モジュール: extutf8.pl
  代替品: doccat
gnumeric.pl
  Gnumericの文書を扱う
  必需品: gzip コマンド または Compress::Zlib モジュール
gzip.pl
  gzipで圧縮されたファイルを扱う
  必需品: gzip コマンド または Compress::Zlib モジュール
hdml.pl
  HDML文書を扱う
  必需品: なし
hnf.pl
  ハイパー日記システム のファ イルを扱う
  必需品: hnf フィルタは特殊。ハイパー日記システム・プロジェクトか ら Namazu for hns を入手する必要がある
  依存フィルタ: html.pl
html.pl
  HTML文書を扱う
  必需品: なし
koffice.pl
  KOffice の KWord, KSpread, KPresenter, Kivio 文書を扱う
  依存モジュール: extutf8.pl, extzip.pl
macbinary.pl
  MacBinary I,II,III 形式の文書を排除する
  必需品: なし
mailnews.pl
  Mail/News のファイル、mhtml ファイルを扱う
  必需品: なし
  注意: mhtml ファイル、E-mail に添付された Base64 でエンコードされた部分 を扱うには MIME::Base64, MIME::QuotedPrint が必要(Perl5.8では標準で組込済)。利用する際には mknmz に次のオプションを使用、 --decode=base64
man.pl
  man を扱う
  必需品: nroff または groff
  注意: 日本語の man を扱うには -T nippon に対応した groff または jgroff が必要
mhonarc.pl
  MHonArc のファイルを扱う
  必需品: なし
  依存フィルタ: html.pl, mailnews.pl
mp3.pl
  MP3ファイルのID3タグ内データを扱う
  必需品: MP3::Info モジュール(バージョン 1.01 以上)
msword.pl
  Microsoft Word文書を扱う (日本語版は Word 97, 98, 2000, 2002(XP), 2003)
  依存フィルタ: html.pl
  必需品: wvWare
  依存モジュール: extutf8.pl
  代替品: doccat
msofficexml.pl
  Microsoft Office2007 のWord, Excel, PowerPoint OfficeOpenXML 文書を扱う
  依存フィルタ: ooo.pl, zip.pl
  依存モジュール: extutf8.pl, extzip.pl
ooo.pl
  OpenOffice.org の Writer, Calc, Impress, Draw 文書を扱う
  依存モジュール: extutf8.pl, extzip.pl
pdf.pl
  PDF 文書を扱う
  必需品: xpdf (バージョン 0.91 以上を推奨)に付属の pdftotextコマンド
  注意: バージョン 1.00 より前の xpdf にて日本語の PDF 文書を扱う場合、 --enable-japanese で configure されたものが必要
  バージョン 1.00 以降では、Language Support Packages が必要
pipermail.pl
  Mailman/pipermail のファイルを扱う
  必需品: なし
  依存フィルタ: html.pl, mailnews.pl
postscript.pl
  PostScript 文書を扱う
  必需品: ps2textコマンド
powerpoint.pl
  Microsoft PowerPoint文書を扱う
  依存フィルタ: html.pl
  必需品: xlHtml に付属の pptHtmlコマンド, (wvWare に付属の wvSummaryコマンド)
  依存モジュール: extutf8.pl
  代替品: doccat
rfc.pl
  RFCのファイルを扱う
  必需品: なし
rpm.pl
  RPMパッケージを扱う
  必需品: rpm
rtf.pl
  RTF (Rich Text Format) 形式の文書を扱う
  必需品: rtf2html
  代替品: doccat
  依存フィルタ: html.pl
taro.pl
  一太郎 (バージョン 7 〜 13)の文書を扱う
  必需品: doccat
taro56.pl
  一太郎 5, 6 の文書を扱う
  必需品: なし
taro7_10.pl
  一太郎 (バージョン 7 〜 13)の文書を扱う
  必需品: unicode.pl (Perlのバージョンが5.8以上であれば不要), OLE::Storage_Lite モジュール, IO::stringy モジュール
tex.pl
  TeXのファイルを扱う
  必需品: detex
visio.pl
  Microsoft Visio XML図面(.vdx) 文書を扱う
  依存フィルタ: ooo.pl
  依存モジュール: extutf8.pl
zip.pl
  zip圧縮ファイルを扱う
  必需品: unzip コマンド
  代替品: Compress::Zlibモジュール, Archive::Zipモジュール

次の文書フィルタは Windows専用です。Windows環境でのみ動作します。

ichitaro456.pl
  一太郎 4, 5, 6 の文書を扱う
  必需品: JSTXT
  注意: JSTXT は MS-DOS用のツールです。
oleexcel.pl
  Microsoft Excel文書を扱う
  必需品: Microsoft Excel 97 SP1 以降/2000/2002(XP)/2003/2007 のいずれか
  Microsoft Excel 2007文書を扱う
  必需品: Microsoft Excel 2007
  または: Microsoft Excel 2002(XP)/2003および「Word/Excel/PowerPoint 2007 ファイル形式用 Microsoft Office 互換機能パック SP2」
olemsword.pl
  Microsoft Word文書を扱う
  必需品: Microsoft Word 97 SP1 以降/98/2000/2002(XP)/2003/2007 のいずれか
  Microsoft Word 2007文書を扱う
  必需品: Microsoft Word 2007
  または: Microsoft Word 2000/2002(XP)/2003および「Word/Excel/PowerPoint 2007 ファイル形式用 Microsoft Office 互換機能パック SP2」
olepowerpoint.pl
  Microsoft PowerPoint文書を扱う
  必需品: Microsoft PowerPoint 97 SP1 以降/2000/2002(XP)/2003/2007 のいずれか
  Microsoft PowerPoint 2007文書を扱う
  必需品: Microsoft PowerPoint 2007
  または: Microsoft PowerPoint 2002(XP)/2003および「Word/Excel/PowerPoint 2007 ファイル形式用 Microsoft Office 互換機能パック SP2」
oletaro.pl
  一太郎 (バージョン 4) の文書を扱う
  必需品: Microsoft Word 97 SP1 以降/98/2000 のいずれか
  必需品: および Microsoft Office 付属の該当文書コンバータ
  依存フィルタ: olemsword.pl
  一太郎 (バージョン 5 〜 6) の文書を扱う
  必需品: Microsoft Word 97 SP1 以降/98/2000/2002(XP) のいずれか
  必需品: および Microsoft Office 付属の該当文書コンバータ
  依存フィルタ: olemsword.pl
  一太郎 (バージョン 7 〜 13, 2004-2006他) の文書を扱う
  必需品: Microsoft Word 97 SP1 以降/98/2000/2002(XP)/2003/2007 のいずれか
  必需品: および Microsoft Office 付属の該当文書コンバータ
  依存フィルタ: olemsword.pl
olertf.pl
  RTF (Rich Text Format) 形式の文書を扱う
  必需品: Microsoft Word 97 SP1 以降/98/2000/2002(XP)/2003/2007 のいずれか
  依存フィルタ: olemsword.pl
olevisio.pl
  Microsoft Visio文書を扱う
  必需品: Microsoft Visio 2000 以降/2002/2003/2007 のいずれか
  依存フィルタ: olemsword.pl
xdoc2txt.pl
  Microsoft Word,Excel,PowerPoint、一太郎の文書を扱う
  必需品: xdoc2txt.exe
  注意: xdoc2txt.exe は Microsoft Windows 95/98/Me/NT/2000/XP/Vista/Server 2003 用のツールです。

次の Namazu 付属の拡張モジュールは、各種文書フィルタで使用されます。

extutf8 拡張モジュール
  UTF-8 コードを扱う
  必需品: NKF モジュール、 またはPerl 5.8以上、 またはlv コマンド、 またはunicode.pl
extzip 拡張モジュール
  zip 圧縮データを扱う
  必需品: IO::Compress モジュール、 Archive::Zip モジュール (オプション IO::String モジュール)、 または unzip コマンド

## namazuコマンド

### namazuコマンド行引数

        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 および .namazurc ではいくつかの設定が行えます。 namazu は

1. `$(sysconfdir)/$(PACKAGE)/namazurc`
   通常は /usr/local/etc/namazu/namazurc
2. ~/.namazurc
3. -f, --config=FILE オプションで指定した namazurc
   (CGIの場合は namazu.cgi を設置したディレクトリ の .namazurc)

の順で設定ファイルを探して読み込みます。複数、見つかった場合 はすべて読み込みます。

インストール直後の状態では `$(sysconfdir)/$(PACKAGE)/namazurc-sample` という サンプルファイルが用意されています。これを `$(sysconfdir)/$(PACKAGE)/namazurc` にコピーする、 あるいは自分のホームディレクトリに ~/.namazurc としてコピー して利用します。

namazurc の設定項目の説明は namazurc-sample ファイルにコメント として書かれています。

### 基本インデックス

基本インデックスは、検索時にインデックスの指定が省略されたと きに検索対象となるインデックスです。基本インデックスは次の規 則に従います。

- 標準は $(localstatedir)/$(PACKAGE)/index
  通常は /usr/local/var/namazu/index)
- namazurc の Index指示で変更可能

CGI (namazu.cgi) では、インデックスを選択する際に基本イン デックスからの相対パスで指定します。

## namazu.cgi

### namazu.cgiの設置

CGIとして Namazuを利用するには、 namazu.cgi を用います。 namazu.cgi は `$(libexecdir)` ディレクトリ (通常 は/usr/local/libexec) にインストールされます。CGI を設置した いディレクトリに namazu.cgiをコピーすれば設置完了です。

### .namazurc の設定

namazu.cgi を設置したディレクトリに .namazurc ファイルを置く と、CGIの実行時に設定ファイルとして読み込まれます。日本語で 表示するには次の設定が必須です。

`Lang ja`

### 雛形ファイル

雛形ファイルは HTMLでの結果出力の書式を定義するファイル群で す。それぞれの役割は次の通りです。

NMZ.head
  検索結果の冒頭部分
NMZ.foot
  検索結果の末尾部分
NMZ.body
  検索式の説明
NMZ.tips
  検索のコツ
NMZ.result
  検索結果の表示書式

これらのファイルは言語ごとに分かれています。ファイル名の末尾 が .ja で終わるものが日本語用です。末尾に何もついていないも のは英語用です。

### formの設定

formは NMZ.head に定義されています。CGI変数は次の通りです。

query
  検索式の指定です。
max
  一度に表示する検索結果の件数を指定します。
result
  検索結果の表示形式を指定します。
sort
  ソートの方法を指定します。
idxname
  検索するインデックス名を指定します。
subquery
  補助の検索式を指定します。
whence
  検索結果を何件目から表示するかを指定します。
reference
  参考ヒット数を表示するかを指定します。
lang
  検索結果を表示する言語を指定します。

### インデックスを選択する

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 が指定されていないときは、次の規則に従いま す。

- 選択されたインデックスが 1つのとき
  選択されたインデックスの雛形ファイルが用いられる
- 選択されたインデックスが複数のとき
  基本インデックスの雛形ファイルが用いられる

### 補助検索式の利用法

利用者が入力する検索式とは別に、補助検索式を設定できます。た とえば次の例では、検索対象のペイジを選択可能にしています。検 索対象の URIを +uri: で制限しているところが要です。

          <strong>検索対象</strong>
          <select name="subquery">
          <option value="">全体</option>
          <option value="+uri:/^http://foo.example.jp/foo//">fooのペイジ</option>
          <option value="+uri:/^http://foo.example.jp/bar//">barのペイジ</option>
          <option value="+uri:/^http://foo.example.jp/baz//">bazのペイジ</option>
          <option value="+uri:/^http://foo.example.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

bnamazu は Webブラウザと連携して検索を行うツールです。検索結 果を Webブラウザ (標準では lynx ) に渡して 閲覧できます。コマンド行から次のように実行します。

`% bnamazu [-n] [-b browser] [namazu's options] <query> [index]...`

-b オプションで Webブラウザを指定できます。 -n はWebブラウザ が netscape のときのみ有効なオプションです。-n を指定すると、 新しい netscape の新しいウィンドウを開いて検索結果を表示しま す。

### nmzgrep

nmzgrep は namazu コマンドと連携して egrep を実行するツール です。検索にヒットした文書に対して、egrepをかけます。egrep を適用することで、そのキーワードがどの行に出現するかがわかり ます。コマンド行から次のように実行します。

`% nmzgrep [egrep's options] <pattern> [index]...`

たとえば、 ~/Namazu/foobar に置かれているインデックスに対して foo で検索し、ヒットした文書に対してさらに egrep をかけるに は、次のように実行します。

`% nmzgrep foo ~/Namazu/foobar`

### gcnmz

文書の更新・削除を伴うインデックスの更新を繰り返していくと、 インデックス内に不要なデータが溜まっていきます。gcnmz はこの 不要なデータを削除するツールです。コマンド行から次のように実 行します。

`% gcnmz [options] <target>...`

たとえば、 ~/Namazu/foobar に置かれているインデックスをゴミ掃除 するなら、次のように実行します。

`% gcnmz ~/Namazu/foobar`

### mailutime

mailutime は Mail/News のファイルのタイムスタンプを Date: ヘッ ダに合わせるツールです。コマンド行から次のように実行します。

`% mailutime <target>...`

たとえば、 ~/Mail/ml/foobar に置かれているメイルのタイムスタ ンプを変更するなら、次のように実行します。

`% mailutime ~/Mail/ml/foobar/*`

### vfnmz

vfnmz は検索結果の表示を preview するツールです。コマンド行 から次のように実行します。

`% vfnmz <index> [NMZ.result.foobar]`

たとえば、 ~/Namazu/foobar に置かれているインデックスを preview するなら、次のように実行します。

`% vfnmz ~/Namazu/foobar > foobar.html`
`% lynx foobar.html # 出力をブラウザで閲覧する`

### rfnmz

rfnmz は NMZ.field.*.i を再構築するツールです。コマンド行か ら次のように実行します。

`% rfnmz <index>`

たとえば、 ~/Namazu/foobar に置かれている NMZ.field.*.i を再 構築するなら、次のように実行します。

`% rfnmz ~/Namazu/foobar`

### lnnmz

lnnmz は、検索対象の HTML ファイルに含まれるハイパーリンクを抽出し たファイルである NMZ.field.link を作成するコマンドです。lnnmz 実行 時には元のHTML ファイルが読める必要があります。通常は関係ないはず ですが、リモートサイトの検索などで wget などで一時的に取ってきただ けという場合には注意が必要です。コマンド行から以下のように実行しま す。

`% lnnmz [options] <target>...`

たとえば、 ~/Namazu/foobar に置かれているインデックスの NMZ.field.link を作成するなら、次のように実行します。

`% lnnmz ~/Namazu/foobar`

なお、lnnmz は HTML ファイルのリンクしか検出しません。シンプルテキ ストやPDF 他のリンク構造は検出しないだけでエラーなどにはなりません。

### adnmz

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

kwnmz は NMZ.field.keywords を作成するコマンドです。 インデックス作成時に mknmz の --meta オプションで抽出された キーワードはそのまま残し、 それ以外の文書については、単語リストから適当な語を抜き出します。

`% kwnmz [options] <target>...`

### nmzmerge

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

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

nmzcat は mknmz の文書フィルタと連携して 文書ファイルからテキストを 抽出するツールです。mknmz が文書ファイルからどのような情報を抽出しているか を確認することができます。コマンド行から次のように実行します。

`% nmzcat <対象ファイル>...`

注意：nmzcat は、文書ファイルを mknmz の文書フィルタに通しています。 扱うことができるのは、mknmz で対応可能になっている形式のファイルのみです。 mknmz の文書フィルタを呼び出すため多少処理に時間がかかります。

## 検索式

### 単一単語検索

調べたい単語を一つ指定するだけのもっとも基本的な検索手法です。 例:

namazu

### AND検索

ある単語とある単語の両方を含む文書を検索します。検索結果を絞 り込むのに有効です。3つ以上の単語を指定することも可能です。 単語と単語の間に `and` を挿みます。例:

Linux and Netscape

`and` は省略できます。単語を空白で区切って羅列す るとそれらの語すべてを含む文書をAND検索します。

### OR検索

ある単語とある単語のどちらかを含む文書を検索します。3つ以上 の単語を指定することも可能です。単語と単語の間に `or` を挿みます。例:

Linux or FreeBSD

### NOT検索

ある単語を含み、ある単語を含まない文書を検索します。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`
  (Subject: に `Linux`が含まれる文書)
- `+subject:"GNU Emacs"`
  (Subject: に `GNU Emacs`が含まれる文書)
- `+from:foo@example.jp`
  (From: に `foo@example.jp` が含まれる文書)
- `+message-id:<199801240555.OAA18737@foo.example.jp>`
  (Message-Id を指定)

### 特記事項

- いずれの検索方法でもアルファベットの大文字・小文字の区別 はしません。
- 日本語の複合語は形態素単位に分割し、それらを フレイズ検索します。分割は不適切に 行なわれることがあります。
- JIS X 0208 (いわゆる全角文字) の英数字と記号の一部 (ASCIIと重複しているもの) は ASCII (いわゆる半角文字) として 処理されます。
- 記号を含む語の検索ができます。例: `TCP/IP`。 ただし、記号の処理は完全ではないので `TCP and IP` のように分割してAND検索をかけた方が取りこ ぼしがありません (その代わり余計なファイルまでヒットしてしま う可能性があります)。
- 中間一致・後方一致、正規表現、フィールド指定の検索には少 し時間がかかります。
- `and`, `or`, `not` を単語として検索したいときはそれ ぞれ、 `"..."` と2重引用符で、 あるいは `{...}` と中括弧で囲みます。

Namazu Homepage

Copyright (C) 2000-2009 Namazu Project. All rights reserved.
$Id: manual.html,v 1.60.4.65 2009-09-20 18:09:38 opengl2772 Exp $