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


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

目次

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.4, Namazu のインデックス作成プログラム 
    
    使い方: mknmz [options] <target>...
    
    対象ファイル:
      -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=INT          変更日制限 find(1) の -mtime と同じ規則
                               例: -50 で 50 日以内、+50 で 50 日より古いものだけ
    
    形態素解析:
      -c, --use-chasen        日本語の単語のわかち書きに ChaSen を用いる
      -k, --use-kakasi        日本語の単語のわかち書きに KAKASI を用いる
      -m, --use-chasen-noun   名詞のみを抽出する
    
    文字列処理:
      -E, --no-edge-symbol  単語の両端の記号は削除する
      -G, --no-okurigana    送り仮名を削除する
      -H, --no-hiragana     平仮名のみの単語は登録しない
      -K, --no-symbol       記号をすべて削除する
    
    要約:
      -U, --no-encode-uri       URIのencodeを行わない
      -x, --no-heading-summary  HTML のヘディングによる要約作成を行わない
    
    
    インデックス作成:
          --update=INDEX        更新するインデックスを指定する
      -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           口やかましいモード
          --debug             デバッグモード
          --help              このヘルプを表示する
    
    バグ報告は <bug-namazu@namazu.org> へどうぞ

mknmzrcの設定

mknmzrc および .mknmzrc ではいくつかの設定が行えます。 mknmz は

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

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

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

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

文書フィルタ

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

gzip.pl
gzipで圧縮されたファイルを扱う
必需品: gzip コマンド または Compress::Zlib モジュール
bzip2.pl
bzip2で圧縮されたファイルを扱う
必需品: bzip2 コマン ド
compress.pl
compressで圧縮されたファイルを扱う
必需品: compressコマンド
excel.pl
Excel文書を扱う
必需品: xlHtml
代替品: doccat
hnf.pl
ハイパー日記システム のファ イルを扱う
必需品: hnf フィルタは特殊。ハイパー日記システム・プロジェクトか ら Namazu for hns を入手する必要がある
html.pl
HTML文書を扱う
必需品: なし
mailnews.pl
Mail/News のファイルを扱う
必需品: なし
man.pl
man を扱う
必需品: nroff または groff または jgroff
注意: 日本語の man を扱うには -T nippon に対応した groff または jgroff が必要
mhonarc.pl
MHonArc のファイルを扱う
必需品: なし
msword.pl
Word文書を扱う (日本語版は Word 97, 98, 2000)
必需品: wvWare, lv
代替品: doccat
pdf.pl
PDFファイルを扱う
必需品: xpdf に付属の pdftotextコマンド
rfc.pl
RFCのファイルを扱う
必需品: なし
tex.pl
TeXのファイルを扱う
必需品: detex
powerpoint.pl
PowerPoint 97, 2000 の文書を扱う
必需品: doccat
taro.pl
一太郎 9, 10 の文書を扱う
必需品: doccat

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

ichitaro456.pl
一太郎 4, 5, 6 のファイルを扱う
必需品: JSTXT
注意: jstxt.exe は Windows用のツールです。
oleexcel.pl
Excelのファイルを扱う
必需品: Excel
olemsword.pl
Word文書を扱う
必需品: Word
olepowerpoint.pl
Power Point のファイルを扱う
必需品: Power Point

namazuコマンド

namazuコマンド行引数

    namazu 2.0.3, 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              このヘルプを表示する
    
    バグ報告は <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 ファイルにコメント として書かれています。

基本インデックス

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

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 value="bar">bar
      <option value="baz">baz
      </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><input type="checkbox" name="idxname" value="bar">bar
      <li><input type="checkbox" name="idxname" value="baz">baz
      </ul>

この例では foo, bar, baz から複数選択して検索できます。検索 結果に使われる雛形ファイルは namazurc の Template指示で指定したディレクトリのものが用いら れます。Template が指定されていないときは、次の規則に従いま す。

補助検索式の利用法

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


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

検索式

単一単語検索

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

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 のファイルを扱う際に効果を発揮 します。例:

特記事項


Namazu Homepage

$Id: manual.html,v 1.47 2000/04/10 04:43:39 satoru Exp $
developers@namazu.org