Hitachi

HiRDB 全文検索プラグイン HiRDB Text Search Plug-in Version 10


4.3.5 単純文字列指定

単純文字列指定では,検索したい文字列(検索ターム)をダブルクォーテーションで囲んで指定します。

単純文字列指定の形式を次の図に示します。

図4‒7 単純文字列指定の形式

[図データ]

検索文字列には,ワイルドカードおよび特殊文字を指定できます。ワイルドカードおよび特殊文字は,半角で指定してください。

和文の場合に指定できるワイルドカードおよび特殊文字の意味を次の表に示します。

表4‒4 指定できるワイルドカードおよび特殊文字(和文の場合)

文字

文字の意味

*

0文字以上の任意の文字列に相当します

?

任意の1文字に相当します

|

構造の先頭または末尾に一致します

\

ワイルドカードまたは特殊文字の意味を消します

ワイルドカード指定時の注意事項
  • ワイルドカードを指定した場合は,同義語展開されません。

  • ワイルドカード指定では,検索条件によりシステムに負荷を与えるおそれがあります。環境定義ファイルに1文字近傍検索実行可否指定(phn_1gram_proximity_search)をすることにより,負荷を与えるおそれのある条件での検索を制限(エラーリターン)できます。

指定例
「ネットワーク」と「コンピュータ」で構成される文字列。

"ネットワーク*コンピュータ"

注意事項

同一構造内で出現回数が多い文字を使用したワイルドカード検索または近傍検索を実行した場合,検索時最大ワークメモリサイズを超えてメモリを使用する場合があります。

英文の場合に指定できるワイルドカードおよび特殊文字の意味を次の表に示します。

表4‒5 指定できるワイルドカードおよび特殊文字(英文の場合)

文字

文字の意味

*

単語内の0文字以上の任意の文字列に相当します

?

単語内の任意の1文字に相当します

\

ワイルドカードまたは特殊文字の意味を消します

ワイルドカード指定時の注意事項(英文の場合)
  • ワイルドカードを指定した場合は,同義語展開されません。

  • ワイルドカードを使用する場合は,ワイルドカード以外に3文字以上指定する必要があります。2文字以下の場合はエラーになります。

指定例
単語一致検索(「Application」で構成される文字列)

Application

前方一致検索(前方が「app」,「applicatio」で構成される文字列)

app*,applicatio?

また,検索文字列には,除外文字検索用の特殊文字も指定できます。除外文字検索とは,検索タームの一部または前後に特定の文字がある場合を除外して,該当する文書を検索する方法です。除外文字検索用の特殊文字は,半角で指定してください。

ただし,英文検索では除外文字は指定できません。

指定できる除外文字検索用の特殊文字の意味と指定例を次の表に示します。

表4‒6 指定できる除外文字検索用の特殊文字

文字

文字の意味

指定例

^

直後にある1文字を検索対象から除外します。ただし,特殊文字を"\"(エスケープ文字)とともに指定した2文字は1文字とみなして除外します。

  • 「ローマ?」から「ローマ字」の場合を除外する(?は任意の1文字)。

    "ローマ^字"

  • 「?文書」から「誤文書」の場合を除外する。

    "^誤文書"

  • 「データ???」から「データベース」の場合を除外する。

    "データ^ベ^ー^ス"

  • 「?100」から「\100」の場合を除外する。

    "^\\100"

[ ]

除外する1文字を","(コンマ)で区切って複数指定する場合に使用します。

  • 「大阪?」から「大阪市」と「大阪府」の場合を除外する。

    "大阪^[市,府]"

,

[ ]の中の文字を区切る場合に使用します。

  • 「文書?管理」から「文書の管理」と「文書を管理」を除外する。

    "文書^[の,を]管理"

除外文字検索用の特殊文字指定時の注意事項
  • 検索ターム全体または"*"で区切られた部分に除外する文字以外の文字がない場合は,エラーとなります。

    誤った例:"^ア","^[ア,イ]","^ア*","^ア*イ","ア*^イ","?^ア"

    正しい例:"^アイ","^[ア,イ]ウ","イ^ア*","ウ^ア*イ",

    "ア*^イウ","?^アイ"

  • 除外文字検索用の特殊文字を指定した場合,同義語展開されません。

英文検索の場合の注意事項
  • 検索文字列は1バイト文字コードの'0x20'〜'0x7E'の範囲で指定します。それ以外の1バイト文字コード,または2バイト文字コードを指定した場合,そのコードはないものとして扱い,以降の文字コードを詰めて検索します。指定した文字コードが,英文検索用インデクス作成時に定義した不要語,または削除コードと同じコードの場合は,エラーとなります。

  • 検索文字列にインデクスデリミタを含む場合は,インデクスデリミタで前後の文字コードを区切り,フレーズ検索とみなして検索します。例えば,'0x20'(半角スペース)で区切って複数の単語を記述した場合,それらの単語が隣り合って出現する一つの単語列として検索します。なお,文字列中の一単語は,64文字(バイト)まで指定できます。64文字(バイト)を超える単語が指定された場合は,65文字(バイト)目以降を無視して,64文字(バイト)目までを単語として検索します。