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'])