Namazu-devel-ja(旧)


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

Re: rbnamazu CVS



咳といいます。はじめまして。

> #野望ですが、rbnamazuの開発の中で設計に関しても積極的に
> #議論したいということもあって、そういうのがrbnamazuだけで
> #閉じてしまうのはもったいないかなと。
> #(yaiba http://www.rr.iij4u.or.jp/~hideto-i/yaiba/index.html
> #とか、分散namazu[ruby-list:22919]とか、namazuに対する
> #要求がrubyistから結構出そうな感じなので)


大島さんのrbnamazu.rbに感激し、namadu というライブラリを書きました。
namaduはrbnamazu.rbを利用して、検索に特化し部品化を進めたものです。

分散オブジェクトとして利用されることも想定してますが、
通常のライブラリとして使用することもできます。


□ rubyなnamazuのライブラリとして、次のような特徴があります。

・HTML化やCGIなどの処理はなく、検索に特化してます。
  → 検索以外の機能はRubyの既存の部品を利用したい人が多そう

・結果のロウとしてフィールド値の Hash あるいは、
  任意のフィールド順の Array が選べます。

・rbnamazu.rbは変更なし


□ また、分散なnamazuとして、次のような実験をしてます。

・複数のマシンにある Namadu に同時に検索をかけ、それをまとめて返す。
  よくある「このサイトの検索」を複数束ねて一つの検索システムとして
  見せることができます。
  マシンを越えたインデックスを同時に扱えるといった感じ。
  同梱のnuma.rbがその試作版です。


namadu-0.0は次のURLに置いてあります。別途 rbnamazu.rb が必要です。

  http://www2a.biglobe.ne.jp/~seki/ruby/
  http://www2a.biglobe.ne.jp/~seki/ruby/namadu-0.0.tar.gz



Namadu使用例
ex.1
  # Message-Id: <20000530172330Q.satoru-t@xxxxxxxxxxxxxxxxxx>
  # X-Mail-Count: 00538
  # で紹介されたCのサンプルコード風な例

  # インデックスのリストを指定して Namadu を生成
  index_set = ['/foo/bar/index1/', '/foo/bar/index2/']
  nmd = Namadu.new(index_set)

  # foo, bar を含む文書を検索し、score順にソートする
  r = nmd.search(['foo', 'bar'], 'score')

  # whence=10, max=20の文書からそれぞれ uri, summary を取り出し印字
  r.result(['uri', 'summary'], 20, 10) do |doc|
    p doc
  end


ex2
  nmd = Namadu.new(index_set)
  # 検索し、文書の情報、ヒット数、参照ヒット数を返す。
  # docsは文書の各フィールドがHashで表現されたものが入る
  docs, num_docs, ref_hits = nmd.query(['foo', 'bar'])