(57)【特許請求の範囲】
【請求項１】
１桁以上の数字の配列である数値の各桁の数字と、桁を表現する記号である桁表現との桁ごとの対応付けにより前記数値を管理する管理装置に、検索条件を送信する検索装置であって、
検索対象である、それぞれが１桁以上の数字の配列である複数の検索対象数値を、桁数の共通性及び上位桁からの数字の配列の共通性を基準にしてグルーピングして、１つ以上の数値グループを生成するグルーピング部と、
数値グループごとに、数値グループに含まれる検索対象数値間で数字の配列が共通している範囲である配列共通範囲の各桁の数字と、前記配列共通範囲の各桁の前記桁表現とを対応付けて検索条件要素を生成し、数値グループごとの前記検索条件要素を統合して前記検索条件を生成する検索条件生成部と、
前記検索条件生成部により生成された前記検索条件を前記管理装置に送信する送信部とを有する検索装置。
【請求項２】
前記グルーピング部は、
前記複数の検索対象数値から、相互に桁数が一致し、最下位桁の数字のみが異なる検索対象数値を抽出し、抽出した検索対象数値が含まれる数値グループを生成する請求項１に記載の検索装置。
【請求項３】
前記検索装置は、更に、
前記検索条件生成部により生成された前記検索条件を暗号化する暗号化部を有し、
前記送信部は、
前記暗号化部により暗号化された前記検索条件を前記管理装置に送信する請求項１に記載の検索装置。
【請求項４】
１桁以上の数字の配列である数値の各桁の数字と、桁を表現する記号である桁表現との桁ごとの対応付けにより前記数値を管理する管理装置と、
前記管理装置に検索条件を送信する検索装置とを有する検索システムであって、
前記検索装置は、
検索対象である、それぞれが１桁以上の数字の配列である複数の検索対象数値を、桁数の共通性及び上位桁からの数字の配列の共通性を基準にしてグルーピングして、１つ以上の数値グループを生成するグルーピング部と、
数値グループごとに、数値グループに含まれる検索対象数値間で数字の配列が共通している範囲である配列共通範囲の各桁の数字と、前記配列共通範囲の各桁の前記桁表現とを対応付けて検索条件要素を生成し、数値グループごとの前記検索条件要素を統合して前記検索条件を生成する検索条件生成部と、
前記検索条件生成部により生成された前記検索条件を前記管理装置に送信する送信部とを有する検索システム。
【請求項５】
前記検索システムは、更に、
前記管理装置に管理させる、１桁以上の数字の配列である管理対象数値の各桁の数字に、桁ごとに前記桁表現を対応付け、
前記管理対象数値の各桁の数字と前記桁表現との桁ごとの対応付けが示される対応付け情報を前記管理装置に送信する登録装置を有し、
前記管理装置は、
前記対応付け情報を用いて前記管理対象数値を管理する請求項４に記載の検索システム。
【請求項６】
前記登録装置は、
前記対応付け情報を暗号化し、暗号化された前記対応付け情報を前記管理装置に送信し、
前記管理装置は、
暗号化された前記対応付け情報を用いて前記管理対象数値を管理し、
前記検索装置は、更に、
前記検索条件生成部により生成された前記検索条件を暗号化する暗号化部を有し、
前記送信部は、
前記暗号化部により暗号化された前記検索条件を前記管理装置に送信する請求項４に記載の検索システム。
【請求項７】
１桁以上の数字の配列である数値の各桁の数字と、桁を表現する記号である桁表現との桁ごとの対応付けにより前記数値を管理する管理装置に、検索条件を送信するコンピュータが、
検索対象である、それぞれが１桁以上の数字の配列である複数の検索対象数値を、桁数の共通性及び上位桁からの数字の配列の共通性を基準にしてグルーピングして、１つ以上の数値グループを生成し、
数値グループごとに、数値グループに含まれる検索対象数値間で数字の配列が共通している範囲である配列共通範囲の各桁の数字と、前記配列共通範囲の各桁の前記桁表現とを対応付けて検索条件要素を生成し、数値グループごとの前記検索条件要素を統合して前記検索条件を生成し、
生成された前記検索条件を前記管理装置に送信する検索方法。
【請求項８】
１桁以上の数字の配列である数値の各桁の数字と、桁を表現する記号である桁表現との桁ごとの対応付けにより前記数値を管理する管理装置に、検索条件を送信するコンピュータに、
検索対象である、それぞれが１桁以上の数字の配列である複数の検索対象数値を、桁数の共通性及び上位桁からの数字の配列の共通性を基準にしてグルーピングして、１つ以上の数値グループを生成するグルーピング処理と、
数値グループごとに、数値グループに含まれる検索対象数値間で数字の配列が共通している範囲である配列共通範囲の各桁の数字と、前記配列共通範囲の各桁の前記桁表現とを対応付けて検索条件要素を生成し、数値グループごとの前記検索条件要素を統合して前記検索条件を生成する検索条件生成処理と、
前記検索条件生成処理により生成された前記検索条件を前記管理装置に送信する送信処理とを実行させる検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの検索に関する。
【背景技術】
【０００２】
インターネット等のソースから収集したデータの中から、必要なデータを効率的に得るためのシステムとして検索システムがある。検索システムでは、検索時間の削減や検索結果の正確性の向上を目的として、収集したデータをデータベースに登録する時に検索を補助する情報がデータに付与されることがある。【０００３】
例えば、特許文献１には、必要な文書を見つけやすくする検索システム及び検索方法が開示されている。
より具体的には、特許文献１の技術では、文書を構成するテキストが複数のブロックに分割される。また、各ブロックのハッシュ値が位置情報と共にテキストに付与され、テキストとハッシュ値と位置情報が登録される。そして、検索時に位置情報とハッシュ値を基にして文書が検索される。【０００４】
また、特許文献２及び特許文献３には、キーワード列を検索ファイルから取り出す方法が開示されている。
より具体的には、特許文献２及び特許文献３の技術では、検索対象となるキーワード列が文字ごとに分解される。また、各文字の位置情報及びキーワードの属性情報が文字種ごとにグループ化された検索ファイルが生成される。そして、検索時に検索入力を構成する文字の位置情報を検索ファイルから取り出して照合することで、検索入力と文字順序が等しくかつキーワードの属性情報が同じキーワード列が検索ファイルから取り出される。【０００５】
また、特許文献４には、部分的に文字列が一致する文字データを検索する方法が開示されている。
特許文献４の技術では、登録装置が、保管データである文字列データを文字ごとに分解し、各文字から生成した部分文字列を暗号化する。更に、登録装置が、暗号化した部分文字列を位置情報と共に暗号化して保管暗号化データを生成する。そして、登録装置が、保管暗号化データを管理装置に登録する。
また、検索時には、検索装置が、検索データである文字列データを暗号化して検索暗号化データを生成する。そして、検索装置は、検索暗号化データを管理装置に送信する。管理装置は、受信した検索暗号化データを位置情報と共に暗号化し、暗号化後の検索暗号化データを保管暗号化データと照合する。
上記の方法により、特許文献４では、保管データの文字列データ及び検索データの文字列データが管理装置内で露見することなく、部分的に文字列が一致する文字データを検索することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開ＷＯ２０１０／０４７２８６号公報
【特許文献２】特開平０４−３４０１６４号公報
【特許文献３】特開平０４−３４０１６５号公報
【特許文献４】特許第６０３８４２７号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１〜４の技術では、文字データが文字ごとに分割され、分割後の文字が位置情報と共に登録される。そして、登録されている登録データと検索データが照合されて、登録データの中から検索データに一致する文字が含まれる登録データが検索される。
しかしながら、文字データが数値であり、特定の数値範囲に含まれる数値を検索するという状況においては、該当しない文字データがノイズとして検索結果に含まれることがあるという課題がある。
例えば、「１００〜１０９」という数値範囲に含まれる数値を検索する例を想定する。特許文献１〜４の技術では、「１００〜１０９」の各値に共通する「１０」という数字（文字列）を検索データにして検索を行うことができる。登録データに「１００〜１０９」に該当しない「１０」又は「１０００」が含まれる場合がある。この場合には、これらの数値は検索データ「１０」に合致する数字を含んでいるため、数値範囲「１００〜１０９」に含まれる数値ではないにも関わらず、検索結果として出力されてしまう。
なお、このように検索の意図とは異なる検索結果が出力されないように、特定の数値範囲に含まれる数値の全てについて個別に検索を行うことが考えられる。しかし、特定の数値範囲に含まれる数値の個数に比例して検索を行う回数が増え、全体としての検索時間が増大してしまう。【０００８】
本発明は、効率的かつ正確に数値を検索できるようにすることを主な目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る検索装置は、
１桁以上の数字の配列である数値の各桁の数字と、桁を表現する記号である桁表現との桁ごとの対応付けにより前記数値を管理する管理装置に、検索条件を送信する検索装置であって、
検索対象である、それぞれが１桁以上の数字の配列である複数の検索対象数値を、桁数の共通性及び上位桁からの数字の配列の共通性を基準にしてグルーピングして、１つ以上の数値グループを生成するグルーピング部と、
数値グループごとに、数値グループに含まれる検索対象数値間で数字の配列が共通している範囲である配列共通範囲の各桁の数字と、前記配列共通範囲の各桁の前記桁表現とを対応付けて検索条件要素を生成し、数値グループごとの前記検索条件要素を統合して前記検索条件を生成する検索条件生成部と、
前記検索条件生成部により生成された前記検索条件を前記管理装置に送信する送信部とを有する。
【発明の効果】
【００１０】
本発明によれば、効率的かつ正確に数値を検索することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る検索システムのシステム構成例を示す図。
【図２】実施の形態１に係る登録装置の機能構成例を示す図。
【図３】実施の形態１に係る検索装置の機能構成例を示す図。
【図４】実施の形態１に係る管理装置の機能構成例を示す図。
【図５】実施の形態１に係る検索システムのデータ登録処理を示すフローチャート。
【図６】実施の形態１に係る検索システムのデータ登録処理を示すフローチャート。
【図７】実施の形態１に係る検索システムのデータ検索処理を示すフローチャート。
【図８】実施の形態１に係る検索システムのデータ検索処理を示すフローチャート。
【図９】実施の形態１に係る検索システムのハードウェア構成例を示す図。
【図１０】実施の形態２に係る検索システムの構成を示す図。
【図１１】実施の形態２に係る登録装置の機能構成例を示す図。
【図１２】実施の形態２に係る検索装置の機能構成例を示す図。
【図１３】実施の形態２に係る管理装置の機能構成例を示す図。
【図１４】実施の形態２に係る鍵生成装置の機能構成例を示す図。
【図１５】実施の形態２に係る検索システムのデータ登録処理を示すフローチャート。
【図１６】実施の形態２に係る検索システムのデータ登録処理を示すフローチャート。
【図１７】実施の形態２に係る検索システムのデータ検索処理を示すフローチャート。
【図１８】実施の形態２に係る検索システムのデータ検索処理を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
【００１３】
実施の形態１．
本実施の形態では、文字データが数値である場合に、特定の数値範囲に含まれる数値を検索する例を説明する。また、本実施の形態では、検索時間の増大を抑えつつ、正確な検索結果を出力する検索システムを説明する。
【００１４】
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係る検索システム１００の構成例を示す。
図１に示すように、検索システム１００は、複数の登録装置２００と、複数の検索装置３００と、管理装置４００とを備える。
【００１５】
検索システム１００は、１つの登録装置２００のみを備えていてもよい。検索システム１００は、一つの検索装置３００のみを備えていてもよい。検索システム１００は、複数の管理装置４００を備えていてもよい。
ネットワーク１０１は、複数の登録装置２００と、複数の検索装置３００と、管理装置４００とを接続する通信路である。
例えば、ネットワーク１０１は、インターネット又は企業内に敷設されたＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。
ネットワーク１０１は、複数の登録装置２００と、複数の検索装置３００と、管理装置４００とを接続する通信路である。
【００１６】
登録装置２００は、例えば、パーソナルコンピュータである。登録装置２００は、保管データを管理装置４００に登録する登録端末として動作するコンピュータである。登録装置２００は、保管データを生成し、保管データの保管を管理装置４００に要求する。登録装置２００は、数値が含まれる保管データを生成する場合がある。
【００１７】
検索装置３００は、例えば、パーソナルコンピュータである。検索装置３００は、検索条件である検索データを管理装置４００に送信し、その後、管理装置４００から検索結果を受信し、検索結果を出力するコンピュータである。検索装置３００は、検索データを管理装置４００に送信して保管データと検索データの照合を要求する。検索装置３００は、管理装置４００から返信される検索結果を出力する。なお、検索装置３００により行われる処理は、検索方法及び検索プログラムに相当する。
【００１８】
管理装置４００は、登録装置２００によって生成された保管データを保管する大容量の記録媒体を持つ。管理装置４００は、登録装置２００から保管データの保管の要求があれば、保管データを保管する。管理装置４００が保管する保管データのうちの少なくとも一部の保管データには、数値が含まれる。管理装置４００は、検索装置３００から検索の要求があれば、保管データと検索データを照合し、検索結果を検索装置３００に送信する。
【００１９】
なお、同じパーソナルコンピュータ内に、登録装置２００、検索装置３００が同時に含まれていてもよい。
【００２０】
以下、本実施の形態の構成について説明する。
図１に示したように、検索システム１００は、登録装置２００と、検索装置３００と、管理装置４００とを備える。
以下では、登録装置２００の構成、検索装置３００の構成、管理装置４００の構成について順番に説明する。
【００２１】
図２は、登録装置２００の機能構成例を示す。図２に示すように、登録装置２００は、入力部２０１と、数値判定部２０２と、データ分割部２０３と、桁表現文字列追加部２０４と、部分文字列生成部２０５と、位置情報割当部２０６と、送信部２０７とを備える。なお、図２には図示していないが、後述するように、登録装置２００は、登録装置２００の各構成要素で使用されるデータを記憶する記録媒体を備える。
【００２２】
入力部２０１は、データ登録者（ユーザ）から入力された保管データとデータ名を取得する。なお、本実施の形態では、保管データは保管データＤといい、データ名をＩＤ（Ｄ）という。データ登録者からデータ名の入力がなければ、入力部２０１は、入力された保管データＤのデータ名ＩＤ（Ｄ）に乱数を割り当ててもよいし、他の保管データのデータ名と重複しないように０より大きい整数の値を順に割り当ててもよい。データ名ＩＤ（Ｄ）は、保管データＤを識別する識別子である。
【００２３】
数値判定部２０２は、入力部２０１から取得した保管データＤから１桁以上の数値（すなわち、１つ以上の数字が配列された文字列）が含まれているか否かを判定する。保管データＤに数値が含まれている場合は、数値を数値データＤＮとして抽出する。なお、保管データＤに含まれる数値データＤＮは管理対象数値に相当する。
【００２４】
データ分割部２０３は、数値判定部２０２から取得した数値データＤＮを（ｗＬ，・・・，ｗ１）と分割する。ここでＬは数値データＤＮを構成する文字の個数である。各ｗｉ（１≦ｉ≦Ｌ）は、数値データＤＮを１文字ずつ順に分割して得られる各文字（各数字）である。数値データＤＮ＝１２３であれば、Ｌ＝３である。また、Ｗ３＝１、Ｗ２＝２、Ｗ１＝３である。
【００２５】
桁表現文字列追加部２０４は、データ分割部２０３から取得した分割データ（ｗＬ，・・・，ｗ１）のそれぞれに、桁ごとに割り当てられ、桁を表現する特殊な文字列（記号）である桁表現（ｄ１，・・・，ｄＬ）を付加する。分割データの各文字に桁表現が付加されて得られる集合を、桁表現付文字集合（ｗＬｄＬ，・・・，ｗ１ｄ１）という。桁表現は、例えば、ｄ３＝γ、ｄ２＝β、ｄ１＝αである。このため、桁表現文字列追加部２０４は、分割データ（１，２，３）の桁表現付文字集合として、（１γ，２β，３α）を生成する。
【００２６】
部分文字列生成部２０５は、桁表現文字列追加部２０４から取得した桁表現付文字集合（ｗＬｄＬ，・・・，ｗ１ｄ１）から、次のような集合Ａを生成する。
Ａ＝｛（ｗＬｄＬ），（ｗＬｄＬｗＬ−１ｄＬ−１），・・・，（ｗＬｄＬ・・・ｗ１ｄ１）｝。
例えば、部分文字列生成部２０５は、桁表現付文字集合（１γ，２β，３α）から、Ａ＝｛（１γ），（１γ，２β），（１γ，２β，３α）｝を生成する。
以降では、集合Ａを部分文字列集合Ａという。部分文字列集合Ａには、数値データＤＮの各桁の数字と桁表現との桁ごとの対応関係が示される。部分文字列集合は、対応付け情報に相当する。
【００２７】
位置情報割当部２０６は、部分文字列生成部２０５から取得した部分文字列集合Ａの中の各部分文字列に対して次のように位置情報を割り当てて、集合Ｂを生成する。
Ｂ＝｛（Ｌ，ｗＬｄＬ），（Ｌ−１，ｗＬｄＬｗＬ−１ｄＬ−１），・・・，（１，ｗＬｄＬ・・・ｗ１ｄ１）｝。
例えば、位置情報割当部２０６は、部分文字列集合Ａ＝｛（１γ），（１γ，２β），（１γ，２β，３α）｝に対して、以下の集合Ｂを生成する。
Ｂ＝｛（３，１γ），（２，１γ，２β），（１，１γ，２β，３α）｝。
以降では集合Ｂを位置情報付部分文字列集合という。また、保管データＤに対する位置情報付部分文字列集合をＢ（Ｄ）という。
また、以降では、ペア（ＩＤ（Ｄ），Ｂ（Ｄ））を、保管データ集合という。
【００２８】
送信部２０７は、位置情報割当部２０６から取得した保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））を管理装置４００へ送信する。
【００２９】
図３は、検索装置３００の機能構成例を示す。
図３に示すように、検索装置３００は、入力部３０１と、検索範囲分割部３０２と、検索式生成部３０３と、桁表現文字列追加部３０４と、送信部３０５と、受信部３０６と、出力部３０７とを備える。なお、図３には図示していないが、後述するように、検索装置３００は、検索装置３００の各構成要素で使用されるデータを記憶する記録媒体を備える。
【００３０】
入力部３０１は、データ検索者から入力された検索範囲データｓを取得する。また、入力部３０１は、データ検索者から、検索範囲データと同時に、その検索範囲データと検索したい保管データ集合を指定するような保管データ名も複数受けとってもよい。
ここで、検索範囲データｓは、二つの数値（ＮＳ，ＮＢ）で構成されており、Ｎｓ≦ＮＢである。
ＮＳとＮＢと、ＮＳとＮＢとの間の数値は、それぞれ、１桁以上の数字の配列である。これらＮＳとＮＢと、ＮＳとＮＢとの間の数値は、それぞれ検索対象数値に相当する。
【００３１】
検索範囲分割部３０２は、入力部３０１から取得した検索範囲データｓから、検索範囲データｓが示す範囲に入る数値ＮＳ，ＮＳ＋１，・・・，ＮＢ−１，ＮＢを算出し、以下の手順にて分割範囲集合Ｇを生成する。
【００３２】
１．検索範囲分割部３０２は、空集合の分割範囲集合Ｇを生成する。
２．検索範囲分割部３０２は、ＮＳ，ＮＳ＋１，・・・，ＮＢ−１，ＮＢを、桁数ごとにグループに分け、１桁の数値はＧ１、２桁の数値はＧ２に配置し、・・・、ｌ桁の数値はＧｌに配置する。
例えば、ＮＳ＝１７、ＮＢ＝２１２１の場合、Ｇ１を空集合であり、Ｇ２＝｛１７，１８，・・・，９９｝、Ｇ３＝｛１００，１０１，・・・，９９９｝、Ｇ４＝｛１０００，１００１，・・・，２１２１｝である。
３．検索範囲分割部３０２は、Ｇａ（ａ＝１，・・・，ｌ）のそれぞれについて、構成している数値を最上位桁の値でグループに分け、最上位桁が１の数値はＧａ１、最上位桁が２の数値はＧａ２、・・・、最上位桁が９の数値はＧａ９に配置する。ここで、検索範囲分割部３０２は、Ｇａｂ（ａ＝１，・・・，ｌ、ｂ＝１，・・・，９）の内、空集合ではない、かつ、ＮＳまたはＮＢを含まないグループを、分割範囲集合Ｇに加える。また、検索範囲分割部３０２は、ＮＳを含むグループをＧＳとして生成し、ＮＢを含むグループをＧＢとして生成する。
例えば、ＮＳ＝１７、ＮＢ＝２１２１の場合、Ｇ１は空集合であり、Ｇ２＝｛１７，１８，・・・，９９｝、Ｇ３＝｛１００，１０１，・・・，９９９｝、Ｇ４＝｛１０００，１００１，・・・，２１２１｝である。このため、Ｇ１１〜Ｇ１９は空集合である。Ｇ２１＝｛１７、１８、１９｝、Ｇ２２＝｛２０、２１、・・・、２９｝、・・・、Ｇ４１＝｛１０００、・・・、１９９９｝、Ｇ４２＝｛２０００、・・・、２１２１｝である。検索範囲分割部３０２は、Ｇ２２〜Ｇ４１を分割範囲集合Ｇに加える。また、ＧＳ＝Ｇ２１、ＧＢ＝Ｇ４２である。
４．検索範囲分割部３０２は、Ｍ＝２を設定する。
５．検索範囲分割部３０２は、ＧＳを構成している数値を上位からＭ番目の桁の値でグループに分け、空集合ではない、かつ、ＮＳを含まないグループを、分割範囲集合Ｇに加える。また、検索範囲分割部３０２は、ＮＳを含むグループをＧＳに設定する。
６．ここで、ＧＳを構成する数値がＮＳのみとなった場合、検索範囲分割部３０２は、以下の７に進む。ＧＳを構成する数値がＮＳ以外にもある場合は、検索範囲分割部３０２は、Ｍ＝Ｍ＋１を設定して、上記の５に戻る。
７．検索範囲分割部３０２は、Ｍ＝２を設定する。
８．検索範囲分割部３０２は、ＧＢを構成している数値を上位からＭ番目の桁の値でグループに分け、空集合ではない、かつ、ＮＢを含まないグループを、分割範囲集合Ｇに加える。また、検索範囲分割部３０２は、ＮＢを含むグループをＧＢに設定する。
９．ここで、ＧＢを構成する数値がＮＢのみとなった場合、検索範囲分割部３０２は、以下の１０に進む。ＧＢを構成する数値がＮＢ以外にもある場合は、検索範囲分割部３０２は、Ｍ＝Ｍ＋１を設定して、上記の８に戻る。
１０．検索範囲分割部３０２は、ＧＢとＧＳを分割範囲集合Ｇに加える。
【００３３】
以上のように、検索範囲分割部３０２は、検索対象である複数の検索対象数値を、桁数の共通性及び上位桁からの数字の配列の共通性を基準にしてグルーピングして、数値グループを１つ以上生成する。より具体的には、検索範囲分割部３０２は、複数の検索対象数値から、相互に桁数が一致し、最下位桁の数字のみが異なる検索対象数値を抽出し、抽出した検索対象数値が含まれる数値グループを生成する。
検索範囲分割部３０２は、グルーピング部に相当する。また、検索範囲分割部３０２が行う処理は、グルーピング処理に相当する。
【００３４】
検索データ生成部３０３は、検索範囲分割部３０２から取得した分割範囲集合Ｇを構成する要素であるグループＧＣのそれぞれについて検索データＦＣを生成する。検索データＦＣは、グループＧＣを構成するすべての数値で共通している桁と共通している数値を示す。ここで、グループＧＣを構成する数値データＤＮを（ｗＬ，・・・，ｗ１）と表現する。グループＧＣを構成するすべての数値で共通している数値を表す部分文字列ｗＬ・・・ｗｊと部分文字列の位置情報ｊを用いて、検索データＦＣを表現すると、ＦＣ＝（ｊ，ｗＬ・・・ｗｊ）と表現される。
例えば、ＧＣ＝｛ｗ２０、ｗ２１、・・・、ｗ２９｝のとき、検索データＦＣは、（２、ｗ２）と表現される。ＧＣ＝｛ｗ４ｗ３００、・・・、ｗ４ｗ３９９｝のとき、検索データＦＣは、（３、ｗ４ｗ３）と表現される。
また、以降では、すべての検索データＦＣの集合を検索データ集合Ｆという。
【００３５】
桁表現文字列追加部３０４は、検索データ生成部３０３から取得した検索データ集合Ｆを構成する要素である検索データＦＣから、桁表現文字列追加部２０４と同様の規則で、桁表現付検索データＳＣを生成する。つまり、桁表現文字列追加部３０４は、検索データＦＣが（ｊ，ｗＬ・・・ｗｊ）であるとき、桁表現付検索データＳＣとして、（ｊ，ｗＬｄＬ・・・ｗｊｄｊ）を生成する。
以降では、すべての桁表現付検索データＳＣの集合を桁表現付検索データ集合Ｓという。
【００３６】
検索データ生成部３０３及び桁表現文字列追加部３０４は、以上のように、数値グループごとに、数値グループに含まれる検索対象数値間で数字の配列が共通している範囲（ｗＬ・・・ｗｊ）（配列共通範囲に相当）の各桁の数字（ｗＬ，ｗＬ＋１，・・・，ｗｊ−１，ｗｊ）と、範囲（ｗＬ・・・ｗｊ）の各桁の桁表現ｄとを対応付けて桁表現付検索データＳＣ（検索条件要素に相当）を生成する。
そして、桁表現文字列追加部３０４は、数値グループごとの桁表現付検索データＳＣを統合して桁表現付検索データ集合Ｓ（検索条件に相当）を生成する。
検索データ生成部３０３及び桁表現文字列追加部３０４は、検索条件生成部に相当する。また、検索データ生成部３０３及び桁表現文字列追加部３０４により行われる処理は、検索条件生成処理に相当する。
【００３７】
送信部３０５は、桁表現文字列追加部３０４から取得した桁表現付検索データ集合Ｓを管理装置４００に送信する。もし、データ検索者から検索範囲データと同時に保管データ名も入力されていた場合は、送信部３０５は、桁表現付検索データ集合Ｓと保管データ名の両方を管理装置４００に送信する。
【００３８】
受信部３０６は、管理装置５００から送信されてきた検索結果を受信する。
出力部３０７は、受信部３０６により受信された検索結果を通知するメッセージをデータ検索者に対して出力する。
【００３９】
図４は、管理装置４００の機能構成例を示す。図４に示すように、管理装置４００は、受信部４０１と、データ保管部４０２と、照合部４０３と、送信部４０４とを備える。なお、図４では図示していないが、後述するように、管理装置４００は、管理装置４００の各構成要素で使用されるデータを記憶する記録媒体を備える。
【００４０】
受信部４０１は、登録装置２００から送信されてきた保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））と、検索装置３００から送信されてきた桁表現付検索データ集合Ｓを受信する。検索装置３００から保管データ名が送信されている場合は、受信部４０１は保管データ名も受信する。
【００４１】
データ保管部４０２は、受信部４０１から取得した保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））を保管する。データ保管部４０２は、必要があれば、保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））の送信日時をあわせて保管してもよい。
【００４２】
照合部４０３は、検索結果に関わる空集合である集合Ｒを生成する。また、照合部４０３は、データ保管部４０２からすべての保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））を読み出す。そして、照合部４０３は、受信部４０１から取得した桁表現付検索データ集合Ｓを用いて、次のような照合を行う。また、照合部４０３は、検索結果を生成する。
照合部４０３は、すべての保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））について、位置情報付部分文字列集合Ｂ（Ｄ）と、桁表現付検索データ集合Ｓに含まれている桁表現付検索データＳＣとを照合する。そして、照合部４０３は、桁表現付検索データＳＣと同じ要素が位置情報付部分文字列集合Ｂ（Ｄ）に含まれているかを確認する。桁表現付検索データＳＣと同じ要素が位置情報付部分文字列集合Ｂ（Ｄ）に含まれているならば、照合部４０３は、当該位置情報付部分文字列集合Ｂ（Ｄ）のＩＤ（Ｄ）を集合Ｒに加える。以上の処理の結果、最終的に生成される集合Ｒを検索結果Ｒという。
なお、照合部４０３は、受信部４０１が保管データ名も受信していれば、保管データ名に基づいてデータ保管部４０２から対象の保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））のみを読み出す。そして、照合部４０３は、読み出した保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））にのみ、上記の処理を行う。
【００４３】
送信部４０４は、照合部４０３から取得した検索結果Ｒを検索装置３００に送信する。
【００４４】
ここで、実施の形態１に係る登録装置２００と、検索装置３００と、管理装置４００とのハードウェア構成例を示す。
図９は、実施の形態１に係る登録装置２００と、検索装置３００と、管理装置４００とのハードウェア構成例を示す。
【００４５】
図９おいて、登録装置２００と、検索装置３００と、管理装置４００は、それぞれ、プロセッサ９０１を備える。
また、登録装置２００と、検索装置３００と、管理装置４００は、それぞれ、補助記憶装置９２０を備える。
補助記憶装置９２０には、プログラム９２２が格納されている。これらプログラムは、登録装置２００と、検索装置３００と、管理装置４００の機能構成を実現するプログラムである。
つまり、登録装置２００では、補助記憶装置９２０に、入力部２０１、数値判定部２０２、データ分割部２０３、桁表現文字列追加部２０４、部分文字列生成部２０５、位置情報割当部２０６及び送信部２０７を実現するプログラムが格納されている。
また、検索装置３００では、補助記憶装置９２０に、入力部３０１、検索範囲分割部３０２、検索データ生成部３０３、桁表現文字列追加部３０４、送信部３０５、受信部３０６及び出力部３０７を実現するプログラムが格納されている。
また、管理装置４００では、補助記憶装置９２０に、受信部４０１、データ保管部４０２、照合部４０３及び送信部４０４を実現するプログラムが格納されている。
そして、プログラム９２２はメモリ９０２にロードされ、プロセッサ９０１により実行される。
登録装置２００では、プロセッサ９０１は、プログラム９２２を実行することにより、入力部２０１、数値判定部２０２、データ分割部２０３、桁表現文字列追加部２０４、部分文字列生成部２０５、位置情報割当部２０６及び送信部２０７の機能を実現する。
また、検索装置２００では、プロセッサ９０１は、プログラム９２２を実行することにより、入力部３０１、検索範囲分割部３０２、検索データ生成部３０３、桁表現文字列追加部３０４、送信部３０５、受信部３０６及び出力部３０７の機能を実現する。
また、管理装置４００では、プロセッサ９０１は、プログラム９２２を実行することにより、受信部４０１、データ保管部４０２、照合部４０３及び送信部４０４の機能を実現する。
補助記憶装置９２０には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）９２１も記憶されている。
そして、ＯＳ９２１の少なくとも一部がプロセッサ９０１により実行される。
プロセッサ９０１はＯＳ９２１の少なくとも一部を実行しながら、プログラム９２２を実行する。
プロセッサ９０１がＯＳ９２１を実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、補助記憶装置９２０には、ファイル９２３も記憶されている。
また、ファイル９２３には、処理の結果を示す情報、データ、信号値又は変数値が含まれる。また、登録装置２００及び管理装置４００の補助記憶装置９２０では、ファイル９２３として、保管データが記憶される。また、検索装置３００の補助記憶装置９２０では、ファイル９２３として、検索データが記憶される。
【００４６】
通信ボード９０３は、ネットワーク１０１を介して他の装置と通信するために用いられる。
【００４７】
ディスプレイ９０４は、ユーザに各種情報を表示するために用いられる。
【００４８】
キーボード９０５及びマウス９０６は、ユーザからの指示を取得するために用いられる。
【００４９】
＊＊＊動作の説明＊＊＊
以下では、本実施の形態に係る検索システム１００の動作例を説明する。
図５及び図６は、検索システム１００の登録処理を示すフローチャートである。
図５のステップＳ５０１〜ステップＳ５０７は、登録装置２００が実行する処理である。図６のステップＳ５０８〜ステップＳ５０９は管理装置４００が実行する処理である。
【００５０】
ステップＳ５０１において、入力部２０１は、ユーザであるデータ登録者から入力された保管データＤとデータ名ＩＤ（Ｄ）を取得する。なお、前述の通り、データ登録者からデータ名の入力がなければ、入力部３０４は、入力された保管データＤのデータ名ＩＤ（Ｄ）として乱数を割り当ててもよい。また、入力部３０４は、他の保管データのデータ名と重複しないように０より大きい整数の値をデータ名ＩＤ（Ｄ）として順に割り当ててもよい。
【００５１】
ステップＳ５０２において、数値判定部２０２は、入力部２０１から取得した保管データＤから数字に該当する文字列が含まれているか判定する。数字に該当する文字列が含まれている場合は、数値判定部２０２は、その文字列を数値データＤＮとして抽出する。
【００５２】
ステップＳ５０３において、データ分割部２０３は、数値判定部２０２から取得した数値データＤＮを（ｗＬ，・・・，ｗ１）と分割する。ここでＬは数値データＤＮの文字数である。各ｗｉ（１≦ｉ≦Ｌ）は、数値データＤＮを１文字ずつ順に分割して得られた数字である。
ここでｗｉを要素データと呼ぶ。データ分割部３０５は、文字列データである数値データＤＮを、数値データＤＮの始まりから終わりに向かうＬ個の要素データｗＬ，．．．，ｗ１に分割する。
【００５３】
ステップＳ５０４において、桁表現文字列追加部２０４は、ステップＳ５０３で生成された分割データ（ｗＬ，・・・，ｗ１）のそれぞれに、桁を表現する特殊な文字列である桁表現（ｄ１，・・・，ｄＬ）を付与し、桁表現付文字集合（ｗＬｄＬ，・・・，ｗ１ｄ１）を生成する。
【００５４】
ステップＳ５０５において、部分文字列生成部２０５は、ステップＳ５０４で生成された桁表現付文字集合（ｗＬｄＬ，・・・，ｗ１ｄ１）から、次のような部分文字列集合Ａを生成する。
Ａ＝｛（ｗＬｄＬ），（ｗＬｄＬｗＬ−１ｄＬ−１），・・・，（ｗＬｄＬ・・・ｗ１ｄ１）｝。
【００５５】
ステップＳ５０６において、位置情報割当部２０６は、ステップＳ５０５で生成された部分文字列集合Ａの中の各部分文字列に対して次のように位置情報を割り当てて、保管データＤに対する位置情報付部分文字列集合Ｂ（Ｄ）を生成し、保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））を生成する。
Ｂ＝｛（Ｌ，ｗＬｄＬ），（Ｌ−１，ｗＬｄＬｗＬ−１ｄＬ−１），・・・，（１，ｗＬｄＬ・・・ｗ１ｄ１）｝。
【００５６】
ステップＳ５０７において、送信部２０７は、ステップＳ５０６で生成した保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））を管理装置４００へ送信する。
【００５７】
ステップＳ５０８において、受信部４０１は、ステップＳ５０７で送信された保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））を受信する。
【００５８】
ステップＳ５０９において、データ保管部４０２は、ステップＳ５０８で受信した保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））を保管する。
ステップＳ５０９により、検索システム１００の登録処理は終了する。
【００５９】
図７及び図８は、検索システム１００の検索処理を示すフローチャートである。
図７のステップＳ６０１〜ステップＳ６０５及びステップＳ６１０〜ステップＳ６１１は検索装置３００が実行する処理である。図８のステップＳ６０６〜ステップＳ６０９は管理装置４００が実行する処理である。
【００６０】
ステップＳ６０１において、入力部３０１は、ユーザであるデータ検索者から入力された検索範囲データｓを取得する。なお、データ検索者は、複数の検索範囲データｓを同時に入力してもよい。データ検索者が複数の検索範囲データｓを入力する場合は、検索装置３００は、検索範囲データｓごとに以降の処理を実施する。また、前述のとおり、入力部３０１は、データ検索者から、検索範囲データと同時に、検索対象の保管データを指定する保管データ名を１つ又は複数取得してもよい。ここで、検索範囲データｓは、二つの数値（ＮＳ，ＮＢ）で構成されており、Ｎｓ≦ＮＢである。
【００６１】
ステップＳ６０２において、検索範囲分割部３０２は、ステップＳ６０１で入力された検索範囲データｓから、検索範囲データｓが示す範囲に入る数値ＮＳ，ＮＳ＋１，・・・，ＮＢ−１，ＮＢを算出し、前述したように、以下のように分割範囲集合Ｇを生成する。
１．検索範囲分割部３０２は、空集合の分割範囲集合Ｇを生成する。
２．検索範囲分割部３０２は、ＮＳ，ＮＳ＋１，・・・，ＮＢ−１，ＮＢを、桁数ごとにグループに分け、１桁の数値はＧ１、２桁の数値はＧ２に配置し、・・・、ｌ桁の数値はＧｌに配置する。
３．検索範囲分割部３０２は、Ｇａ（ａ＝１，・・・，ｌ）のそれぞれについて、構成している数値を最上位桁の値でグループに分け、最上位桁が１の数値はＧａ１、最上位桁が２の数値はＧａ２、・・・、最上位桁が９の数値はＧａ９に配置する。ここで、検索範囲分割部３０２は、Ｇａｂ（ａ＝１，・・・，ｌ、ｂ＝１，・・・，９）の内、空集合ではない、かつ、ＮＳまたはＮＢを含まないグループを、分割範囲集合Ｇに加える。また、検索範囲分割部３０２は、ＮＳを含むグループをＧＳとして生成し、ＮＢを含むグループをＧＢとして生成する。
４．検索範囲分割部３０２は、Ｍ＝２を設定する。
５．検索範囲分割部３０２は、ＧＳを構成している数値を上位からＭ番目の桁の値でグループに分け、空集合ではない、かつ、ＮＳを含まないグループを、分割範囲集合Ｇに加える。また、検索範囲分割部３０２は、ＮＳを含むグループをＧＳに設定する。
６．ここで、ＧＳを構成する数値がＮＳのみとなった場合、検索範囲分割部３０２は、以下の７に進む。ＧＳを構成する数値がＮＳ以外にもある場合は、検索範囲分割部３０２は、Ｍ＝Ｍ＋１を設定して、上記の５に戻る。
７．検索範囲分割部３０２は、Ｍ＝２を設定する。
８．検索範囲分割部３０２は、ＧＢを構成している数値を上位からＭ番目の桁の値でグループに分け、空集合ではない、かつ、ＮＢを含まないグループを、分割範囲集合Ｇに加える。また、検索範囲分割部３０２は、ＮＢを含むグループをＧＢに設定する。
９．ここで、ＧＢを構成する数値がＮＢのみとなった場合、検索範囲分割部３０２は、以下の１０に進む。ＧＢを構成する数値がＮＢ以外にもある場合は、検索範囲分割部３０２は、Ｍ＝Ｍ＋１を設定して、上記の８に戻る。
１０．検索範囲分割部３０２は、ＧＢとＧＳを分割範囲集合Ｇに加える。
【００６２】
ステップＳ６０３において、検索データ生成部３０３は、ステップＳ６０２で生成した分割範囲集合Ｇを構成する要素であるグループＧＣのそれぞれについて検索データＦＣを生成する。検索データＦＣは、前述したように、グループＧＣを構成するすべての数値で共通している桁と共通している数値を示す。ここで、グループＧＣを構成する数値データＤＮを（ｗＬ，・・・，ｗ１）と表現する。グループＧＣを構成するすべての数値で共通している数値を表す部分文字列ｗＬ・・・ｗｊと部分文字列の位置情報ｊを用いて、検索データＦＣを表現すると、ＦＣ＝（ｊ，ｗＬ・・・ｗｊ）と表現される。
前述したように、すべての検索データＦＣの集合を検索データ集合Ｆという。
【００６３】
ステップＳ６０４において、桁表現文字列追加部３０４は、ステップＳ６０３で生成された検索データ集合Ｆを構成する要素である検索データＦＣから、桁表現文字列追加部２０４と同様の規則で、桁表現付検索データＳＣを生成する。つまり、桁表現文字列追加部３０４は、検索データＦＣが（ｊ，ｗＬ・・・ｗｊ）であるとき、桁表現付検索データＳＣとして、（ｊ，ｗＬｄＬ・・・ｗｊｄｊ）を生成する。
前述したように、すべての桁表現付検索データＳＣの集合を桁表現付検索データ集合Ｓという。
【００６４】
ステップＳ６０５において、送信部３０５は、ステップＳ６０４で生成された桁表現付検索データ集合Ｓを管理装置４００に送信する。もし、データ検索者から検索範囲データと同時に保管データ名も入力されていた場合は、桁表現付検索データ集合Ｓと保管データ名の両方を管理装置４００に送信する。
【００６５】
ステップＳ６０６において、受信部４０１は、ステップＳ６０５で送信された桁表現付検索データ集合Ｓを受信する。また、保管データ名が送信された場合は、受信部４０１は保管データ名も受信する。
【００６６】
ステップＳ６０７において、照合部４０３は、データ保管部４０２からすべての保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））を読み出す。なお、ステップＳ６０６で受信部４０１が保管データ名を受信していた場合は、照合部４０３は、保管データ名に対応する保管データ集合のみを読み出す。ステップＳ６０６で受信部４０１が保管データ名を受信していない場合は、照合部４０３は、保管されているすべての保管データ集合を読み出す。
【００６７】
ステップＳ６０８において、照合部４０３は、検索結果に関わる空集合である集合Ｒを生成する。また、照合部４０３は、ステップＳ６０７で読み出した保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））と、受信部４０１から取得した桁表現付検索データ集合Ｓとに基づき、次のような照合を行う。そして、照合部４０３は、検索結果を生成する。
照合部４０３は、すべての保管データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））について、位置情報付部分文字列集合Ｂ（Ｄ）と、桁表現付検索データ集合Ｓに含まれている桁表現付検索データＳＣとを照合する。そして、照合部４０３は、桁表現付検索データＳＣと同じ要素が位置情報付部分文字列集合Ｂ（Ｄ）に含まれているか否かを確認する。もし、桁表現付検索データＳＣと同じ要素が位置情報付部分文字列集合Ｂ（Ｄ）に含まれているならば、照合部４０３は、当該位置情報付部分文字列集合Ｂ（Ｄ）のＩＤ（Ｄ）を集合Ｒに加える。以上の処理の結果、最終的に生成される集合Ｒを検索結果Ｒという。
【００６８】
ステップＳ６０９において、送信部４０４は、ステップＳ６０８で生成された検索結果Ｒを検索装置３００に送信する。
【００６９】
ステップＳ６１０において、受信部３０６は、ステップＳ６０９で送信された検索結果Ｒを受信する。
【００７０】
ステップＳ６１１において、出力部３０７は、ステップＳ６１０で受信された検索結果Ｒに基づき、検索結果を通知するメッセージをデータ検索者に対して出力する。
【００７１】
以下に本実施の形態に係る検索システムの動作を具体例を用いて説明する。
以下では、保管データＤ１＝１２３Ａ、
ＩＤ（Ｄ１）＝１、
また、保管データＤ２＝Ｂ１２、
ＩＤ（Ｄ２）＝２、
検索範囲データｓ＝（２８，１２５）、
桁表現（ｄ１，ｄ２，ｄ３）＝（α，β，γ）
を想定する。
【００７２】
まず、保管データＤ１と保管データＤ２の登録処理について説明する。
【００７３】
ステップＳ５０２において、数値判定部２０２は、保管データＤ１に数値データＤＮ１＝１２３が含まれると判定し、保管データＤ２に数値データＤＮ２＝１２が含まれると判定する。
ステップＳ５０３において、データ分割部２０３は、数値データＤＮ１をＤＮ１＝｛１，２，３｝と分割し、数値データＤＮ２をＤＮ２＝｛１，２｝と分割する。
ステップＳ５０４において、桁表現文字列追加部２０４は、桁表現付文字列データ集合Ｓ１＝｛１γ，２β，３α｝、桁表現付文字列データ集合Ｓ２＝｛１β，２α｝を生成する。
ステップＳ５０５において、部分文字列生成部２０５は、Ａ１＝｛１γ，１γ２β，１γ２β３α｝、Ａ２＝｛１β，１β２α｝を生成する。
ステップＳ５０６において、位置情報割当部２０６は、Ｂ（Ｄ１）＝｛（３，１γ），（２，１γ２β）、（１，１γ２β３α）｝、Ｂ（Ｄ２）＝｛（２，１β），（１，１β２α）｝を生成する。また、位置情報割当部２０６は、保管データ集合（１，Ｂ（Ｄ１））及び保管データ集合（２，Ｂ（Ｄ２））を生成する。
ステップＳ５０８において、管理装置４００の受信部４０１が、保管データ集合（１，Ｂ（Ｄ１））と（２，Ｂ（Ｄ２））を受信する。
そして、ステップＳ５０９において、データ保管部４０２が、保管データ集合（１，Ｂ（Ｄ１））と（２，Ｂ（Ｄ２））を保管する。
【００７４】
次に、検索範囲データｓをｓ＝（２８，１２５）とした場合の検索処理について説明する。
【００７５】
ステップＳ６０２において、検索範囲分割部３０２は、以下の処理により、分割範囲集合Ｇを生成する。
ｓ＝（２８，１２５）より、ＮＳ＝２８，ＮＢ＝１２５であるため、検索範囲分割部３０２は、空集合のＧ１を生成する。また、検索範囲分割部３０２は、Ｇ２＝｛２８，・・・，９９｝及びＧ３＝｛１００，・・・，１２５｝を生成する。
また、検索範囲分割部３０２は、空集合のＧ２１を生成する。また、検索範囲分割部３０２は、Ｇ２２＝｛２８，２９｝、・・・、Ｇ２９＝｛９０，・・・，９９｝、Ｇ３１＝｛１００，・・・，１２５｝を生成する。
ここで、Ｇ２２はＮＳを含み、Ｇ３１はＮＢを含む。このため、Ｇ＝｛Ｇ２３，・・・，Ｇ２９｝
である。
次に、検索範囲分割部３０２は、Ｍ＝２を設定する。
このため、検索範囲分割部３０２は、Ｇ２２に対して、上位から２番目の桁の値でグループ分けを行う。この結果、Ｇ２２は、｛２８｝と｛２９｝にグループ分けされる。そして、｛２９｝がＧに加えられる。
また、｛２８｝はＮＳ（＝２８）のみで構成されるグループであるため、｛２８｝もＧに加えられる。
このため、Ｇ＝｛Ｇ２３，・・・，Ｇ２９，｛２８｝，｛２９｝｝が得られる。
同様に、検索範囲分割部３０２は、Ｍ＝２を設定する。
このため、検索範囲分割部３０２は、Ｇ３１に対して、上位から２番目の桁の値でグループ分けを行う。この結果、Ｇ３１は、Ｇ３１０＝｛１００，・・・，１０９｝、Ｇ３１１＝｛１１０，・・・，１１９｝、Ｇ３１２＝｛１２１，・・・，１２５｝にグループ分けされる。
ここで、Ｇ３１２はＮＢ（＝１２５）を含むグループである。このため、Ｇ３１０とＧ３１１がＧに加えられる。
従って、Ｇ＝｛Ｇ２３，・・・，Ｇ２９，｛２８｝，｛２９｝，Ｇ３１０，Ｇ３１１｝が得られる。
続いて、検索範囲分割部３０２は、Ｍ＝２＋１＝３を設定する。
このため、検索範囲分割部３０２は、Ｇ３１２に対して、上位から３番目の桁の値でグループ分けを行う。この結果、Ｇ３１２は、｛１２１｝、｛１２２｝、｛１２３｝、｛１２４｝、｛１２５｝にグループ分けされる。そして、｛１２１｝，｛１２２｝，｛１２３｝，｛１２４｝がＧに加えられる。
また、｛１２５｝はＮＢ（＝１２５）のみで構成されるグループである。このため、｛１２５｝もＧに加えられる。
従って、Ｇ＝｛Ｇ２３，・・・，Ｇ２９，｛２８｝，｛２９｝，Ｇ３１０，Ｇ３１１，｛１２１｝，｛１２２｝，｛１２３｝，｛１２４｝，｛１２５｝｝が得られる。
【００７６】
ステップＳ６０３において、検索データ生成部３０３は、以下の処理により、分割範囲集合Ｇから検索データ集合Ｆを生成する。
前述したように、Ｇ＝｛Ｇ２３，・・・，Ｇ２９，｛２８｝，｛２９｝，Ｇ３１０，Ｇ３１１，｛１２１｝，｛１２２｝，｛１２３｝，｛１２４｝，｛１２５｝｝が得られている。
検索データ生成部３０３は、Ｇ２３からＦ２３を以下のように生成する。
Ｇ２３＝｛３０，３１，・・・，３９｝より、Ｇ２３を構成する値は３ｗ１と表現できる。つまり、ｊ＝２、ｗ２＝３である。
このため、検索データ生成部３０３は、Ｆ２３＝（２，３）を生成する。
同様に、検索データ生成部３０３は、Ｇ２４〜Ｇ２９からＦ２４〜Ｆ２９を以下のように生成する。
Ｆ２４＝（２，４）、Ｆ２５＝（２，５）、Ｆ２６＝（２，６）、Ｆ２７＝（２，７）、Ｆ２８＝（２，８）、Ｆ２９＝（２，９）。
また、検索データ生成部３０３は、Ｇ３１０、Ｇ３１１からＦ３１０、Ｆ３１１を以下のように生成する。
Ｇ３１０＝｛１００，１０１，・・・，１０９｝、Ｇ３１１＝｛１１０，１１１，・・・，１１９｝である。このため、Ｇ３１０を構成する値は１０ｗ１と表現でき、ｊ＝２、ｗ３ｗ２＝１０である。Ｇ３１１を構成する値は１１ｗ１と表現でき、ｊ＝２、ｗ３ｗ２＝１１である。
このため、検索データ生成部３０３は、Ｆ３１０＝（２，１０）、Ｆ３１１＝（２，１１）を生成する。
また、検索データ生成部３０３は、｛２８｝，｛２９｝，｛１２１｝，・・・｛１２５｝から、検索データとして、（１，２８）、（１，２９）、（１，１２１），・・・，（１，１２５）を生成する。
従って、検索データ生成部３０３は、
Ｆ＝｛（２，３），・・・，（２，９），（２，１０），（２，１１），（１，２８），（１，２９），（１，１２１），・・・，（１，１２５）｝
を生成する。
【００７７】
ステップＳ６０４において、桁表現文字列追加部３０４は、以下の処理により、検索データ集合Ｆから桁表現付検索データ集合Ｓを生成する。
（ｄ１，ｄ２，ｄ３）＝（Ａ，Ｂ，Ｃ）であるため、桁表現文字列追加部３０４は、Ｓ＝｛（２，３Ｂ），・・・，（２，９Ｂ），（２，１Ｃ０Ｂ），（２，１Ｃ１Ｂ），（１，２Ｂ８Ａ），（１，２Ｂ９Ａ），（１，１Ｃ２Ｂ１Ａ），・・・，（１，１Ｃ２Ｂ５Ａ）｝を生成する。
【００７８】
ステップＳ６０７において、照合部４０３は、（１，Ｂ（Ｄ１））と（２，Ｂ（Ｄ２））を読み出す。
ステップＳ６０８において、照合部４０３は、桁表現付検索データ集合Ｓの要素がＢ（Ｄ１）及びＢ（Ｄ２）に含まれているか否かを確認する。
本例では、Ｂ（Ｄ１）には（１，１Ｃ２Ｂ３Ａ）が含まれ、Ｂ（Ｄ２）にはＳの要素は含まれていない。
よって、ＩＤ（Ｄ１）＝１であるため、照合部４０３は、検索結果Ｒ＝｛１｝を生成する。
【００７９】
ステップＳ６１１において、出力部３０７は、検索結果Ｒに基づき、「保管データ名が“１”のデータに検索条件に一致する数値が含まれる」といったメッセージを出力する。
【００８０】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態によれば、例えば、以下のような効果を得ることができる。
（１）本実施の形態によれば、登録処理の時点で保管データの中から数値を抽出しているため、検索処理において保管データから数値を抽出する必要がなく、検索速度を向上させることができる。
（２）また、本実施の形態によれば、保管データと検索データの両方に桁表現が付与されているため、検索条件に部分的に合致するが検索条件から外れる数値が検索結果に含まれるという事態を回避することができる。本実施の形態によれば、例えば１０を検索条件として指定した際に１００、２１０等が検索結果に含まれるという事態を回避することができる。このため、本実施の形態によれば、正確な検索結果を得ることができる。
（３）また、本実施の形態によれば、保管データと検索データの両方に桁表現が付与されているため、複数の数値に対する検索条件を一つの検索データにまとめることができる。本実施の形態によれば、例えば１０〜１９に対する検索条件を１Ｂとして一つの検索データにまとめることができる。このため、本実施の形態によれば、検索回数が増えることによる検索時間の増大を抑えることができる。
【００８１】
実施の形態２
本実施の形態では、実施の形態１に示す手順に秘匿検索技術を適用する例を説明する。
本実施の形態では、主に実施の形態１との差異を説明する。
なお、以下で説明していない事項は、実施の形態１と同様である。
【００８２】
＊＊＊構成の説明＊＊＊
図１０は、本実施の形態に係る検索システム８００の構成例を示す。
図１０に示すように、本実施の形態に係る検索システム８００は、複数の登録装置２００ａと、複数の検索装置３００ａと、管理装置４００ａと、鍵生成装置１２００を備える。
【００８３】
検索システム８００は、１つの登録装置２００ａのみを備えていてもよい。検索システム８００は、一つの検索装置３００ａのみを備えていてもよい。検索システム８００は、複数の管理装置４００ａを備えていてもよい。検索システム８００は、複数の鍵生成装置１２００を備えていてもよい。ネットワーク１０１は、複数の登録装置２００ａと、複数の検索装置３００ａと、管理装置４００ａと、鍵生成装置１２００を接続する通信路である。ネットワーク１０１は、実施の形態１に示したように、例えば、インターネット又は企業内に敷設されたＬＡＮである。
【００８４】
登録装置２００ａは、例えば、パーソナルコンピュータである。登録装置２００ａは、保管暗号化データを管理装置４００ａに登録する登録端末として動作するコンピュータである。登録装置２００ａは、保管暗号化データを生成し、保管暗号化データの保管を管理装置４００ａに要求する。
【００８５】
検索装置３００ａは、例えば、パーソナルコンピュータである。検索装置３００ａは、検索暗号化データを管理装置４００ａに送信し、その後、管理装置４００ａから検索結果を受信し、検索結果を出力するコンピュータである。検索装置３００ａは、検索暗号化データを管理装置４００ａに送信して保管暗号化データと検索暗号化データの照合を要求する。検索装置３００ａは、管理装置４００ａから返信される検索結果を出力する。
【００８６】
管理装置４００ａは、登録装置２００ａによって生成された保管暗号化データを保管する大容量の記録媒体を持つ。管理装置４００ａは、登録装置２００から保管暗号化データの保管の要求があれば、保管暗号化データを保管する。管理装置４００は、検索装置３００から検索の要求があれば、保管暗号化データと検索暗号化データを照合し、検索結果を検索装置３００に送信する。
【００８７】
鍵生成装置１２００は、暗号化に利用する鍵を生成する。そして、鍵生成装置１２００は、ネットワーク１０１を介して、複数の登録装置２００ａと、複数の検索装置３００ａに鍵を送信する。なお、この鍵は、ネットワーク１０１を介さず、郵送などで直接的に、複数の登録装置２００ａと、複数の検索装置３００ａに配布してもよい。
【００８８】
なお、同じパーソナルコンピュータ内に、登録装置２００ａ、検索装置３００ａが同時に含まれていてもよい。
【００８９】
なお、保管暗号化データ及び検索暗号化データは、いずれも暗号化されている。鍵を所持している登録装置２００ａと検索装置３００ａ以外は、保管暗号化データ及び検索暗号化データから有益な情報を得ることはできない。
【００９０】
以下、本実施の形態の構成について説明する。
図１０に示したように、検索システム８００は、登録装置２００ａと、検索装置３００ａと、管理装置４００ａと、鍵生成装置１２００を備える。
以下では、登録装置２００ａの構成、検索装置３００ａの構成、管理装置４００ａの構成、鍵生成装置１２００の構成について順番に説明する。
【００９１】
図１１は、登録装置２００ａの機能構成例を示す。図１１に示すように、登録装置２００ａは、入力部２０１と、数値判定部２０２と、データ分割部２０３と、桁表現文字列追加部２０４と、部分文字列生成部２０５と、位置情報割当部２０６と、送信部２０７ａと、受信部２０８と、鍵保管部２０９と、暗号化部２１０とを備える。なお、図１１では、図示していないが、登録装置２００ａは、登録装置２００ａの各構成要素で使用されるデータを記憶する記録媒体を備える。
【００９２】
入力部２０１と、数値判定部２０２と、データ分割部２０３と、桁表現文字列追加部２０４と、部分文字列生成部２０５と、位置情報割当部２０６は、それぞれ、実施の形態１に示したものと同じであるため、これらの要素の説明を省略する。
【００９３】
受信部２０８は、鍵生成装置１２００から送信された鍵Ｋを受信する。
【００９４】
鍵保管部２０９は、受信部２０８により受信された鍵Ｋを保管する。
【００９５】
暗号化部２１０は、鍵保管部２０９から鍵Ｋを読み出す。また、暗号化部２１０は、位置情報割当部２０６から取得した位置情報付部分文字列集合Ｂの中の各位置情報付部分文字列に対する暗号文Ｃを次のように生成する。つまり、暗号化部２１０は、位置情報と部分文字列の各ペア（ｐ，ｗ）に対して、Ｃ＝Ｅ（Ｅ（Ｋ，ｗ），ｐ，ＩＤ（Ｄ））により、暗号文Ｃを生成する。なお、Ｅは暗号化関数である。暗号化部２１０は、例えば、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）のような共通鍵暗号方式、ＨＭＡＣ（Ｈａｓｈ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）のようなメッセージ認証符号又はＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−２５６のようなハッシュ関数を用いて暗号文Ｃを生成する。
以降では、すべての（ｉ，ｗ）の暗号文の集合を保管暗号化データＣ（Ｄ）という。また、以降では、ペア（ＩＤ（Ｄ），Ｃ（Ｄ））を保管暗号化データ集合という。
【００９６】
送信部２０７ａは、暗号化部２１０から取得した保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））を管理装置４００ａへ送信する。
【００９７】
図１２は、検索装置３００ａの機能構成例を示す。
図１２に示すように、検索装置３００ａは、入力部３０１と、検索範囲分割部３０２と、検索式生成部３０３と、桁表現文字列追加部３０４と、送信部３０５ａと、受信部３０６ａと、出力部３０７ａと、鍵保管部３０８と、暗号化部３０９と、復号部３１０とを備える。なお、図１２では図示していないが、検索装置３００ａは、検索装置３００ａの各構成要素で使用されるデータを記憶する記録媒体を備える。
【００９８】
入力部３０１と、検索範囲分割部３０２と、検索式生成部３０３と、桁表現文字列追加部３０４は、それぞれ、実施の形態１に示したものと同じであるため、これらの要素の説明を省略する。
【００９９】
暗号化部３０９は、桁表現文字列追加部２０４から取得した桁表現付検索データ集合Ｓの桁表現付検索データＳｃのそれぞれに対して鍵Ｋを用いて、次のように検索暗号化データＱｃを生成する。つまり、暗号化部３０９は、Ｑｃ＝Ｅ（Ｋ，Ｓｃ）により、検索暗号化データＱｃを生成する。
以降、桁表現付検索データ集合Ｓに含まれるすべての桁表現付検索データＳＣを暗号化した検索暗号化データの集合を検索暗号化データ集合Ｑ（Ｓ）という。
【０１００】
送信部３０５ａは、暗号化部３０９から取得した検索暗号化データ集合Ｑ（Ｓ）を管理装置４００ａへ送信する。データ検索者から検索データとともに保管データ名も入力されていた場合は、送信部３０５ａは、検索暗号化データ集合Ｑ（Ｓ）と保管データ名の両方を管理装置４００ａへ送信する。
【０１０１】
受信部３０６ａは、鍵生成装置２００ａから送信されてきた鍵Ｋ、または管理装置４００ａから送信されてきた検索結果を受信する。
【０１０２】
鍵保管部３０８は、受信部３０６ａから取得した鍵Ｋを保管する。
【０１０３】
復号部３１０は、受信部３０６ａから取得した検索結果が暗号化されていた場合は、鍵保管部３０８に保管されている鍵Ｋを用いて検索結果を復号する。
【０１０４】
出力部３０７ａは、復号部３１０から取得した検索結果を通知するメッセージをデータ検索者に対して出力する。
【０１０５】
図１３は、管理装置４００ａの機能構成例を示す。
図１３に示すように、管理装置４００ａは、受信部４０１ａと、データ保管部４０２ａと、照合部４０３ａと、送信部４０４とを備える。なお、図１３では図示していないが、管理装置４００ａは、管理装置４００ａの各構成要素で使用されるデータを記憶する記録媒体を備える。
【０１０６】
受信部４０１ａは、登録装置２００ａから送信されてきた保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））と、検索装置３００ａから送信されてきた検索暗号化データ集合Ｑ（Ｓ）を受信する。検索装置３００から保管データ名が送信されている場合は、受信部４０１ａは保管データ名も受信する。
【０１０７】
データ保管部４０２ａは、受信部４０１ａから取得した保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））を保管する。データ保管部４０２は、必要があれば、保管暗号化データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））の送信日時をあわせて保管してもよい。
【０１０８】
照合部４０３ａは、検索結果に関わる空集合Ｒである集合Ｒを生成する。また、照合部４０３ａは、データ保管部４０２ａからすべての保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））を読み出す。そして、照合部４０３ａは、受信部４０１ａから取得した検索暗号化データ集合Ｑ（Ｓ）を用いて、次のような照合を行う。また、照合部４０３ａは、検索結果を生成する。
照合部４０３ａは、すべての保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））について、検索暗号化データ集合Ｑ（Ｓ）の各要素ＱｃからＩＤ（Ｄ）に対する照合データＴｐを生成する。具体的には、照合部４０３ａは、Ｔ１＝Ｅ（Ｑｃ，１，ＩＤ（Ｄ）），・・・，ＴＬ＝Ｅ（Ｑｃ，Ｌ，ＩＤ（Ｄ））により、各照合データＴｐを生成する。複数の保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））が存在する場合は、照合部４０３ａは、各ＩＤ（Ｄ）に対応した照合データを生成する。
照合部４０３ａは、生成した各照合データＴｐ（１≦ｐ≦Ｌ）が保管暗号化データＣ（Ｄ）に含まれているかを確認する。各照合データＴｐが保管暗号化データＣ（Ｄ）に含まれているならば、照合部４０３ａは、ペア（ＩＤ（Ｄ），ｐ）を集合Ｒに加える。複数の保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））に対応させて、照合データＴｐの集合が複数生成されている場合は、照合部４０３ａは、照合データＴｐの集合ごとに、同じ集合Ｒに上記の検索結果に関するペアを加える。以上の処理の結果、最終的に生成される集合Ｒを検索結果Ｒという。
なお、照合部４０３ａは、受信部４０１ａが保管データ名も受信していれば、保管データ名に基づいてデータ保管部４０２ａから対象となる保管暗号化データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））のみを読み出す。そして、照合部４０３は、読み出した保管暗号化データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））にのみ、上記の処理を行う。
【０１０９】
送信部４０４は、実施の形態１に示したものと同じであるので、送信部４０４の説明を省略する。
【０１１０】
図１４は、鍵生成装置１２００の機能構成例を示す。
図１４に示すように、鍵生成装置１２００は、鍵生成部１２０１と、パラメータ生成部１２０２と、送信部１２０３とを備える。なお、図１４では図示していないが、鍵生成装置１２００は、鍵生成装置１２００の各構成要素で使用されるデータを記憶する記録媒体を備える。
【０１１１】
鍵生成部１２０１は、鍵Ｋを生成する。鍵Ｋは、データの暗号化及び暗号化されたデータの復号に用いられる。鍵Ｋは登録装置２００ａと検索装置３００ａとに保管される秘密情報であるため、厳重に生成される。なお、以下では、鍵生成部１２０１が、共通鍵暗号技術を用いて鍵Ｋを生成する例を説明するが、鍵生成部１２０１は、公開鍵暗号技術を用いて鍵Ｋを生成してもよい。
【０１１２】
パラメータ生成部１２０２は、データの暗号化及びデータの照合に必要なパラメータを生成する。パラメータ生成部１２０２は、例えば、登録データを文字列に分割するときの文字列の最大長Ｌを、パラメータとして生成する。なお、最大長Ｌは０より大きい整数である。また、最大長Ｌは秘密情報ではないため、公開されていても構わない。
【０１１３】
送信部１２０３は、鍵生成部１２０１で生成された鍵Ｋを登録装置２００ａと検索装置３００ａとへ送信する。また、送信部１２０３は、パラメータ生成部１２０２で生成されたパラメータを登録装置２００ａと管理装置４００ａとへ送信する。
【０１１４】
なお、登録装置２００ａ、検索装置３００ａ及び管理装置４００ａのハードウェア構成例は、図９に示す通りである。つまり、図１１、図１２及び図１３に示す構成要素がプログラム９２２として補助記憶装置９２０に格納されている。そして、プロセッサ９０１がプログラム９２２を実行して、図１１、図１２及び図１３に示す構成要素を実現する。
また、鍵生成装置１２００のハードウェア構成例も、図９に示す通りである。つまり、図１４に示す構成要素がプログラム９２２として補助記憶装置９２０に格納されている。そして、プロセッサ９０１がプログラム９２２を実行して、図１４に示す構成要素を実現する。
【０１１５】
＊＊＊動作の説明＊＊＊
以下では、本実施の形態に係る検索システム８００の動作例を説明する。
図１５及び図１６は、検索システム８００の登録処理を示すフローチャートである。
図１５のステップＳ１３０１〜ステップＳ１３０９は登録装置２００ａが実行する処理である。図１６のステップＳ１３１０〜ステップＳ１３１１は管理装置４００ａが実行する処理である。
【０１１６】
ステップＳ１３０１〜ステップＳ１３０６は、図５のステップＳ５０１〜ステップＳ５０６と同じである。このため、ステップＳ１３０１〜ステップＳ１３０６の説明を省略する。
【０１１７】
ステップＳ１３０７〜ステップＳ１３０８において、暗号化部２１０は、鍵保管部２０９から鍵Ｋを読み出す。そして、暗号化部２１０は、ステップＳ１３０６で生成された各位置情報付部分文字列集合Ｂ（Ｄ）に対する暗号文Ｃを次のように生成する。つまり、暗号化部２１０は、位置情報と部分文字列の各ペア（ｐ，ｗ）に対して、Ｅ（Ｋ，ｗ）を生成し（ステップＳ１３０７）、Ｃ＝Ｅ（Ｅ（Ｋ，ｗ），ｐ，ＩＤ（Ｄ））を生成する（ステップＳ１３０８）。なお、Ｅは暗号化関数である。暗号化部２１０は、例えば、ＡＥＳのような共通鍵暗号方式、ＨＭＡＣのようなメッセージ認証符号又はＳＨＡ−２５６のようなハッシュ関数を用いて暗号文Ｃを生成する。
前述のように、すべての（ｉ，ｗ）を暗号化した暗号文の集合を保管暗号化データＣ（Ｄ）という。また、前述したように、ペア（ＩＤ（Ｄ），Ｃ（Ｄ））を保管暗号化データ集合という。
【０１１８】
ステップＳ１３０９において、送信部２０７ａは、ステップＳ１３０８で生成された保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））を管理装置４００ａへ送信する。
【０１１９】
ステップＳ１３１０において、受信部４０１ａは、ステップＳ１３０９で送信された保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））を受信する。
【０１２０】
ステップＳ１３１１において、データ保管部４０２ａは、ステップＳ１３１０で受信した保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））を保管する。
ステップＳ１３１１により、検索システム８００の登録処理は終了する。
【０１２１】
図１７及び図１８は、検索システム８００の検索処理を示すフローチャートである。
図１７のステップＳ１４０１〜ステップＳ１４０６及びステップＳ１４１２〜ステップＳ１４１３は検索装置３００ａが実行する処理である。図１８のステップＳ１４０７〜ステップＳ１４１１は管理装置４００ａが実行する処理である。
【０１２２】
ステップＳ１４０１〜ステップＳ１４０４は、図６のステップＳ６０１〜ステップＳ６０４と同じである。このため、ステップＳ１４０１〜ステップＳ１４０４の説明を省略する。
【０１２３】
ステップＳ１４０５において、暗号化部３０９は、鍵保管部３０８から鍵Ｋを読み出す。そして、暗号化部３０９は、ステップＳ６０４で生成された桁表現付検索データ集合Ｓに含まれるすべてのＳｃ＝（ｊ，ｗＬｄＬ・・・ｗｊｄｊ）に対して鍵Ｋを用いて、次のようにして暗号化桁表現付検索データＱｃを生成する。つまり、暗号化部３０９は、Ｑｃ＝Ｅ（Ｋ，ｗＬｄＬ・・・ｗｊｄｊ）により、暗号化桁表現付検索データＱｃを生成する。
前述したように、桁表現付検索データ集合Ｓに含まれるすべての桁表現付検索データＳＣを暗号化して得られる検索暗号化データの集合は検索暗号化データ集合Ｑ（Ｓ）という。
【０１２４】
ステップＳ１４０６において、送信部３０５ａは、ステップＳ１４０５で生成された検索暗号化データ集合Ｑ（Ｓ）を管理装置４００ａに送信する。ステップＳ１４０１でデータ検索者から検索範囲データとともに保管データ名も入力されていた場合は、送信部３０５ａは、検索暗号化データ集合Ｑ（Ｓ）と保管データ名の両方を管理装置４００ａへ送信する。
【０１２５】
ステップＳ１４０７において、受信部４０１ａは、ステップＳ１４０６で送信された検索暗号化データ集合Ｑ（Ｓ）を受信する。ステップＳ１４０６で保管データ名も送信されていたら、受信部４０１ａは、保管データ名も受信する。
【０１２６】
ステップＳ１４０８において、照合部４０３ａは、データ保管部４０２ａから保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））を読み出す。なお、ステップＳ１４０７で受信部４０１ａが保管データ名も受信していた場合は、照合部４０３ａは、その保管データ名に基づいてデータ保管部４０２ａから対象の保管暗号化データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））のみを読み出す。ステップＳ１４０７で受信部４０１ａが保管データ名を受信していない場合は、照合部４０３ａは、データ保管部４０２ａで保管されているすべての保管暗号化データ集合（ＩＤ（Ｄ），Ｂ（Ｄ））を読み出す。
【０１２７】
ステップＳ１４０９において、照合部４０３ａは、ステップＳ１４０８で読み出した保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））のＩＤ（Ｄ）に基づき、ステップＳ１４０７で受信された検索暗号化データ集合Ｑ（Ｓ）の各要素ＱｃからＩＤ（Ｄ）に対する照合データＴｐを生成する。具体的には、照合部４０３ａは、Ｔ１＝Ｅ（Ｑｃ，１，ＩＤ（Ｄ）），・・・，ＴＬ＝Ｅ（Ｑｃ，Ｌ，ＩＤ（Ｄ））により、照合データＴｐを生成する。照合部４０３ａは、ステップＳ１４０８で複数の保管暗号化データ集合（ＩＤ（Ｄ），Ｃ（Ｄ））を読み出した場合は、各ＩＤ（Ｄ）に対応する照合データＴｐを生成する。
【０１２８】
ステップＳ１４１０において、照合部４０３ａは、検索結果に関わる空集合Ｒである集合Ｒを生成する。また、照合部４０３ａは、ステップＳ１４０９で生成した各照合データＴｐ（１≦ｐ≦Ｌ）が保管暗号化データＣ（Ｄ）に含まれているか否かを確認する。照合データＴｐが保管暗号化データＣ（Ｄ）に含まれているならば、照合部４０３ａは、ペア（ＩＤ（Ｄ），ｐ）を集合Ｒに加える。また、ステップＳ１４０９で照合データＴｐの集合が複数生成されている場合は、照合部４０３ａは同じ集合Ｒに上記の検索結果に関するペアを加える。
【０１２９】
ステップＳ１４１１において、送信部４０４は、ステップＳ１４１０で生成された検索結果Ｒを検索装置３００ａへ送信する。
【０１３０】
ステップＳ１４１２において、受信部３０６ａは、ステップＳ１４１１で送信された検索結果Ｒを受信する。
【０１３１】
ステップＳ１４１３において、出力部３０７ａは、ステップＳ１４１２で受信された検索結果Ｒを通知するメッセージをデータ検索者に対して出力する。例えば、出力部３０７ａは、検索結果Ｒに含まれている各（ＩＤ（Ｄ），ｐ）に対して、「ＩＤ（Ｄ）のｐ番目の位置に検索データが現れる」とのメッセージを出力する。集合Ｒが空集合だった場合は、出力部３０７ａが「どのデータにも検索データは含まれていない」とのメッセージを出力する。
ステップＳ１４１３により、検索システム８００の検索処理は終了する。
【０１３２】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態によれば、例えば、以下のような効果を得ることができる。
（１）本実施の形態では、保管データを暗号化して保管しているため、たとえ管理装置５００から保管暗号化データが漏洩しても、保管データの中身を知られることはない。
（２）本実施の形態では、検索データも暗号化したまま処理することができるため、検索暗号化データから検索データの中身を知られることはない。
（３）本実施の形態では、保管暗号化データと暗号化桁表現付検索データから得られる検索結果にはデータ名と位置情報しか現れないため、鍵Ｋをもたないエンティティに対しては保管データ及び検索データの中身を知られることはない。
【０１３３】
以上、本発明の実施の形態について説明したが、これら２つの実施の形態を組み合わせて実施しても構わない。
あるいは、これら２つの実施の形態のうち、１つを部分的に実施しても構わない。
あるいは、これら２つの実施の形態を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【０１３４】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、ハードウェア構成の補足説明を行う。
図９に示すプロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
図９に示す補助記憶装置９２０は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
図９に示すメモリ９０２は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
図９に示す通信ボード９０３は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
通信ボード９０３は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【０１３５】
図２〜図４及び図１１〜図１３の各構成要素を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記憶媒体に記憶されてもよい。
【０１３６】
また、図２〜図４及び図１１〜図１３の各構成要素の末尾の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、登録装置２００、登録装置２００ａ、検索装置３００、検索装置３００ａ、管理装置４００及び管理装置４００ａは、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった処理回路により実現されてもよい。
なお、本明細書では、プロセッサと、メモリと、プロセッサとメモリの組合せと、処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと、メモリと、プロセッサとメモリの組合せと、処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
【符号の説明】
【０１３７】
１００  検索システム、１０１  ネットワーク、２００  登録装置、２００ａ  登録装置、２０１  入力部、２０２  数値判定部、２０３  データ分割部、２０４  桁表現文字列追加部、２０５  部分文字列生成部、２０６  位置情報割当部、２０７  送信部、２０７ａ  送信部、２０８  受信部、２０９  鍵保管部、２１０  暗号化部、３００  検索装置、３００ａ  検索装置、３０１  入力部、３０２  検索範囲分割部、３０３  検索データ生成部、３０４  桁表現文字列追加部、３０５  送信部、３０５ａ  送信部、３０６  受信部、３０６ａ  受信部、３０７  出力部、３０７ａ  出力部、３０８  鍵保管部、３０９  暗号化部、３１０  復号部、４０１  受信部、４０１ａ  受信部、４０２  データ保管部、４０２ａ  データ保管部、４０３  照合部、４０３ａ  照合部、４０４  送信部、８００  検索システム、９０１  プロセッサ、９０２  メモリ、９０３  通信ボード、９０４  ディスプレイ、９０５  キーボード、９０６  マウス、９２０  補助記憶装置、９２１  ＯＳ、９２２  プログラム、９２３  ファイル、１２００  鍵生成装置、１２０１  鍵生成部、１２０２  パラメータ生成部、１２０３  送信部。
【図１】
0006584723.tif 000002
【図２】
0006584723.tif 000003
【図３】
0006584723.tif 000004
【図４】
0006584723.tif 000005
【図５】
0006584723.tif 000006
【図６】
0006584723.tif 000007
【図７】
0006584723.tif 000008
【図８】
0006584723.tif 000009
【図９】
0006584723.tif 000010
【図１０】
0006584723.tif 000011
【図１１】
0006584723.tif 000012
【図１２】
0006584723.tif 000013
【図１３】
0006584723.tif 000014
【図１４】
0006584723.tif 000015
【図１５】
0006584723.tif 000016
【図１６】
0006584723.tif 000017
【図１７】
0006584723.tif 000018
【図１８】
0006584723.tif 000019