2.17.4 ワード検索
ここでは,テキストデータ(文書データ)のワード検索について説明します。
- 〈この項の構成〉
(1) ワード検索とは
ワード検索とは,英語で書かれたテキストデータ(文書データ)から,検索対象に指定した英単語を高速に検索する機能です。ワード検索では,次の2つの方法で英単語を検索できます。
-
完全一致検索
指定した英単語と完全に一致する英単語を検索する方法です。例えば,「apple」という英単語を検索したい場合は,「apple」と指定します。
-
前方一致検索
検索したい英単語の先頭から数文字を指定して検索する方法です。例えば,「apple」という英単語を検索したい場合は,「app」のように指定します。
英語で書かれたテキストデータ(文書データ)を,完全一致検索や前方一致検索で高速に検索したい場合に,ワード検索を使用します。ワード検索の概要を次の図に示します。
ワード検索を行う場合は,スカラ関数CONTAINSを使用します。スカラ関数CONTAINSについては,マニュアルHADB SQLリファレンスのスカラ関数の文字列関数(文字列情報の取得)のCONTAINSを参照してください。
また,ワード検索を行う場合は,ワード検索用のテキストインデクスを定義すると,読み込むページ数を少なくすることができます。その分,表の検索性能を向上させることができます。ワード検索用のテキストインデクスについては,マニュアルHADB SQLリファレンスの定義系SQLのCREATE INDEX(インデクスの定義)を参照してください。
ワード検索の対象となるテキストデータ(文書データ)は,次の条件を満たす必要があります。
-
テキストデータは,半角英数字の単語で構成されている。
-
単語と単語の間は,半角空白,タブ,改行,またはピリオドなどの記号で区切られている(区切り文字が存在している)。
区切り文字そのものは,ワード検索では検索されません。上記の条件を満たしている場合は,英語で書かれた文章以外でもワード検索を使用できます。区切り文字については,「(2) ワード検索と区切り文字の関係」を参照してください。
- メモ
-
英単語中に全角文字や全角空白が含まれている場合でも,ワード検索が実行されます。例えば,「Hitach」(「」が全角文字)という英単語が存在する場合,「Hitach」でワード検索が実行されます。
- 重要
-
ワード検索では,中間一致検索と後方一致検索は実行できません。例えば,「apple」を指定してワード検索を行っても,「pineapple」は検索できません。
中間一致検索や後方一致検索を実行したい場合は,LIKE述語による中間一致検索を行ってください。または,スカラ関数CONTAINSを使用した中間一致検索を行ってください。
(2) ワード検索と区切り文字の関係
ワード検索では,英語の文章中に含まれる区切り文字で区切られた単語を検索します。ワード検索で区切り文字として扱われる文字を次に示します。
-
半角空白(0x20)
-
タブ(0x09)
-
改行(0x0A)
-
復帰(0x0D)
-
ピリオド(0x2E)
-
疑問符(0x3F)
-
感嘆符(0x21)
区切り文字そのものは,単語には含まれません。そのため,区切り文字が1文字の場合でも,2文字以上連続して存在した場合でも,単語には影響がありません。
- ■区切り文字が連続で存在した場合
-
次の文章の場合,どちらも「This」,「is」,「an」,「apple」がそれぞれ単語として扱われます。
-
This△is◇an△apple.
-
This△is◇an△△◇apple.
- (凡例)
-
△:半角空白
◇:タブ
-
なお,ワード検索用のテキストインデクスを定義する際,区切り文字として扱う文字を指定します。詳細については,「5.4.6 ワード検索時の区切り文字の選択(DELIMITER)」を参照してください。
また,ワード検索の完全一致検索の場合,複数の単語(熟語)を指定して検索することができます。このときも,区切り文字そのものは単語に含まれません。そのため,区切り文字が1文字の場合でも,2文字以上連続して存在した場合でも,検索する単語には影響がありません。
- ■ワード検索の完全一致検索による複数単語(熟語)の検索
-
ワード検索で「this△△△is」を指定して検索した場合は,次のような複数の単語(熟語)を検索できます。なお,「is△this」のように記載順序が異なったり,「this△apple△is」のように単語と単語の間に別の文字が含まれていたりした場合は,検索されません。
-
this△is△an△apple
-
this△◇is◇an◇apple
- (凡例)
-
△:半角空白
◇:タブ
-
- メモ
-
検索対象に区切り文字だけが指定された場合は,ワード検索の対象となるテキストデータ(文書データ)の内容に関係なく,全件検索が行われます。
(3) ワード検索と表記ゆれ補正検索の組み合わせ
ワード検索は,表記ゆれ補正検索と組み合わせて使用できます。表記ゆれ補正検索については,「2.17.1 表記ゆれ補正検索」を参照してください。
スカラ関数CONTAINSの指定で,ワード検索と表記ゆれ補正検索の両方を使用することを選択できます。ワード検索の完全一致検索と前方一致検索どちらの場合でも,表記ゆれ補正検索と組み合わせて使用できます。
ワード検索と表記ゆれ補正検索を組み合わせて使用すると,英単語に,次のような表記ゆれが存在しても一括して検索できます。
-
英大文字と英小文字
-
ダイアクリティカルマーク(ウムラウトなど)が付いた文字と付いていない文字
(4) ワード検索と同義語検索の組み合わせ
ワード検索の完全一致検索は,同義語検索と組み合わせて使用できます。同義語検索については,「2.17.3 同義語検索」を参照してください。
スカラ関数CONTAINSの指定で,ワード検索と同義語検索の両方を使用することを選択できます。そのため,検索対象とする単語とその単語の同義語を,ワード検索でまとめて検索できます。
- 重要
-
ワード検索の前方一致検索は,同義語検索と組み合わせて使用できません。
ワード検索の場合,単語そのものを検索するため,単語と単語の間の区切り文字の種類に関係なく,検索対象の単語と一致すれば検索されます。しかし,同義語検索の場合,区切り文字も含めた単語を同義語辞書に登録していると,区切り文字も含めて同じ単語のときだけ検索されます。例を次の図に示します。
- [説明]
-
-
ワード検索と同義語検索を組み合わせて,「data◇base」で検索した場合は,同義語辞書に登録されている同義語「data△base」と一致しません。そのため,同義語辞書に登録されている同義語は検索されません。
-
ワード検索と同義語検索を組み合わせて,「data△base」で検索した場合は,同義語辞書に登録されている同義語「data△base」と一致します。同義語辞書に登録されている同義語が検索されるため,同義語の「data◇bank」も検索されます。また,このときワード検索も行われるため,区切り文字が異なる「data△bank」も検索されます。
-
(5) ワード検索・表記ゆれ補正検索・同義語検索の組み合わせ
ワード検索の完全一致検索は,表記ゆれ補正検索および同義語検索の両方と組み合わせて使用することもできます。