namazu-ml(avocado)


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

Plan for Namazu next version



高林です

次のヴァージョンの Namazu の計画をまとめてみました。ひとまず小さな
フィックスを行った v1.1.1 をリリースしておいて、そのあとで大きな変
更を行おうかと思います。

ちなみに、この内容は以前にウェブ・ページに置いておいた ToDo という
ファイルの内容に手を加えたものです。何か意見がありましたらよろしく
お願いします。


次のヴァージョン (v1.1.1) の予定
	
	* NOT 演算の実装 (2項演算子になります)
	* namazu.conf ファイルで各種設定を行えるようにする
	* Win32 使用時の --WIN32 という実行時のオプションを廃止
	* GNU Win32 がなくても Win32 で mknmz が動くようにする
	* Win32 用のバイナリ配布パッケージの作成 (KAKASI のバイナリ
	  と山下さんによる Win32 用検索フロントエンドも配布したいです)
	* MIME Multipart の Mail/News から text/(plain|html) 以外を除外す
	  るフィルタを作成
	* hypermail 用のフィルタの作成 (あんまり需要ないかな?)
	* lynxcgi への対応を考慮して POST メソッドへ対応
	* ドキュメントの整備
	* Makefile の整備
	* <TITLE> 〜 </TITLE> に改行コードが含まれていたときに検索結果の
	  表示で score の位置がずれてしまう不具合を修正
	* srnmz.c の usage でディフォルトで参照するディレクトリを表示する
	* Makefile 中の KAKASI, ChaSen のパスが srnmz.c に反映されていなかっ
	  た不具合を修正

その次のヴァージョン (v1.2.0) の予定

	* 複数のデータベースに検索をかけられるようにする
	* 真面目に日付でソートできるようにする
	* 欠番情報 (日付情報と共用) を使って文書の削除を行えるよう
	  にする
	* title:, subject:, author:, from:, url:, message-id といっ
	  た特定のフィールドに絞った検索ができるようにする

その後
	* NMZ.slog の統計情報を用いた Suggestion (関連語表示) 機能
	  (同時に検索されたキーワードを元に分析。昔の ODIN にあったもの)
	* カタカナ語の曖昧検索
	  (ヴァ<->バ とか ユーザ<->ユーザー とか簡単な規則なら楽そう)
	* KAKASI/ChaSen の内蔵、または自前でわかち書き
	* XML/SGML への対応
	* インデックスを圧縮して保存
	* 全面的に設計をやり直しコードを書き直す (もっと勉強してから…)

	
他力本願:-)

	* manpage の作成
	* TeX, PS, PDF, Word文書 など用の各種フィルタ
	* 各種 PC-UNIX 用のパッケージ作成
	  (まずはパッケージにしてもらえるほどに完成度を高くしないと…)
	* 検索用 Emacs Lisp の作成
	* GUI な検索クライアント (Tcl/Tk 等), Win32 用のもの
	
	
難しいもの

	* 中間一致、後方一致、正規表現で検索
	* インデックスの追加の効率改善
	  (上の二つは今の安直なデータ構造ではほぼ不可能です)
	* 英語版の作成
	  (需要あまりなさそう。文書の英訳が…)

	
実現が極めて困難なもの

	* ネットワークで分散型データベース
	  (これは吉岡さんの研究と連動できれば面白いのですが)
	* Multilingualization/Internationalization
	* JAVA 化


おまけとしてウェブ・ページに置いておいたメモ書きを添付しておきます。
こちらもご意見がありましたらよろしくお願いします。

--
高林 哲 Satoru Takabayashi
		     Namazu のための覚え書き

1/12/98 版

# この文書は自分が忘れないために覚え書きとして保存しておくものです。
# テストで二月まで身動きがとれないものですから…。文章がメール調な
# のは元がメール用に書いたものだったからです。

テストが近づくとついつい他のことを考えてしまうものですが、 Namazu 
の拡張についてあれこれ考えてみました。

まずは複数のデータベースに検索をかけて結果をマージして出力する方法
がです。これは案外簡単に実現可能と思われます。具体的にはインデクサ
の変更はゼロで、検索プログラムを少し変更するだけです。

考えてみれば、データベース毎に別々に検索をかけてそれを最後にマージ
してソートするだけなんですよね。ただし、各データベースには同じファ
イルがインデックスされていないという条件付きですが。

Namazu では『ファイルの ID』と『スコア』を一組にして扱っています
から、検索プログラム側で『データベースの ID』をつけたして処理すれ
ばいいわけです。これくらいなら簡単に実現できるはずです。

しかし、この方法を取ると Mail/News の擬似的な日付によるソート機能
が働かなくなります。真面目に日付でソートさせるにはインデックスに日
付の情報を入れておけばいいのですが、それもそんなに難しくはなさそう
です。

単純に考えれば『ファイルの ID』『スコア』に加えて『日付』をインデッ
クスに一緒に並べるだけです。『日付』は Mail/News ならヘッダから取
得すれば良さそうです。その他ならファイルのタイムスタンプから取得し
ます。ただ、これを実装するとインデックスのサイズが大きくなってしま
うのが欠点です。

NMZ.i に『日付』を記録するのは効率が悪いので、 NMZ.d などとして別
に保存した方が良さそうです。そして、日付でソートする必要があった時
はこれを参照するという具合いです。

さらに、この NMZ.d の値が -1 だった場合はその『ファイル ID』は「欠
番」として扱うという利用方法も考えられます。つまり、インデックスか
ら特定のファイルの登録を削除したい場合は NMZ.d の該当部分を -1 に
書き替えて、 NMZ.r からそのファイルの名前を削除するだけで完了する
わけです。

ただし、これを繰り返していくとインデックスが穴だらけになってくるの
で、この穴をつめるツールを別に用意する必要がでてきます。まあこれは
一度全体をインデックスしなおせば良いので穴をつめるツールをわざわざ
用意しなくてもいいかもしれません。

# この「欠番」のアイディアは HP (Hewlett-Packard) のある方から頂き
# ました。


それから、 ODIN の Freya みたいに検索式に title:, author: と指定し
て検索する方法も考えてみました。これは『スコア』のフィールドの上位
何 bit かをフラグとして使えば実現しそうです (スコアに 32 bit もい
らないでしょうから) 。 Mail/News を考えると subject:, from:,
message-id: といった指定も欲しいですね。

title: と subject: は同じで、 from: と author: も同じで良いでしょ
う。他にも何か特別なフラグがあると面白いかもしれません。

以上に述べた機能は二月になればコーディングを開始できると思われます。
一人でアイディアを考えるのもあれなので、テストから解放されたら 
Namazu メーリングリストを作りたいと思っています。もし作ったら参加
してくださる方はいるかしらん。

--
高林 哲 Satoru Takabayashi