# rbnamazu 0.4

$Id: rbnamazu.rd.ja,v 1.3 2000/12/03 16:24:05 ryu Exp $

[English | Japanese]

## rbnamazuとは

全文検索システムNamazuの Ruby版検索用クライアントです。

単独でRubyスクリプトによるNamazuインデックスの検索ができます。付属の スクリプトで、コマンドラインまたはCGIとして動作します。(ただし、コマ ンドラインとして使うには OptionParser のver.0.7以降が必要です。)

本家検索クライアントnamazuとは以下の点で異なります。

基本的な動作

1. Namazu-2のindexにしか対応していない

.namazurcまわりについて

1. .namazurcを1つしか読み込まない
2. loggingを未実装
3. lang切り替えを未実装
4. scoringの計算が多少異なる
5. EmphasisTagsを未実装

オプションまわりについて

1. defaultで'--all'の動作
2. '--output=FILE'を未実装
3. '--quiet'を未実装
4. '--debug'を未実装

## rbnamazu 0.3 との違い

- スコア計算方法を変更
  - 単独検索、フレーズ検索、正規表現検索、NOT検索ではtfidf法を使わない。 (tfidf法はAND検索とOR検索のみ。)
  - フレーズ検索でのスコアは、フレーズ構成語の各スコアの平均を取る。
  - 正規表現検索でのスコアは、マッチした語の各スコアの最高を取る。
- 複合検索を多少高速化
- ArrayかHashを継承していたクラスをモジュールに変更。 (Marshal.load()したインスタンスがrbnamazuなしでも扱える。)
  - Namazu::ScoreResultクラス → Namazu::ScoreResultHashモジュール
  - Namazu::Summaryクラス → Namazu::SummaryArrayモジュール
  - Namazu::Documentクラス → Namazu::DocumentHashモジュール
- Namazu::{Score,Word,Time,Field,FieldAll,Phrase}の各インスタンスに open()とclose()のメソッドを追加。
- Namazu::SummaryArray#max() → Namazu::SummaryArray#maxlength() (Enumerable.max() と重なっていたため)
- 一部のメソッド名をより一般的なものに変更。
  - Namazu#search() → Namazu#query()
  - Namazu#result() → Namazu#query_and_format()
  - Namazu#nmz{options,config,indices,summarizer,formatter}() → Namazu#{options,config,indices,summarizer,formatter}()
  - Namazu::Index#nmz{dirname,score,word,time,field,phrase}() → Namazu::Index#{dirname,score,word,time,field,phrase}()

## rbnamazu 0.2 との違い

- 複数のインデックスを扱える
- 正規表現検索とフレーズ検索を高速化
- 文章整形関係のクラス構造
  - 複数インデックスの検索結果をまとめるNamazu::Summarizer
  - Namazu::Summaryをhtmlなどに変換するNamazu::Formatter

## ダウンロード

- ftp.namazu.org
- www.namazu.org

## インストール

ライブラリ部分(rbnamazu.rb, nmzqr.rb, nmzqr.tab.rb, nmzdoc.rb)を、 Rubyのライブラリが読み込まれる適当なディレクトリ ( `ruby -e 'puts $LOAD_PATH'` で表示されるディレクトリ ) にコピーして下さい。

## 使い方

コマンドラインで使用

- `namazu.rb [オプション] <検索式> [インデックスディレクトリ]`
- `namazu.rb --help` でオプションの詳細がでます。

CGIで使用

- CGIが実行可能なディレクトリにnamazu.rbと.namazurcファイルを置い て下さい。

## ライセンス

rbnamazuはフリーソフトウェアです。NamazuかRubyと同等の条件の下で使用 /配布/改造ができます。

大島 龍之介 ryu@jaist.ac.jp

# rbnamazu

rbnamazu ライブラリの説明

# Class Namazu

    nmz = Namazu.new(['/namazu/index1/', '/namazu/index2/'])
    puts nmz.query_and_format('foo and (/bar/ or baz*) not {foo bar}')
    p nmz.query('foo and (/bar/ or baz*) not {foo bar}', 20, 0)

## Superclass:

    Object

## Class Methods:

Namazu.new(index_list, options)

  index_listはインデックスディレクトリを示す文字列のArray。 optionsは各種オプションを格納したHash。

## Methods:

Namazu#query_and_format(querystring, max = nil, whence = nil)

  検索式querystringに該当する文書を検索し、結果を文字列で返す。 max,whence が指定されていれば、whence番目からmax数までの部分を返す。

Namazu#query(querystring, max = nil, whence = nil)

  検索式querystringに該当する文書を検索し、結果のArrayを返す。各結果 はfield名と内容からなるHash。max,whenceが指定されていれば、whence 番目からmax数までの部分を返す。

# module Namazu::SummaryArray

    Arrayにincludeされる検索結果モジュール。ヒットした文書数、参照ヒッ
    ト数、文書IDなどを保持する。

## Methods:

Namazu::SummaryArray#hitnum()

  ヒットした文書数を返す。

Namazu::SummaryArray#hitref()

  参照ヒット数を可読の文字列として返す。

Namazu::SummaryArray#[i]

  ヒットしたi番目の文書(フィールドのHash)を返す。