検索方法について

本文の検索条件

検索条件として調べたいテキストを書くことで 指定したテキストが本文に含まれる文書を検索します.

Rast

検索条件には,単語だけでなく任意のテキストを指定できます.

今日は晴れちょうけん,どこだいへ行かや.
C++

上記のように方言を含むテキストや,記号を含む特殊な固有名詞も 検索することができます.

特殊文字*1を含むテキストは " (ダブルクウォート)で囲んでください.

"This is a pen."
"Rast 0.1's special search characters are &|!-():=<>."

もちろん,特殊文字を含まない場合にも " を使うことができます.

"今日"

複数の検索条件の指定

空白区切りで複数の検索条件を指定した場合, 全ての検索条件に適合する文書が得られます.

今日は 行かや

上記の場合,`今日は' と `行かや' の両方を含む文書が検索されます.

属性情報の検索条件

ファイルから抽出した属性情報から以下の方法で検索することができます. いずれも

属性名 条件指定記号 属性値

のように指定します.

: (部分一致検索)

指定したテキストが含まれている文書を検索します.

例えば,`title' 属性に `theory of rela' を含む文書を検索する条件は, 以下のようになります.

title : "theory of rela"

= (完全一致検索)

指定した属性である文書を検索します.

filename 属性が `relativity.txt' である文書の検索条件は, 以下のようになります.

filename = relativity.txt

<, <=, >=, > (大小比較検索)

指定した属性値よりも小さい,等しいかより小さい, 等しいかより大きい,より大きい文書を検索します. 以下のように指定します.

last_modified > "2005-03-09"
filesize < 100

範囲を指定する場合は,複数の条件を指定することができます.

例えば,last_modified 属性が `2005-03-01' から `2005-04-01' までの 文書の検索条件なら,以下のようになります.

"2005-03-01" <= last_modified < "2005-04-01"
last_modified >= "2005-03-01" last_modified < "2005-04-01"

演算子による複合検索条件

以下の演算子を用いることで,複数の検索条件を組み合わせた複合的な 検索を行うことができます. 演算子の優先順位は全て同じで,左結合で評価されます.

& (AND演算子)

両辺の検索条件の両方に適合する文書を検索します.

本文に `今日は' を含み,かつ `行かや' を含む文書の検索条件は, 以下のようになります.

今日は & 行かや

AND演算子を使うと,検索条件ごとに空白で区切る場合よりも,結合強度が 高くなります.

| (OR演算子)

両辺の検索条件のいずれかに適合する文書を検索します.

本文に `今日は' か `明日は' を含む文書の検索条件は, 以下のようになります.

今日は | 明日は

! - (NOT演算子)

左辺の検索条件に適合し,右辺の検索条件には適合しない文書を 検索します.

本文に `今日は' を含み,かつ `雨' を含まない文書の検索条件は, 以下のようになります.

今日は - 雨

以下のようにも書けます.

今日は ! 雨

多くのプログラミング言語とは異なり,! は単項演算子ではなく,二項演算子 である点に注意してください.

グループ化

複数の検索条件や演算子による絞り込みを括弧で組み合わせ, 一つの検索条件として扱えます.

本文に `晴れた日' か `雨の日' を含み, かつ `date' 属性が `2005-03-01' から `2005-04-01' までの文書の検索条件は, 以下のようになります.

( 晴れた日 | 雨の日 ) & ( date >= "2005-03-01" date < "2005-04-01" )

正規化について

標準添付されている utf8 エンコーディングモジュールは,インデックスの作成時 や検索時に,入力テキストに対して以下のような正規化を行います.

これらの正規化により,全角/半角や大文字/小文字などを区別しない検索が行われます.

これらの正規化が気に入らない場合は, 別のエンコーディングモジュールを書くことで対応できます.


*1現状では,空白文字と &|!-():=<> などの一部の記号
*2 Unicode Standard Annex #15 Unicode Normalization Forms