IBM Support

CJK 言語における DB2 Text Search を使用したファジー検索の制限について

Question & Answer


Question

DB2 Text Search による基本検索では検索結果が返るにも関わらず、中国語、日本語、または韓国語 (CJK 言語) でファジー検索を行うと結果が 0 件になるのはなぜでしょうか。 何か制限事項はありますか。

Cause

CJK 言語環境では、複数のワードが空白文字などの区切り文字で区切られることなく、連続して一つの文を構成しています。DB2 Text Search は、テキスト索引の索引付けで文を区切る際や基本検索の検索語を区切る際には、形態素分析あるいは N-gram の技法を用いますが、ファジー検索の場合はそれらの技法を用いていません。

Answer

CJK 言語でファジー検索を行う場合は、検索語全体がひとつの検索単位として扱われ、セグメントに分割されません。
そのため、テキスト索引内のセグメント単位よりも検索語の文字数が多いと、期待されない検索結果が返ることが多くあります。

例えば、2 つの文字を使用した N-gram 索引 (bi-gram 索引) の設定では、文書に日本語で "今日は良い日だ" というフレーズが含まれていると、以下のような単位で区切られて索引付けされます。

今日
日は
は良
良い
い日
日だ


この索引に対して "良い日~0.5" でファジー検索を行うと、検索語として使用された "良い日" がひとつの検索単位となり、索引内で区切られた単位と一致しないため、上記文書は一致せず検索結果が返りません。

形態素セグメンテーションを使用した索引の場合は、 "今日は良い日だ" というフレーズは以下のような単位で区切られて索引付けされます。

今日

良い



この索引に対して "良い日~0.5" でファジー検索を行うと、上記と同様の理由で文書は一致とみなされず検索結果が返りません。


運用上の考慮点
CJK 言語環境において効果的にファジー検索を行うためには以下の点について考慮してください。

  • N-gram 索引の場合は、索引付けに使用したセグメントの文字数よりも検索語の文字数が多くならないようにしてください。デフォルトでは、2 つの文字を使用した bi-gram セグメンテーションが使用されます。
  • 形態素索引の場合は、形態素解析された一番短いワードを検索語として使うようにしてください。


関連情報
Restriction on the Fuzzy text search in CJK language on IBM Text Search (原文)
ファジー検索
基本検索
例: プレーン・テキストの N-gram および形態素方式の索引の作成
特殊文字のエスケープ
DB2 Text Search の言語学的処理

パスポート・アドバンテージによく寄せられる質問


お問合せ先
技術的な内容に関して、サービス契約のもと IBM サービス・ラインにお問い合わせください。
IBM サービス・ライン

[{"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"OTHER - Uncategorised","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"9.7;10.1;10.5","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
16 June 2018

UID

swg21992542