図1は、本実施例によるシステム構成を例示する説明図である。通信ネットワーク100を介して、複数の検索サーバ1100、1200、1300と、複数のファイルサーバ2100、2200、2300と、複数のクライアントマシン3100、3200、3300とが接続されている。さらに、コンピュータプログラムを配信するためのサーバ7000を通信ネットワーク100に接続してもよい。
本システムでは、各ファイルサーバに格納されているデータの検索インデックスを、対応する検索サーバが作成する。各検索サーバは、その検索インデックスを利用して、クライアントマシンにファイルサーバ上のファイルについての検索サービスを提供する。さらに、検索サーバは、クライアントマシンに、複数の検索サーバからの検索結果をまとめて提供する統合検索サービスも提供する。
具体的なサービス内容は次の通りである。まず、クライアントマシンは、ファイルサーバにファイル(データファイル)を登録することができる。ファイルサーバは、登録されたファイルを、当該ファイルサーバに接続された外部記憶装置に格納し保管する。検索サーバは、ファイルサーバに格納されたファイルをクローリングによって取得し、検索インデックスを作成する。検索サーバは、検索インデックスを、当該検索サーバに接続された外部記憶装置に格納し保管する。
クライアントマシンは、検索サーバに、検索クエリを指定して検索要求を送信することができる。検索サーバは、その検索クエリの条件に合致するファイルを、当該検索サーバの有する検索インデックスを利用して抽出し、その検索結果をクライアントマシンに提供する。
さらに、クライアントマシンは、検索サーバに、検索クエリを指定して統合検索要求を送信することができる。検索サーバは、その検索クエリの条件に合致するファイルを、当該検索サーバが有する検索インデックスを利用して抽出する。さらに、検索サーバは、統合検索可能な他の検索サーバにも検索要求を送信し、各検索サーバから応答される検索結果を統合検索結果として、クライアントマシンに提供する。
クライアントマシンは、統合検索結果に基づいて、アクセス対象ファイルを選定することができる。クライアントマシンは、統合検索結果に格納されているファイルアクセス用のファイルパス名を利用して、ファイルサーバに保管されているファイルにアクセスすることができる。
なお、図1では、検索サーバ、ファイルサーバ及びクライアントマシンという3種類の装置を、それぞれ別々の装置として示している。図1に示す構成に限らず、例えば、それら3種類の装置のうちいずれか2つ、または、3つ全てを一つのコンピュータ装置として構成してもよい。
プログラム配信サーバ7000は、例えば、ハッシュアルゴリズム等のプログラムを検索サーバに配信させる装置である。プログラム配信サーバを、例えば、ファイルサーバまたは検索サーバと統合させて、一つのコンピュータ装置内に実現してもよい。
さらに、通信ネットワーク100による接続形態は、インターネット接続でもよいし、または、ローカルエリアネットワークによるイントラネット接続などでもよい。
図2は、検索サーバ1100のハードウェア構成を例示する説明図である。本実施例では、3台の検索サーバ1100、1200、1300のうち、検索サーバ1100が統合検索サービスの受付窓口となっている。つまり、検索サーバ1100は、統合検索サービスをクライアントマシンに提供するための「統合検索サーバ」であり、さらに、検索要求に従って検索する「所定の検索サーバ」でもある。
検索サーバ1100は、例えば、プロセッサ1110と、メモリ1120と、外部記憶装置インタフェース(以下、I/F)1130と、ネットワークI/F1140と、それら1110、1120、1130、1140を接続するバス1150とを含んで構成される。
プロセッサ1110は、コンピュータプログラム(以下、プログラム)を実行する。メモリ1120には、後述するプログラム1121−1125及びテーブル4100−4400が格納される。外部記憶I/F1130は、外部記憶装置1160にアクセスするための通信回路である。ネットワークI/F1140は、通信ネットワーク100を介して他装置(ファイルサーバ及びクライアントマシン等)にアクセスするための通信回路である。
図3は、メモリ1120に記憶されるプログラム内容を示す。メモリ1120には、例えば、外部記憶装置I/Fプログラム1121と、ネットワークI/Fプログラム1122と、データ管理プログラム1123と、検索制御プログラム1124と、統合検索制御プログラム1125と、が記憶されている。
外部記憶装置I/Fプログラム1121は、外部記憶装置I/F1130を制御する。ネットワークI/Fプログラム1122は、ネットワークI/F1140を制御する。データ管理プログラム1123は、検索サーバ1100において保管データを管理するために利用されるファイルシステムまたはデータベースを提供する。検索制御プログラム1124は、検索サーバ1100において検索サービスを提供する。統合検索制御プログラム1125は、検索サーバ1100において統合検索サービスを提供する。
図4は、メモリ1120に記憶されるテーブル(管理用データ)の内容を示す。メモリ1120には、例えば、検索インデックス登録ファイル管理テーブル4100と、検索インデックス管理テーブル4200と、検索サーバ管理テーブル4300と、統合用検索結果一時保管テーブル4400とが格納される。
検索インデックス登録ファイル管理テーブル4100は、検索制御プログラム1124により利用されるテーブルであり、検索インデックスに登録されたファイルを管理する。検索インデックス管理テーブル4200は、検索インデックスを管理するテーブルである。検索サーバ管理テーブル4300は、統合検索制御プログラム1125により使用されるテーブルであり、統合検索システムに含まれている各検索サーバを管理する。統合用検索結果一時保管テーブル4400は、統合検索制御プログラム1125により使用されるテーブルであり、統合検索の結果を一時的に保管する。
図3に戻る。検索制御プログラム1124は、その内部に、検索インデックス管理サブプログラム1171と、検索受付サブプログラム1172と、ハッシュアルゴリズム応答サブプログラム1173と、重複排除サブプログラム1174とを持つ。
検索インデックス管理サブプログラム1171は、検索インデックスデータを管理するために必要な処理を行う。具体的には、検索インデックス管理サブプログラム1171は、検索サーバ1100の検索対象となっているファイルデータを保管しているファイルサーバ3100に対してクローリング処理を行い、必要に応じて検索インデックスデータを生成したり、更新したり、削除したりする。検索インデックス管理サブプログラム1171は、検索インデックスデータの実体をデータ管理プログラム1123を用いて管理する。
検索受付サブプログラム1172は、クライアントマシンから検索クエリを指定した検索要求を受け付ける。検索受付サブプログラム1172は、その検索条件に合致するファイルを検索し、検索結果をクライアントマシンに応答する処理を行う。本実施例では、検索受付サブプログラム1172は、検索インデックス管理サブプログラム1171が別途作成した検索インデックスデータを利用して検索処理を行う。
ハッシュアルゴリズム応答サブプログラム1173は、他の検索サーバからハッシュアルゴリズムの折衝を要求された場合、その要求を受けて、必要な処理を行った上で応答するプログラムである。ハッシュアルゴリズム応答サブプログラム1173は、当該ハッシュアルゴリズム応答プログラム1173が搭載されている検索サーバで利用可能なハッシュアルゴリズムの一覧を、問い合わせ元に応答する。詳細は後述するが、各検索サーバで共通して利用可能なハッシュアルゴリズムの使用を各検索サーバに指示することにより、統合検索結果における重複を検出することができる。
なお、以下の説明では、主語となるプログラムまたはテーブルが搭載されている検索サーバを、自検索サーバと呼ぶことがある。
重複排除サブプログラム1174は、自検索サーバの検索インデックス管理サブプログラム1171により管理される検索インデックスデータの中で、重複データを検出し、必要に応じて重複データを削除する処理を行う。つまり、重複排除サブプログラム1174は、一つの検索サーバ内に保管されている、重複データを排除する。
重複データを検出するために、後述するハッシュアルゴリズムが使用される。重複排除サブプログラム1174は、ハッシュアルゴリズムにより算出されるハッシュ値に基づいて、検索インデックスデータ内の任意のあるデータと他のデータとが同一であるか否かを判断する。
統合検索制御プログラム1125は、その内部に、統合検索受付サブプログラム1175と、ハッシュアルゴリズム折衝サブプログラム1176と、統合検索結果重複排除サブプログラム1177とを有する。
統合検索受付サブプログラム1175は、クライアントマシンから検索クエリを指定した統合検索要求を受け付けると、統合検索可能な他の複数の検索サーバも利用して、その検索条件に合致するファイルを検索する。統合検索受付サブプログラム1175は、各検索サーバからの検索結果をまとめて、統合検索結果としてクライアントマシンに送信する。統合検索受付サブプログラム1175は、統合検索可能な検索サーバを選定するために、検索サーバ管理テーブル4300を使用する。
ハッシュアルゴリズム折衝サブプログラム1176は、統合検索受付サブプログラム1175が統合検索要求を受けた場合、統合検索結果の中から重複した内容を排除するために使用するハッシュアルゴリズムについて、統合検索可能な検索サーバ群との間で折衝し合意するために必要な処理を行う。具体的な処理内容は後述する。
統合検索結果重複排除サブプログラム1177は、統合検索可能な検索サーバ群から取得された検索結果データの中から重複データを検出し、必要に応じて重複データを削除する処理を行う。統合検索結果重複排除サブプログラム1177は、重複データを検出するために、他の検索サーバ群との間で取り決められたハッシュアルゴリズムを使う。統合検索結果重複排除サブプログラム1177は、そのハッシュアルゴリズムによって、検索結果データ内の任意のデータと他のデータとが同一であるか否かを判断する。
なお、検索インデックス登録ファイル管理テーブル4100、検索インデックス管理テーブル4200、検索サーバ管理テーブル4300及び統合用検索結果一時保管テーブル4400については後述する。
他の検索サーバ1200、1300は、統合検索に関する構成(統合検索制御プログラム1125、検索サーバ管理テーブル4300、統合検索結果一時保管テーブル4400)を備えない点を除いて、検索サーバ1100と同一構成であるため、説明を割愛する。
図5は、ファイルサーバ2100のハードウェア構成を例示する説明図である。ファイルサーバ2100は、例えば、プログラムを実行するプロセッサ2110と、プログラム及びデータを一時的に格納するメモリ2120と、外部記憶装置2160にアクセスするための外部記憶装置I/F2130と、ネットワーク100を介して他装置(検索サーバ等)と通信するためのネットワークI/F2140と、それらを接続するバス2150とを備える。
メモリ2120には、例えば、外部記憶装置I/Fプログラム2121と、ネットワークI/Fプログラム2122と、ファイル共有サービスプログラム2123と、ファイル管理プログラム2124とが格納される。
外部記憶装置I/Fプログラム2121は、外部記憶装置I/F2130を制御する。ネットワークI/Fプログラム2122は、ネットワークI/F2140を制御する。ファイル共有サービスプログラム2123は、ファイルサーバ2100から提供されるファイル共有サービスを管理する。ファイル管理プログラム2124は、ファイルサーバ2100に記憶されたファイルを管理する。
ファイル共有サービスプログラム2123は、ファイル管理プログラム2124を利用して、共有ファイルを管理する。検索サーバまたはクライアントマシン等は、ファイル共有サービスプログラム2123を利用することで、ファイルサーバ2100に保管されている共有ファイルにアクセスすることが可能になる。
なお、他のファイルサーバ2200、2300は、ここで説明したファイルサーバ2100と同一構成のため、説明を割愛する。
図6は、クライアントマシン3100のハードウェア構成を例示する説明図である。クライアントマシン3100は、例えば、プログラムを実行するプロセッサ3110と、プログラム及びデータを一時的に格納するメモリ3120と、外部記憶装置3160にアクセスするための外部記憶装置I/F3130と、ネットワークで接続された他装置にアクセスするためのネットワークI/F3140と、それらを接続するバス3150とを備える。
メモリ3120には、例えば、外部記憶装置I/Fプログラム3121と、ネットワークI/Fプログラム3122と、ファイル管理プログラム3123と、検索サービスクライアントプログラム3124と、ファイル共有サービスクライアントプログラム3125とが格納される。
外部記憶装置I/Fプログラム3121は、外部記憶装置I/F3130を制御する。ネットワークI/Fプログラム3122は、ネットワークI/F3140を制御する。ファイル管理プログラム3123は、クライアントマシン3100に保管されたファイルを管理するためのファイルシステムを提供する。検索サービスクライアントプログラム3124は、検索サーバ1100が提供する検索サービス並びに統合検索サービスを利用するためのプログラムである。ファイル共有サービスクライアントプログラム3125は、ファイルサーバ2100が提供するファイル共有サービスを利用するためプログラムである。
検索サービスクライアントプログラム3124は、検索サービス及び統合検索サービスがHTTPプロトコルを利用する場合、HTTPクライアントプログラム(例えば、Webブラウザなど)を利用する。
ファイル共有サービスクライアントプログラム3125は、ファイル共有サービスがNFSプロトコルを利用する場合は、NFSクライアントプログラムを使用する。ファイル共有サービスがCIFSプロトコルを利用する場合、ファイル共有サービスクライアントプログラム3125は、CIFSクライアントプログラムを利用する。あるいは、ファイル共有サービスがHTTPプロトコルを利用する場合、ファイル共有サービスクライアントプログラム3125は、HTTPクライアントプログラム(Webブラウザ等)を利用する。
なお、他のクライアントマシン3200、3300は、クライアントマシン3100と同一構成のため、説明を割愛する。
図7は、クライアントマシン3100から検索サーバ1100に統合検索要求を発行した場合のシステム全体の動作を模式的に示す。図7では、統合検索要求の発行、各検索サーバでの検索、各検索サーバの検索結果の取得、統合検索結果の提供等の一連の処理が9つのステップで説明されている。以下、ステップを「S」と略記する場合がある。
なお、以下では、統合検索処理を実行する「統合検索サーバ」としての検索サーバ1100と、統合検索要求に従って検索する「所定の検索サーバ」としての検索サーバ1100とに同一の符号1100を付す。例えば、「統合検索要求を受けた検索サーバ1100は、各検索サーバ1100、1200、1300に検索を要求する。」等の文章において、「統合検索要求を受けた検索サーバ1100」とは、統合検索要求を受信して統合検索処理を実行する統合検索サーバであり、主として、統合検索制御プログラム1125に相当する。「各検索サーバ1100、1200、1300」における「検索サーバ1100」は、指定された検索を行って結果を返す検索サーバであり、主として、検索制御プログラム1124に相当する。
始めに、S1として、クライアントマシン3100は、統合検索サービスを提供する検索サーバ1100に対して、統合検索要求を送る。統合検索要求では、検索キーワード及び検索条件が指定される。
統合検索に使用される検索キーワード及び検索条件は、従来の一般的な検索エンジンで受付可能な検索キーワード及び検索条件と同様に指定できる。例えば、検索キーワードとして、複数の文字列を指定してもよい。検索条件として、データ作成日またはデータ最終更新日を任意の範囲で指定してもよいし、データ作成者を指定してもよい。
S2として、統合検索要求を受け付けた検索サーバ1100内の統合検索制御部5100は、統合検索利用可能な検索サーバ1100、1200、1300に対して、ハッシュアルゴリズム(利用可能なハッシュ関数などの識別情報に相当)の折衝を行う。統合検索制御部5100は、主として統合検索制御プログラム1125により実現される。
統合検索要求を受けた検索サーバ1100は、自検索サーバ1100にて利用可能なハッシュアルゴリズムを指定して、そのハッシュアルゴリズムを他の各検索サーバ1100、1200、1300が利用可能であるかを、他の各検索サーバ1200、1300に問い合わせる。
S3として、問合せをうけた各検索サーバ1100、1200、1300内の検索制御部5110、5210、5310は、指定されたハッシュアルゴリズムをサポートしているかどうかの情報と、指定されたハッシュアルゴリズム以外に利用可能なハッシュアルゴリズムの情報とを、問い合わせ元である統合検索制御部5100に応答する。検索制御部5110、5120、5130は、ハッシュアルゴリズム応答サブプログラム1173により実現される。
統合検索制御部5100は、各検索制御部5110、5210、5310からの応答結果に基づいて、統合検索に利用可能なハッシュアルゴリズムを決定する。以下の説明では、統合検索のために利用可能なハッシュアルゴリズムを、共通ハッシュアルゴリズムと呼ぶ場合がある。なお、一回の問合せで共通ハッシュアルゴリズムを決定できない場合、所定の回数だけ問い合わせと応答を繰り返し実行する構成としてもよい。
S4として、統合検索制御部5100は、統合検索利用可能な検索サーバ1100、1200、1300に同一の検索要求を送る。その検索要求には、統合検索要求に含まれている検索キーワード及び検索条件と共に、前述の処理にて決定された共通ハッシュアルゴリズムに関する情報も含まれる。
S5として、検索制御部5110、5210、5310は、自検索サーバ1100、1200、1300内にて管理する検索インデックス5120、5220、5320を利用して、それぞれ検索処理を実行する。検索処理では、統合検索制御部5100から指定された検索キーワードと検索条件を利用する。
S6として、検索制御部5110、5210、5310は、それぞれの検索結果について、重複排除処理を行う。具体的には、検索制御部5110、5210、5310はそれぞれ、検索結果に含まれるエントリの中に、同一ファイルを示すエントリが複数個登録されているか否かを調べる。
もしも、同一ファイルを示すエントリが複数個登録されている場合、検索制御部5110、5210、5310は、所定の重複削除条件に沿って、任意の一エントリのみを残して、他エントリを非表示にするか、または削除する。
同一ファイルであるか否かを判断するために、ハッシュアルゴリズムが使用される。具体的には、ハッシュ関数などが利用される。検索制御部5110、5210、5310は、各ファイルデータについて、または、同一であるか否かを判断すべき複数のファイルデータについて、ハッシュ関数を利用してハッシュ値を生成する。ハッシュ値が一致する場合、それらのファイルは同一であると判定できる。
S7として、検索制御部5110、5210、5310は、各検索サーバ1100、1200、1300内での重複エントリが取り除かれた検索結果を、検索要求元である検索サーバ1100の統合検索制御部5100に応答する。
さらに、検索制御部5110、5210、5310は、検索結果に加えて、S4にて指定された共通ハッシュアルゴリズムを利用して生成された情報も、統合検索制御部5100に提供する。具体的には、共通ハッシュアルゴリズムに該当するハッシュ関数を利用して生成されたハッシュ値を統合検索制御部5100に通知する。
S8として、統合検索制御部5100は、各検索サーバから取得した検索結果をもとにして統合検索結果を生成し、さらに、統合検索結果の中から重複したエントリを排除する処理を行う。以下、統合検索結果に含まれる複数エントリのうち重複エントリを取り除く処理を、統合検索結果重複排除処理と呼ぶことがある。
統合検索結果重複排除処理の具体的内容は、前述した各検索制御部5110、5210、5310における重複排除処理の内容とほぼ同じである。具体的には、統合検索結果に含まれる各エントリに、同一ファイルデータを示すエントリが複数存在するか否かを調べる。もし、統合検索結果の中に同一ファイルを示すエントリが複数個登録されている場合、所定の重複削除条件に従って、任意の一エントリのみを残し、他エントリを非表示にするかまたは削除する。
複数のファイルデータが同一であるか否かを判断するために、ハッシュアルゴリズムを使う。具体的には、各検索サーバから提供された、共通ハッシュアルゴリズムにより算出されたハッシュ値を利用する。複数のファイルデータのハッシュ値(検索サーバ内で作成されたハッシュ値)が一致する場合、それらのファイルデータは同一であると判断することができる。
最後に、S9として、統合検索制御部5100は、重複エントリの除かれた統合検索結果を、クライアントマシン3100に応答する。以上の処理によって、クライアントマシン3100は、統合検索結果を取得することができる。
図8は、検索インデックス登録ファイル管理テーブル4100の構成例を示す。検索インデックス登録ファイル管理テーブル4100は、検索インデックスの作成対象となっているファイルサーバから検索サーバが取得したファイルに関する情報を管理する。具体的には、検索インデックス登録ファイル管理テーブル4100は、ファイルID4110と、取得元ファイルパス名4120と、対象ファイルのメタデータ4130と、キャッシュ格納先4140と、対象ファイルのハッシュアルゴリズム(及びハッシュ値)4150とを、対応付けて管理する。
ファイルID4110は、ファイルサーバから取得されたファイルを一意に識別するための識別子である。ファイルID4110は、検索サーバ1100により付与される連番でもよいし、または、ファイルサーバ2100により付与される連番でもよい。
取得元ファイルパス名4120は、対象ファイルのファイルサーバにおける格納先を示すファイルパス名である。検索サーバは、ファイルサーバに、取得元ファイルパス名4120を指定してファイル取得要求を発行する。これにより、検索サーバは、ファイルサーバから所望のファイルを取得することができる。
対象ファイルのメタデータ4130は、対象ファイルに関連付けられているメタデータの集合である。メタデータ4130としては、例えば、ファイルサーバにて管理されている、ファイル所有者、ファイル作成日時、ファイルサイズ、ファイルへのアクセス権情報等が該当する。さらに、検索サーバにて管理されている最新ファイル取得日時等の情報も、メタデータ4130に含むことができる。
キャッシュ格納先(格納場所)4140は、対象ファイルのキャッシュデータを検索サーバ内で保管する場合の格納場所を示す情報である。具体的には、検索サーバにて、キャッシュデータをファイル形式で管理する場合、ファイルの格納パス名をキャッシュ格納先の欄4140に登録する。
対象ファイルのハッシュアルゴリズム及びハッシュ値の欄4150は、対象ファイルデータの重複を検出するために利用する情報を格納する。欄4150には、ハッシュアルゴリズムを登録する欄4151、4153と、ハッシュ値を登録する欄4152、4154とが含まれる。
ハッシュアルゴリズム欄4151、4153には、重複検出のために利用するハッシュ関数の識別情報を登録する。ハッシュアルゴリズム欄4151、4153には、例えば、MD5またはSHA-1等のハッシュ関数を識別するための情報が登録される。ハッシュ値欄4152、4154には、ハッシュアルゴリズム欄4151、4153に登録されたハッシュ関数を用いて作成されたハッシュ値が登録される。
ハッシュアルゴリズム及びハッシュ値の欄4150には、ハッシュアルゴリズムとハッシュ値との組を複数個登録できるように構成する。図8では、各ファイルに対してそれぞれ二つの組を登録している例を示している。3つ以上の組を登録してもよい。さらに、全ファイルについて同じ個数の組を登録する構成でもよいし、ハッシュアルゴリズムとハッシュ値の組の登録可能数を、各ファイルで異なるような構成でもよい。
図9は、検索インデックス管理テーブル4200の構成例を示す。検索インデックス管理テーブル4200は、検索サーバにより作成された検索インデックスの情報を管理する。具体的には、検索インデックス管理テーブル4200は、キーワード4210と、位置情報4220とを対応付けて管理する。
キーワード4210には、対象ファイルをインデクシング処理して得られた文字列が格納される。位置情報4220には、キーワード4210の文字列を含むファイルの情報が登録される。位置情報4220は、ファイルID4221、4224と、該当位置オフセット4222、4225と、重み付け係数4223、4226とを含む。
ファイルID4221、4224は、キーワードの文字列が出現するファイルを識別するための情報を登録する。検索インデックス登録ファイル管理テーブル4100のファイルID4110の欄に登録されているファイルIDが、ファイルID4221、4224に登録される。
該当位置オフセット4222、4225は、ファイルの中で、キーワードの文字列が出現するオフセット情報を登録する。この欄4222、4225では、一つのファイルで複数箇所出現する場合は、複数個のオフセット情報を登録する。
重み付け係数4223、4226は、ファイル中にキーワードの文字列が出現することについての重要度を登録する。重要度の値は、検索サーバが適宜設定できる。重要度の値は、大きければ大きいほど、重要であることを意味する。重要度の値は、検索結果の絞り込み、及び、検索結果の整列にも利用できる。
位置情報4220では、一つのキーワード4210について複数個登録可能である。これにより、キーワード文字列に該当するファイルが複数存在する場合にも対応できる。なお、位置情報4220の欄において、該当するエントリの値が無効であることを意味するnull値を登録することもできる。図中では、null値を「−」として示す。null値は、例えば、登録数が他のエントリより少ないために項目が空いてしまうエントリに、用いられる。
図10は、検索サーバ管理テーブル4300の構成例を示す。検索サーバ管理テーブル4300は、検索サーバが統合検索を行う場合に、検索要求の送信先となる検索サーバの一覧情報を管理する。具体的には、検索サーバ管理テーブル4300は、検索サーバID4310と、検索サーバ名4320と、IPアドレス4330と、重み付け係数4340とを対応付けて管理する。
検索サーバID4310には、統合検索に利用可能な検索サーバを識別するための識別番号が格納される。検索サーバID4310は、統合検索を行う検索サーバ1100により付与される連番でもよいし、または、統合検索サービスを提供するシステム内で付与される連番でもよい。
検索サーバ名4320には、検索サーバの名前を格納する。具体的には、検索サーバのホスト名でもよいし、任意の文字列からなる名称でもよい。IPアドレス4330には、検索サーバに付与されているIPアドレスを格納する。なお、DNSを利用してIPアドレスを決定するシステム構成の場合、IPアドレス4330欄には、DNSへの問合せに利用するホスト名を格納してもよい。
重み付け係数4340には、検索サーバから得られる検索結果についての、重要性の度合いを示す値を格納する。重み付け係数の値が大きければ大きいほど、検索結果の重要性を高くできる。
重み付け係数4340の値を検索サーバ毎に変えることにより、統合検索結果の中で、特定の検索サーバから得た検索結果を優先させることができる。即ち、重み付け係数が大きく設定された検索サーバからの検索結果を、統合検索結果内において上位に表示させることができる。重み付け係数が小さく設定された検索サーバからの検索結果は、統合検索結果のランキングにおいて下位に表示される。なお、全ての検索サーバから得る検索結果を平等に扱いたい場合は、重み付け係数4340の値を全て同じ値に設定すればよい。
図11は、統合検索結果一時保管テーブル4400の構成例を示す。統合検索結果一時保管テーブル4400は、各検索サーバ1100、1200、1300からの検索結果をマージして統合検索結果を生成する処理において、データを一時的に保管するために利用される。
具体的に、統合検索結果一時保管テーブル4400は、検索サーバID4410、ランク4420、ファイルID4430、スコア値4440、ファイルパス名4450、ハッシュアルゴリズム4460、ハッシュ値4470、及び検索キーワード含有文字列4480を対応付けて管理する。
検索サーバID4410には、検索結果を取得した検索サーバを識別するための情報が格納される。検索サーバID4410には、検索サーバ管理テーブル4300の検索サーバID4310の欄に登録されている検索サーバIDと同じ情報が登録される。
ランク4420には、検索サーバから送られてきたエントリのランクの情報をそのまま格納する。ランクとは、各検索サーバが提供する検索結果の中で、検索キーワード及び検索条件に該当する度合いが高い順に整列させ、その整列順に順位付けをした値である。
ファイルID4430には、検索サーバから送られてきたエントリに対応するファイルのファイルIDがそのまま格納される。具体的には、ファイルID4430には、検索インデックス登録ファイル管理テーブル4100のファイルID4110の欄に登録されているファイルIDと同じ情報が登録される。
スコア値4440には、検索サーバから送られてきたエントリのスコア値の情報がそのまま格納される。スコア値とは、各検索サーバが提供する検索結果の中で、検索キーワード及び検索条件に該当する度合いを数値化したものである。スコア値に、検索サーバ管理テーブル4300における重み付け係数4340を乗じて、統合スコア値を算出する。検索サーバ1100は、統合スコア値を統合検索結果における統合ランクを決定するために利用する。
ファイルパス名4450には、検索サーバから送られてきたエントリに対応するファイルのファイルパス名をそのまま格納する。具体的には、ファイルパス名4450には、検索インデックス登録ファイル管理テーブル4100の取得元ファイルパス名4120の欄に登録されているファイルパス名と同じ情報が登録される。
なお、ネットワーク100を介して対象ファイルにアクセスできるようにするために、ファイルパス名4450の欄には、ファイルパス名に加えて、対象ファイルを格納するファイルサーバの識別情報を格納してもよい。
ハッシュアルゴリズム4460には、検索サーバで利用可能なハッシュアルゴリズムを識別するための情報が格納される。ハッシュ値4470には、ハッシュアルゴリズムにより算出されるハッシュ値を格納する。
なお、統合検索に使用されるハッシュアルゴリズム(共通ハッシュアルゴリズム)を決定するための折衝処理において、共通ハッシュアルゴリズムを選定できなかった場合は、ハッシュアルゴリズム4460及びハッシュ値4470の欄に、無効値であることを意味するnull値が格納される。
検索キーワード含有文字列4480には、検索サーバから送られてきた検索キーワードを含有する文字列がそのまま格納される。検索キーワード含有文字列とは、各検索サーバからの検索結果の中に含まれる各ファイルの中から、検索キーワードを含む文字列を抜き出したものの集合である。
検索キーワードを含む文字列の情報を検索結果に含めることで、ユーザは、指定した検索キーワードが含まれる部分の文章または文字列を、検索結果の一部として利用することができる。これにより、ユーザは、検索結果に挙げられた対象ファイルに実際にアクセスすることなく、検索キーワードを含む前後の文脈を把握することができる。従って、検索キーワード含有文字列4480により、検索サービスの利便性を高めることができる。
一つのファイルの中に、検索キーワードを含む箇所が複数個存在する場合は、検索キーワード含有文字列も欄4480に複数登録される。検索サーバは、検索インデックス管理テーブル4200に登録されている情報を利用して、検索キーワード含有文字列を生成する。なお、検索キーワード含有文字列4480の欄において、検索サーバから提供される検索キーワード含有文字列の数が他のエントリよりも少ないために空欄となる箇所には、無効値を意味するnull値を格納する。
図12は、クライアントマシンから検索サーバ1100に統合検索要求を行う際に指定する、統合検索要求パラメータ6100の構成例を示す。本パラメータは、図7で説明したS1で利用される。具体的に、統合検索要求パラメータ6100は、要求先マシン識別情報6110、要求元マシン識別情報6120、処理種別6130、検索キーワード6140、検索オプション6150、統合検索オプション6160を含む。
要求先マシン識別情報6110には、統合検索要求の送信先となる検索サーバを識別するための情報が格納される。要求先マシン識別情報6110には、ネットワーク100を介して検索サーバにアクセスするために、検索サーバのホスト名またはIPアドレス等のアクセス情報が格納される。
要求元マシン識別情報6120には、統合検索を要求するクライアントマシンを識別するための情報が格納される。要求元マシン識別情報6120には、ネットワーク100を介してクライアントマシンにアクセスするために、クライアントマシンのホスト名、または、クライアントマシンのIPアドレス等のアクセス情報が格納される。
処理種別6130は、処理の内容を識別するための情報を格納する。統合検索要求を発行する場合、処理種別6130には、統合検索要求処理を示す情報が格納される。検索キーワード6140は、統合検索要求に使用される検索キーワードを格納する。
検索オプション6150は、各検索サーバに検索を要求する際に指定するオプションに関する情報を格納する。検索オプション6150としては、例えば、ファイル作成日時、ファイル更新日時、ファイル作成者等に関する条件を指定できる。
統合検索オプション6160は、統合検索処理を行う検索サーバ1100に指定するオプションに関する情報を格納する。統合検索オプション6160としては、例えば、クライアントマシンに提供する統合検索結果の件数、統合検索結果の先頭エントリにおけるオフセット値に関する条件等がある。オフセット値を設定することにより、例えば、先頭エントリをランク1位から始めるのか、またはランク100位から始めるのか等を設定できる。
図13は、検索サーバ1100がクライアントマシンに統合検索結果を応答する際に指定する、統合検索結果応答パラメータ6200の構成例を示す。本パラメータ6200は、図7で説明したS9にて利用される。具体的に、統合検索結果応答パラメータ6200は、応答先マシン識別情報6210、応答元マシン識別情報6220、処理種別6230、処理結果識別情報6240、総件数6250、応答件数6260、先頭ランク6270、検索結果6280、追加応答要求に必要な情報6290を備えている。
応答先マシン識別情報6210は、統合検索結果の送信先となるクライアントマシンを識別する情報を格納する。例えば、ネットワーク100を介してクライアントマシンにアクセスするために、クライアントマシンのホスト名またはIPアドレス等のアクセス情報が格納される。
応答元マシン識別情報6220には、統合検索要求を行った検索サーバ1100を識別するための情報が格納される。前記同様に、例えば、検索サーバ1100のホスト名、IPアドレス等が格納される。
処理種別6230は、処理の内容を識別するための情報を格納する。統合検索の結果を送信する場合、処理種別6230には、統合検索結果の応答処理を示す情報が格納される。処理結果識別情報6240は、統合検索の処理結果を識別する情報を格納する。具体的には、処理が成功したのか、あるいは失敗したのかといった情報が格納される。
総件数6250は、指定された条件に合致したファイルデータの総件数を格納する。応答件数6260は、指定された条件に合致したファイルデータの中で、統合検索結果の応答に含まれる件数を格納する。総件数6250の値が応答件数6260の上限値以下の場合、総件数6250と応答件数6260とは一致する。しかし、総件数6250が前記上限値よりも多い場合、一度の応答件数6260の上限値より多い分は、統合検索結果の応答に含めない。
先頭ランク6270には、統合検索結果の応答に含まれる先頭エントリのランク値が格納される。もし、ランク1位のエントリが先頭であれば、先頭ランク6270には1が格納され、ランク100位のエントリが先頭であれば、先頭ランク6270には100が格納される。
検索結果6280には、統合検索処理によって取得された統合検索結果が格納される。検索結果6280には、応答件数6280で規定された数だけ、検索結果エントリ6281、6282が格納される。検索結果エントリ6281、6282には、統合用検索結果一時保管テーブル4400の各欄4410−4480に格納されている情報と同じ情報が格納される。
追加応答要求に必要な情報6290は、総件数6250の値よりも応答件数6260の値の方が小さい場合に利用する。追加応答要求に必要な情報6290の欄には、統合検索結果の応答に含まれていない他の検索結果に関する情報を取得するためのリンク情報が格納される。
図14は、統合検索要求を受信した検索サーバ1100から、統合検索を利用可能な各検索サーバ1100、1200、1300に、ハッシュアルゴリズムの折衝を行う際の問合せに指定するための、ハッシュアルゴリズム問合せ要求パラメータ6300の構成例を示す。
本パラメータ6300は、図7で説明したS2で利用される。具体的に、ハッシュアルゴリズム問合せ要求パラメータ6300は、問合せ先マシン識別情報6310、問合せ元マシン識別情報6320、処理種別6330、利用可能なハッシュアルゴリズム候補識別情報6340、問合せオプション6350を含む。
問合せ先マシン識別情報6310は、検索要求の送信先となる検索サーバを識別するための情報を格納する。即ち、問合せ先マシン識別情報6310は、統合検索を開始する前に、利用するハッシュアルゴリズムについて交渉する必要がある各検索サーバを識別するための情報が格納される。例えば、ネットワーク100を介して検索サーバにアクセスするために、検索サーバのホスト名、IPアドレス等のアクセス情報が格納される。
問合せ元マシン識別情報6320は、統合検索処理を行う検索サーバ1100を識別するための情報を格納する。ネットワーク100を介してマシンにアクセスするために、検索サーバ1100のホスト名またはIPアドレス等のアクセス情報が、問合せ元マシン識別情報6320に格納される。
処理種別6330は、処理の内容を識別するための情報を格納する。ハッシュアルゴリズムの問い合わせを行う場合、処理種別6330には、ハッシュアルゴリズム問合せ要求処理を示す情報が格納される。
利用可能なハッシュアルゴリズム候補識別情報6340には、問合せ元である検索サーバ1100において利用可能なハッシュアルゴリズムの識別情報一覧が格納される。各検索サーバにおいて、ハッシュアルゴリズム候補識別情報6340に格納された複数のハッシュアルゴリズムのうち、共通するハッシュアルゴリズムを利用できる場合、そのハッシュアルゴリズムを利用して、統合検索結果に含まれる重複を検出できる。
問合せオプション6350は、ハッシュアルゴリズム問合せ要求処理で指定可能なオプション情報を格納する。具体的には、利用可能なハッシュアルゴリズムの候補を選択する場合の条件として、ハッシュ値のサイズが所定サイズ以上でなければならない場合、ハッシュ値サイズの下限値をオプションとして指定することができる。
図15は、各検索サーバ1100、1200、1300が、ハッシュアルゴリズムの問合せ要求元である検索サーバ1100に応答する場合に使用される、ハッシュアルゴリズム問合せ応答パラメータ6400の構成例を示す。
本パラメータ6400は、図7で説明したS3にて利用される。ハッシュアルゴリズム問合せ応答パラメータ6400は、応答先マシン識別情報6410、応答元マシン識別情報6420、処理種別6430、処理結果識別情報6440、相互利用可能なハッシュアルゴリズム識別情報6450、利用可能なハッシュアルゴリズム候補識別情報6460を含む。
応答先マシン識別情報6410は、ハッシュアルゴリズムに関する問合せを応答すべき検索サーバ1100を識別する情報を格納する。前記同様に、検索サーバ1100のホスト名またはIPアドレス等のアクセス情報が格納される。
応答元マシン識別情報6420は、ハッシュアルゴリズムについての問合せを受けた各検索サーバを識別する情報を格納する。前記同様に、各検索サーバのホスト名またはIPアドレス等のアクセス情報が格納される。
処理種別6430は、処理の内容を識別するための情報を格納する。処理種別6430には、ハッシュアルゴリズムの問合せに対する応答であることを示す情報が格納される。処理結果識別情報6440には、ハッシュアルゴリズムの問合せについての処理結果を示す情報が格納される。具体的には、処理結果識別情報6440には、問合わせ処理が成功したのか、あるいは失敗したのかという情報が格納される。
相互利用可能なハッシュアルゴリズム識別情報6450には、利用可能なハッシュアルゴリズム候補識別情報6340に含まれる複数のハッシュアルゴリズムのうち、問合せを受けた検索サーバにおいても利用可能なハッシュアルゴリズムを特定する情報が格納される。
相互利用可能なハッシュアルゴリズム識別情報6450に格納されたハッシュアルゴリズムは、問合せ元検索サーバと問合せ先検索サーバの両方で、利用可能であるため、統合結果の重複検出に利用し得る候補の一つとなる。各検索サーバから返信された、相互利用可能なハッシュアルゴリズムのうち、全ての検索サーバに共通するハッシュアルゴリズムを、統合検索結果から重複を排除するためのハッシュアルゴリズムとして選択できる。
利用可能なハッシュアルゴリズム候補識別情報6460には、ハッシュアルゴリズムの問合せを受けた検索サーバにおいて、他に利用可能なハッシュアルゴリズムがある場合、そのハッシュアルゴリズムを識別するための情報が格納される。統合検索に参加する検索サーバが、統合検索を指揮する検索サーバ1100で利用可能なハッシュアルゴリズム(図14の欄6340に登録されるハッシュアルゴリズム)以外のハッシュアルゴリズムを利用可能な場合に、そのハッシュアルゴリズムが欄6460に登録される。
なお、この利用可能なハッシュアルゴリズム候補識別情報6460には、相互利用可能なハッシュアルゴリズム識別情報6450に格納されたハッシュアルゴリズムの識別情報は格納されない。
図16は、統合検索要求を受けた検索サーバ1100が検索サーバ1100、1200、1300に検索要求を発行する際に指定する、検索要求パラメータ6500の構成例を示す。本パラメータ6500は、図7で説明したS4で利用される。検索要求パラメータ6500は、要求先マシン識別情報6510、要求元マシン識別情報6520、処理種別6530、検索キーワード6540、検索オプション6550を含む。
要求先マシン識別情報6510は、検索要求の送信先となる検索サーバを識別する情報(ホスト名またはIPアドレス)を格納する。要求元マシン識別情報6520は、検索要求を発行する検索サーバ1100を識別する情報(ホスト名またはIPアドレス)を格納する。
処理種別6530は、処理の内容を識別するための情報を格納する。ここでは、処理種別6530に、検索要求処理を示す情報が格納される。検索キーワード6540は、検索に使用される検索キーワードを格納する。検索オプション6550は、検索に関して指定されたオプション情報を格納する。例えば、オプション情報として、ファイル作成日時、ファイル更新日時、ファイル作成者等の条件を指定可能である。
さらに、検索オプション6550は、利用ハッシュアルゴリズム識別情報6551を含む。利用ハッシュアルゴリズム識別情報6551には、ハッシュアルゴリズム問合せ処理により、関係する各検索サーバ間で統一したハッシュアルゴリズムが決定された場合、その決定されたハッシュアルゴリズム(共通ハッシュアルゴリズム)の識別情報を格納する。
利用ハッシュアルゴリズム識別情報6551で指定されたハッシュアルゴリズムを利用して、各検索サーバはハッシュ値を作成し、応答する。また、統合検索要求を受けた検索サーバ1100は、共通のハッシュアルゴリズムで作成されたハッシュ値に基づいて、統合検索結果から重複したエントリを検出し排除する。
図17は、検索サーバ1100、1200、1300が、統合検索を行う検索サーバ1100に、検索結果を応答する際に指定する検索結果応答パラメータ6600の構成例を示す。本パラメータ6600は、図7で説明したS7にて利用される。検索結果応答パラメータ6600は、応答先マシン識別情報6610、応答元マシン識別情報6620、処理種別6630、処理結果識別情報6640、総件数6650、応答件数6660、先頭ランク6670、検索結果6680、追加応答要求に必要な情報6690を含む。
応答先マシン識別情報6610には、検索結果の送信先となる検索サーバを識別する情報(ホスト名またはIPアドレス)を格納する。応答元マシン識別情報6620は、検索要求を受けた検索サーバを識別する情報(ホスト名またはIPアドレス)を格納する。
処理種別6630は、処理の内容を識別するための情報を格納する。ここでは、処理種別6630に、検索結果応答処理を示す情報が格納される。
処理結果識別情報6640は、検索の処理結果を識別する情報を格納する。具体的には、処理結果識別情報6640には、検索が成功したのか、あるいは失敗したのかを示す情報が格納される。
総件数6650は、指定された条件に合致したファイル及びデータの総件数を格納する。応答件数6660は、指定された条件に合致したファイル及びデータの中で、検索結果応答に含まれている件数を格納する。前記同様に、総件数6650が応答件数6660の上限値以下の場合は、総件数6650と応答件数6660は一致する。総件数6650が応答件数6660の上限値よりも多い場合は、応答件数6660の上限値より多い分は、検索結果応答に含まれない。
先頭ランク6670は、検索結果応答の中に含まれるエントリに対して、先頭エントリのランク値を格納する。前記同様に、もしも、ランク1位のエントリが先頭の場合、先頭ランク6670には1が格納される。ランク100位のエントリが先頭の場合、先頭ランク6670には100が格納される。
検索結果6680には、検索処理により取得された検索結果が格納される。検索結果6680には、応答件数6680の数だけ、検索結果エントリ6681、6684が格納される。検索結果エントリ6681、6684には、統合用検索結果一時保管テーブル4400の各欄4410−4480に格納されている情報と同じ情報が格納される。
さらに、検索結果エントリ6681、6684には、利用ハッシュアルゴリズム識別情報6682、6685と、ハッシュ値6683、6686とが格納される。利用ハッシュアルゴリズム識別情報6682、6685には、検索要求パラメータ6500の利用ハッシュアルゴリズム識別情報6551にて指定された情報をそのまま格納する。
ハッシュ値6683、6686には、利用ハッシュアルゴリズム識別情報6682、6685で特定されるハッシュアルゴリズム(共通ハッシュアルゴリズム)を利用して作成されたハッシュ値が格納される。統合検索要求を受けた検索サーバ1100は、そのハッシュ値を利用して、統合検索結果の中から重複エントリを検出して排除する。
追加応答要求に必要な情報6690は、総件数6650の値よりも応答件数6660の値が小さい場合に使用する。この場合、追加応答要求に必要な情報6690の欄には、検索結果応答に含まれていないファイルまたはデータの検索結果に関する情報を取得するためのリンク情報が格納される。
以上、本実施例による検索システムの構成、管理情報の構成、処理パラメータの構成について詳細に説明した。以降では、本実施例による処理動作を説明する。以下のフローチャートでは、理解のためにループ等を割愛する。従って、図示される各フローチャートは、各処理の概要を示しており、実際のコンピュータプログラムとは相違する。いわゆる当業者であれば、図示されたフローチャートからステップを削除または変更したり、新たなステップをフローチャートに加えたりすることができる。そのような改変されたフローチャートも本発明の範囲に含まれる。
図18のフローチャートは、いずれかのクライアントマシンで実行される統合検索要求処理を示している。始めに、クライアントマシンは、統合検索サービスを提供する「統合検索サーバ」としての検索サーバ1100に、検索キーワードを指定して統合検索処理を要求する(S101)。統合検索を要求する場合は、統合検索要求パラメータ6100を指定する。クライアントマシンは、統合検索処理を行う検索サーバ1100から統合検索の結果を受信した後、その統合検索結果をユーザに提供し(S102)、本処理を終了する。なお、統合検索結果の応答を検索サーバ1100から取得する場合には、統合検索結果応答パラメータ6200が使用される。
図19及び図20は、検索サーバ1100で実行される統合検索処理のフローチャートを示している。始めに、検索サーバ1100は、クライアントマシンから受信した統合検索要求パラメータ6100の処理種別6130に基づいて、統合検索要求が指定されているか否かを判定する(S201)。もし、統合検索要求が指定されていない場合(S201:NO)、エラー終了する(S202)。
統合検索要求が指定されている場合(S201:YES)、検索サーバ1100は、検索サーバ1100にて利用可能なハッシュアルゴリズムを特定する(S203)。具体的には、検索サーバ1100にて管理されている検索インデックス登録ファイル管理テーブル4100内のハッシュアルゴリズム4151、4153を調べることで、検索サーバ1100で利用可能なハッシュアルゴリズムを特定できる。
検索サーバ1100は、検索サーバ管理テーブル4300に登録されている各検索サーバに、各検索サーバで利用可能なハッシュアルゴリズムを問い合わせる(S204)。検索サーバ1100は、その問い合わせに際して、ハッシュアルゴリズム問合せ要求パラメータ6300を指定する。
検索サーバ1100は、各検索サーバから、ハッシュアルゴリズム問合せ応答パラメータ6400に含まれる情報を取得する。検索サーバ1100は、統一されたハッシュアルゴリズムを利用可能か否かを判断する(S205)。検索サーバ1100は、各検索サーバからの応答に基づいて、統合検索に参加する全検索サーバの中で、統一して利用可能なハッシュアルゴリズムが存在するか否かを判定する。
もし、統一したハッシュアルゴリズムを利用可能な場合(S205:YES)、検索サーバ1100は、統合検索に参加する各検索サーバに、使用すべきハッシュアルゴリズムを指定して検索を要求する(S206)。検索を要求する場合、検索サーバ1100は、検索要求パラメータ6500を指定する。検索サーバ1100は、各検索サーバから検索結果応答パラメータ6600に含まれる情報をそれぞれ取得する。
統合検索に参加する各検索サーバ間で統一したハッシュアルゴリズムを利用できない場合(S205:NO)、検索サーバ1100は、各検索サーバに対して、ハッシュアルゴリズムを指定せずに検索を要求する(S207)。検索サーバ1100は、検索を要求する場合、検索要求パラメータ6500を指定する。検索サーバ1100は、各検索サーバから検索結果応答パラメータ6600に含まれる情報をそれぞれ取得する。
図20に移る。検索結果を取得した後、検索サーバ1100は、取得した各検索結果を統合検索結果一時保管テーブル4400に格納する(S208)。検索サーバ1100は、ハッシュ値を利用して統合検索結果から重複エントリを排除可能か否かを判定する(S209)。
統合検索結果から重複エントリを排除できない場合(S209:NO)、S210をスキップしてS211に移る。統合検索結果から重複エントリを排除できる場合(S209:YES)、検索サーバ1100は、統一されたハッシュアルゴリズムにより算出されるハッシュ値を利用して、統合検索結果から重複エントリを検出し、排除する(S210)。
検索サーバ1100は、統合検索結果一時保管テーブル4400に登録されている情報を利用して、検索結果をスコア値等に従って整列させ、統合検索の要求元に統合検索結果として提供するためのエントリを抽出する(S211)。
具体的には、検索サーバ1100は、統合用検索結果一時保管テーブル4400に登録されているスコア値4440と、検索サーバ管理テーブル4300に登録されている重み付け係数4340の値とを利用して、統合スコア値を算出する。検索サーバ1100は、その統合スコア値を利用して、統合検索結果エントリを整列させる。
最後に、検索サーバ1100は、統合検索の要求元であるクライアントマシンに、統合検索結果を応答する(S212)。検索サーバ1100は、統合検索結果応答パラメータ6200を指定することにより、統合検索結果をクライアントマシンに応答する。
図21は、統合検索に参加する各検索サーバで実行される、ハッシュアルゴリズムの問合せに対する応答処理のフローチャートである。本処理は、「所定の検索サーバ」としての各検索サーバ1100、1200、1300でそれぞれ実施される。便宜上、以下、検索サーバ1200を例に挙げて説明する。
始めに、検索サーバ1200は、ハッシュアルゴリズム問合せ要求パラメータ6300で指定された処理種別6330に基づいて、「ハッシュアルゴリズム問合せ要求」が指定されているか否かを判断する(S301)。もし、ハッシュアルゴリズムの問合わせ要求が指定されていない場合(S301:NO)、本処理はエラー終了する(S302)。
ハッシュアルゴリズムの問い合わせ要求が指定されている場合(S301:YES)、検索サーバ1200は、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する(S303)。S303の「自装置」とは、ここでは、検索サーバ1200である。検索サーバ1200は、検索サーバ1200で管理されている検索インデックス登録ファイル管理テーブル4100のハッシュアルゴリズム4151、4153を調べることにより、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する。
検索サーバ1200は、問合せ元の検索サーバ1100にて利用可能なハッシュアルゴリズムのうち、検索サーバ1200でも利用可能なハッシュアルゴリズムが有るか否かを判定する(S304)。検索サーバ1200は、ハッシュアルゴリズム問合せ要求パラメータ6300内の利用可能なハッシュアルゴリズム候補識別情報6340で指定されているハッシュアルゴリズムと、検索サーバ1200で利用可能なハッシュアルゴリズム(S303)とを比較し、両者に共通するハッシュアルゴリズムが存在するか否かを調べる。
もし、共通のハッシュアルゴリズムが存在する場合(S304:YES)、検索サーバ1200は、そのハッシュアルゴリズムの識別情報を、ハッシュアルゴリズム問合せ応答パラメータ6400内の相互利用可能なハッシュアルゴリズム識別情報6450に登録する(S305)。
問い合わせ元の検索サーバ1100で利用可能なハッシュアルゴリズムと、問合せ先の検索サーバ1200で利用可能なハッシュアルゴリズムとの間に共通するハッシュアルゴリズムが存在しない場合(S304:NO)、S305をスキップしてS306に移る。
検索サーバ1200は、S304で発見された相互利用可能なハッシュアルゴリズム以外の、検索サーバ1200で利用可能な他のハッシュアルゴリズムが存在するか否かを判定する(S306)。検索サーバ1200は、処理S303において、検索サーバ1200で利用可能なハッシュアルゴリズムであると特定されたハッシュアルゴリズムの中で、処理S305の登録対象にならなかった他のハッシュアルゴリズムが存在するか否かを調べる。
もし、他のハッシュアルゴリズムが存在する場合(S306:YES)、検索サーバ1200は、そのハッシュアルゴリズムの識別情報を、ハッシュアルゴリズム問合せ応答パラメータ6400内の利用可能なハッシュアルゴリズム候補識別情報6460に登録する(S307)。もし、他のハッシュアルゴリズムが存在しない場合(S306:YES)、S307をスキップしてS308に移る。
検索サーバ1200は、ハッシュアルゴリズムの問合せ結果を、問合せ元の検索サーバ1100に応答する(S308)。検索サーバ1200は、ハッシュアルゴリズム問合せ応答パラメータ6400を指定して、問合せ結果を応答する。
図22は、各検索サーバで実行される検索応答処理のフローチャートを示す。本処理は図21で述べた処理と同様に、各検索サーバ1100、1200、1300でそれぞれ実施される。ここでは便宜上、検索サーバ1200を例に挙げて説明する。
始めに、検索サーバ1200は、検索要求パラメータ6500の中で指定された処理種別6530を調べ、「検索要求」が指定されているか否かを判定する(S401)。もし、指定されていない場合(S401:NO)、本処理はエラー終了する(S402)。指定されている場合(S401:YES)、検索サーバ1200は、指定された検索キーワードで検索処理を実行し、その検索結果を取得する(S403)。検索サーバ1200は、検索要求パラメータ6500内の検索キーワード6540及び検索オプション6550を利用して、検索処理を行う。
検索サーバ1200は、検索要求パラメータ6500の検索オプション6550内で、利用可能ハッシュアルゴリズム識別情報6551が指定されているかどうかを調べる(S404)。もし、指定されていない場合(S404:NO)、S405をスキップしてS406に移る。
指定されている場合(S404:YES)、検索サーバ1200は、取得した検索結果の各エントリに、各エントリに含まれるファイルのハッシュ値とハッシュ値の生成に利用したハッシュアルゴリズム識別情報とを、追加登録する(S405)。検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100に登録されているファイルのハッシュアルゴリズム4150に格納されている情報に基づいて、ハッシュ値及びハッシュアルゴリズム識別情報を取得する。
検索サーバ1200は、検索結果を要求元の検索サーバ1100に応答する(S406)。検索サーバ1200は、検索結果応答パラメータ6600を指定して、検索結果を応答する。
図23は、検索インデックス更新処理のフローチャートを示す。本処理は、各検索サーバ1100、1200、1300でそれぞれ実施される。便宜上、以下、検索サーバ1200を例に挙げて説明する。
始めに、検索サーバ1200は、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する(S501)。S501における「自装置」とは、ここでは検索サーバ1200である。検索サーバ1200は、検索サーバ1200で管理されている検索インデックス登録ファイル管理テーブル4100内のハッシュアルゴリズム4151、4153を調べることにより、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する。
検索サーバ1200は、検索インデックスの更新対象であるファイルサーバと、更新対象のルートディレクトリとを特定する(S502)。次に、検索サーバ1200は、検索インデックス更新対象ファイルを全てクローリングし、インデクシングが完了したか否かを判定する(S503)。全てのファイルについてクローリング等が終了している場合(S503:YES)、本処理を終了する。
全ファイルについてのクローリング及びインデクシング処理が完了していない場合(S503:NO)、検索サーバ1200は、クローリング対象ファイルが格納されているファイルサーバにアクセスし、検索インデックスの更新対象範囲に格納されている任意のファイルを一つ取得する(S504)。
検索サーバ1200は、S504で取得されたファイルに関する情報を検索インデックスに新規登録する必要があるのか、または、S504で取得されたファイルに関する情報を検索インデックス上で更新させる必要があるかを判定する(S505)。
具体的には、検索サーバ1200は、取得したファイルが前回の検索インデックス更新処理時から更新されているか否か、あるいは、取得したファイルが前回の検索インデックス更新処理時の後に新しく記憶されたファイルであるか否か、といった観点を調べる。新規登録または更新が不要な場合(S505:NO)、S503に戻る。新規登録または更新が必要な場合(S505:YES)、図24に示すS506に移る。検索サーバ1200は、S504で取得したファイル(対象ファイル)の情報を、検索インデックスに新規登録するのか、または、検索インデックスに登録済みの情報を更新するのかを判断する(S506)。
新規登録を行うと判断した場合、検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100に、対象ファイルのエントリを新たに作成し、対象ファイルの情報を登録する(S507)。
更新を行うと判断した場合、検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100に記憶されている対象ファイルのエントリを特定し、必要な情報を更新する(S508)。検索サーバ1200は、対象ファイルを解析して、検索インデックス管理テーブル4200に、検索インデックス情報を登録する(S509)。検索サーバ1200は、利用可能なハッシュアルゴリズムが存在するかどうかを確認する(S510)。検索サーバ1200は、S501の特定結果に基づいて、検索サーバ1200で利用可能なハッシュアルゴリズムが一つ以上存在するかどうかを判断する。利用可能なハッシュアルゴリズムが一つも存在しない場合(S510:NO)、S503に戻る。
利用可能なハッシュアルゴリズムが存在する場合(S510:YES)、検索サーバ1200は、利用可能な全てのハッシュアルゴリズムを用いて、対象ファイルのデータから、それぞれのハッシュ値を生成し、生成された各ハッシュ値を検索インデックス登録ファイル管理テーブル4100に登録する(S511)。
利用可能なハッシュアルゴリズムが複数ある場合、検索サーバ1200は、全てのハッシュアルゴリズムそれぞれに対応するハッシュ値を生成して、検索インデックス登録ファイル管理テーブル4100に登録する。
上述の通り構成される本実施例では、検索アルゴリズムまたは/及び検索インデックスの更新タイミング等がそれぞれ異なる複数の検索サーバを疎に結合したシステムにおいて、統合検索を行う場合に、各検索サーバで共通に使用されるハッシュアルゴリズムを決定する。
従って、本実施例では、同一の検索条件に関する各検索サーバからの検索結果を統合してなる統合検索結果の中から、重複したエントリを検出して排除することができる。これにより、ユーザは、複数の検索サーバに跨る統合検索結果を無駄なく入手することができる。ユーザは、重複エントリの取り除かれた統合結果を用いて、目的のファイルを比較的簡単に発見することができ、ユーザの使い勝手が向上する。
本実施例では、疎結合した複数の検索サーバ1100、1200、1300のうち、統合検索要求を受け付けた検索サーバ1100が、各検索サーバ1100、1200、1300と交渉することにより、各検索サーバ1100、1200、1300間で共通して利用するハッシュアルゴリズムを取り決め、実際の検索は各検索サーバ1100、1200、1300でそれぞれ行われる。さらに、本実施例では、各検索サーバ1100、1200、1300は、取り決められたハッシュアルゴリズムを用いてハッシュ値を作成し、統合検索要求を受け付けた検索サーバ1100は、ハッシュ値を用いて統合検索結果の中から重複したエントリを検出し、それを取り除く。本実施例では、ハッシュ値の作成と、ハッシュ値を利用した重複の検出及び排除とが区別されている。これにより、本実施例では、疎結合された複数の検索サーバ間で役割を分担することができる。