2.17.1 表記ゆれ補正検索
ここでは,テキストデータの表記ゆれ補正検索について説明します。
- 〈この項の構成〉
(1) 表記ゆれ補正検索とは
表記ゆれ補正検索とは,テキストデータ中の文字列に「大文字と小文字」,「半角文字と全角文字」,「ひらがなとカタカナ」などの表記ゆれがある場合に,それらの文字列を一括して検索する機能のことです。例えば,「Hitachi」で検索した場合,「Hitachi」だけでなく,「HITACHI」や「」などもまとめて検索できます。そのため,表記ゆれ補正検索を使用すると,複数の探索条件をORでつないだSQL文を作成しなくても,表記がゆれているテキストデータを一括して検索できます。
コールセンタの履歴情報や製品の利用申請書のように,作成者が複数存在するテキストデータの場合,表記のゆれが発生しやすいと考えられます。そのようなテキストデータから,社名,製品名,担当者の名前など,ユニークな文字列をキーにして漏れなく検索する場合に,表記ゆれ補正検索を使用します。
表記ゆれ補正検索の例を次の図に示します。
- [説明]
-
検索条件に「Hitachi」を指定した場合,「大文字と小文字」や「半角文字と全角文字」が混在していても,「Hitachi」が含まれている文字列を一括して検索できます。
表記ゆれ補正検索を行う場合は,スカラ関数CONTAINSを使用します。スカラ関数CONTAINSについては,マニュアルHADB SQLリファレンスのスカラ関数の文字列関数(文字列情報の取得)のCONTAINSを参照してください。
なお,表記ゆれ補正検索を行う場合は,表記ゆれ補正検索に対応しているテキストインデクスを定義すると,読み込むページを少なくすることができます。その分,表の検索性能を向上させることができます。
- 重要
-
表記ゆれ補正検索は,HADBサーバで使用する文字コードが,Unicodeの場合(環境変数ADBLANGの指定値がUTF8の場合)に使用できます。Shift-JISの場合(環境変数ADBLANGの指定値がSJISの場合)は使用できません。
(2) 表記ゆれ補正検索の規則
表記ゆれ補正検索の規則を次の表に示します。
項番 |
文字の種類 |
規則 |
表記ゆれ補正検索の例 |
---|---|---|---|
1 |
英字 |
次に示す文字の違いは,表記ゆれ補正検索の対象になります。
|
検索条件に「max」を指定した場合,次に示す文字列が,表記ゆれ補正検索の対象になります。 |
2 |
数字 |
次に示す文字の違いは,表記ゆれ補正検索の対象になります。
|
|
3 |
|
■ひらがなとカタカナ 次に示す文字の違いは,表記ゆれ補正検索の対象になります。
■全角カタカナと半角カタカナ 次に示す文字の違いは,表記ゆれ補正検索の対象になります。
■濁点と半濁点 次に示す文字の後ろに,全角の濁点または半角の濁点がある場合,対象の文字は濁点が付いた文字と見なされます。
また,全角の半濁点,および半角の半濁点の場合も同様です。 ■拗音と促音 拗音および促音の場合,それぞれの大文字と同一であると見なされます。 ■長音記号 長音記号の有無は,表記ゆれ補正検索の対象外になるため,別の文字列として扱われます。 |
■例1 ■例2 ■例3 |
4 |
ダイアクリティカルマーク |
次に示す文字の違いは,表記ゆれ補正検索の対象になります。
|
次に示す文字列は,同じ文字列と見なされます。 そのため,検索条件に「MAX」を指定した場合,次に示す文字列が,表記ゆれ補正検索の対象になります。 |
5 |
特定の文字列を1文字で表記した文字 |
特定の文字列を1文字で表記している場合は,対象の1文字を文字列に展開します。そして,展開後の文字列と同一と見なされます。 |
次に示す文字列は,同じ文字列と見なされます。 |
「ひらがな」,「全角カタカナ」および「半角カタカナ」で,濁点や半濁点の有無が異なる文字の場合,別の文字と見なされます。そのため,表記ゆれ補正検索の対象外です。例えば,次に示す文字は,濁点や半濁点の有無が同じであるため,それぞれ同じ文字と見なされます。
-
「は」と「ハ」
-
「ば」と「バ」
-
「ぱ」と「パ」
一方,「は」と「ば」と「ぱ」は,濁点や半濁点の有無が異なるため,それぞれ別の文字と見なされます。例えば,検索条件に「バイク」を指定した場合,「バイク」と「ばいく」は検索できます。しかし,「ハイク」,「はいく」,「パイク」および「ぱいく」は,表記ゆれ補正検索の対象外であるため,検索できません。
表記ゆれ補正検索では,ISO/IEC14651:2011で規定されている文字の並べ替えや比較を行うためのコード(ソートコード)を使用しています。ソートコードが一致している文字を同じ文字と見なしています。
- メモ
-
-
ソートコードでは存在しないと判断される文字(「記号」など)の場合,バイトコードを使用して文字の並べ替えや比較を行います。
-
スカラ関数CONTAINSの「表記ゆれ補正検索指定」に「SORTCODE(単純文字列指定)」を指定した場合に,ソートコードを使用します。
-