=begin =Namadu-0.3 =Namadu rbnamazu-0.3をベースとした 分散namazu ライブラリ。 namazu-0.0と互換性はありません。 NamaduはdRubyを使ったnamazuサービスを提供する。 ほとんどの機能をrbnamazuで実現している。 rbnamazu への改造はないがメソッドやクラスを再定義しているので、 実質的には rbnamazu を書き換える。 # 生成 nmz = Namadu.new(['/foo/idx1/', '/foo/idx2/', '/foo/idx3/']) # 検索 docs, num_docs, ref_hits = nmz.search('foo bar', 'field:size:ascending') 実行には MutexM (mutexm-0.9.1以降) が必要です。 MutexMはhttp://www2a.biglobe.ne.jp/~seki/ruby にあります。 ==rbnamazuへの変更 分散サービス実現のため、スレッドセーフ化と検索結果クラスの変更が必要となった。 rbnamazu本体へのコードでの変更はないが、namadu.rb で rbnamazu の クラスやメソッドを変更している。主な変更点は次の通り。 * インデックス・ファイルへのアクセスを排他制御。 * Summarizer, QueryParser 等、検索ごとに状態が変わるオブジェクトを 検索ごとに生成する。 * 検索結果を Array と Hash に変更。 ==Superclass: Object ==Class Methods: --- Namadu.new(index_list) namazuクラスを生成する。indexのディレクトリ名のリストを与える。 ==Methods: --- Namadu#search(words, max=nil, whence=nil, sortkey=nil) 配列wordsのキーワードを含む文書を検索し、そのサマリのリスト、 該当した文書数、参照ヒット数を返す。 max != nil のとき、whenceからmax件のみのサマリが返る。 ソートキー sortkey は namazu の option と同じ表記で示す。 Copyright (c) 2000 Masatoshi SEKI (()) =end