namazu-ml(ring)


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

plan for Namazu v2.0



本日、ふとしたきっかけでやる気に目覚めました。今すぐ Namazu
v2.0 の開発に着手します。以前に言っていた v2.0 は Perl です
べて書き直すという案はボツにします。また、 v1.4 のリリースは
見送ります。

v2.0 といっても、大幅な機能拡張をするわけではなく、これまで
の路線の集大成として完成させます。つまり、基本は変わらず、全
体に垢を落として refine させるだけです。

現在、考えている案は次の通りです。足りない点があれば提案して
ください。この程度の改良なら一週間、部屋に閉じこもって作業す
れば実現できるでしょう。が、実際にはそうもいかないので、 5月
末をめどとして完成を目指します (できるのか?)。

  * v1.3.0.x までとの互換性を無視
  * 長い名前のコマンドラインオプションを実装
    - getopt.c と Getopt::Long を使うだけ
  * インデックス作成時の URL置き換えを柔軟にする
    - たとえばこんな感じ
      % mknmz --replace-url='s!/foobar/www/!http://foobar.jp/!' 
  * mknmz の引数としてディレクトリやファイル, URLを複数同時
    に指定可能にする (xargsが使える)
  * -F オプションを拡張
    - URL指定に対応 (文書読み込みに lynx なりを用いればよい)
    - 排他指定を可能にする (このディレクトリはインデックスし
      ないという指定)
    - 末尾に / がついていなくてもディレクトリは展開する
  * 文書読み込み部の抽象化 (APIを定義し、拡張性を高める)
    - 新しい文書形式への対応を容易にする
      e.g. Word文書, PDF, http://, ftp://, news://
    - 画像・音声ファイルのコメント情報を元にインデックスを作る
  * フィルタ部の抽象化 (APIを定義し、拡張性を高める)
    - 新しい文書形式への対応を容易にする
  * 文書読み込み部とフィルタ部の統合 (APIを定義し、拡張性を高める)
  * <a name="..."> や <xxx id="..."> に対応
    - 実装がちと難しそう (やめるかも)
  * mknmz -n を実装
    - make -n と同じ意味
  * NMZ.f のフォーマットを変更し、 NMZ.field.* と統合する
    - 現在のフォーマットは柔軟性ゼロな上にサイズ効率が悪い
  * NMZ.{total,keys} を廃止
    - 大切なデータは一つのファイルに保存する
  * .namazurc の書式変更
    - タブを強制するなんて最低。 空白・タブ区切りにする
    - 空白記号 (0x20) を含む文字列は "..."  でくくる
    - ~/ を $HOME で展開する
  * .namazurc の構文エラーを検出する
  * DoS 対策
    - 中間・後方一致、正規表現、フィールド指定での検索を抑制 
    - IPアドレス、ドメイン名によるアクセス制御
  * Replace と Alias をもっときれいに書く (namazu)
    - 現在の LIST の実装は最低
  * gettext 化
    <http://hp.vector.co.jp/authors/VA001240/article/msgcat.html>
  * コメントをすべて英語にする
  * 文書整備 (いろんな面で)

# v2.0 を完成させれば Namazu から手を引いて学業に専念できる
# ようになるかな?

p.s.
先日、とある方と suffix array の考え方を応用できないものかと
話し合いました。うまくいけば、わかち書きに依存しない形の全文
検索システムが作れるかもしれません。当分、先の話ですが。

-- Satoru Takabayashi