この節では,Bibliotheca21 Standardでのいろいろな検索方法を例題とあわせて説明します。
(1) 例題の使い方
例題は,図2-6および図2-7に示す構造の文書を格納したテキストデータベースを想定しています。
図2-6 例題に使用するテキストデータベース(検索対象ファイル)に格納された文書の構造
図2-7 例題に使用するテキストデータベース(関連情報ファイル)に格納された文字列の構造
例題は,TS2MFIND関数,TS2MSORT関数,またはTS2MCONCEPT関数に指定する条件式の形式で説明しています。
TS2MFIND関数,TS2MSORT関数,またはTS2MCONCEPT関数の詳細については,「3. 関数の文法」を参照してください。
例題の見方について説明します。
(2) 条件式(TS2MFIND関数)の例題
検索(TS2MFIND関数)に使用する条件式の例題を,表2-6~9に示します。なお,表2-6~9に示す例題での検索対象ファイル名は「FindFile」としています。
表2-6 検索条件式を使用した例題
項番 | 検索の種類 | 検索の内容 | 記述例 |
---|---|---|---|
1 | 検索タームを1語指定した検索 | 「最新技術」を含む文書の検索 | FindFile:eq('最新技術') |
2 | 構造名を指定した検索 | <本文>に「最新技術」を含む文書の検索 | FindFile<文書.本文>: eq('最新技術') |
3 | 検索タームにワイルドカードを指定した検索 | 任意の2文字で始まる「システム」という語を含む文書の検索 | FindFile:eq ('??システム') |
4 | <本文>に「M」で始まり「Y」で終わる文字列を含む文書の検索 | FindFile<文書.本文>: eq('M*Y') | |
5 | 「How?」を含む文書の検索 | FindFile:eq('How¥?') | |
6 | 検索ターム同士の論理積 | 「最新」および「情報」の両方を含む文書の検索 | FindFile: fand('最新','情報') |
7 | ランキング検索 | 「最新」および「情報」の両方を含む文書を検索する。ただしそれぞれの検索タームが多く含まれる文書から取り出す | FindFile: fand('最新','情報'), RANK COUNTS SORT |
8 | 検索タームに重みを付けた検索 | 「最新」および「情報」の両方を含む文書を検索する。ただし「最新」に5倍の重みを付ける | FindFile:for ('最新'[5],'情報'), RANK COUNTS SORT |
9 | 検索ターム同士の論理和 | 「最新」または「情報」を含む文書の検索 | FindFile: for('最新','情報') |
10 | 近傍条件検索 | 「最新」と「情報」の間の文字数が20文字ちょうどの文字列を含む文書の検索 | FindFile: c=20('最新','情報') |
11 | 「最新」と「情報」の間の文字数が20文字ちょうどで,かつ「最新」と「情報」の順序で現れる文字列を含む文書の検索 | FindFile: C=20('最新','情報') | |
12 | 「最新」と「情報」の間の文字数が20文字以下の文字列を含む文書の検索 | FindFile: c<=20('最新','情報') | |
13 | 「最新」と「情報」の間の文字数が20文字以上の文字列を含む文書の検索 | FindFile: c>=20('最新','情報') | |
14 | 同義語・異表記展開検索 | 「PC」を含む文書を検索する。ただし,同義語展開,アルファベット異表記展開および全角・半角異表記展開した結果も条件にする | FindFile:eq('PC'), EXPANS Uae |
15 | 繰り返し構造に対する検索 | <章>に「最新」と「情報」を含む文書を検索する。ただし「最新」と「情報」は同じ章にある文書を検索 | FindFile <文書.本文.章>: fand('最新','情報') |
16 | タグ属性を条件にする検索 | <本文>の属性"security"の値が"secret"である文書を検索 | FindFile<文書.本文: security>: eq('secret') |
表2-7 複合条件式を使用した例題
項番 | 検索の種類 | 検索の内容 | 記述例 |
---|---|---|---|
1 | 検索条件式同士の論理積 | 「PC」を含む文書,および「最新」と「情報」の間の文字数が20文字ちょうどの文字列を含む文書の論理積を求める検索 | AND (FindFile:eq('PC'), FindFile:c=20('最新', '情報')) |
2 | 複数の構造を指定した検索 | <要旨>に「インターネット」を含み,かつ<本文>に「PC」を含む文書の検索 | AND (FindFile<文書.要旨>: eq('インターネット'), FindFile<文書.本文>: eq('PC')) |
3 | 構造に重みを付けた検索 | <要旨>に「インターネット」を含むか,または<本文>に「PC」を含む文書を検索する。ただし,構造名<本文>に10倍の重みを付ける | OR (FindFile <文書.要旨>: eq('インターネット'), FindFile<文書.本文>[10]: eq('PC')), RANK COUNTS SORT |
4 | 検索条件式同士の論理和 | 「PC」を含む文書,および「最新」と「情報」の間の文字数が20文字ちょうどの文字列を含む文書の論理和を求める検索 | OR (FindFile:eq('PC'), FindFile:c=20 ('最新','情報')) |
5 | 検索結果同士の論理積 | IDが10および12の検索結果集合に含まれる文書IDごとの論理積を求める検索 | AND(SET(10),SET(12)) |
6 | 検索結果の否定 | 「社会」という単語が存在しない文書の検索 | NOT (FindFile:eq('社会')) |
7 | 見出しに「社会」が存在し,かつ本文に「政治」が存在する文書以外の文書の検索 | NOT (AND(FindFile<章.見出し>: eq('社会'), FindFile<章.本文>: eq('政治'))) | |
8 | 見出しに「社会」が存在するか,または本文に政治が存在しない文書の検索 | OR (FindFile<章.見出し>: eq('社会'), NOT(FindFile<章.本文>: eq('政治'))) |
表2-8 特定構造検索条件式を使用した例題
項番 | 検索の種類 | 検索の内容 | 記述例 |
---|---|---|---|
1 | 特定の構造に対する検索 | <章>の<見出し>に「PC」を含み,かつ<節>の<見出し>に「インターネット」を含む文書を検索する。ただし,二つの検索タームは,同じ章に存在すること | SAND (FindFile<文書.本文.章>, FindFile<文書.本文.章. 見出し>: eq('PC'), FindFile<文書.本文.章. 節.見出し>: eq('インターネット')) |
表2-9 範囲指定検索条件式を使用した例題
項番 | 検索の種類 | 検索の内容 | 記述例 |
---|---|---|---|
1 | 範囲指定検索 | 西暦2000年の範囲の検索 | InfoFile:rg('2000/01/01 00:00:00,2000/12/31 23:59:59') |
2 | 西暦2001年以降の検索 | InfoFile:rg('2001/01/01 00:00:00,') | |
3 | 西暦2000年以前の検索 | InfoFile:rg(',2000/12/31 23:59:59') |
(3) 条件式(TS2MSORT関数)の例題
ソートに使用する条件式の例題を表2-10に示します。なお,例題での関連情報ファイル名は,「InfoFile」としています。
表2-10 検索結果のソートの条件式を使用した例題
項番 | 検索の種類 | 検索の内容 | 記述例 |
---|---|---|---|
1 | ソート | TS2MFIND関数の検索結果集合ID5の結果を,作成日時の古い順にソート | SET(5),InfoFile |
2 | TS2MFIND関数の検索結果集合ID10の結果を,作成日時の新しい順にソート | SET(10),InfoFile,DESC |
(4) 条件式(TS2MCONCEPT関数)の例題
概念検索(TS2MCONCEPT関数)に使用する条件式の例題を,表2-11に示します。なお,例題での検索対象ファイル名は「FindFile」としています。
表2-11 概念検索の条件式を使用した例題
項番 | 検索の種類 | 検索の内容 | 記述例 |
---|---|---|---|
1 | 概念検索 | 種文章を一つ指定して検索 | FindFile:eq('種文章') |
2 | 種文章を一つ指定してランキング検索し,検索結果をソート | RANK SORT FindFile:eq('種文章') | |
3 | 種文章を二つ指定してランキング検索し,検索結果をソート | RANK SORT FindFile:eq('種文章1','種文章2') | |
4 | 見出しが種文章1に該当するか,または本文が種文章2に該当しない文書を検索 | OR (FindFile <章.見出し>:eq('種文章1'),NOT(FindFile <章.本文>:eq('種文章2'))) |