ファジー検索

検索している語とスペルの似ているワードを含む文書を検索するには、ファジー検索を使用します。

ファジー検索照会では、照会用語と同じ文字シーケンスだけでなく、照会用語に類似した文字シーケンスも検索します。 ファジー検索を実行するには、用語の末尾に波形記号 (~) を付けます。 例えば次の照会では、analytics、analyze、analysis などの用語を含む文書が検出されます。
analytics~
検索結果と検索語の類似度を指定するために、オプション・パラメーターを追加できます。 0 以上かつ 1 未満の値を指定してください。 値の前に 0 と小数点を付ける必要があります (例えば、0.8)。 値が 1 に近くなるほど、一致する用語の類似度が高くなります。 このパラメーターを指定しない場合、 デフォルトは 0.5 です。
analytics~0.8
ファジー検索は語について指定できますが、句については指定できません。 照会内の複数の語に対してファジー検索を適用するには、それぞれの語にファジー検索の係数を適用する必要があります。 例えば、次の照会では summer および time に似ている語を含む文書を検出します。
summer~0.7 time~0.7

ステップ 1 BOOKS という名前の表を作成します。
create table books (
         isbn varchar(18) not null primary key, 
         author varchar(30), 
         story varchar(100), 
         year integer);
ステップ 2 STORY 列にテキスト検索索引を作成します。
db2ts "create index bookidx for text on books(story) connect to test";
ステップ 3 データを表にインポートします。
insert into books values ('0-13-086755-1','John','The Blue Can',2001)
insert into books values ('0-13-086755-2','Mike','Cats and Dogs', 2000)
insert into books values ('0-13-086755-3','Peter','Hats on the Rack',1999)
insert into books values ('0-13-086755-4','Agatha','Cat among the Pigeons',1997)
insert into books values ('0-13-086755-5','Edgar','Cars Unlimited',2010)
insert into books values ('0-13-086755-6','Roy','Carson and Lemon',2008) 
ステップ 4: テキスト検索索引を更新します。
db2ts "update index bookidx for text connect to test"
ステップ 5 CONTAINS 関数を使用してファジー検索を発行します。
select author, year, story from books where contains(story, 'cat~0.4') = 1
以下は出力例です。
AUTHOR YEAR STORY
------------------------ ----------- -------------------------
John 2001 The Blue Can
Mike 2000 Cats and Dogs
Agatha 1997 Cat among the Pigeons

3 record(s) selected.
関連するスコアを表示するには、ファジーの度合いが増すように変更された次の照会を発行します。
select author, year, story, integer(score(story, 'cat~0.3')*1000) as score 
from books where contains(story, 'cat~0.3') = 1 order by score desc 
以下は出力例です。
AUTHOR YEAR STORY SCORE
------------------------------ ----------- -------
Agatha 1997 Cat among the Pigeons 32
John 2001 The Blue Can 17
Mike 2000 Cats and Dogs 17
Peter 1999 Hats on the Rack 1
Edgar 2010 Cars Unlimited 1

5 record(s) selected.

Restrictions

  • 特殊文字はファジー検索照会ではサポートされていません。
  • ファジー検索照会に含まれる語に対して、見出し語化、同義語拡張、およびストップワードの削除などの言語処理は行われません。 したがって、ファジー検索照会では同義語に類似している語は検出しません。
  • ファジー検索語にワイルドカード文字を含めた場合、ワイルドカード検索のみが実行されます。