(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022185581
(43)【公開日】2022-12-14
(54)【発明の名称】個別データ検索サービスを提供する方法、コンピュータ装置、およびコンピュータプログラム
(51)【国際特許分類】
G06F 16/33 20190101AFI20221207BHJP
G06F 16/182 20190101ALI20221207BHJP
G06F 16/17 20190101ALI20221207BHJP
【FI】
G06F16/33
G06F16/182
G06F16/17 100
【審査請求】有
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2022088502
(22)【出願日】2022-05-31
(31)【優先権主張番号】10-2021-0071229
(32)【優先日】2021-06-02
(33)【優先権主張国・地域又は機関】KR
(71)【出願人】
【識別番号】505205812
【氏名又は名称】ネイバー コーポレーション
【氏名又は名称原語表記】NAVER Corporation
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】パン ジョンホ
(72)【発明者】
【氏名】イ チャンヒョン
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175CA08
5B175DA01
(57)【要約】
【課題】 コンピュータ装置で実行される個別データ検索方法を提供する。
【解決手段】 コンピュータ装置は、メモリに含まれるコンピュータ読み取り可能な命令を実行するように構成された少なくとも1つのプロセッサを含み、
個別データ検索方法は、少なくとも1つのプロセッサにより、ユーザと関連する個別データに該当する検索対象文書をブロック単位のボリュームに圧縮して保存する段階、および少なくとも1つのプロセッサにより、検索要請に対応する複数のボリュームを並列にフルスキャン(full scan)検索する段階を含む。
【選択図】
図4
【特許請求の範囲】
【請求項1】
コンピュータ装置で実行される個別データ検索方法であって、
前記コンピュータ装置は、メモリに含まれるコンピュータ読み取り可能な命令を実行するように構成された少なくとも1つのプロセッサを含み、
前記個別データ検索方法は、
前記少なくとも1つのプロセッサにより、ユーザと関連する個別データに該当する検索対象文書をブロック単位のボリュームに圧縮して保存する段階、および
前記少なくとも1つのプロセッサにより、検索要請に対応する複数のボリュームを並列にフルスキャン検索する段階
を含む、個別データ検索方法。
【請求項2】
前記保存する段階は、
前記検索対象文書を一定サイズのブロック単位で集めて圧縮することによって圧縮ボリュームを生成する段階
を含む、請求項1に記載の個別データ検索方法。
【請求項3】
前記保存する段階は、
新規文書が流入する場合、前記新規文書を前記検索対象文書からなる増分ボリュームに付け足す段階、および
前記増分ボリュームを一定サイズのブロック単位に圧縮して圧縮ボリュームを生成する段階
を含む、請求項1に記載の個別データ検索方法。
【請求項4】
前記保存する段階は、
前記圧縮ボリュームが生成された後に既存の文書が削除される場合、前記既存の文書に対する削除情報をマーキングする段階
をさらに含み、
前記マーキングされた文書は、検索結果から除外すること
を特徴とする、請求項3に記載の個別データ検索方法。
【請求項5】
前記検索する段階は、
転置索引資料構造は使用せず、前記ブロック単位の圧縮ボリュームに対するフルスキャン方式によってクエリと部分一致する文書を検索すること
を特徴とする、請求項1に記載の個別データ検索方法。
【請求項6】
前記検索する段階は、
前記複数のボリュームを並列にデコードする段階、および
前記デコードされたボリュームを対象に文字列ファインド(find)を並列に実行する段階
を含む、請求項1に記載の個別データ検索方法。
【請求項7】
前記保存する段階は、
サーバの二重化のために、複数のホストに前記個別データに対する複製ボリュームを保存する段階
を含む、請求項1に記載の個別データ検索方法。
【請求項8】
前記検索する段階は、
前記検索要請に含まれたクエリと前記複数のボリューム内の文書をユニコード正規化する段階、および
正規化された文字列を利用して照合(collation)検索を行う段階
を含む、請求項1に記載の個別データ検索方法。
【請求項9】
前記保存する段階は、
前記検索対象文書をユニコード正規化する段階
を含み、
前記検索する段階は、
前記検索要請に含まれたクエリをユニコード正規化する段階、および
正規化された文字列を利用して照合検索を行う段階
を含む、請求項1に記載の個別データ検索方法。
【請求項10】
前記保存する段階は、
変換文字位置を示すオフセットと該当の位置の原本文字を含む変換テーブルを生成する段階
さらに含む、請求項9に記載の個別データ検索方法。
【請求項11】
請求項1~10のうちのいずれか一項に記載の個別データ検索方法をコンピュータ装置に実行させるためのコンピュータプログラム。
【請求項12】
コンピュータ装置であって、
メモリに含まれるコンピュータ読み取り可能な命令を実行するように構成された少なくとも1つのプロセッサ
を含み、
前記少なくとも1つのプロセッサは、
ユーザと関連する個別データに該当する検索対象文書をブロック単位のボリュームに圧縮して保存する文書保存部、および
検索要請に対応する複数のボリュームを並列にフルスキャン検索する並列検索部
を含む、コンピュータ装置。
【請求項13】
前記文書保存部は、
前記検索対象文書を一定サイズのブロック単位で集めて圧縮することによって圧縮ボリュームを生成すること
を特徴とする、請求項12に記載のコンピュータ装置。
【請求項14】
前記文書保存部は、
新規文書が流入する場合、前記新規文書を前記検索対象文書からなる増分ボリュームに付け足し、
前記増分ボリュームを一定サイズのブロック単位に圧縮して圧縮ボリュームを生成すること
を特徴とする、請求項12に記載のコンピュータ装置。
【請求項15】
前記文書保存部は、
前記圧縮ボリュームが生成された後に既存の文書が削除される場合、前記既存の文書に対する削除情報をマーキングし、
前記マーキングされた文書は、検索結果から除外すること
を特徴とする、請求項14に記載のコンピュータ装置。
【請求項16】
前記並列検索部は、
転置索引資料構造は使用せず、前記ブロック単位の圧縮ボリュームに対するフルスキャン方式によってクエリと部分一致する文書を検索すること
を特徴とする、請求項12~15のうちのいずれか一項に記載のコンピュータ装置。
【請求項17】
前記並列検索部は、
前記複数のボリュームを並列にデコードし、
前記デコードされたボリュームを対象に文字列ファインドを並列に実行すること
を特徴とする、請求項12~15のうちのいずれか一項に記載のコンピュータ装置。
【請求項18】
前記並列検索部は、
前記検索要請に含まれたクエリと前記複数のボリューム内の文書をユニコード正規化し、
正規化された文字列を利用して照合検索を行うこと
を特徴とする、請求項12~15のうちのいずれか一項に記載のコンピュータ装置。
【請求項19】
前記文書保存部は、
前記検索対象文書をユニコード正規化し、
前記並列検索部は、
前記検索要請に含まれたクエリをユニコード正規化し、
正規化された文字列を利用して照合検索を行うこと
を特徴とする、請求項12~15のうちのいずれか一項に記載のコンピュータ装置。
【請求項20】
前記文書保存部は、
変換文字位置を示すオフセットと該当の位置の原本文字を含む変換テーブルを生成すること
を特徴とする、請求項19に記載のコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、個別データ検索サービスを提供する技術に関する。
【背景技術】
【0002】
テキスト文書データに対する検索は、極めて基本的で重要な演算であり、情報検索分野において広く使用されている。
【0003】
検索エンジンとは、広義ではインターネット上で情報を収集して探索するシステムを意味し、主に、インターネット上のウェブページをクローリング(crawling)し、特定の検索語(query)が入力されれば、該当の検索語と関連するウェブページを結果値で示すシステムを指す。
【0004】
例えば、特許文献1(登録日2011年3月2日)は、クライアントに対するカスタム検索エンジンを提供する技術を開示している。
【0005】
一般的に、検索には、ターム(term)を索引する転置索引(inverted index)資料構造が使用される。既存の資料構造では1つの主キー(primary key)が複数のフィールドを指定しているとすれば、転置索引では1つの値(term)で該当の値が含まれた文書番号を指定する。
【0006】
一方、近年は、個人メール、個人ファイル、メッセンジャーチャットルームなどの個別データ内で検索を行うサービスが提供されている。
【0007】
転置索引は検索の応答速度に最適な資料構造ではあるが、個別データ検索サービスでは検索対象が全体文書のうちの極一部であるため、費用と資源を考慮すると転置索引資料構造は相応しくない。
【先行技術文献】
【特許文献】
【0008】
韓国登録特許第10-1021022号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
個別データ検索サービスに特化したエンジンとして、転置索引のない検索エンジンを提供する。
【0010】
個別データ検索サービスの基本要求事項となる部分一致検索のためにフルスキャン(full scan)方式を適用するのと同時に、個別データ検索サービスの応答速度を満たすことのできる検索エンジンを提供する。
【課題を解決するための手段】
【0011】
コンピュータ装置で実行される個別データ検索方法であって、前記コンピュータ装置は、メモリに含まれるコンピュータ読み取り可能な命令を実行するように構成された少なくとも1つのプロセッサを含み、前記個別データ検索方法は、前記少なくとも1つのプロセッサにより、ユーザと関連する個別データに該当する検索対象文書をブロック単位のボリュームに圧縮して保存する段階、および前記少なくとも1つのプロセッサにより、検索要請に対応する複数のボリュームを並列にフルスキャン(full scan)検索する段階を含む、個別データ検索方法を提供する。
【0012】
一側面によると、前記保存する段階は、前記検索対象文書を一定サイズのブロック単位で集めて圧縮することによって圧縮ボリュームを生成する段階を含んでよい。
【0013】
他の側面によると、前記保存する段階は、新規文書が流入する場合、前記新規文書を前記検索対象文書からなる増分ボリューム(increment volume)に付け足す(append)段階、および前記増分ボリュームを一定サイズのブロック単位に圧縮して圧縮ボリュームを生成する段階を含んでよい。
【0014】
また他の側面によると、前記保存する段階は、前記圧縮ボリュームが生成された後に既存の文書が削除される場合、前記既存の文書に対する削除情報をマーキングする段階をさらに含み、前記マーキングされた文書は検索結果から除外してよい。
【0015】
また他の側面によると、前記検索する段階は、転置索引(inverted index)資料構造は使用せず、前記ブロック単位の圧縮ボリュームに対するフルスキャン方式によってクエリと部分一致する文書を検索してよい。
【0016】
また他の側面によると、前記検索する段階は、前記複数のボリュームを並列にデコードする段階、および前記デコードされたボリュームを対象に文字列ファインド(find)を並列に実行する段階を含んでよい。
【0017】
また他の側面によると、前記保存する段階は、サーバの二重化のために、複数のホストに前記個別データに対する複製ボリューム(replica volume)を保存する段階を含んでよい。
【0018】
また他の側面によると、前記検索する段階は、前記検索要請に含まれたクエリと前記複数のボリューム内の文書をユニコード正規化する段階、および正規化された文字列を利用して照合(collation)検索を行う段階を含んでよい。
【0019】
また他の側面によると、前記保存する段階は、前記検索対象文書をユニコード正規化する段階を含み、前記検索する段階は、前記検索要請に含まれたクエリをユニコード正規化する段階、および正規化された文字列を利用して照合検索を行う段階を含んでよい。
【0020】
さらに他の側面によると、前記保存する段階は、変換文字位置を示すオフセットと該当の位置の原本文字を含む変換テーブルを生成する段階をさらに含んでよい。
【0021】
前記検索方法をコンピュータ装置に実行させるためのコンピュータプログラムを提供する。
【0022】
コンピュータ装置であって、メモリに含まれるコンピュータ読み取り可能な命令を実行するように構成された少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサは、ユーザと関連する個別データに該当する検索対象文書をブロック単位のボリュームに圧縮して保存する文書保存部、および検索要請に対応する複数のボリュームを並列にフルスキャン検索する並列検索部を含む、コンピュータ装置を提供する。
【発明の効果】
【0023】
本発明の実施形態によると、個別データ検索サービスに特化したエンジンとして、転置索引資料構造を使用せずに個別データ検索サービスの応答速度を満たすことのできる検索エンジンを提供することができる。
【0024】
本発明の実施形態によると、検索対象となる文書をブロック単位の圧縮ボリュームで生成して圧縮ボリュームを並列にフルスキャン検索することにより、検索効率の高い、直観的な検索サービスを提供することができる。
【図面の簡単な説明】
【0025】
【
図1】本発明の一実施形態における、ネットワーク環境の例を示した図である。
【
図2】本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。
【
図3】本発明の一実施形態における、コンピュータ装置のプロセッサが含むことのできる構成要素の例を示した図である。
【
図4】本発明の一実施形態における、コンピュータ装置が実行することのできる方法の例を示したフローチャートである。
【
図5】本発明の一実施形態における、入力/出力時間を減らす方法を説明するための例示図である。
【
図6】本発明の一実施形態における、索引の代わりをするボリューム生成過程を説明するための例示図である。
【
図7】本発明の一実施形態における、索引の代わりをするボリューム生成過程を説明するための例示図である。
【
図8】本発明の一実施形態における、CPU時間を減らす方法を説明するための例示図である。
【
図9】本発明の一実施形態における、フルスキャン方式を利用した個別データ検索サービス構造を示した図である。
【
図10】本発明の一実施形態における、検索サーバの二重化を説明するための例示図である。
【
図11】本発明の一実施形態における、照合(collation)検索が必要とする正規化過程を説明するための例示図である。
【発明を実施するための形態】
【0026】
以下、本発明の実施形態について、添付の図面を参照しながら詳しく説明する。
【0027】
本発明の実施形態は、個別データ検索サービスを提供する技術に関する。
【0028】
本明細書で具体的に開示する事項を含む実施形態は、個別データ検索サービスに特化したエンジンとして転置索引(inverted index)のない検索エンジンを提供することができ、これにより、検索効率性、サービス直観性、費用節減などの側面において相当な長所を達成することができる。
【0029】
本明細書において、個別データとは検索対象となる文書を意味し、特に、メールサービスで生成された個人メール文書、ドライブサービスで生成された個人ファイル、メッセージングサービスで生成された個人トークメッセージなどのようなユーザの個人文書を包括したものを意味してよい。
【0030】
本発明の実施形態に係る個別データ検索装置は、少なくとも1つのコンピュータ装置によって実現されてよく、本発明の実施形態に係る個別データ検索方法は、個別データ検索装置に含まれる少なくとも1つのコンピュータ装置によって実行されてよい。このとき、コンピュータ装置においては、本発明の一実施形態に係るコンピュータプログラムがインストールされて実行されてよく、コンピュータ装置は、実行されたコンピュータプログラムの制御にしたがって本発明の実施形態に係る個別データ検索方法を実行してよい。上述したコンピュータプログラムは、コンピュータ装置と結合して個別データ検索方法をコンピュータに実行させるためにコンピュータ読み取り可能な記録媒体に記録されてよい。
【0031】
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。
図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような
図1は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が
図1のように限定されることはない。また、
図1のネットワーク環境は、本実施形態に適用可能な環境のうちの一例を説明したものに過ぎず、本実施形態に適用可能な環境が
図1のネットワーク環境に限定されることはない。
【0032】
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定端末や移動端末であってよい。複数の電子機器110、120、130、140の例としては、スマートフォン、携帯電話、ナビゲーション、PC(personal computer)、ノート型PC、デジタル放送用端末、PDA(Personal Digital Assistant)、PMP(Portable Multimedia Player)、タブレットなどがある。一例として、
図1では、電子機器110の例としてスマートフォンを示しているが、本発明の実施形態において、電子機器110は、実質的に無線または有線通信方式を利用し、ネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信することができる多様な物理的なコンピュータ装置のうちの1つを意味してよい。
【0033】
通信方式が限定されることはなく、ネットワーク170が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を利用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク170は、PAN(personal area network)、LAN(local area network)、CAN(campus area network)、MAN(metropolitan area network)、WAN(wide area network)、BBN(broadband network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでよい。さらに、ネットワーク170は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター-バスネットワーク、ツリーまたは階層的ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これらに限定されることはない。
【0034】
サーバ150、160それぞれは、複数の電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供する1つ以上のコンピュータ装置によって実現されてよい。例えば、サーバ150は、ネットワーク170を介して接続した複数の電子機器110、120、130、140にサービス(一例として、金融サービス)を提供するシステムであってよい。
【0035】
図2は、本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。上述した複数の電子機器110、120、130、140それぞれやサーバ150、160それぞれは、
図2に示したコンピュータ装置200によって実現されてよい。
【0036】
このようなコンピュータ装置200は、
図2に示すように、メモリ210、プロセッサ220、通信インタフェース230、および入力/出力インタフェース240を含んでよい。メモリ210は、コンピュータ読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永続的大容量記録装置を含んでよい。ここで、ROMやディスクドライブのような永続的大容量記録装置は、メモリ210とは区分される別の永続的記録装置としてコンピュータ装置200に含まれてもよい。また、メモリ210には、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリ210とは別のコンピュータ読み取り可能な記録媒体からメモリ210にロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピー(登録商標)ドライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信インタフェース230を通じてメモリ210にロードされてもよい。例えば、ソフトウェア構成要素は、ネットワーク170を介して受信されるファイルによってインストールされるコンピュータプログラムに基づいてコンピュータ装置200のメモリ210にロードされてよい。
【0037】
プロセッサ220は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ210または通信インタフェース230によって、プロセッサ220に提供されてよい。例えば、プロセッサ220は、メモリ210のような記録装置に記録されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【0038】
通信インタフェース230は、ネットワーク170を介してコンピュータ装置200が他の装置(一例として、上述した記録装置)と互いに通信するための機能を提供してよい。一例として、コンピュータ装置200のプロセッサ220がメモリ210のような記録装置に記録されたプログラムコードにしたがって生成した要求や命令、データ、ファイルなどが、通信インタフェース230の制御にしたがってネットワーク170を介して他の装置に伝達されてよい。これとは逆に、他の装置からの信号や命令、データ、ファイルなどが、ネットワーク170を経てコンピュータ装置200の通信インタフェース230を通じてコンピュータ装置200に受信されてよい。通信インタフェース230を通じて受信された信号や命令、データなどは、プロセッサ220やメモリ210に伝達されてよく、ファイルなどは、コンピュータ装置200がさらに含むことのできる記録媒体(上述した永続的記録装置)に記録されてよい。
【0039】
入力/出力インタフェース240は、入力/出力装置250とのインタフェースのための手段であってよい。例えば、入力装置は、マイク、キーボード、またはマウスなどの装置を、出力装置は、ディスプレイ、スピーカのような装置を含んでよい。他の例として、入力/出力インタフェース240は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。入力/出力装置250は、コンピュータ装置200と1つの装置で構成されてもよい。
【0040】
また、他の実施形態において、コンピュータ装置200は、
図2の構成要素よりも少ないか多くの構成要素を含んでもよい。しかし、大部分の従来技術の構成要素を明確に図に示す必要はない。例えば、コンピュータ装置200は、上述した入力/出力装置250のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ、データベースなどのような他の構成要素をさらに含んでもよい。
【0041】
以下では、個別データ検索サービスを提供する方法およびコンピュータ装置の具体的な実施形態について説明する。
【0042】
図3は、本発明の一実施形態における、コンピュータ装置のプロセッサが含むことのできる構成要素の例を示したブロック図であり、
図4は、本発明の一実施形態における、コンピュータ装置が実行することのできる方法の例を示したフローチャートである。
【0043】
本実施形態に係るコンピュータ装置200は、クライアントを対象に、クライアント上にインストールされた専用アプリケーションやコンピュータ装置200と関連するウェブ/モバイルサイトへの接続によって個別データ検索サービスを提供してよい。コンピュータ装置200には、コンピュータで実現された個別データ検索装置が構成されてよい。
【0044】
個別データ検索サービスは、文書の流入量は多いが検索要請は相対的に少ない。さらに、個別データ検索サービスは、基本要求事項としてクエリと部分一致する文書を探索する部分一致検索を要求する。個別データ検索サービスの場合、検索時に実際に検索する文書は、全体文書のうちの極一部に過ぎない。
【0045】
個別データ検索サービスは文書の流入量が多いため、検索に一般的に使用する転置索引資料構造を利用する場合には過多な転置索引費用が発生し、検索サーバの資源浪費に繋がるという問題がある。
【0046】
さらに、転置索引資料構造で部分一致検索を提供するためには文書のバイグラム(bigram)分析が実行されなければならないが、バイグラム分析時にはターム(term)の数やボリューム(volume)などが大きくなり、サービスに困難をきたす。
【0047】
本実施形態では、上述したような個別データ検索サービスの特徴を考慮した上で、個別データ検索サービスに特化したエンジンとして、転置索引資料構造は使用せずに個別データ検索サービスの応答速度を満たすことのできる検索エンジンを提供する。
【0048】
コンピュータ装置200のプロセッサ220は、
図4に示した個別データ検索方法を実行するための構成要素として、
図3に示すように、文書保存部310および並列検索部320を含んでよい。実施形態によって、プロセッサ220の構成要素は、選択的にプロセッサ220に含まれても除外されてもよい。また、実施形態によって、プロセッサ220の構成要素は、プロセッサ220の機能の表現のために分離されても併合されてもよい。
【0049】
このようなプロセッサ220およびプロセッサ220の構成要素は、
図3の個別データ検索方法に含まれる段階S410~S420を実行するようにコンピュータ装置200を制御してよい。例えば、プロセッサ220およびプロセッサ220の構成要素は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのプログラムのコードとによる命令(instruction)を実行するように実現されてよい。
【0050】
ここで、プロセッサ220の構成要素は、コンピュータ装置200に記録されたプログラムコードが提供する命令にしたがってプロセッサ220によって実行される、互いに異なる機能(different functions)の表現であってよい。例えば、コンピュータ装置200が検索対象となる文書を保存するように上述した命令にしたがってコンピュータ装置200を制御するプロセッサ220の機能的表現として、文書保存部310が利用されてよい。
【0051】
プロセッサ220は、コンピュータ装置200の制御と関連する命令がロードされたメモリ210から必要な命令を読み取ってよい。この場合、前記読み取られた命令は、プロセッサ220が以下で説明する段階S410~S420を実行するように制御するための命令を含んでよい。
【0052】
以下で説明する段階S410~S420は、
図4に示したものとは異なる順序で実行されてもよいし、段階S410~S420のうちの一部が省略されたり追加の過程がさらに含まれたりしてもよい。
【0053】
図4を参照すると、段階S410で、文書保存部310は、個人メール、個人ファイル、個人トークメッセージなどのような個別データに該当する検索対象文書をブロック単位のボリュームで保存することによって検索ボリュームを生成してよい。本発明の一実施形態によると、検索ボリュームは、ファイル形態で不揮発性メモリ210(例えば、ディスクのような補助記憶装置)に記録され、並列検索部320で検索がなされるときに、他のメモリ210(例えば、RAMのような揮発性の主記憶装置)からボリュームファイルを読み込んで処理してよい。このとき、保存されるファイルを圧縮すれば、ファイルの読み込み(read)にかかる時間を減らすことができ、検索応答時間を減らすことができる。
【0054】
文書保存部310は、検索対象となる流入文書をブロック単位のボリュームで保存するが、このとき、検索応答時間を最小化するために、ボリュームをブロック単位に圧縮して圧縮ボリュームとして保存する。言い換えれば、文書保存部310は、検索過程でボリュームの読み込み時間を減らすために、ボリューム生成段階で検索対象文書を圧縮してから保存してよい。このとき、文書保存部310は、検索対象文書を事前に定められた一定サイズのブロック単位で集めて圧縮してよい。各ブロックのサイズは、圧縮率が出るように十分に大きくて並列化が可能な水準の経験値や実験値によって決定されてよく、100KB~10MBの値のうち、例えば、1MBのブロック単位に圧縮ボリュームを生成してよい。転置索引構造を使用せずに検索ボリュームを生成することにより、ボリュームの生成過程(すなわち、パッキング(packing))が軽くなり、ボリュームの生成費用を大幅に減らすことができる。検索対象文書を圧縮する場合、検索にかかる入力/出力時間(I/O time)を減らすことができる上に、ボリュームのサイズとサーバの資源需要を減らすことができる。
【0055】
段階S420で、並列検索部320は、検索要請が受信される場合、検索要請に対応する圧縮ボリュームを読み込み、読み込んだ圧縮ボリュームに対するフルスキャン検索を並列実行してよい。このとき、並列検索部320は、クエリと部分一致する文書を探索する文字列ファインド(find)方式によってフルスキャン検索を行ってよい。並列検索部320は、検索要請が受信されれば、検索要請に対応する圧縮ボリュームを読み込んだ後、文字列ファインドを実行してよい。文字列ファインドを実行するためにはボリューム内の全体文書を読み込む必要があるが、圧縮ボリュームを読み込む過程は並列化が不可能である反面、圧縮ボリュームのデコードと文字列ファインド過程は並列化が可能である。言い換えれば、並列検索部320は、検索要請に対応するすべての圧縮ボリュームを並列にデコードした後に文字列ファインドを実行してよい。個別データ検索サービスでの検索対象は全体文書のうちの極一部であるため、転置索引資料構造の代わりにフルスキャン検索を行うことにより、十分な速さの応答速度を保障することができる。フルスキャン検索方式は、検索ボリュームに原本文書をそのまま保存した後にスキャンすることができるため、ボリュームの生成費用を大幅に節減することができ、増分(increment)実現が簡単であり、新規文書の反映も迅速であるという利点がある。特に、本実施形態では、フルスキャン検索時に、ブロック単位の並列化によってボリュームのデコード時間と文字列ファインドの実行時間を含むCPU時間を減らすことができる。
【0056】
本実施形態は、転置索引構造は使用せず、フルスキャン方式を利用した個別データ検索サービスを提供する。
【0057】
フルスキャン検索は、検索要請に対応するボリュームを読み込んだ後、該当のボリューム内の全体文書を読み込んでクエリと部分一致する文書を探索する。このとき、検索応答時間は、ボリュームを読み込む入力/出力時間とフルスキャン検索を行うCPU時間を含む。
【0058】
フルスキャン方式を利用した個別データ検索サービスの場合、検索応答時間を最小化するために、入力/出力時間を減らす方法とCPU時間を減らす方法が適用される。
【0059】
図5は、本発明の一実施形態における、入力/出力時間を減らす方法を説明するための例示図である。
【0060】
図5の入力/出力時間を減らす方法は、
図4で説明した文書保存段階S410に該当する。
【0061】
プロセッサ220は、検索対象文書を一定サイズのブロック単位に圧縮してよい。
図5を参照すると、検索対象文書からなる増分ボリューム(increment volume)50を一定サイズのブロック単位に圧縮してよい。言い換えれば、プロセッサ220は、検索対象文書を分けて圧縮することによってブロック単位の圧縮ボリューム60を生成してよく、これにより、検索応答時間のうちの入力/出力時間を減らすことができる。例えば、
図5に示すように400%の圧縮率を適用した場合、入力/出力時間と保存空間を1/4に減らすことができる。
【0062】
個別データ検索サービスのための資料構造には、検索対象文書を圧縮前に集めておいたボリュームを示す増分ボリューム50と、一定サイズのブロック単位に圧縮されたボリュームを示す圧縮ボリューム60が存在する。増分ボリュームは、少量の文書が継続して流入する環境において、ボリュームファイルの読み取りとデコード実行を最小化するための目的に利用されてよい。以下で説明するように、一定のサイズになれば圧縮を行って圧縮ボリュームを生成して、比較的小さなサイズで維持することが好ましい。
【0063】
このとき、プロセッサ220は、新規文書が流入する場合、新規文書をサービス可能な資料構造に変換した後、増分ボリューム50に付け足して(append)反映してよい。
図6に示すように、プロセッサ220は、検索対象文書からなる増分ボリューム50が一定のサイズ、例えば1MBに達する時点に、1MBのブロック単位に圧縮して圧縮ボリューム60に付け足してよい。文書の平均サイズが4KBであってSSDの読み込み速度が500MB/sであるときには、個別ボリュームの最大50万個の文書まで1秒内で検索することが可能である。
【0064】
プロセッサ220は、ボリューム生成過程を実行すると同時にフルスキャン検索を実行することで、ボリューム生成過程中にサーバがシャットダウン(shutdown)したとしてもボリュームを維持することができる。追加された文書だけをボリュームに付け足すことで、ボリュームを再生成したり交換したりせずに増分することができる。
【0065】
図7を参照すると、プロセッサ220は、新規文書の場合、新規文書を増分ボリューム50に付け足した後、増分ボリューム50が一定のサイズに達したときに増分ボリューム50を圧縮して、圧縮ボリューム60に反映してよい。
【0066】
一方、プロセッサ220は、圧縮ボリューム60が生成された後に既存の文書が削除される場合、該当の文書に対する削除情報をマーキングしてよく、検索結果の生成時にマーキングされた文書を検索結果から除外する方式で処理してよい。このとき、削除情報をマーキングするための追加の資料構造が使用されてよい。実施形態によっては、周期的または必要時期に削除文書などを含んだガービッジ(不要データ(garbage))を整理して圧縮ボリューム60を再生成することも可能である。
【0067】
図8は、本発明の一実施形態における、CPU時間を減らす方法を説明するための例示図である。
【0068】
図8のCPU時間を減らす方法は、
図4で説明した並列検索段階S420に該当する。
【0069】
図8を参照すると、プロセッサ220は、ブロック単位に圧縮されたボリューム、すなわち圧縮ボリューム60をデコードする過程と、デコードによって圧縮が解除された検索対象文書50を対象にフルスキャンによる文字列ファインドを実行する過程をそれぞれ並列化してよい。プロセッサ220は、ブロック単位で並列デコードと並列文字列ファインドを実行することにより、検索応答時間のうちのCPU時間を減らすことができる。プロセッサ220は、ブロック単位の並列デコードと並列文字列ファインドにより、検索要請に対応する検索結果80を応答結果として提供してよい。
【0070】
図9は、本発明の一実施形態における、フルスキャン方式を利用した個別データ検索サービス構造を示した図である。
【0071】
図9を参照すると、本発明に係る個別データ検索装置は、個別データ検索サービスのために、SAS(search application server)910と検索サーバ(search server)920を含んでよい。SAS910は検索要請に対応する検索結果を提供する役割を担い、検索サーバ920は検索のための圧縮ボリューム60を保存する役割を担う。検索サーバ920は、転置索引の代わりにボリューム生成過程(パッキング(packing))を実行してよく、1つの検索サーバ920で数万個以上のボリュームを保存してよい。
【0072】
本発明に係る個別データ検索装置は、転置索引を使用しないため索引サーバを要求せず、ブロック単位の圧縮ボリューム60を適用するため検索サーバ920の需要も減らすことができる。
【0073】
本発明に係る個別データ検索装置は、転置索引の代わりにフルスキャン方式を利用することにより、個別データ検索サービスで要求する部分一致検索を自然に提供することができる。
【0074】
また、本発明に係る個別データ検索装置は、サーバの二重化を支援してよい。
図10を参照すると、各ユーザに検索サーバ920で2つのホストをランダムに指定し、指定されたホストに該当のユーザの個別データを保存してよい。個別データ検索装置は、各ユーザにマッピングされたサーバ位置を保存するデータベース1030を含んでよい。言い換えれば、複数台の検索サーバ920に個別データに対する複製ボリューム(replica volume)を保存してよく、これは、検索要請の分散の用途ではなく待機複製(standby replication)の用途として適用することができる。
【0075】
さらに、本発明に係る個別データ検索装置は、同じ意味の文字を互いに区分せずに検索する照合(collation)機能を支援してよい。照合機能には、大文字と小文字を区分せずに検索する機能(case insensitive)、符号のないアルファベットと符号のあるアルファベット(例えば、
(外1)
など)を区分せずに検索する機能、片仮名と平仮名を区分せずに検索する機能(Kana Type insensitive)などが含まれてよい。
【0076】
本発明に係る個別データ検索装置は、検索のためのボリュームと文書要約(例えば、Snippetなど)のためのボリュームが1つで構成されているため、これを正規化する場合、検索は可能であるが文書要約は不可能であるという限界が生じ得る。
【0077】
本発明に係る個別データ検索装置は、照合を提供するために、検索時にユニコード正規化を実行する方式と、ボリューム生成時にユニコード正規化を実行する方式のうちの1つを適用してよい。
【0078】
一例として、プロセッサ220は、検索時に検索要請に含まれたクエリとボリューム内の文書をすべてユニコード正規化し、正規化された文字列を一定の形態に変換した(例えば、downcase)後に検索を行うことによって照合による検索結果を提供してよい。このとき、プロセッサ220は、検索実行時間を最小化するために正規化過程も並列実行してよい。
【0079】
他の例として、プロセッサ220は、ボリューム生成時に前処理方式で文書をユニコード正規化した後に保存してよい。
図11を参照すると、プロセッサ220は、ボリューム生成過程において、ボリューム内の文書を正規化すると同時に、正規化された文書を原状復帰するための変換テーブル1140をともに生成してよい。変換テーブル1140は、文字列内の変換文字位置を示すオフセットと、該当の位置の原本文字で構成されてよい。この後、プロセッサ220は、検索時にクエリを正規化し、該当のクエリに対して既に正規化された文書で検索してよい。検索過程ではクエリだけを正規化し、検索対象となる文書は既に正規化されているため、検索負荷を減らすことができる。検索結果による文書要約時には原本文書が必要となるため、変換テーブル1140を利用して該当の文書を原状復帰してよい。文書要約は、検索結果によっては一部の文書だけに対して行うため、原状復帰する文書が少なく、検索応答時間に大きな影響を与えない。
【0080】
このように、本発明の実施形態によると、個別データ検索サービスに特化したエンジンとして、転置索引資料構造を使用せずに個別データ検索サービスの応答速度を満たすことのできる検索エンジンを提供することができる。また、本発明の実施形態によると、検索対象となる文書をブロック単位の圧縮ボリュームで生成し、圧縮ボリュームを並列にフルスキャン検索することにより、検索効率が高く、直観的な検索サービスを提供することができる。
【0081】
上述した装置は、ハードウェア構成要素、ソフトウェア構成要素、および/またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)およびOS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを記録、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者であれば、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0082】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、コンピュータ記録媒体または装置に具現化されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で記録されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に記録されてよい。
【0083】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。ここで、媒体は、コンピュータ実行可能なプログラムを継続して記録するものであっても、実行またはダウンロードのために一時記録するものであってもよい。また、媒体は、単一または複数のハードウェアが結合した形態の多様な記録手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されることはなく、ネットワーク上に分散して存在するものであってもよい。媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD-ROMおよびDVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどを含み、プログラム命令が記録されるように構成されたものであってよい。また、媒体の他の例として、アプリケーションを配布するアプリケーションストアやその他の多様なソフトウェアを供給または配布するサイト、サーバなどで管理する記録媒体または格納媒体が挙げられる。
【0084】
以上のように、実施形態を、限定された実施形態および図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【0085】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
【符号の説明】
【0086】
220:プロセッサ
310:文書保存部
320:並列検索部