"段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持しており、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での検索対象データの存否を判定し、前記検索対象データの送信元コンピュータへ前記検索対象データの存否を示す検索結果を送信する処理を実行するノード群にアクセス可能な前記送信元コンピュータに、前記ノード群から未選択なノードを選択し、選択されたノードに前記検索対象データを送信し、前記選択されたノードから前記検索結果を受信し、受信された前記検索結果が、前記検索対象データが存在することを示しているか否かを判断し、判断結果を出力する、処理を実行させることを特徴とする検索プログラム。前記未選択なノードの選択から判断までの処理を、前記検索対象データが存在することを示していると判断するまで繰り返して実行させることを特徴とする請求項1に記載の検索プログラム。前記未選択なノードの選択から判断までの処理を、選択すべきノードが無くなるまで繰り返して実行させることを特徴とする請求項1または2に記載の検索プログラム。前記ノード群から、検索に成功済のノードを優先して選択することを特徴とする請求項1~3のいずれか一つに記載の検索プログラム。前記ノード群のうちの少なくとも2つのノード間において、前記段数h、前記ビット幅s、前記分割数dのいずれか一つが異なることを特徴とする請求項1~4のいずれか一つに記載の検索プログラム。段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群のいずれかのノードに、検索対象データを受信し、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での受信された前記検索対象データの存否を判定し、前記検索対象データの送信元へ前記検索対象データの存否を示す検索結果を送信する、処理を実行させることを特徴とする検索プログラム。前記ノード群のうちの少なくとも2つのノード間において、前記段数h、前記ビット幅s、前記分割数dのいずれか一つが異なることを特徴とする請求項6に記載の検索プログラム。段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持しており、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での検索対象データの存否を判定し、前記検索対象データの送信元コンピュータへ前記検索対象データの存否を示す検索結果を送信する処理を実行するノード群にアクセス可能な前記送信元コンピュータが、前記ノード群から未選択なノードを選択し、選択されたノードに前記検索対象データを送信し、前記選択されたノードから前記検索結果を受信し、受信された前記検索結果が、前記検索対象データが存在することを示しているか否かを判断し、判断結果を出力する、処理を実行することを特徴とする検索方法。段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群のいずれかのノードが、検索対象データを受信し、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での受信された前記検索対象データの存否を判定し、前記検索対象データの送信元へ前記検索対象データの存否を示す検索結果を送信する、処理を実行することを特徴とする検索方法。段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持しており、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での検索対象データの存否を判定し、前記検索対象データの送信元である検索装置へ前記検索対象データの存否を示す検索結果を送信する処理を実行するノード群にアクセス可能な前記検索装置であって、前記ノード群から未選択なノードを選択する処理部と、選択されたノードに前記検索対象データを送信する処理部と、前記選択されたノードから前記検索結果を受信する処理部と、受信された前記検索結果が、前記検索対象データが存在することを示しているか否かを判断する処理部と、判断結果を出力する処理部と、を備えることを特徴とする検索装置。段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群のいずれかのノードであって、検索対象データを受信する処理部と、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での受信された前記検索対象データの存否を判定する処理部と、前記検索対象データの送信元へ前記検索対象データの存否を示す検索結果を送信する処理部と、を備えることを特徴とするノード。上述したように、B木は多量のデータを扱うことができるため、キャッシュを適切に実装すれば、ディスクI/Oを減らすことは可能である。しかしながら、その回数をある一定以上減らすことはできない。また、データエントリの追加により木構造が変化すると、木構造管理のためのI/Oが必要になることもある。また、ブルームフィルタは、データエントリの存在だけがわかるものであるため、そのままではデータ管理に使うことはできない。また、ブルームフィルタは、管理可能なデータ量に比例したサイズのメモリを占有する。したがって、重複除去ストレージシステムに適用した場合、当該システム全体の容量がノードに搭載できるメモリ量によって決まってしまうという問題があった。したがって、重複データを広い範囲で検索できないという問題があった。本発明は、1つの側面では、データ検索の高速化または管理可能なデータ量の拡大化を図ることができる検索プログラム、検索方法、検索装置、およびノードを提供することを目的とする。本発明の一の側面によれば、段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持しており、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での検索対象データの存否を判定し、前記検索対象データの送信元コンピュータへ前記検索対象データの存否を示す検索結果を送信する処理を実行するノード群にアクセス可能な前記送信元コンピュータが、前記ノード群から未選択なノードを選択し、選択されたノードに前記検索対象データを送信し、前記選択されたノードから前記検索結果を受信し、受信された前記検索結果が、前記検索対象データが存在することを示しているか否かを判断し、判断結果を出力する、検索プログラム、検索方法および検索装置を用いる。また、本発明の他の側面によれば、段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群のいずれかのノードが、検索対象データを受信し、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での受信された前記検索対象データの存否を判定し、前記検索対象データの送信元へ前記検索対象データの存否を示す検索結果を送信する、検索プログラム、検索方法、およびノードを用いる。本発明の一態様によれば、データ検索の高速化を図ることができる。また、本発明の一態様によれば管理可能なデータ量の拡大化を図ることができる。以下に添付図面を参照して、本発明にかかる検索プログラム、検索方法、検索装置、およびノードの実施の形態を詳細に説明する。<検索システムのシステム構成例>図1は、実施の形態にかかる検索システムのシステム構成例を示す説明図である。図1において、検索システム100は、複数図1では例として4台のノードN1~N4と、管理サーバMと、一または複数図1では例として3台のクライアントC1~C3と、がネットワークNWを介して通信可能に接続されて構成されている。ネットワークNWとしては、たとえば、LANLocalAreaNetwork、WANWideAreaNetwork、インターネットが挙げられる。本実施の形態では、ノードN1~N4がそれぞれ階層型転置ブルームフィルタtBF1~tBF4を有している。階層型転置ブルームフィルタtBF1~tBF4とは、それぞれの階層型ブルームフィルタを転置したインデックス情報である。階層型ブルームフィルタとは、ブルームフィルタを階層構造にしたインデックス情報である。ブルームフィルタとは、所定数のデータブロック内での擬陽性疑陽性、偽陽性とも称するまたは陰性を示すビットが複数配列されたインデックス情報である。ブルームフィルタのビットがONのときは擬陽性を示し、OFFのときは陰性を示す。なお、ビットの値が1をONとし、0をOFFとしてもよく、逆に、ビットの値が0をONとし、1をOFFとしてもよい。本実施の形態では、ビットの値が1をON擬陽性とし、0をOFF陰性とする。なお、階層型ブルームフィルタについては、図2を用いて後述する。また、階層型ブルームフィルタと階層型転置ブルームフィルタtBFii=1~4iはノードに付した符号に対応している。との対応関係については、図3を用いて後述する。また、階層型転置ブルームフィルタtBF1~tBF4については、それぞれ独立している。階層型転置ブルームフィルタtBF1~tBF4は階層数段数、ビット幅、分割数がすべて同一でもよい。また、階層型転置ブルームフィルタtBF1~tBF4のすくなくとも2つの階層型転置ブルームフィルタ間で階層数段数、ビット幅、分割数のいずれかが異なっていてもよい。また、図1では、例として階層型転置ブルームフィルタtBF1の階層数を3とする。したがって、階層型転置ブルームフィルタtBF1は、1段目最下段の転置ブルームフィルタ列tBF11、2段目の転置ブルームフィルタ列tBF12、3段目最上段の転置ブルームフィルタ列tBF13を階層化したブルームフィルタである。また、図1では、例として階層型転置ブルームフィルタtBF1のビット幅s1を128ビットとする。また、図1では、例として階層型転置ブルームフィルタtBF2の階層数を3とする。したがって、階層型転置ブルームフィルタtBF2は、1段目最下段の転置ブルームフィルタ列tBF21、2段目の転置ブルームフィルタ列tBF22、3段目最上段の転置ブルームフィルタ列tBF23を階層化したブルームフィルタである。また、図1では、例として階層型転置ブルームフィルタtBF2のビット幅s2を64ビットとする。また、図1では、階層型転置ブルームフィルタtBF3の階層数を4とする。したがって、階層型転置ブルームフィルタtBF3は、1段目最下段の転置ブルームフィルタ列tBF31から4段目最上段の転置ブルームフィルタ列tBF34を階層化したブルームフィルタである。また、図1では、例として階層型転置ブルームフィルタtBF3のビット幅s3を128ビットとする。また、図1では、階層型転置ブルームフィルタtBF4の階層数を3とする。したがって、階層型転置ブルームフィルタtBF4は、1段目最下段の転置ブルームフィルタ列tBF41、2段目の転置ブルームフィルタ列tBF42、3段目の転置ブルームフィルタ列tBF43を階層化したブルームフィルタである。また、図1では、例として階層型転置ブルームフィルタtBF4のビット幅s4を64ビットとする。また、階層型転置ブルームフィルタtBFiにはデータブロック集合dbii=1~4が対応付けられている。データブロック集合dbiは、それぞれ階層型転置ブルームフィルタtBFiのビット幅sii=1~4と同一ビット幅とする。データブロック集合dbiは、複数のデータブロックを有しており、各データブロックは、登録されたデータを保持している。なお、個々のデータブロックをdbi-と表記する。は数字であり、ブロック番号を示す。ブロック番号は、そのデータブロックdbi-のビット位置に対応する。ハッシュテーブル群HTii=1~4-siは、データブロック集合dbi内の各データブロックdbi-に対応するハッシュテーブルの集合である。なお、個々のハッシュテーブルをHTi-と表記する。は数字であり、データブロックdbi-のブロック番号と一致する。ハッシュテーブルHTi-は、データをある特定のハッシュ関数に与えたときのハッシュ値と、ハッシュ値の生成元となるデータデータそのものでもデータへのポインタでもよいを関連付けたテーブルである。管理サーバMは、複数のノードN1~N4を管理するコンピュータである。管理サーバMは、クライアントリスト102と、ノードリスト101とを有している。管理サーバMは、あらたにノードが追加された場合に、ノードリスト101を更新したり、クライアントリスト102を参照して、ノードの追加をクライアントC1~C3へ通知したりする。なお、管理サーバMは、物理マシンでもよいが、いずれかのノードにおいて仮想マシンとして機能させてもよい。クライアントリスト102は、クライアントID、IPアドレスおよびポート番号項目を有している。それぞれの項目に情報が設定されることで、レコードとして記憶されている。クライアントID項目には、ネットワークNWを介してノードN1~N4にアクセス可能なクライアントの識別情報が登録される。IPアドレス項目にはクライアントのIPアドレス、ポート番号項目にはポート番号が登録される。クライアントリスト102は、具体的には、たとえば、図4に示したROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶されている。ノードリスト101は、ノードID、IPアドレスおよびポート番号項目を有している。それぞれの項目に情報が設定されることで、レコードとして記憶されている。ノードID項目には、各ノードの識別情報が登録される。図1では、ノードIDはノードに付した符号に対応している。IPアドレス項目にはノードのIPアドレス、ポート番号項目には各クライアントがネットワークNWを介してノードにアクセス可能なポート番号が登録される。ノードリスト101は、具体的には、たとえば、図4に示したROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶されている。クライアントC1~C3は、複数のノードN1~N4を利用するコンピュータである。クライアントC1~C3は、それぞれノードリスト101を有している。クライアントC1~C3は、管理サーバMを介してノードN1~N4へデータの登録通知処理、データの検索通知処理を実行してもよいし、管理サーバMを介さずにノードN1~N4へデータの登録通知処理、データの検索通知処理を実行してもよい。また、ノードN1~N4にクライアントリスト102を持たせ、管理サーバMを設けないこととしてもよい。このような検索システム100では、検索対象データが与えられると、階層型転置ブルームフィルタtBFiを参照して、検索対象データが存在するであろうデータブロックdbi-を特定することになる。検索対象データが存在するであろうデータブロックdbi-が特定されなかった場合は、いずれの階層型転置ブルームフィルタtBFiのデータブロックdbi-にも検索対象データは存在しない陰性。逆に、検索対象データが存在するであろうデータブロックdbi-が特定された場合でも、特定されたデータブロックdbi-には、必ずしも検索対象データが存在するとは限らない擬陽性。なお、擬陽性が陽性になるか陰性になるかは、最終的に特定されたデータブロックdbi-に対応するハッシュテーブルHTi-での検索結果に依存する。たとえば、最終的に特定されたデータブロックdbi-に対応するハッシュテーブルHTi-において、検索対象データのハッシュ値がヒットすれば陽性、ヒットしなければ陰性となる。<階層型ブルームフィルタ>つぎに、図1に示した階層型転置ブルームフィルタtBFiの転置元となる階層型ブルームフィルタについて説明する。図2は、階層型ブルームフィルタの一例を示す説明図である。階層型ブルームフィルタBFiは、hii=1~4段×siビット幅のメモリ領域で構成されている。siビット幅は、データブロック集合dbiのビット幅に対応する。また、各段のビット長siは最上段である第hi段の分割数dii=1~4に基づいて分割される。分割された各々はブルームフィルタであり、各段においてブルームフィルタ列を構成する。分割数diは基本的には2以上の整数であるが、最上段である第hi段を単一のブルームフィルタとする場合は、di=1としてもよい。任意の段をpとすると、第p段のブルームフィルタ列BFipを構成するブルームフィルタbfipのビット幅miは、mi=si/dihiとなる。図2では、di=2としている。また、第p段のブルームフィルタ列BFipのブルームフィルタbfipの配列数niは、ni=dihiとなる。したがって、階層型ブルームフィルタBFiでは、段が下がるhiが小さくなるにつれ、第p段のブルームフィルタ列BFipのブルームフィルタbfipの配列数が増加する。なお、最下段第1段のブルームフィルタ列BFi1のブルームフィルタbfi1の配列数は、データブロックdbi-の個数と同一とする。これにより、第1段までたどり着いたときにヒットしたブルームフィルタbfi1とデータブロックdbi-とが一対一対応することになる。また、階層型ブルームフィルタBFiの段数hiは基本的には複数段であるが、1段hi=1としてもよい。ただし、この場合は、di≠1とする。ここで、ブルームフィルタの擬陽性による影響について説明する。ブルームフィルタの擬陽性の発生確率FPRiは、ビット長がmiのブルームフィルタがhi段ある場合、データ登録数NiNi<mi、ハッシュ関数の個数をki個とすると、ブルームフィルタの性質より、次式1のように表すことができる。FPRi={1-1-1/mikiNi}ki≒{1-e}ki1この場合、ki,mi,Niを変更することにより、擬陽性の発生確率FPRiを非常に小さくすることができる。すなわち、ki,mi,Niの設定次第で、擬陽性の発生確率FPRiを1よりも非常に小さい値ほぼ0に設定することができるようになる。また、データブロック数Ndbiをdihiとすると、高さ段数hiは、次式2にて表すことができる。hi=logNdbi/logdi12上記式2は、logNdbi/logdiが割り切れる場合を前提にしたが、そうでない場合、段によりdiの値を他の段とは変えることで、hiを決定することができる。また、検索処理ではハッシュ値の数ki回定数だけ照合をおこなう必要があり、検索における1段あたりのフィルタリング対象の数は多くてもdi個である。したがって、検索によるメモリアクセス回数MAiは、最大でも次式3で表される程度である。MAi=ki×di×logNdbi/logdi3<階層型転置ブルームフィルタtBFi>つぎに、階層型転置ブルームフィルタtBFiについて説明する。図2に示した階層型ブルームフィルタBFiを転置させることで、階層型ブルームフィルタBFiよりも検索速度をさらに高速化させることができる。図3は、階層型ブルームフィルタBFi内の第p段のブルームフィルタ列BFipの転置例を示す説明図である。Aは、ブルームフィルタ列BFipを示している。ここでは、ブルームフィルタ列BFipは、例として、4分割されたブルームフィルタbfip-1~bfip-4を示している。すなわち、ブルームフィルタ列BFipは、8ビット×4フィルタ数のビット列である。転置する場合は、4ビット×8フィルタ数のビット列となる。すなわち、転置により、配列数とビット幅が入れ替わる。Bは、ブルームフィルタ列BFipの転置を示している。転置する場合、各ブルームフィルタbfip-1~bfip-4の同一位置のビットを集めて、同一位置ごとに集められたビット列を、ビット位置順に配列させる。具体的には、各ブルームフィルタbfip-1~bfip-4の各先頭ビットを配列番号順にまとめてビット列{0110}とする。左から先頭ビット0がブルームフィルタbfip-1の先頭ビット、2番目のビット1がブルームフィルタbfip-2の先頭ビット、3番目のビット1がブルームフィルタbfip-3の先頭ビット、末尾ビット0がブルームフィルタbfip-4の先頭ビットである。このビット列{0110}を、転置ブルームフィルタtbfip-1と称す。2番目~末尾のビット位置についても同様にまとめることで、転置ブルームフィルタtbfip-1~tbfip-8を得る。転置ブルームフィルタtbfip-1~tbfip-8がビット位置順に配列されたインデックス情報が、転置ブルームフィルタ列tBFipである。転置ブルームフィルタ列tBFipをすべての段で生成することで、階層型転置ブルームフィルタtBFiとなる。Cは、ブルームフィルタ列BFipと転置ブルームフィルタ列tBFipとの検索比較例を示している。ここでは、2種類のハッシュ関数により対象データDのハッシュ値を2つ求め、ブルームフィルタ列BFipを構成するブルームフィルタbfipのビット幅10で割り算した余り値を、4および8とする。ブルームフィルタ列BFipで検索する場合、余り値4および8となるビット位置4および8がすべてONになっているブルームフィルタbfipをブルームフィルタ列BFipから探す。この場合、ブルームフィルタbfip-2が該当する。一方、転置ブルームフィルタ列tBFipを用いる場合、ブルームフィルタ列BFipのように、ビット位置4および8がすべてONになっているブルームフィルタbfipを検索せず。代わりに、余り値4および8と同一配列番号の転置ブルームフィルタtbfip-4,tbfip-8を抽出する。そして、抽出された転置ブルームフィルタtbfip-4,tbfip-8をAND演算することで、ともにONになっているビット位置2を特定する。ブルームフィルタ列BFipの場合は、4個のブルームフィルタbfip-1~bfip-4内の4ビット目と8ビット目を参照するため、8=4×2のメモリアクセスが必要となる。一方、転置ブルームフィルタ列tBFipは、転置前のブルームフィルタbfip-1~bfip-4のビット位置ごとに折りたたまれたインデックス情報である。したがって、転置ブルームフィルタtbfip-4,tbfip-8を抽出するという2回のメモリアクセスとそのAND演算により判定することが可能となる。したがって、階層型ブルームフィルタBFiよりもメモリアクセス頻度が低減され、検索速度が高速化することとなる。<コンピュータのハードウェア構成例>図4は、実施の形態にかかるコンピュータノードN1~N4、管理サーバM、クライアントC1~C3のハードウェア構成例を示すブロック図である。図4において、検索装置は、CPUCentralProcessingUnit401と、ROMRead‐OnlyMemory402と、RAMRandomAccessMemory403と、磁気ディスクドライブ404と、を有している。検索装置は、磁気ディスク405と、光ディスクドライブ406と、光ディスク407と、ディスプレイ408と、I/FInterface409と、キーボード410と、マウス411と、スキャナ412と、プリンタ413と、を有している。また、各構成部はバス400によってそれぞれ接続されている。ここで、CPU401は、検索装置の全体の制御を司る。ROM402は、ブートプログラムなどのプログラムを記憶している。RAM403は、CPU401のワークエリアとして使用される。磁気ディスクドライブ404は、CPU401の制御にしたがって磁気ディスク405に対するデータのリード/ライトを制御する。磁気ディスク405は、磁気ディスクドライブ404の制御で書き込まれたデータを記憶する。光ディスクドライブ406は、CPU401の制御にしたがって光ディスク407に対するデータのリード/ライトを制御する。光ディスク407は、光ディスクドライブ406の制御で書き込まれたデータを記憶したり、光ディスク407に記憶されたデータをコンピュータに読み取らせたりする。ディスプレイ408は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ408は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。I/F409は、通信回線を通じてLANLocalAreaNetwork、WANWideAreaNetwork、インターネットなどのネットワークNWに接続され、このネットワーク414を介して他の装置に接続される。そして、I/F409は、ネットワークNWと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F409には、たとえばモデムやLANアダプタなどを採用することができる。キーボード410は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス411は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。スキャナ412は、画像を光学的に読み取り、コンピュータ内に画像データを取り込む。なお、スキャナ412は、OCROpticalCharacterReader機能を持たせてもよい。また、プリンタ413は、画像データや文書データを印刷する。プリンタ413には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。<検索通知処理例および検索処理例>つぎに、検索通知処理例および検索処理例について説明する。検索通知処理では、検索の対象となるデータ以下、検索対象データをノードN1~N4に検索させる検索リクエストを通知する処理が実行される。検索処理では、検索リクエストを受け付けたノードにより、検索対象データを検索する処理が実行される。検索通知処理を実行するコンピュータたとえば、管理サーバMまたはクライアント。以下、単に送信元コンピュータ。は、対象データの検索リクエストをノードN1~N4のいずれかのノードに送信する。各ノードの宛先については、ノードリスト101を参照することで特定することができる。検索対象データを検索させるノード検索ノードを指定する。どのノードから検索するかは、たとえば、送信元コンピュータの利用者が任意に指定してもよい。また、たとえば、送信元コンピュータがノードIDの順に指定してもよい。また、たとえば、現検索通知処理の1つ前に検索通知処理が実行された際に検索が成功したノードを、検索対象データを検索させるノードに指定してもよい。また、たとえば、送信元コンピュータがすべてのノードに検索通知を行ってもよい。図5は、送信元コンピュータによる検索通知処理例を示す説明図である。たとえば、検索成功ノードIDが1であるとする。送信元コンピュータ図5では、クライアントC1が、ノード群から検索成功ノードIDに基づきノードN1を選択する。送信元コンピュータが、1検索リクエスト601をノードN1に送信し、ノードN1からのリプライ602を待つ。送信元コンピュータが、2ノードN1からのリプライ602を受信すると、検索結果が陽性であるか否かを判断する。送信元コンピュータが、検索結果が陽性でないと判断した場合、3ノードID順に検索リクエスト701をノードN2に送信し、ノードN2からのリプライ702を待つ。送信元コンピュータが、4ノードN2からのリプライ702を受信すると、検索結果が陽性であるか否かを判断する。送信元コンピュータが、検索結果が陽性であると判断した場合、検索結果を出力して検索通知処理を終了する。図6および図7は、検索リクエストおよびリプライのデータ構造例を示す説明図である。図6,7において、Aは検索リクエスト601,701、Bはリプライ602,702を示す。Aの検索リクエスト601,701のヘッダは、検索リクエスト601,701の送信元アドレスおよび送信元ポート番号と宛先アドレスおよび宛先ポート番号とを保持する。図6,7では、コンピュータに割り当てた符号C1,N1,N2をIPアドレスおよびポート番号の代わりに表記している。また、Aの検索リクエスト601,701のペイロードは、種類項目、検索対象データ項目に対しそれぞれの情報が保持されている。たとえば、種類項目には、検索、検索対象データ項目には、Dxが保持されている。また、Bのリプライ602,702のヘッダは、それぞれ検索リクエスト601,701の送信元アドレスおよび送信元ポート番号と宛先アドレスおよび宛先ポート番号とが入れ替わった送信元アドレスと宛先アドレスとを保持する。Bのリプライ602,702のペイロードは、検索結果項目に対する情報が保持されている。Bのリプライ602,702のペイロードには、図6の場合は、ノードN1での検索結果Dxなし、すなわち、陰性である旨が保持されており、図7の場合は、ノードN2での検索結果Dxありが保持されている。つぎに、送信元コンピュータがノードN2に検索リクエストを送信した場合のノードN2による検索処理例を示す。図8は、ノードN2による階層型転置ブルームフィルタtBF2の検索処理例を示す説明図である。図8では、説明上、全ビット幅s2=64ビット、段数h2=3段、第h2段での分割数d2=2とする。最下段である第1段のブルームフィルタ列BF21を構成するブルームフィルタのビット幅は、8=s2/d2h2=64/23ビットであるため、最下段である第1段の転置ブルームフィルタ列tBF21は、8=s2/d2h2=64/23個の転置ブルームフィルタtbf21-1~tbf21-8により構成される。また、第2段の転置ブルームフィルタ列tBF22を構成するブルームフィルタのビット幅は、16=s2/d2h2=64/22ビットであるため、第2段の転置ブルームフィルタ列tBF22は、16=s2/d2h2=64/22個の転置ブルームフィルタtbf22-1~tbf22-16により構成される。また、最上段である第3段のブルームフィルタ列BF23を構成するブルームフィルタのビット幅は、32=s2/d2h2=64/21ビットであるため、最上段である第3段の転置ブルームフィルタ列tBF23は、32=s2/d2h2=64/21個の転置ブルームフィルタtbf23-1~tbf23-32により構成される。なお、図8では、説明上、比較のため、転置ブルームフィルタ列tBF21~tBF23とともに、転置前のブルームフィルタ列BF21~BF23を併記しておく。まず、ノードN2は、検索対象データDxについてのハッシュ関数H1~H3での3個のハッシュ値を、第3段の転置ブルームフィルタ数32で割り算したときの余り値2、19、27を求める。つぎに、ノードN2は、フィルタリング対象となる転置ブルームフィルタを第3段の転置ブルームフィルタ列tBF23から特定する。具体的には、ノードN2は、余り値と同一ビット位置余り値が0の場合は末尾位置となる転置ブルームフィルタtbf23-2,tbf23-19,tbf23-27を特定する。そして、ノードN2は、特定された転置ブルームフィルタtbf23-2,tbf23-19,tbf23-27の各ビット列{10},{11},{10}のAND演算をおこなう。そのAND結果は、{10}となる。AND結果に1が含まれていない場合は、ノードN2はデータブロック集合db2には検索対象データDxが存在しないと判定する。一方、AND結果に1が含まれている場合、検索対象データDxを登録したかもしれないため、1つ下の段に移る。第2段においても、まず、ノードN2は、検索対象データDxについての3個のハッシュ値を、第2段の転置ブルームフィルタ数16で割り算したときの余り値8、11、13を求める。つぎに、ノードN2は、フィルタリング対象となる転置ブルームフィルタを第2段の転置ブルームフィルタ列tBF22から特定する。具体的には、ノードN2は、余り値と同一ビット位置余り値が0の場合は末尾位置となる転置ブルームフィルタtbf22-8,tbf22-11,tbf22-13を特定する。そして、ノードN2は、特定された転置ブルームフィルタtbf22-8,tbf22-11,tbf22-13の各ビット列{0110},{0100},{0110}のAND演算をおこなう。そのAND結果は、{0100}となる。ノードN2は、AND結果に1が含まれていない場合は、データブロック集合db2には検索対象データDxが存在しないと判定する。一方、AND結果に1が含まれている場合、検索対象データDxを登録したかもしれないため、1つ下の段に移る。最下段である第1段においても、まず、ノードN2は、検索対象データDxについての3個のハッシュ値を、第1段の転置ブルームフィルタ数8で割り算したときの余り値2、5、7を求める。つぎに、ノードN2は、フィルタリング対象となる転置ブルームフィルタを第1段の転置ブルームフィルタ列tBF21から特定する。具体的には、ノードN2は、余り値と同一ビット位置余り値が0の場合は末尾位置となる転置ブルームフィルタtbf21-2,tbf21-5,tbf21-7を特定する。そして、ノードN2は、特定された転置ブルームフィルタtbf21-2,tbf21-5,tbf21-7の各ビット列{00110110},{10011010},{00110111}のAND演算をおこなう。そのAND結果は、{00010010}となる。これ以上下の段は存在しないため、擬陽性により、AND結果{00010010}が1のビット位置4,7に対応するデータブロックdb2-4,db2-7に検索対象データDxが存在する可能性がある。この場合、ハッシュテーブルHT2-4,HT2-7に対しハッシュ関数H1でのハッシュ値をキーにして検索することで、データブロックdb2-4がヒットし、データブロックdb2-7はヒットしなかったものとする。これにより、検索対象データDxは、データブロックdb2-4に登録されていることが判明する。そして、ノードN2は、検索結果陽性のリプライ702を送信する。これにより、検索処理を終了する。このような手順により、ノードNiは、階層型転置ブルームフィルタtBFiを利用することで、階層型ブルームフィルタBFiに比べてもより高速に対象データを検索することができる。<送信元コンピュータによる検索通知処理手順>図9は、送信元コンピュータによる検索通知処理手順の一例を示すフローチャートである。送信元コンピュータが、検索対象データを受け付けたか否かを判断するステップS901。検索対象データがない場合ステップS901:No、送信元コンピュータが、ステップS901へ戻る。検索対象データがある場合ステップS901:Yes、送信元コンピュータが、j=直前の検索成功ノードIDとするステップS902。これにより、ノード群のうち、現検索の1つ前の検索において検索が成功したノードから優先して検索をおこなうことができる。そして、送信元コンピュータが、ノードNjに検索リクエストを未送信か否かを判断するステップS903。ノードNjに検査リクエストを未送信であるか否かを判断することにより、ノード群から、未選択なノードを選択することができる。ノードNjに未送信の場合ステップS903:Yes、送信元コンピュータが、ノードNjに検索リクエストを送信しステップS904、リプライを受信したか否かを判断するステップS905。リプライが受信されていない場合ステップS905:No、送信元コンピュータが、検索リクエストの送信から所定時間経過したか否かを判断するステップS906。所定時間経過していない場合ステップS906:No、送信元コンピュータが、ステップS905に戻る。一方、所定時間経過した場合ステップS906:Yes、送信元コンピュータが、エラー出力をおこなうステップS907。たとえば、ディスプレイ408に、ノードNjで検索できなかった旨の表示をおこなう。送信元コンピュータが、j≧全ノード数であるか否かを判断するステップS908。j≧全ノード数である場合ステップS908:Yes、送信元コンピュータが、j=1としステップS909、ステップS903へ戻る。j≧全ノード数でない場合ステップS908:No、送信元コンピュータが、j=j1としステップS910、ステップS903へ戻る。リプライが受信された場合ステップS905:Yes、送信元コンピュータが、検索結果が陽性か否かを判断するステップS911。検索結果が陽性の場合ステップS911:Yes、送信元コンピュータが、ノードNjと検索結果陽性を関連付けて出力しステップS912、検索成功ノードID=jとしステップS913、一連の検索通知処理を終了する。たとえば、ディスプレイ408に、ノードNjとブロック番号を関連付けた結果の表示をおこなってもよい。たとえば、ノードNjを直前のデータが追加されたノードIDとして、ROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶させる。検索結果が陰性の場合ステップS911:No、送信元コンピュータが、ステップS908へ移行する。ノードNjに未送信でない場合ステップS903:No、送信元コンピュータが、検索結果陰性を出力しステップS914、一連の検索通知処理を終了する。たとえば、ディスプレイ408に、いずれのノードであっても検索できなかった旨の表示をおこなう。直前の検索成功ノードIDに優先して検索リクエストを送信することにより、対象データの追加と同じ順番で読み込まれる場合が多いというヒューリスティックスを用いることができ、検索の高速化を図ることができる。<ノードNiによる検索エントリ処理手順>図10は、ノードNiによる検索エントリ処理手順を示すフローチャートである。図10の処理手順は、複数のノードノードN1~N4の各ノードで実行される処理手順である。まず、ノードNiは、リクエストを受信したか否かを判断するステップS1001。リクエストが受信されていない場合ステップS1001:No、ノードNiは、ステップS1001へ戻る。一方、リクエストが受信された場合ステップS1001:Yes、ノードNiは、リクエストの種類を判断するステップS1002。リクエストの種類がエントリの場合ステップS1002:エントリ、ノードNiは、エントリ処理を実行しステップS1003、一連の処理を終了する。リクエストの種類が検索の場合ステップS1002:検索、ノードNiは、検索処理を実行しステップS1004、一連の処理を終了する。<ノードNiによる検索処理手順>図11および図12は、図10で示した検索処理ステップS1004の詳細な説明を示すフローチャートである。なお、ノードNiにより利用されるブルームフィルタは、すでに一括転置済みの階層型転置ブルームフィルタtBFiでもよく、階層型ブルームフィルタBFiでもよい。階層型ブルームフィルタBFiを用いる場合は、未転置のブルームフィルタが特定される都度転置処理をおこなう。すなわち、検索しながら階層型転置ブルームフィルタtBFiを構築していく。図11および図12では、検索しながら階層型転置ブルームフィルタtBFiを構築していく場合の処理手順について説明する。なお、一括転置済みの場合は、転置済みか否かの判断ステップS1103と転置処理ステップS1104を省略するだけでよい。まず、図11において、ノードNiは、検索対象データDxをki種類のハッシュ関数に与えてki個のハッシュ値を算出するステップS1101。そして、ノードNiは、p=hi、すなわち、段数pを最大段数hiに設定しステップS1102、p段目のブルームフィルタ列BFipが転置済みであるか否かを判断するステップS1103。転置済みである場合ステップS1103:Yes、ステップS1105に移行する。一方、未転置である場合ステップS1103:No、ノードNiは、p段目のブルームフィルタ列BFipを転置してステップS1104、ステップS1105に移行する。ステップS1105では、ノードNiは、ki個のハッシュ値を転置ブルームフィルタtbfipの配列数で除算して、ki個の余り値を算出するステップS1105。そして、ノードNiは、p段目の転置ブルームフィルタ列tBFipから、ki個の余り値に対応するki個の転置ブルームフィルタtbfiprを特定するステップS1106。そして、ノードNiは、ki個の転置ブルームフィルタtbfiprをAND演算しステップS1107、図12のステップS1201に移行する。図12において、ノードNiは、AND結果の先頭ビットを対象ビットに設定しステップS1201、対象ビットがONであるか否かを判断するステップS1202。ONでない場合ステップS1202:No、ノードNiは、対象ビットがシフト可能か否かを判断するステップS1203。具体的には、対象ビットが末尾ビットであるか否かを判断する。シフト可能である場合ステップS1203:Yes、ノードNiは、対象ビットを1ビット末尾方向へシフトしステップS1204、ステップS1202に戻る。一方、ステップS1203において、シフト可能でない場合ステップS1203:No、ノードNiは、検索結果陰性と判定し、検索結果陰性をリプライ送信するステップS1205。これにより、検索結果が陰性である場合の処理手順を終了する。一方、ステップS1202において、対象ビットがONであった場合ステップS1202:Yes、ノードNiは、現在の段数pがp=1であるか否かを判断するステップS1206。p=1でない場合ステップS1206:No、ノードNiは、pをデクリメントしてステップS1207、ステップS1103に戻る。一方、p=1である場合ステップS1206:Yes、ノードNiは、対象ビットのビット位置に対応するハッシュテーブルを検索するステップS1208。そして、ノードNiは、検索対象データDxが存在するか否かを判断するステップS1209。検索対象データが存在しない場合ステップS1209:No、ノードNiは、ステップS1203に戻り、対象ビットがシフト可能か否かを判断することとなる。一方、検索対象データが存在する場合ステップS1209:Yes、ノードNiは、検索結果陽性をリプライ送信するステップS1210。ノードNiは、必要に応じて関連するデータを抽出して検索結果として送信元コンピュータへリプライする。これにより、検索結果が陽性である場合の処理手順を終了する。<エントリ通知処理例およびエントリ処理例>つぎに、エントリ通知処理とエントリ処理について説明する。エントリ通知処理では、エントリの対象となるデータ以下、対象データをノードN1~N4のいずれかのノードに登録させるエントリリクエストを通知する処理が実行される。エントリ処理では、エントリリクエストを受け付けたノードにより、対象データを登録するエントリ処理と、該ノードが有する階層型転置ブルームフィルタtBFへのエントリ処理と、が実行される。エントリ通知処理を実行するコンピュータたとえば、管理サーバMまたはクライアント。以下、単に送信元コンピュータ。は、対象データのエントリリクエストをノードN1~N4のいずれかのノードに送信する。各ノードの宛先については、ノードリスト101を参照することで特定することができる。エントリリクエストの例は後述する。対象データをエントリさせるノード登録先ノードを指定する。登録先ノードはノードN1~N4のいずれのノードであってもよい。どのノードにエントリするかは、たとえば、送信元コンピュータの利用者が任意に指定することができる。また、あらかじめ各ノードの空き容量に応じて、エントリさせるノードを指定することとしてもよい。各ノードの空き容量は、各ノードが管理サーバMに対して定期的にまたは管理サーバMからの要求に応じて通知されるものとし、管理サーバMがクライアントに対してブロードキャストして通知されるものとする。図13は、送信元コンピュータによるエントリ通知処理例を示す説明図である。送信元コンピュータ図13では、クライアントC1が、1ノードN2に対象データのエントリリクエスト1401を送信し、ノードN2からのリプライ1402を待つ。送信元コンピュータが、2ノードN2からのリプライ1402を受信すると、対象データのエントリが成功したか否かを判断する。送信元コンピュータが、対象データのエントリが成功したと判断した場合、エントリ通知処理を終了する。図14は、エントリリクエストおよびリプライのデータ構造例を示す説明図である。図14において、Aはエントリリクエスト1401、Bはリプライ1402を示す。Aのエントリリクエスト1401のヘッダは、エントリリクエスト1401の送信元アドレスおよび送信元ポート番号と宛先アドレスおよび宛先ポート番号とを保持する。図14では、コンピュータに割り当てた符号C1,N2をIPアドレスおよびポート番号の代わりに表記している。また、Aのエントリリクエスト1401のペイロードは、種類項目、登録データ項目に対しそれぞれの情報が保持されている。たとえば、種類項目には、登録、登録データ項目には、Dxが保持されている。また、Bのリプライ1402のヘッダは、エントリリクエスト1401の送信元アドレスおよび送信元ポート番号と宛先アドレスおよび宛先ポート番号とが入れ替わった送信元アドレスと宛先アドレスとを保持する。Bのリプライ1402のペイロードは、ブロック番号項目に対する情報が保持されている。たとえば、ブロック番号項目には、4が保持されている。すなわち、階層型転置ブルームフィルタtBF2のデータブロックdb2-4にDxが登録されたことを示している。つぎに、エントリリクエスト1401を受信したノードN2によるエントリ処理例について説明する。図15は、ノードN2による階層型転置ブルームフィルタtBF2のエントリ処理例を示す説明図である。ノードN2が送信元コンピュータからエントリリクエストを受信する。階層型転置ブルームフィルタtBF2では、登録される対象データDが与えられるハッシュ関数の種類数k2をk2=3とする。ここでは、ハッシュ関数H1,H2,H3を用いることとする。また、ハッシュテーブルの登録対象となるハッシュ関数をH1とする。まず、データブロック集合db2のうちデータブロックdb2-4に対象データDxが登録されたものとする。対象データDxを各ハッシュ関数H1,H2,H3に与えたときのハッシュ値は、例として以下の値とする。H1Dx=x1H2Dx=x2H3Dx=x3また、階層型転置ブルームフィルタtBFのエントリ処理では、更新対象となる転置ブルームフィルタtbf2p内の特定のビットをONにするが、その特定のビットがすでにONになっている場合はそのままとする。ここで、ノードN2は、登録先のデータブロックdb2-4のブロック番号4のハッシュテーブルHT2-4に対するハッシュテーブルエントリE2-4を作成する。そして、ノードN2は、作成されたハッシュテーブルエントリE2-4を、ハッシュテーブルHT2-4に追加登録する。そして、第1段のエントリ処理に移る。ノードN2は、更新対象となる転置ブルームフィルタtbf21を、第1段の転置ブルームフィルタ列tBF21の中から特定する。具体的には、ノードN2は、各ハッシュ値x1~x3を、第1段の転置ブルームフィルタ列tBF21の配列個数である8で割り算し、余り値を算出する。ハッシュ値x1の余り値は2、ハッシュ値x2の余り値は5、ハッシュ値x3の余り値は7になったものとする。したがって、第1段での更新対象となる転置ブルームフィルタtbf21は、転置ブルームフィルタtbf21-2,tbf21-5,tbf21-7となる。また、最下段では、登録先のデータブロックdb2-4のブロック番号4に対応するビット位置を更新対象ビットとする。したがってノードN2は、更新対象となる転置ブルームフィルタの先頭から4ビット目のビットをONにする。これにより、第1段の転置ブルームフィルタ列tBF21のエントリ処理を終了する。つぎに、第2段のエントリ処理に移る。ノードN2は、更新対象となる転置ブルームフィルタtbf22を、第2段の転置ブルームフィルタ列tBF22の中から特定する。具体的には、ノードN2は、各ハッシュ値x1~x3を、第2段の転置ブルームフィルタ列tBF22の配列個数である16で割り算し、余り値を算出する。ハッシュ値x1の余り値は8、ハッシュ値x2の余り値は11、ハッシュ値x3の余り値は13になったものとする。したがって、第2段での更新対象となる転置ブルームフィルタtbf22は、転置ブルームフィルタtbf22-8,tbf22-11,tbf22-13となる。つぎに、転置ブルームフィルタtbf22-8,tbf22-11,tbf22-13内のどのビット位置のビットをONにするかについて説明する。転置前の階層型ブルームフィルタBF2では、分割数をd2として、各ブルームフィルタ列BF2pをn2=d2h2個に分割した。そして、これにより、各ブルームフィルタ列BF2pのビット幅は、m2=s2/n2ビットになった。階層型転置ブルームフィルタtBF2では、配列個数n2とビット幅m2が入れ替わっている。そのため、階層型転置ブルームフィルタtBF2では、第p-1段の更新対象のブルームフィルタbf2p-1-の配列番号ではなく、第p-1段での更新対象ビット位置を分割数d2で割り算し、端数を切り上げる。第2段の場合、第1段での更新対象ビットは、先頭から4ビット目のビットであり、転置ブルームフィルタtbf21-2,tbf21-5,tbf21-7の4ビット目がONにされた。したがって、第2段の更新対象ビットは、d2=2であるため、先頭から4/d2=2ビット目のビットを更新対象ビットとする。本例では、転置ブルームフィルタtbf22-8,tbf22-11,tbf22-13の先頭から2ビット目のビットをONにすることになる。これにより、ノードN2による第2段の転置ブルームフィルタ列tBF22のエントリ処理を終了する。つぎに、第3段のエントリ処理に移る。ノードN2は、更新対象となる転置ブルームフィルタtbf23を、第3段の転置ブルームフィルタ列tBF23の中から特定する。具体的には、ノードN2は、各ハッシュ値x1~x3を、第3段の転置ブルームフィルタ列tBF23の配列個数である32で割り算し、余り値を算出する。ハッシュ値x1の余り値は2、ハッシュ値x2の余り値は19、ハッシュ値x3の余り値は27になったものとする。したがって、第3段での更新対象となる転置ブルームフィルタtbf23は、転置ブルームフィルタtbf23-2,tbf23-19,tbf23-27となる。つぎに、転置ブルームフィルタtbf23-2,tbf23-19,tbf23-27内の更新対象ビットを決める。第2段と同様、第p-1段の更新対象のブルームフィルタbf2p-1-の配列番号ではなく、第p-1段での更新対象ビット位置を分割数d2で割り算し、端数を切り上げる。第3段の場合、前段である第2段での更新対象ビットは、先頭から2ビット目のビットであり、転置ブルームフィルタtbf22-8,tbf22-11,tbf22-13の2ビット目がONにされた。したがって、第3段の更新対象ビットは、d2=2であるため、先頭から2/d2=1ビット目のビットを更新対象ビットとする。本例では、転置ブルームフィルタtbf23-2,tbf23-19,tbf23-27の先頭ビットをONにすることになる。これにより、第3段の転置ブルームフィルタ列tBF23のエントリ処理を終了する。ノードN2は、送信元コンピュータへリプライを送信することにより、エントリ処理を終了する。<送信元コンピュータによるエントリ通知処理手順>図16は、送信元コンピュータによるエントリ通知処理手順の一例を示すフローチャートである。送信元コンピュータが、対象データDxがあるか否かを判断するステップS1601。対象データDxがない場合ステップS1601:No、送信元コンピュータが、ステップS1601へ戻る。対象データDxがある場合ステップS1601:Yes、送信元コンピュータが、j=直前のデータが追加されたノードIDとしステップS1602、ノードNjに未送信か否かを判断するステップS1603。ノードNjに未送信の場合ステップS1603:Yes、送信元コンピュータが、ノードNjにエントリリクエストを送信しステップS1604、リプライを受信したか否かを判断するステップS1605。リプライが受信されていない場合ステップS1605:No、送信元コンピュータが、エントリリクエストの送信から所定時間経過したか否かを判断するステップS1606。所定時間経過していない場合ステップS1606:No、ステップS1605に戻る。一方、所定時間経過した場合ステップS1606:Yes、送信元コンピュータが、エラー出力をおこなうステップS1607。たとえば、ディスプレイ408に、ノードNjにデータエントリできなかった旨の表示をおこなう。送信元コンピュータが、j≧全ノード数であるか否かを判断するステップS1608。j≧全ノード数である場合ステップS1608:Yes、送信元コンピュータが、j=1としステップS1609、ステップS1603へ戻る。j≧全ノード数でない場合ステップS1608:No、送信元コンピュータが、j=j1としステップS1610、ステップS1603へ戻る。リプライが受信された場合ステップS1605:Yes、送信元コンピュータが、エントリが成功したか否かを判断するステップS1611。ノードNjによるエントリが成功した場合ステップS1611:Yes、送信元コンピュータが、エントリ結果を出力しステップS1612、一連の処理を終了する。たとえば、ノードNjを直前のデータが追加されたノードIDとして、ROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶させる。さらに、たとえば、ディスプレイ408に、ノードNjにエントリした旨の表示をおこなってもよい。エントリが成功していない場合ステップS1611:No、送信元コンピュータが、ステップS1608へ移行する。ノードNjに未送信でない場合ステップS1603:No、送信元コンピュータが、エラー出力しステップS1613、一連の処理を終了する。たとえば、ディスプレイ408に、いずれのノードにもエントリできなかった旨の表示をおこなう。<ノードNiによるエントリ処理手順>図17は、図10で示したエントリ処理ステップS1003の詳細な説明を示すフローチャートである。まず、ノードNiは、段数pをp=1に設定しステップS1701、p>hihiは階層型転置ブルームフィルタtBFiの最上段であるか否かを判断するステップS1702。p>hiでない場合ステップS1702:No、ノードNiは、ki種類のハッシュ関数を用いて、対象データDxのki個のハッシュ値を算出するステップS1703。つぎに、ノードNiは、ki個のハッシュ値を第p段の転置ブルームフィルタtbfipの配列個数で除算して、ki個の余り値を算出するステップS1704。そして、ノードNiは、ki個の余り値と同一配列番号のki個の転置ブルームフィルタtbfiprを特定するステップS1705。このあと、p=1であるか否かを判断しステップS1706、p=1である場合ステップS1706:Yes、ノードNiは、特定されたki個の転置ブルームフィルタtbfiprに、対象データDxの所属データブロックdbi-のブロック番号をエントリするステップS1707。すなわち、対象データDxの所属データブロックdbのブロック番号を更新対象ビット位置に設定し、特定されたki個の転置ブルームフィルタtbfiprの更新対象ビット位置のビットをONにする。そして、ステップS1709に移行する。一方、ステップS1706において、p≠1である場合ステップS1706:No、ノードNiは、特定されたki個の転置ブルームフィルタtbfiprに、対象データDxの第p-1段での更新対象ビット位置を分割数diで除算した商端数切り上げをエントリするステップS1708。すなわち、対象データDxの第p-1段での更新対象ビット位置を分割数diで除算した商端数切り上げを更新対象ビット位置に設定し、特定されたki個の転置ブルームフィルタtbfiprの更新対象ビット位置のビットをONにする。そして、ノードNiは、ステップS1709に移行する。ステップS1709において、ノードNiは、段数pをインクリメントしステップS1709、ステップS1702に戻る。これにより、最下段から最上段まで更新対象ビットをONにすることができる。一方、ステップS1702において、p>hiである場合ステップS1702:Yes、ノードNiは、対象データDxのハッシュテーブルエントリを追加するステップS1710。ノードNiは、送信元コンピュータへリプライ送信しステップS1711、ノードNiによる階層型転置ブルームフィルタtBFiのエントリ処理を終了する。このような手順により、ノードNiは、階層型転置ブルームフィルタtBFiに対象データをエントリさせることとなる。すなわち、転置後にデータが登録される場合も、階層型転置ブルームフィルタtBFiから階層型ブルームフィルタBFiに戻す必要がなく、転置後の階層型転置ブルームフィルタtBFiのままエントリさせることができる。したがって、転置前に戻すといった無駄な処理がなくなり、検索効率の向上も図ることができる。<ノード追加例>つぎに、検索システム100にあらたにノードが追加される例について図18を用いて説明する。図18は、ノードの追加例を示す説明図である。ここでは、ノードN5が検索システム100に追加される例について説明する。ノードN5のハードウェア構成については、たとえば、図4で示したコンピュータのハードウェア構成と同一構成とする。ノードN5が、1追加リクエストを管理サーバMへ送信する。管理サーバMのIPアドレスおよびポート番号はノードN5の登録者により指示されることとする。管理サーバMは、ノードN5から追加リクエストを受け付けると、ノードリスト101に新たにノードN5のノードIDとIPアドレスとポート番号に関する情報を設定することにより、ノードリスト101を更新する。管理サーバMは、2クライアントリスト102を参照し、ノードリスト101の更新をブロードキャストする。各クライアントは、管理サーバMからの更新通知を受信すると、ノードリスト101を更新する。<管理サーバMによるノードの追加処理手順>図19は、管理サーバMによるノードの追加処理手順の一例を示すフローチャートである。管理サーバMが、ノードリスト101に未登録なノードから接続があるか否かを判断するステップS1901。ノードリスト101に未登録なノードから接続がない場合ステップS1901:No、管理サーバMが、ステップS1901へ戻る。ノードリスト101に未登録なノードから接続がある場合ステップS1901:Yes、管理サーバMが、ノードリスト101に接続元のノードのノード番号、IPアドレス、ポート番号を登録するステップS1902。管理サーバMが、クライアントリスト102を参照し、クライアントにノードリスト101の更新をブロードキャストしステップS1903、接続元ノードにリプライ送信しステップS1904、ノードの追加処理を終了する。以上説明したように、本実施の形態によれば、ブルームフィルタ列BFpを転置して転置ブルームフィルタ列tBFpとすることで、メモリアクセスが低減され、検索速度が高速化するという効果を奏する。特に、階層型転置ブルームフィルタtBFとすることで、段ごとのメモリアクセスが低減されるため、より高速に検索をおこなうことができる。また、ノード群のそれぞれのノードが階層型転置ブルームフィルタtBFを保持することで、管理可能なデータ量の増大化を図ることができる。また、検索対象データが存在することを示していると判断するまで、ノード群から未選択なノードを選択して、繰り返し検索をおこなう。これにより、複数のデータが複数のノードに分散して記憶されていることを利用者に意識させずに検索をおこなうことができる。また、選択すべきノードが無くなるまで、ノード群から未選択なノードを選択して、繰り返し検索をおこなう。これにより、複数のデータが複数のノードに分散して記憶されていることを利用者に意識させずに検索をおこなうことができる。また、ノード群から検索に成功済のノードを優先して選択することで、対象データの追加と同じ順番で読み込まれる場合が多いというヒューリスティックスを用いることができ、検索の高速化を図ることができる。また、ノード群のうちの少なくとも2つのノード間において、段数、ビット幅、分割数のいずれか一つが異なる。各ノードが異なる階層型転置ブルームフィルタtBFを保持していても良いので、管理可能なデータ量の増大化を図ることができる。また、上述した各フローチャートで示したステップは、具体的には、たとえば、図4に示したROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶された検索プログラムをCPU401に実行させた処理である。また、実行させた実行結果は、その都度、記憶装置に書き込まれ、他の処理からの読込要求に応じて読み出される。これにより、本実施の形態で説明した検索方法は、検索プログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検索プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行されることになる。上述した実施の形態に関し、さらに以下の付記を開示する。付記1段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持しており、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での検索対象データの存否を判定し、前記検索対象データの送信元コンピュータへ前記検索対象データの存否を示す検索結果を送信する処理を実行するノード群にアクセス可能な前記送信元コンピュータに、前記ノード群から未選択なノードを選択し、選択されたノードに前記検索対象データを送信し、前記選択されたノードから前記検索結果を受信し、受信された前記検索結果が、前記検索対象データが存在することを示しているか否かを判断し、判断結果を出力する、処理を実行させることを特徴とする検索プログラム。付記2前記未選択なノードの選択から判断までの処理を、前記検索対象データが存在することを示していると判断するまで繰り返して実行させることを特徴とする付記1に記載の検索プログラム。付記3前記未選択なノードの選択から判断までの処理を、選択すべきノードが無くなるまで繰り返して実行させることを特徴とする付記1または2に記載の検索プログラム。付記4前記ノード群から、検索に成功済のノードを優先して選択することを特徴とする付記1~3のいずれか一つに記載の検索プログラム。付記5前記ノード群のうちの少なくとも2つのノード間において、前記段数h、前記ビット幅s、前記分割数dのいずれか一つが異なることを特徴とする付記1~4のいずれか一つに記載の検索プログラム。付記6段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群のいずれかのノードに、検索対象データを受信し、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での受信された前記検索対象データの存否を判定し、前記検索対象データの送信元へ前記検索対象データの存否を示す検索結果を送信する、処理を実行させることを特徴とする検索プログラム。付記7前記ノード群のうちの少なくとも2つのノード間において、前記段数h、前記ビット幅s、前記分割数dのいずれか一つが異なることを特徴とする付記6に記載の検索プログラム。付記8段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持しており、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内に対象データをエントリし、前記対象データの送信元コンピュータへ前記対象データのエントリ先を示すエントリ結果を送信する処理を実行するノード群にアクセス可能な前記送信元コンピュータに、前記ノード群から、特定のノードを選択し、選択された前記特定のノードに前記対象データを送信し、前記特定のノードから、前記エントリ結果を受信し、受信された前記エントリ結果を出力する、処理を実行させることを特徴とする登録プログラム。付記9段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群のいずれかのノードに、対象データを受信し、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内に前記対象データをエントリし、前記対象データの送信元コンピュータへ前記対象データのエントリ先を示すエントリ結果を送信する、処理を実行させることを特徴とする登録プログラム。付記10段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持しており、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での検索対象データの存否を判定し、前記検索対象データの送信元コンピュータへ前記検索対象データの存否を示す検索結果を送信する処理を実行するノード群にアクセス可能な前記送信元コンピュータが、前記ノード群から未選択なノードを選択し、選択されたノードに前記検索対象データを送信し、前記選択されたノードから前記検索結果を受信し、受信された前記検索結果が、前記検索対象データが存在することを示しているか否かを判断し、判断結果を出力する、処理を実行することを特徴とする検索方法。付記11段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群のいずれかのノードが、検索対象データを受信し、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での受信された前記検索対象データの存否を判定し、前記検索対象データの送信元へ前記検索対象データの存否を示す検索結果を送信する、処理を実行することを特徴とする検索方法。付記12段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持しており、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内に対象データをエントリし、前記対象データの送信元コンピュータへ前記対象データのエントリ先を示すエントリ結果を送信する処理を実行するノード群にアクセス可能な前記送信元コンピュータが、前記ノード群から、特定のノードを選択し、選択された前記特定のノードに前記対象データを送信し、前記特定のノードから、前記エントリ結果を受信し、受信された前記エントリ結果を出力する、処理を実行することを特徴とする登録方法。付記13段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群のいずれかのノードが、対象データを受信し、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内に前記対象データをエントリし、前記対象データの送信元コンピュータへ前記対象データのエントリ先を示すエントリ結果を送信する、処理を実行することを特徴とする登録方法。付記14段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持しており、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での検索対象データの存否を判定し、前記検索対象データの送信元である検索装置へ前記検索対象データの存否を示す検索結果を送信する処理を実行するノード群にアクセス可能な前記検索装置であって、前記ノード群から未選択なノードを選択する処理部と、選択されたノードに前記検索対象データを送信する処理部と、前記選択されたノードから前記検索結果を受信する処理部と、受信された前記検索結果が、前記検索対象データが存在することを示しているか否かを判断する処理部と、判断結果を出力する処理部と、を備えることを特徴とする検索装置。付記15段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群のいずれかのノードであって、検索対象データを受信する処理部と、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での受信された前記検索対象データの存否を判定する処理部と、前記検索対象データの送信元へ前記検索対象データの存否を示す検索結果を送信する処理部と、を備えることを特徴とするノード。付記16段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持しており、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内に対象データをエントリし、前記対象データの送信元である登録装置へ前記対象データのエントリ先を示すエントリ結果を送信する処理を実行するノード群にアクセス可能な前記登録装置であって、前記ノード群から、特定のノードを選択する処理部と、選択された前記特定のノードに前記対象データを送信する処理部と、前記特定のノードから、前記エントリ結果を受信する処理部と、受信された前記エントリ結果を出力する処理部と、を備えることを特徴とする登録装置。付記17段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群のいずれかのノードであって、対象データを受信する処理部と、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内に前記対象データをエントリする処理部と、前記対象データの送信元コンピュータへ前記対象データのエントリ先を送信する処理部と、を備えることを特徴とするノード。付記18段数h、ビット幅s、擬陽性または陰性を示すビットが配列された第h段の分割数d、第p1≦p≦h段のブルームフィルタのビット幅m=s/dh、第p段のブルームフィルタの配列数n=dhである階層型ブルームフィルタを、段ごとにブルームフィルタ列を構成する各ブルームフィルタ内の同一位置のビットどうしでまとめることで転置した階層型転置ブルームフィルタと、前記階層型ブルームフィルタの第1段のブルームフィルタ列に対応するデータブロック集合と、を有するデータ構造を各々のノードが保持するノード群で構成される検索システムであって、前記ノード群のうちのいずれかのノードが、検索対象データを受信する処理部と、前記階層型転置ブルームフィルタに応じて、前記データブロック集合内での受信された前記検索対象データの存否を判定する処理部と、前記検索対象データの送信元へ前記検索対象データの存否を示す検索結果を送信する処理部と、を備えることを特徴とする検索システム。"