(57)【要約】【課題】膨大なデータリストの中から所望のデータを抽出する検索処理の高速化を実現する。【解決手段】原データ群を原データ領域に格納し、並びに、各原データの原データ領域における格納場所を示す情報をインデックス領域における当該原データのハッシュ値に対応する場所に格納しておく。検索に際しては、検索キーのハッシュ値を算出し、インデックス領域におけるそのハッシュ値に対応する場所を参照して原データの格納場所を示す情報を抽出する。次いで、原データ領域におけるその情報で示される場所を参照して所要の原データを抽出して、最終的に抽出した原データが検索キーに合致するものであるか否かを判断する。【選択図】図８
2007241378.tif 000002
【特許請求の範囲】
【請求項１】
与えられる検索キーに合致する原データを予め登録された原データ群の中から抽出するためのものであって、
原データ群を格納した原データ領域、及び各原データの原データ領域における格納場所を示す情報を当該原データのハッシュ値に対応する場所に格納したインデックス領域を有する記憶部と、
検索キーを取得する検索キー取得部と、
取得した検索キーのハッシュ値を算出するキーハッシュ算出部と、
前記インデックス領域における前記ハッシュ値に対応する場所を参照して原データの格納場所を示す情報を抽出し、次いで前記原データ領域におけるその情報で示される場所を参照して所要の原データを抽出する検索部と、
抽出した原データが検索キーに合致するものであるか否かを判断する判断部と
を具備する検索装置。
【請求項２】
検索キーに合致する原データの存否に関する結果情報を出力する結果出力部をさらに具備し、
前記原データ領域は、各原データとそれぞれの原データに関する属性情報とを組にして格納しており、
前記検索部は、所要の原データとともに当該原データに関する属性情報を抽出し、
前記結果出力部は、検索キーに合致する原データに関する属性情報をも含めた結果情報を出力する請求項１記載の検索装置。
【請求項３】
原データは、それぞれ所定の事物を識別する文字列であり、
属性情報は、原データによって識別される事物に関する情報であり、
検索キーは、何れかの事物を指定するための文字列である請求項２記載の検索装置。
【請求項４】
前記記憶部は、前記原データ領域及び前記インデックス領域に格納するべき情報を単一のデータファイルの形で記憶しており、
前記検索部は、前記データファイル中のインデックス領域をシークし、次いで同データファイル中の原データ領域をシークして所要の原データを抽出するものである請求項１、２または３記載の検索装置。
【請求項５】
前記記憶部にて前記データファイルを複数記憶しており、
さらに、前記検索部が前記記憶部で記憶している複数のデータファイルのうちの何れを参照して検索処理を実行するかを設定するファイル切替部を具備している請求項４記載の検索装置。
【請求項６】
請求項１、２、３、４または５記載の検索装置を構成するために用いられるものであって、コンピュータを、少なくとも、
検索キーを取得する検索キー取得部、
取得した検索キーのハッシュ値を算出するキーハッシュ算出部、
前記インデックス領域における前記ハッシュ値に対応する場所を参照して原データの格納場所を示す情報を抽出し、次いで前記原データ領域におけるその情報で示される場所を参照して所要の原データを抽出する検索部、並びに、
抽出した原データが検索キーに合致するものであるか否かを判断する判断部
として機能させるプログラム。
【請求項７】
さらに、コンピュータを、検索キーに合致する原データの存否に関する結果情報を出力する結果出力部としても機能させ、
前記原データ領域は、各原データとそれぞれの原データに関する属性情報とを組にして格納しており、
前記検索部は、所要の原データとともに当該原データに関する属性情報を抽出し、
前記結果出力部は、検索キーに合致する原データに関する属性情報をも含めた結果情報を出力する請求項６記載のプログラム。
【請求項８】
前記記憶部は、原データ領域及びインデックス領域に格納するべき情報を単一のデータファイルの形で記憶しており、
前記検索部は、前記データファイル中のインデックス領域をシークし、次いで同データファイル中の原データ領域をシークして所要の原データを抽出するものである請求項６または７記載のプログラム。
【請求項９】
請求項１、２、３、４または５記載の検索装置を構成するために用いられるものであって、コンピュータを、少なくとも、
前記原データ領域及び前記インデックス領域を有する記憶部、
登録されるべき原データを取得する原データ取得部、
取得した原データのハッシュ値を算出する原データハッシュ算出部、並びに、
前記原データを前記原データ領域に書き込み、かつ当該原データの原データ領域における格納場所を示す情報を前記インデックス領域における前記ハッシュ値に対応する場所に書き込む書込部
として機能させるプログラム。
【請求項１０】
前記原データ取得部は、登録されるべき原データとともに当該原データに関する属性情報をも取得し、
前記書込部は、前記原データと前記属性情報とを組にして前記原データ領域に書き込む請求項９記載のプログラム。
【請求項１１】
前記書込部は、前記原データ領域及び前記インデックス領域に格納するべき情報を単一のデータファイルの形で書き込むものである請求項９または１０記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、種々のデータを検索するための検索装置に関する。
【背景技術】
【０００２】
データベースに登録しているデータリストの中から所望のデータを抽出する検索処理は日常的に行われる。例えば、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）フィルタリングを実施するプロクシサーバでは、ブラックリスト（アクセスを禁止するべきＵＲＬ群）またはホワイトリスト（アクセスを許可するべきＵＲＬ群）を予め保持し、クライアントよりもたらされるリクエストに含まれるアクセス先のＵＲＬがリスト中に存在しているかどうか検索した上で、リクエストに係るアクセスを許可するか禁止するかの判断を下す（例えば、下記特許文献を参照）。
【特許文献１】特開２０００−０４７９２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記の如きＵＲＬフィルタリングにおいて、アクセスを禁止／許可したいＵＲＬは日々リストに追加される。天文学的な数のウェブページ等がインターネットで公開されている今、ブラックリストまたはホワイトリストに登録されるＵＲＬもまた莫大な数に上り、ＵＲＬの検索に要する時間も無視できない程度に長くなってきている。
【０００４】
以上に鑑みてなされた本発明は、膨大なデータリストの中から所望のデータを抽出する検索処理の高速化を実現することを所期の目的としている。
【課題を解決するための手段】
【０００５】
本発明では、図１に示すように、与えられる検索キーに合致する原データを予め登録された原データ群の中から抽出するためのものであって、原データ群を格納した原データ領域、及び各原データの原データ領域における格納場所を示す情報を当該原データのハッシュ値に対応する場所に格納したインデックス領域を有する記憶部１０１と、検索キーを取得する検索キー取得部１０２と、取得した検索キーのハッシュ値を算出するキーハッシュ算出部１０３と、前記インデックス領域における前記ハッシュ値に対応する場所を参照して原データの格納場所を示す情報を抽出し、次いで前記原データ領域におけるその情報で示される場所を参照して所要の原データを抽出する検索部１０４と、抽出した原データが検索キーに合致するものであるか否かを判断する判断部１０５とを具備する検索装置を構成した。
【０００６】
本検索装置をＵＲＬフィルタリングに適用する場合、予め、ブラックリストまたはホワイトリストに登録されるべきＵＲＬを原データ領域に格納するとともに、原データ領域におけるこのＵＲＬの格納場所を示す情報をインデックス領域に格納しておく。そのとき、同ＵＲＬからハッシュ値を算出して、インデックス領域におけるハッシュ値に対応する場所に情報を格納する。検索に際しては、検索キーとして与えられたＵＲＬ、即ちクライアントがアクセスしようとしているＵＲＬのハッシュ値を算出し、インデックス領域におけるそのハッシュ値に対応する場所を参照して、そこに格納されているＵＲＬの格納場所を示す情報を抽出する。次いで、原データ領域におけるその情報で示される場所を参照して、そこに格納されているＵＲＬを抽出する。最後に、抽出したＵＲＬと検索キーとして与えられたＵＲＬとを照合する。
【０００７】
本検索装置は、インデックス領域のシーク及び原データ領域のシークという二回のシーク処理を通じて、検索キーと照合する原データの絞り込みを行う。このようなものであれば、予め登録している原データのリストの量が膨大であっても、検索処理に要する時間を十分に短縮することができる。
【０００８】
さらに、本検索装置が、図２に示すように、検索キーに合致する原データの存否に関する結果情報を出力する結果出力部１０６を具備していてもよい。
【０００９】
加えて、前記原データ領域に、各原データとそれぞれの原データに関する属性情報とを組にして格納しているならば、前記検索部１０４にて、所要の原データとともに当該原データに関する属性情報を抽出し、前記結果出力部１０６にて、検索キーに合致する原データに関する属性情報をも含めた結果情報を出力するものとすることができる。ＵＲＬフィルタリングの例でいえば、リストに登録されるべきＵＲＬと、そのＵＲＬで識別されるウェブページ等の内容の分類（一般的なものか、暴力的なものか、触法行為に関わるものか、等々）を表す属性情報とを組にして原データ領域に格納しておく。そして、検索に際して、検索キーとして与えられたＵＲＬがリスト中に存在するかどうか検索を遂行するだけでなく、当該ＵＲＬに係る属性情報の抽出をも試みる。検索キーとして与えられたＵＲＬをリスト中に発見した暁には、同ＵＲＬで識別されるウェブページ等の内容の分類を示すことが可能である。
【００１０】
既述の通り、本検索装置は、原データがそれぞれ所定の事物を識別する文字列であり、属性情報が原データによって識別される事物に関する情報であり、検索キーが何れかの事物を指定するための文字列であるような用途に好適に供することができる。
【００１１】
前記原データ領域及び前記インデックス領域に格納するべき情報を単一のデータファイルの形で前記記憶部１０１に記憶させていれば、前記検索部１０４にて、前記データファイル中のインデックス領域をシークし、次いで同データファイル中の原データ領域をシークして、所要の原データを抽出できる。複数のデータファイルに対してファイル操作及び入出力を行わずに済むことから、検索の一層の効率化、高速化が図られる。
【００１２】
また、前記記憶部１０１にて前記データファイルを複数記憶し、さらには図３に示すように、前記検索部１０４が前記記憶部１０１で記憶している複数のデータファイルのうちの何れを参照して検索処理を実行するかを設定するファイル切替部１０７を具備する構成としてもよい。これにより、一方のデータファイルの生成または再構築時には他方のデータファイルを参照して検索を行い、他方のデータファイルの生成ないし再構築時には一方のデータファイルを参照して検索を行い得る。つまり、データファイルの生成ないし再構築に伴う検索サービスの停止期間を極小化できる。
【００１３】
本検索装置が検索を実行するにあたっては、事前に検索対象となる原データのリストを記憶部１０１に記憶させておく必要がある。そのために必須となる装置の機能は、図４に示すように、前記原データ領域及び前記インデックス領域を有する記憶部１０１、登録されるべき原データを取得する原データ取得部１０８、取得した原データのハッシュ値を算出する原データハッシュ算出部１０９、並びに、前記原データを前記原データ領域に書き込み、かつ当該原データの原データ領域における格納場所を示す情報を前記インデックス領域における前記ハッシュ値に対応する場所に書き込む書込部１１０である。
【００１４】
特に、前記原データ取得部１０８は、登録されるべき原データとともに当該原データに関する属性情報をも取得するものとし、前記書込部１１０は、前記原データと前記属性情報とを組にして前記原データ領域に書き込むものとすることが好ましい。前記書込部１１０は、前記原データ領域及び前記インデックス領域に格納するべき情報を単一のデータファイルの形で書き込むことができる。
【発明の効果】
【００１５】
本発明によれば、膨大なデータリストの中から所望のデータを抽出する検索処理の高速化を実現できる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施形態を、図面を参照して説明する。本実施形態の検索装置は、検索キーとしてあるＵＲＬが与えられたときに、そのＵＲＬで識別されるウェブページ等へのアクセスを禁止するかあるいは許可するかに関する判断を下す役割を担うものである。本実施形態の検索装置は、サーバコンピュータ１を主体として構成される。図５に示すように、サーバコンピュータ１は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の内部ネットワーク３を介してクライアントコンピュータ２と接続している。クライアントコンピュータ２は、インターネットに代表される外部ネットワーク４を介してウェブサーバ、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サーバ、アプリケーションサーバ等の外部のコンピュータと通信可能である。
【００１７】
ユーザは、クライアントコンピュータ２を使用して、外部ネットワーク４上に存在するウェブページやファイル、プログラム等のリソースにアクセスする。その際、所要の通信プロトコルに則ったリクエストを外部ネットワーク４に向けて送出することになるが、これに先んじてクライアントコンピュータ２はアクセス先のＵＲＬまたはＵＲＬを含むリクエストをサーバコンピュータ１に送信する。アクセス先のＵＲＬまたはリクエストを受信したサーバコンピュータ１は、そのＵＲＬによって識別されるリソースへのアクセスを禁止するべきであるか許可するべきであるかを判断し、併せてアクセス先のリソースが如何なる種類のものであるかを判定する。因みに、サーバコンピュータ１は、プロクシサーバやＤＮＳ（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｅｒｖｅｒ）等であることがある。
【００１８】
サーバコンピュータ１は、例えば、図６に示すように、プロセッサ１ａ、メインメモリ１ｂ、補助記憶デバイス１ｃ、表示制御デバイス１ｄ、ディスプレイ１ｅ、操作入力デバイス１ｆ、通信インタフェース１ｇ等のハードウェア資源を備え、これらがコントローラ（システムコントローラやＩ／Ｏコントローラ）１ｈにより制御されて連携動作するものである。補助記憶デバイス１ｃは、ハードディスクドライブ、フラッシュメモリ、光学ディスクドライブ、その他である。表示制御デバイス１ｄは、プロセッサ１ａより受けた描画指示をもとに表示させるべき画像データを生成してディスプレイ１ｅに向けて送出するビデオチップ（グラフィクスチップ）、画像データ等を一時的に格納しておくビデオメモリ等を要素とする。操作入力デバイス１ｆは、手指で操作可能な押下ボタン、キーボードや、マウス、トラックパッド、タッチパネル等のポインティングデバイスである。通信インタフェース１ｇは、ネットワーク３、４を介した情報通信を行うためのデバイスであり、典型的にはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）や無線ＬＡＮトランシーバであるが、これら以外にＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＩＥＥＥ１３９４等のインタフェースを採用することもできる。
【００１９】
通常、プロセッサ１ａによって実行されるべきプログラムが補助記憶デバイス１ｃに格納されており、プログラムの実行の際には補助記憶デバイス１ｃからメインメモリ１ｂに読み込まれ、プロセッサ１ａによって解読される。本実施形態では、既知のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）プログラムやこれに付帯する各種デバイスドライバプログラムが予めインストールされ、他のプログラムによるハードウェア資源の利用を仲介する。その上で、本発明に係る検索装置を構成するために必要となるプログラムがインストールされている。そして、プログラムに従い、上記ハードウェア資源を作動して、図７に示す記憶部１０１、原データ取得部１０８、原データハッシュ算出部１０９、書込部１１０、検索キー取得部１０２、キーハッシュ算出部１０３、検索部１０４、判断部１０５、結果出力部１０６並びにファイル切替部１０７としての機能を発揮する。
【００２０】
各部の機能を説明する。記憶部１０１は、メインメモリ１ｂまたは補助記憶デバイス１ｃを利用して構成され、原データたるＵＲＬのリストを記憶する。ＵＲＬのリストが、ブラックリストであるか、ホワイトリストであるかは問われない。記憶部１０１は、原データ領域と、インデックス領域とを包有している。原データ領域は、リストに登録されたＵＲＬを格納する領域であり、インデックス領域は、各ＵＲＬの原データ領域における格納場所を示す情報を格納する領域である。
【００２１】
詳述すると、図８に示しているように、各ＵＲＬから所定長のハッシュ値を算出し、インデックス領域におけるそのハッシュ値に対応する場所に、ＵＲＬの格納場所を示す情報を格納するようにしている。ハッシュ値とは、衝突耐性を有する、換言すれば同じハッシュ値を生成する二つの原文を見出すことが困難なハッシュ関数に、原文を代入して算出する擬似乱数である。尤も、相異なる原文から同じハッシュ値が生成される可能性がないわけではない。ハッシュ値がｘビット長であるとき、インデックス領域は２x個の記憶領域を備える配列である。各記憶領域には、ＵＲＬの格納場所を示す情報と、ハッシュ値が同じになるＵＲＬの数の情報とを格納する。本実施形態では、ハッシュ値を２４ビット長、各記憶領域の大きさを８バイトに設定しており、インデックス領域は全体で１２８メガバイトとなる。記憶領域は、位置情報に４バイト、ＵＲＬの重なり数の情報に４バイトを割り当てている。
【００２２】
原データ領域では、リストに登録されるべきＵＲＬを、下記の規則に従って格納する。即ち、各ＵＲＬを格納する個々の記憶領域に、ＵＲＬの長さ、ＵＲＬ、終端文字、属性情報の長さ、属性情報、終端文字の順に情報を格納する。属性情報とは、ＵＲＬに関する情報、より具体的にはＵＲＬによって識別されるリソースの内容の分類に関する情報である。例えば、そのＵＲＬで識別されるウェブページ等の内容が一般的なものか、暴力的なものか、触法行為に関わるものか、等を表すパラメータがこれにあたる。本実施形態では、ＵＲＬの長さ及び属性情報の長さを、それぞれ終端文字を含めて最長で２５５バイトまでとしている。終端文字は、００ｈ（１６進数表記）の１バイト文字である。ＵＲＬが“ｗｗｗ．ａｂｃ．ｃｏｍ”なる文字列であり、属性情報が“１０１”なる文字列であるとすると、ＵＲＬの長さは終端文字を含めて１２バイト、属性情報の長さは終端文字を含めて４バイトになる。そして、これらＵＲＬ及び属性情報を格納する記憶領域の大きさは１４バイトということになる。リストに登録されたＵＲＬの平均の長さが６４バイト、リストに登録されたＵＲＬの総数が１６７７万件のとき、原データ領域は全体で約１．０７ギガバイトとなる。
【００２３】
また、特に、記憶部１０１は、原データ領域及びインデックス領域に格納される情報を、単一のデータファイルとして保持する。以降、このデータファイルをインデックスファイルと呼称する。インデックス領域に格納する位置情報は、このインデックスファイル内の所要のアドレスを指し示すものとすることができる。位置情報を４バイトとしているのは、汎用的な３２ビットプロセッサ１ａのレジスタ長に合わせていることも理由の一つである。インデックスファイルの大きさが４ギガバイトを超えることはほとんどなく、汎用的な３２ビットプロセッサ１ａでこれを簡単に取り扱うことができる。無論、プロセッサ１ａが６４ビットプロセッサであれば位置情報を８バイトとする等、仕様の変更は許される。
【００２４】
原データ取得部１０８は、リストに登録されるべきＵＲＬ及びそのＵＲＬに関する属性情報を取得する。その取得の態様は一意に限定されない。操作入力デバイス１ｆを介した手入力を受け付けたり、補助記憶デバイス１ｃに記憶しているファイルから読み取ったり、ネットワーク３、４を介して接続している他のコンピュータ（クライアントコンピュータ２を含む）から受信したりする態様で、ＵＲＬ及び属性情報を取得することができる。
【００２５】
原データハッシュ算出部１０９は、取得したＵＲＬを所定のハッシュ関数に代入して当該ＵＲＬのハッシュ値を算出する。
【００２６】
書込部１１０は、取得したＵＲＬ及びそのＵＲＬに関する属性情報を、記憶部１０１で保持するインデックスファイルの原データ領域に書き込む。並びに、当該ＵＲＬの原データ領域における格納場所を示す情報を、インデックス領域における算出したハッシュ値に対応する場所に書き込む。例えば、リストに登録されるＵＲＬ“ｗｗｗ．ａｂｃ．ｃｏｍ”のハッシュ値が２３７Ａ２Ｃｈであるならば、原データ領域において当該ＵＲＬ及び属性情報を格納している記憶領域の場所を示す情報を、インデックス領域における２３７Ａ２Ｃｈ番目の記憶領域に格納する。さらに、同じ記憶領域に、リストに登録されたＵＲＬのうちハッシュ値が２３７Ａ２ＣｈとなるＵＲＬの数を格納する。ハッシュ値が同じになる複数のＵＲＬが存在している場合には、各ＵＲＬ及びその属性情報を原データ領域における連続した同数の記憶領域に順次格納するものとし、それら記憶領域の先頭を示す情報をインデックス領域における該当の記憶領域に格納する。
【００２７】
検索キー取得部１０２は、検索キー、即ちクライアントコンピュータ２がアクセスしようとしているＵＲＬを取得する。本実施形態では、主に、クライアントコンピュータ２よりもたらされるアクセス先のＵＲＬまたはＵＲＬを含むリクエストを受信することを想定している。但し、検索キーの取得の態様は一意に限定されない。操作入力デバイス１ｆを介した手入力を受け付けたり、補助記憶デバイス１ｃに記憶しているファイルから読み取ったりする態様で、ＵＲＬを取得することもできる。
【００２８】
キーハッシュ算出部１０３は、取得したＵＲＬを所定のハッシュ関数に代入して当該ＵＲＬのハッシュ値を算出する。
【００２９】
検索部１０４は、インデックス領域における算出したハッシュ値に対応する場所を参照して、検索キーと照合するべきＵＲＬが格納されている場所を示す情報を抽出する。次いで、原データ領域におけるその情報で示される場所を参照して、所要のＵＲＬを抽出する。例えば、検索キーとして与えられたＵＲＬ“ｗｗｗ．ａｂｃ．ｃｏｍ”のハッシュ値が２３７Ａ２Ｃｈであるならば、インデックス領域における２３７Ａ２Ｃｈ番目の記憶領域を参照し、そこに格納されている位置情報及びＵＲＬの重なり数の情報を抽出する。そして、原データ領域における、抽出した位置情報によって示される記憶領域を参照して、そこに格納されているＵＲＬ及び属性情報を抽出する。ＵＲＬの重なり数が複数である場合には、抽出した位置情報によって指し示される先頭から同数分の記憶領域を順次参照して、その各々に格納されているＵＲＬ及び属性情報を抽出する。また、ＵＲＬの重なり数が０である場合には、ハッシュ値が同値となるＵＲＬがリストに登録されていないということであるので、即時に検索処理を終了する。
【００３０】
判断部１０５は、原データ領域より抽出したＵＲＬが、検索キーとして与えられたＵＲＬに合致するか否かを判断する。ハッシュ値に対するＵＲＬの重なり数が複数であり、原データ領域より複数のＵＲＬを抽出できる場合には、それぞれのＵＲＬを検索キーとして与えられたＵＲＬと照合する。
【００３１】
結果出力部１０６は、検索キーとして与えられたＵＲＬに合致するＵＲＬが原データ領域に格納しているリスト中に存在していたか否かに関する結果情報を出力する。結果情報には、検索キーに合致したＵＲＬに関する属性情報を含めることができる。本実施形態では、主に、結果情報をクライアントコンピュータ２に返信することを想定している。但し、結果情報の出力の態様は一意に限定されない。補助記憶デバイス１ｃに書き込んで蓄積したり、ハードコピー出力したり、ディスプレイ１ｅの画面に表示したりする態様で、これを出力することもできる。さらに、結果出力部１０６の機能は必須ではない。サーバコンピュータ１がプロクシサーバやＤＮＳ等であり、サーバコンピュータ１自体でクライアントコンピュータ２による外部ネットワーク４へのアクセスを遮断し得る場合には、結果情報の出力を伴うことなく、判断部１０５における判断結果に応じてアクセスを禁止／許可するということも考えられる。
【００３２】
しかして、ファイル切替部１０７は、検索部１０４が検索に際して参照するインデックスファイルの切替を司る。本実施形態の検索装置は、複数のインデックスファイルを保持し、その何れかのインデックスファイルを参照して検索処理を遂行する。よって、インデックスファイルの生成または再構築時において、一方のインデックスファイルにＵＲＬや属性情報、位置情報等を書き込んでこれを更新しつつ、他方のデータファイルを参照して検索を行い得る状態に維持することができる。ファイル切替部１０７は、記憶部１０１で記憶している複数のデータファイルのうち何れを参照して検索を行うのかを選択するコマンドを操作入力デバイス１ｆを介して受け付け、またはネットワーク３、４を介して接続している他のコンピュータ（クライアントコンピュータ２を含む）から受信して、インデックスファイルを切り替える。あるいは、インデックスファイルの生成または再構築時に、更新されない方のインデックスファイルに自動的に切り替えるようにしても構わない。但し、ファイル切替部１０７の機能は必須ではない。記憶部１０１で記憶しているデータファイルが唯一の場合には、そもそもインデックスファイルの切替は発生しない。
【００３３】
なお、上述した各部の機能を相互に接続している複数のコンピュータに分担させ、それらコンピュータを協働させることで検索装置として成立させることを妨げない。また、上述した各部の機能の一部または全部をクライアントコンピュータ２に担わせることを妨げない。
【００３４】
本検索装置が実行する処理の手順を述べる。インデックスファイルを生成ないし再構築する際の処理の手順を、図９のフローチャートに示す。検索装置は、リストに登録されるべきＵＲＬ及びそのＵＲＬに関する属性情報を一件づつ取得する（ステップＳ１）。続いて、取得したＵＲＬのハッシュ値を算出し（ステップＳ２）、インデックス領域におけるハッシュ値に対応する記憶領域を参照してＵＲＬの重なり数の情報を抽出する（ステップＳ３）。ＵＲＬの重なり数が０である場合には（ステップＳ４）、原データ領域において未使用の記憶領域を適宜に選択してそこにＵＲＬ及び属性情報を格納する（ステップＳ５）。ステップＳ５では、併せてＵＲＬの長さ、属性情報の長さの情報を書き込む。さらに、ＵＲＬ及び属性情報を格納した記憶領域を指し示す位置情報を、インデックス領域の該当の記憶領域に格納する（ステップＳ６）。ＵＲＬの重なり数が１以上である場合には、インデックス領域の該当の記憶領域を参照して位置情報を抽出し（ステップＳ７）、原データ領域におけるその位置情報で示される場所からＵＲＬの重なり数分繰り下がった記憶領域にＵＲＬ及び属性情報を格納する（ステップＳ８）。ステップＳ８でも、併せてＵＲＬの長さ、属性情報の長さの情報を書き込む。また、何れの場合にも、インデックス領域の該当の記憶領域に格納しているＵＲＬの重なり数を１増加させる（ステップＳ９）。そして、リストに登録されるべき全てのＵＲＬについて、上記の処理を繰り返す（ステップＳ１０）。
【００３５】
ＵＲＬを検索する際の処理の手順を、図１０のフローチャートに示す。検索装置は、検索キーとして与えられるＵＲＬを取得した後（ステップＳ１１）、このＵＲＬのハッシュ値を算出し（ステップＳ１２）、インデックス領域におけるハッシュ値に対応する記憶領域を参照して位置情報及びＵＲＬの重なり数の情報を抽出する（ステップＳ１３）。ＵＲＬの重なり数が０である場合には（ステップＳ１４）、検索キーに合致するＵＲＬがリスト中に存在していないことになる。ＵＲＬの重なり数が１以上である場合には、原データ領域におけるその位置情報で示される場所からＵＲＬの重なり数分の記憶領域を順次参照してそこに格納されているＵＲＬを一件づつ抽出し、検索キーのＵＲＬと照合する（ステップＳ１５）。検索キーに合致するＵＲＬが検出されたならば（ステップＳ１６）、そのＵＲＬに関連する属性情報を抽出して（ステップＳ１７）、抽出した属性情報を含めた結果情報を出力する（ステップＳ１８）。このときの結果情報は、検索キーに合致するＵＲＬがリスト中に存在していた旨を示すものとなる。他方、検索キーに合致するＵＲＬが検出されたかった、または元来ＵＲＬの重なり数が０であったならば、検索キーに合致するＵＲＬがリスト中に存在していなかった旨を示す結果情報を出力する。
【００３６】
先に述べたように、外部ネットワーク４へアクセスしようとするクライアントコンピュータ２は、外部ネットワーク４に実際にアクセスする以前に、アクセス先のＵＲＬまたはＵＲＬを含むリクエストを検索キーとしてサーバコンピュータ１に送信する。これを受信したサーバコンピュータ１は、検索処理を遂行し、結果情報をクライアントコンピュータ２に返信する。結果情報を受信したクライアントコンピュータ２は、その結果情報の内容に応じて、アクセスを実行するか中止するかの判断を下すことができるのである。
【００３７】
本実施形態によれば、与えられる検索キーに合致する原データを予め登録された原データ群の中から抽出するためのものであって、原データ群を格納した原データ領域、及び各原データの原データ領域における格納場所を示す情報を当該原データのハッシュ値に対応する場所に格納したインデックス領域を有する記憶部１０１と、検索キーを取得する検索キー取得部１０２と、取得した検索キーのハッシュ値を算出するキーハッシュ算出部１０３と、前記インデックス領域における前記ハッシュ値に対応する場所を参照して原データの格納場所を示す情報を抽出し、次いで前記原データ領域におけるその情報で示される場所を参照して所要の原データを抽出する検索部１０４と、抽出した原データが検索キーに合致するものであるか否かを判断する判断部１０５とを具備する検索装置を構成し、インデックス領域のシーク及び原データ領域のシークという二回のシーク処理を通じて検索キーと照合する原データの絞り込みを行うようにしたため、予め登録している原データのリストの量が膨大であっても、検索処理に要する時間を十分に短縮することができる。
【００３８】
さらに、検索キーに合致する原データの存否に関する結果情報を出力する結果出力部１０６を具備しており、他のコンピュータで結果情報を利用してアクセスの可否判断やその他種々の処理を実施することが可能となっている。
【００３９】
加えて、前記原データ領域に、各原データとそれぞれの原データに関する属性情報とを組にして格納しているため、前記検索部１０４にて、所要の原データとともに当該原データに関する属性情報を抽出し、前記結果出力部１０６にて、検索キーに合致する原データに関する属性情報をも含めた結果情報を出力するものとすることができる。属性情報もまた、他のコンピュータで利用することができる。
【００４０】
本検索装置は、原データがそれぞれ所定の事物を識別する文字列であり、属性情報が原データによって識別される事物に関する情報であり、検索キーが何れかの事物を指定するための文字列であるような用途に好適に供することができる。
【００４１】
前記原データ領域及び前記インデックス領域に格納するべき情報を単一のデータファイル（インデックスファイル）の形で前記記憶部１０１に記憶させているため、前記検索部１０４にて、前記データファイル中のインデックス領域をシークし、次いで同データファイル中の原データ領域をシークして、所要の原データを抽出できる。複数のデータファイルに対してファイル操作及び入出力を行わずに済むことから、検索の一層の効率化、高速化が図られる。
【００４２】
また、前記記憶部１０１にて前記データファイルを複数記憶し、前記検索部１０４が前記記憶部１０１で記憶している複数のデータファイルのうちの何れを参照して検索処理を実行するかを設定するファイル切替部１０７をさらに具備しているため、一方のデータファイルの生成または再構築時には他方のデータファイルを参照して検索を行い、他方のデータファイルの生成ないし再構築時には一方のデータファイルを参照して検索を行い得る。つまり、データファイルの生成ないし再構築に伴う検索サービスの停止期間を極小化できる。
【００４３】
本検索装置が検索を実行するにあたっては、事前に検索対象となる原データのリストを記憶部１０１に記憶させておく必要がある。そのために、本検索装置は、登録されるべき原データを取得する原データ取得部１０８、取得した原データのハッシュ値を算出する原データハッシュ算出部１０９、並びに、前記原データを前記原データ領域に書き込み、かつ当該原データの原データ領域における格納場所を示す情報を前記インデックス領域における前記ハッシュ値に対応する場所に書き込む書込部１１０を具備している。
【００４４】
特に、前記原データ取得部１０８は、登録されるべき原データとともに当該原データに関する属性情報をも取得するものとし、前記書込部１１０は、前記原データと前記属性情報とを組にして前記原データ領域に書き込むものとしている。前記書込部１１０は、前記原データ領域及び前記インデックス領域に格納するべき情報を単一のデータファイルの形で書き込むことができる。
【００４５】
なお、本発明は以上に詳述した実施形態に限られるものではない。例えば、上記実施形態では、ハッシュ値を２４ビット長としており、リストには１６７７万件程度のＵＲＬを登録しておくことができた。それ以上多い件数を登録したければ、ハッシュ値を長くすればよい。ハッシュ値を３２ビット長とすれば、リストに４３億件程度のＵＲＬを登録しておくことが可能となる。このときには、インデックスファイルの大きさが４ギガバイトを超えるので、インデックスファイルを２５６個に分割して一個あたり４ギガバイト以下の大きさに収めたり、インデックス領域に格納する位置情報を８バイトとしたりする仕様変更を施すことが好ましい。
【００４６】
上記実施形態では、ＵＲＬの重なり数の情報をインデックス領域に格納していたが、これを原データ領域に格納することを妨げない。
【００４７】
検索対象とするデータは、ＵＲＬには限られない。氏名、名称やユーザＩＤ、クレジットカード番号等、各種データの検索に本発明を適用することができる。また、属性情報も、当該人の年齢、性別、職業、住所、電話番号、電子メールアドレス等、種々に変形可能である。
【００４８】
さらに言えば、検索対象とするデータの形式が文字列であるとも限られない。画像・映像データや音声データ等の検索に本発明を適用することも当然に可能である。
【００４９】
その他、各部の具体的構成や処理の手順等は、本発明の趣旨を逸脱しない範囲で種々変形が可能である。
【図面の簡単な説明】
【００５０】
【図１】本発明の構成説明図。
【図２】本発明の構成説明図。
【図３】本発明の構成説明図。
【図４】本発明の構成説明図。
【図５】本発明の一実施形態におけるシステムの概要を示す図。
【図６】同実施形態における検索装置が具備するハードウェア資源を示す図。
【図７】同検索装置の機能ブロック図。
【図８】同検索装置が保持しているインデックスファイルの内容を説明する図。
【図９】同検索装置が実行する処理の手順を示すフローチャート。
【図１０】同検索装置が実行する処理の手順を示すフローチャート。
【符号の説明】
【００５１】
１０１…記憶部
１０２…検索キー取得部
１０３…キーハッシュ算出部
１０４…検索部
１０５…判断部
１０６…結果出力部
１０７…ファイル切替部
１０８…原データ取得部
１０９…原データハッシュ算出部
１１０…書込部
【図１】
2007241378.tif 000003
【図２】
2007241378.tif 000004
【図３】
2007241378.tif 000005
【図４】
2007241378.tif 000006
【図５】
2007241378.tif 000007
【図６】
2007241378.tif 000008
【図７】
2007241378.tif 000009
【図８】
2007241378.tif 000010
【図９】
2007241378.tif 000011
【図１０】
2007241378.tif 000012