namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

mknmz's command line options



Getopt::Long モジュールを使って mknmz のコマンドラインオプショ
ンの解析部を書き換え、長い名前のオプションを使えるようにしま
した。 (次は getopt.c で namazu コマンドの方をいじります)

この作業をしていて気づいたのですが、 mknmz には、ほとんど意
味のないオプションがたくさんあります。たくさんのオプションが
あると、バグの元になるので不要なものは廃止したいと思います。

現在、有効なコマンドラインオプションは次の通りです。

  対象ファイル:
    -a, --all:                すべてのファイルを対象とする
    -e, --robots-txt:         ロボットよけされているファイルを除外する
    -A, --htaccess            .htaccess で制限されたファイルを除外する
    -F, --target-list=file:   インデックス対象のファイルのリストを読み込む
    -t, --target-regex=regex: 対象ファイルの正規表現を指定する

  形態素解析:
    -c, --use-chasen:       日本語の単語のわかち書きに ChaSen を用いる
    -k, --use-kakasi:       日本語の単語のわかち書きに KAKASI を用いる
    -m, --use-chasen-morph: 名詞のみを抽出する

  フィルタ制御:
    -r, --man:         man のファイルを処理する
    -u, --uuencode:    uuencode と BinHex の部分を無視する
    -h, --rfc822:      Mail/News のヘッダ部分をそれなりに処理する
    -M, --no-mhonarc:  MHonArc で作成された HTML の処理を行わない

  文字列処理:
    -E, --no-edge-symbol: 単語の両端の記号は削除する
    -G, --no-okurigana:   送り仮名を削除する
    -H, --no-hiragana:    平仮名のみの単語は登録しない
    -K, --no-symbol:      記号をすべて削除する
    -L, --no-line-adjust: 行頭・行末の調整処理を行わない

  要約:
    -U, --no-encode-url:      URLのencodeを行わない
    -D, --no-insert-headers:  Date:, From: といったヘッダを要約につけない
    -x, --no-heading-summary: HTML のヘディングによる要約作成を行わない


  インデックス作成:
    -P, --no-heading-summary: フレーズ検索用のインデックスを作成しない
    -R, --no-regex-index:     正規表現検索用のインデックスを作成しない
    -W, --no-date-index:      日付によるソート用のインデックス作らない
    -X, --no-field-index:     フィールド検索用のインデックスを作らない
    -Y, --no-delete:          削除された文書の検出を行わない
    -Z, --no-update:          文書の更新/削除を反映しない

  その他:
    -s, --checkpoint:       チェックポイント機構を作動させる
    -q, --quiet:            インデックス処理の最中にメッセージを表示しない
    -I, --include=file:     カスタマイズ用ファイルを読み込む
    -O, --output-dir=dir:   インデックスファイルの出力先を指定する
    -T, --template-dir=dir: NMZ.{head,foot,body}.* のディレクトリを指定する
    -l, --lang=lang:        言語を設定する ('en' or 'ja')
    -v, --version:          ヴァージョンを表示する
    -0, --help:             このヘルプを表示する


私の改善案。

!    -e, --robots-txt:         ロボットよけされているファイルを除外する
!    -A, --htaccess            .htaccess で制限されたファイルを除外する

この 2つは統合する。

     -t, --allow-regex=regex: 対象ファイルの正規表現を指定する
+    -d, --deny-regex=regex:   対象外にしたいファイルの正規表現を指定する

--deny-regex=regex を追加


-    -r, --man:         man のファイルを処理する

man ファイルの自動認識をするコードを追加し、このオプションは
廃止する。(自動認識は /^\.TH / で OK でしょう)


-    -h, --rfc822:      Mail/News のヘッダ部分をそれなりに処理する

これも自動認識にする。自動認識のコードは次のようなものでよい
でしょう。

  $field = 0;
  while (空行が現れるまで) {
      $field++ if /^(To|From|Subject|Message-ID|Date|Received|Newsgroups): /;
  }

  if ($field >= 3) {
     これは Mail/News だろう
  }

-    -M, --no-mhonarc:  MHonArc で作成された HTML の処理を行わない

これは廃止。

-    -L, --no-line-adjust: 行頭・行末の調整処理を行わない

これは廃止。


!  要約:
!    -U, --no-encode-url:      URLのencodeを行わない
!    -D, --no-insert-headers:  Date:, From: といったヘッダを要約につけない
!    -x, --no-heading-summary: HTML のヘディングによる要約作成を行わない

要約作成はカスタマイズ可能にする。詳細は未定。 (NMZ.f と 
NMZ.field.* を統合する)


-  インデックス作成:
-    -P, --no-heading-summary: フレーズ検索用のインデックスを作成しない
-    -R, --no-regex-index:     正規表現検索用のインデックスを作成しない
-    -W, --no-date-index:      日付によるソート用のインデックス作らない
-    -X, --no-field-index:     フィールド検索用のインデックスを作らない

この辺はすべて廃止したい。(バグの元)

     -Y, --no-delete:          削除された文書の検出を行わない
-    -Z, --no-update:          文書の更新/削除を反映しない

--no-delete を残して --no-update を廃止。

!    -0, --help:             このヘルプを表示する

-0 は変すぎる。が、 -h はすでに使われているし、 -? はなぜか 
Getopt::Long が解釈してくれません。 namazu コマンドとの整合
性も考慮して、コマンドラインオプションの識別子を見直す必要が
あります。 (互換性は無視してよいでしょう)

ご意見をくださいませ。

-- Satoru Takabayashi