検索エンジンを作る

第7回 曖昧検索機能

この記事を読むのに必要な時間:およそ 2 分

これまで解説したように,N-gram方式は完全一致の検索結果が保証できるという点が優れています。ところが検索という用途では,厳密な検索結果が必要とされる一方,もう少し曖昧な表現も含めて検索したいという相反する要求もあります。このようなリクエストに応えたのが,FINDSPOTの曖昧検索と呼んでいる機能です。今回は曖昧検索機能とそのしくみについて紹介します。

曖昧検索

FINDSPOTでは,文字列を検索の際に指定文字列が完全に一致していなくても,曖昧な一致についても検索結果に含めることができます。この機能を曖昧検索と呼んでいます。曖昧検索を行うには,検索クライアントからサーバに対して曖昧検索のリクエストを送信します。CGIからの検索であれば,検索フォームに用意されている「曖昧検索」チェックボックスをチェックしておき,検索を行います。

曖昧検索では,検索語に対する,部分文字列,文字の挿入,文字の欠落,文字の置換,複合パターンに関するバリエーションも検索結果に含めることができます。それぞれのバリエーションについて例を挙げて説明します。

部分文字列

検索語の一部分である部分文字列が含まれた文書も検索結果に含める処理を行います。

例:

検索文字列「台風の被害」「台風の」を含む文書もヒット
検索文字列「バチカン市国」で「バチカン」を含む文書もヒット

文字の挿入

検索語に数文字の挿入が行われた文字列が含まれた文書も検索結果に含める処理を行います。

例:

検索文字列「地震被害」「地震の被害」を含む文書もヒット
検索文字列「郵政民営化法案」「郵政民営化関連法案」を含む文書もヒット

文字の欠落

検索語から数文字分欠落した文字列が含まれた文書も検索結果に含める処理を行います。

例:

検索文字列「中小企業雇用対策」「中小企業対策」を含む文書もヒット
検索文字列「光ファイバー通信サービス」「光ファイバーサービス」を含む文書もヒット

文字の置換

検索語から数文字分入れ代わった文字列が含まれた文書も検索結果に含める処理を行います。

例:

検索文字列「アラビア語」「アラビヤ語」を含む文書もヒット
検索文字列「ヴァイオリン」「バイオリン」を含む文書もヒット

複合パターン

上記の部分文字列,文字の挿入,文字の欠落,文字の置換が複合したパターンを含む文書も検索結果に含める処理を行います。

例:

検索文字列「首都の中心部」「首都東京の中心」を含む文書もヒット
検索文字列「最高気温の記録を更新」「最高気温記録の更新」を含む文書もヒット

検索語に対して,どの程度の変化量までを許容値とするかが使いやすさの面で難しい所です。現在のFINDSPOTでは50%以上の合致を曖昧さの許容値としています。具体的には,検索文字列の半分以上のバイグラムが,検索文字列の倍の長さより小さい文字列の範囲に収まっているという判定条件で処理しています。

著者プロフィール

工藤智行(くどうともゆき)

有限会社サイパック取締役社長。システム構築・管理のコンサルティング,ローカライゼーション,文書処理や障害者向けソフトウェアを中心とするプログラミングを長年手がける。 近著『UNIXプログラミングの道具箱』『システム管理現場の鉄則FreeBSD編』等

URLhttp://www.cypac.co.jp/

著書

コメント

コメントの記入