検索方法、統合検索サーバ及びコンピュータプログラム
【課題】本発明は、複数の独立した検索サーバを疎結合したシステムにおいて、同一検索条件について各検索サーバから応答される検索結果の中から重複エントリを検出し、排除する。
【解決手段】検索サーバ1100の統合検索制御部は、統合検索要求を受け付けると、各検索制御部で共通に使用するハッシュアルゴリズムを決定する。各検索制御部は、検索結果にそのハッシュアルゴリズムによるハッシュ値を加えて、統合検索制御部に応答する。統合検索制御部は、ハッシュ値に基づいて重複エントリを検出し、排除する。
【解決手段】検索サーバ1100の統合検索制御部は、統合検索要求を受け付けると、各検索制御部で共通に使用するハッシュアルゴリズムを決定する。各検索制御部は、検索結果にそのハッシュアルゴリズムによるハッシュ値を加えて、統合検索制御部に応答する。統合検索制御部は、ハッシュ値に基づいて重複エントリを検出し、排除する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検索方法、統合検索サーバ及びコンピュータプログラムに関する。
【背景技術】
【0002】
全文検索サービスでは、コンピュータシステムに格納されているファイルデータを検索サーバが解析して、検索インデックスを事前に作成する。検索サーバは、検索インデックスを利用して、ユーザに検索サービスを提供する。ユーザは、取得したいファイルを検索するための検索クエリを検索サーバに送信し、その検索結果をもとに対象ファイルにアクセスする。コンピュータシステムに保管されるファイルの数は年々増加する一方であるため、ユーザにとって全文検索サービスは、重要なサービスとなっている。
【0003】
ところで、検索サーバが複数台存在する場合、ユーザは、各検索サーバに個別に検索クエリを出し、検索結果を各検索サーバから個別に取得する必要がある。このため、ユーザの使い勝手が悪い。
【0004】
そこで、近年、独立した複数の検索サーバに一回だけ検索要求を発行するだけで、各検索サーバからの検索結果を統合的に取得することのできる、統合検索サービスが提供されている。
【0005】
例えば、OpenSearchという、統合検索のための仕様が公開されており、その仕様を利用した統合検索サービスが提供されている。統合検索サービスでは、各検索サーバはそれぞれ独立して運用される。その一方、各検索サーバは、OpenSearchのような統一した標準インタフェースに基づく検索要求を受け付けることができる。これにより、複数の検索サーバを疎に結合した統合検索が可能となる。疎に結合した統合検索では、各検索サーバが利用する検索アルゴリズムまたは検索インデックスの更新契機等はそれぞれ異なる。
【0006】
これに対し、複数の検索サーバを一体的に運用することで、密に結合した統合検索サービスを提供する形態もある。密に結合した統合検索サービスでは、各検索サーバがそれぞれ同一の検索アルゴリズムを使用しており、検索インデックスもシステム内で統一して更新される。複数の検索サーバを密に結合させた統合検索サービスは、一台の検索サーバと見ることもできる。
【0007】
さらに、検索結果の中から重複した内容を除外する機能を有する検索サーバも知られている。具体的には、検索サーバが、検索結果の各エントリから生成したハッシュ値に基づいて重複エントリを検出し、重複エントリを検索結果から削除する(特許文献1)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】米国特許第7,366,718号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
前記文献に記載の技術は、各検索サーバ内において重複エントリを削除できるだけであり、複数の検索サーバからの各検索結果を統合した統合検索結果について、重複エントリを検出することは事実上難しいという問題がある。
【0010】
複数の検索サーバを疎に結合させた形態の統合検索サービスの場合、重複エントリを検出するために利用するハッシュアルゴリズムが、各検索サーバでそれぞれ異なる可能性があるためである。各検索サーバで使用されるハッシュアルゴリズムが異なる場合、ハッシュ値に基づいて重複エントリを検出することは極めて難しい。従って、前記文献に記載の技術では、複数の検索サーバが疎結合したシステムにおいて、統合検索結果に含まれる重複エントリを検出することはできない。
【0011】
上述の課題は、重複エントリ検出のために利用するハッシュアルゴリズムを、各検索サーバ間で統一することが困難であることに起因する。既に、様々な方式のハッシュアルゴリズムが存在する上に、今後も様々なハッシュアルゴリズムが新たに登場し、検索サーバに実装されていくであろう。さらに、各検索サーバにおいて、ハッシュアルゴリズムに求められる要件もそれぞれ異なる。
【0012】
上記の理由により、それぞれ独立して運用される複数の検索サーバ間で、ハッシュアルゴリズムを統一させるのは事実上困難である。従って、前記文献に記載の従来技術を、複数の検索サーバが疎に結合した統合検索サービスに適用することはできない。
【0013】
そこで、本発明の目的は、複数の検索サーバが疎に結合したシステムにおいて、各検索結果から重複データを検出して排除できるようにした検索方法、統合検索サーバ及びコンピュータプログラムを提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【0014】
上記課題を解決すべく、本発明の第1観点に従う検索方法は、複数の検索サーバを含むコンピュータシステムを用いて検索する方法であって、コンピュータシステムは、それぞれ独立して動作する複数の検索サーバを疎結合させて構成されており、複数の検索サーバに含まれる統合検索サーバは、複数の検索サーバに含まれる複数の所定の検索サーバにそれぞれ検索させるための統合検索要求を受信すると、各所定の検索サーバが共通して利用可能な、重複を検出するための重複検出用情報を決定し、各所定の検索サーバに統合検索要求に対応する検索要求を発行し、各所定の検索サーバは、検索要求に基づいて担当のデータ群を検索し、その検索結果に、決定された重複検出用情報を用いて作成される、重複を検出するための重複検出値を含めて、統合検索サーバに送信し、統合検索サーバは、各所定の検索サーバから受信する検索結果の中から、各重複検出値に基づいて重複データを検出し、各検索結果の中から検出された重複データを取り除いて統合検索結果を作成し、その統合検索結果を統合検索要求の発行元に提供する。
【0015】
第2観点では、第1観点において、各所定の検索サーバは、担当のデータ群について、複数の重複検出用情報毎の重複検出値をそれぞれ予め記憶しており、記憶された各重複検出値のうち、統合検索サーバにより決定された重複検出用情報に対応する重複検出値を検索結果に含めて統合検索サーバに送信する。
【0016】
第3観点では、第2観点において、各所定の検索サーバは、担当のデータ群を検索するために使用する検索インデックスを更新する場合に、複数の重複検出用情報毎に重複検出値をそれぞれ作成して保存する。
【0017】
第4観点では、第1観点において、統合検索サーバは、各所定の検索サーバで利用可能な重複検出用情報に関する情報を、各所定の検索サーバから取得して保持しており、統合検索要求を受信した場合、保持された各重複検出用情報に関する情報に基づいて、各所定の検索サーバが共通に利用可能な重複検出用情報を決定する。
【0018】
第5観点では、第1観点において、統合検索サーバは、コンピュータシステムが構築される場合に、各所定の検索サーバで利用可能な重複検出用情報に関する情報を、各所定の検索サーバから取得して保持しており、統合検索要求を受信した場合、保持された各重複検出用情報に関する情報に基づいて、各所定の検索サーバが共通に利用可能な重複検出用情報を決定する。
【0019】
第6観点では、第1観点において、各所定の検索サーバは、統合検索サーバから検索要求を受信した場合に、決定された重複検出用情報による重複検出値を作成し、その重複検出値を検索結果に含めて統合検索サーバに送信する。
【0020】
第7観点では、第1観点において、重複検出用情報はハッシュアルゴリズムであり、重複検出値はハッシュ値である。
【0021】
本発明は、それぞれ独立して動作する複数の検索サーバを疎結合して構成されるコンピュータシステムを用いて検索するための統合検索サーバ、または、コンピュータを統合検索サーバとして機能させるためのコンピュータプログラムとして、把握できる。なお、上記観点の組合せ以外の組合せも本発明の範囲に含まれる。コンピュータプログラムは、通信媒体または記録媒体を介して、流通させることができる。
【図面の簡単な説明】
【0022】
【図1】図1は、コンピュータシステムの全体構成を示す図である。
【図2】図2は、検索サーバのハードウェア構成を示す図である。
【図3】図3は、検索サーバに記憶されているコンピュータプログラムの構成を示す図である。
【図4】図4は、検索サーバに記憶されているテーブルの構成を示す図である。
【図5】図5は、ファイルサーバのハードウェア構成を示す図である。
【図6】図6は、クライアントマシンのハードウェア構成を示す図である。
【図7】図7は、統合検索の一連の処理を模式的に示す図である。
【図8】図8は、検索インデックスに登録されるファイルを管理するためのテーブルを示す。
【図9】図9は、検索インデックスを管理するためのテーブルを示す。
【図10】図10は、検索サーバを管理するためのテーブルを示す。
【図11】図11は、統合検索結果を一時的に保管するためのテーブルを示す。
【図12】図12は、統合検索要求パラメータの構成例を示す。
【図13】図13は、統合検索結果の応答パラメータの構成例を示す。
【図14】図14は、ハッシュアルゴリズム問い合わせ要求パラメータの構成例を示す。
【図15】図15は、ハッシュアルゴリズム問い合わせの応答パラメータの構成例を示す。
【図16】図16は、検索要求パラメータの構成例を示す。
【図17】図17は、検索結果の応答パラメータの構成例を示す。
【図18】図18は、統合検索要求処理を示すフローチャート。
【図19】図19は、統合検索処理を示すフローチャート。
【図20】図20は、図19に続くフローチャート。
【図21】図21は、ハッシュアルゴリズムの問い合わせに応答する処理を示すフローチャート。
【図22】図22は、検索して検索結果を応答する処理を示すフローチャート。
【図23】図23は、検索インデックスを更新する処理を示すフローチャート。
【図24】図24は、図23に続くフローチャート。
【図25】図25は、第2実施例に係り、検索サーバを管理するためのテーブルの構成例を示す。
【図26】図26は、統合検索処理の一部を示すフローチャート。
【図27】図27は、第3実施例に係り、検索サーバの有するコンピュータプログラムの構成例を示す。
【図28】図28は、ハッシュアルゴリズムを事前に折衝する処理を示すフローチャート。
【図29】図29は、第4実施例に係り、検索応答処理を示すフローチャート。
【図30】図30は、第5実施例に係り、統合検索処理の一部を示すフローチャート。
【図31】図31は、第6実施例に係り、統合検索結果を一時的に保管するためのテーブルを示す。
【図32】図32は、統合検索処理の一部を示すフローチャート。
【図33】図33は、第7実施例に係り、重複エントリを検索サーバに通知する処理を示すフローチャート。
【符号の説明】
【0023】
1100:統合検索サーバ/検索サーバ、1200,1300:検索サーバ、2100,2200,2300:ファイルサーバ、3100,3200,3300:クライアントマシン、1124:検索制御プログラム、1125:統合検索制御プログラム、5100:統合検索制御部、5110,5210,5310:検索制御部、5120,5220,5320:検索インデックス
【発明を実施するための最良の形態】
【0024】
以下、図面に基づいて、本発明の実施の形態を説明する。本実施形態では、検索サーバが統合検索結果から重複した内容を検出して排除するための処理方式を説明する。以下に詳細に述べるように、本実施形態では、検索を行う各検索サーバにて使用するハッシュアルゴリズムを事前に取り決め、その取り決めたハッシュアルゴリズムにより算出されるハッシュ値を検索結果に含めて統合検索サーバに送信する。統合検索サーバは、ハッシュ値を用いて重複エントリを検出し、取り除く。
【実施例1】
【0025】
図1は、本実施例によるシステム構成を例示する説明図である。通信ネットワーク100を介して、複数の検索サーバ1100、1200、1300と、複数のファイルサーバ2100、2200、2300と、複数のクライアントマシン3100、3200、3300とが接続されている。さらに、コンピュータプログラムを配信するためのサーバ7000を通信ネットワーク100に接続してもよい。
【0026】
本システムでは、各ファイルサーバに格納されているデータの検索インデックスを、対応する検索サーバが作成する。各検索サーバは、その検索インデックスを利用して、クライアントマシンにファイルサーバ上のファイルについての検索サービスを提供する。さらに、検索サーバは、クライアントマシンに、複数の検索サーバからの検索結果をまとめて提供する統合検索サービスも提供する。
【0027】
具体的なサービス内容は次の通りである。まず、クライアントマシンは、ファイルサーバにファイル(データファイル)を登録することができる。ファイルサーバは、登録されたファイルを、当該ファイルサーバに接続された外部記憶装置に格納し保管する。検索サーバは、ファイルサーバに格納されたファイルをクローリングによって取得し、検索インデックスを作成する。検索サーバは、検索インデックスを、当該検索サーバに接続された外部記憶装置に格納し保管する。
【0028】
クライアントマシンは、検索サーバに、検索クエリを指定して検索要求を送信することができる。検索サーバは、その検索クエリの条件に合致するファイルを、当該検索サーバの有する検索インデックスを利用して抽出し、その検索結果をクライアントマシンに提供する。
【0029】
さらに、クライアントマシンは、検索サーバに、検索クエリを指定して統合検索要求を送信することができる。検索サーバは、その検索クエリの条件に合致するファイルを、当該検索サーバが有する検索インデックスを利用して抽出する。さらに、検索サーバは、統合検索可能な他の検索サーバにも検索要求を送信し、各検索サーバから応答される検索結果を統合検索結果として、クライアントマシンに提供する。
【0030】
クライアントマシンは、統合検索結果に基づいて、アクセス対象ファイルを選定することができる。クライアントマシンは、統合検索結果に格納されているファイルアクセス用のファイルパス名を利用して、ファイルサーバに保管されているファイルにアクセスすることができる。
【0031】
なお、図1では、検索サーバ、ファイルサーバ及びクライアントマシンという3種類の装置を、それぞれ別々の装置として示している。図1に示す構成に限らず、例えば、それら3種類の装置のうちいずれか2つ、または、3つ全てを一つのコンピュータ装置として構成してもよい。
【0032】
プログラム配信サーバ7000は、例えば、ハッシュアルゴリズム等のプログラムを検索サーバに配信させる装置である。プログラム配信サーバを、例えば、ファイルサーバまたは検索サーバと統合させて、一つのコンピュータ装置内に実現してもよい。
【0033】
さらに、通信ネットワーク100による接続形態は、インターネット接続でもよいし、または、ローカルエリアネットワークによるイントラネット接続などでもよい。
【0034】
図2は、検索サーバ1100のハードウェア構成を例示する説明図である。本実施例では、3台の検索サーバ1100、1200、1300のうち、検索サーバ1100が統合検索サービスの受付窓口となっている。つまり、検索サーバ1100は、統合検索サービスをクライアントマシンに提供するための「統合検索サーバ」であり、さらに、検索要求に従って検索する「所定の検索サーバ」でもある。
【0035】
検索サーバ1100は、例えば、プロセッサ1110と、メモリ1120と、外部記憶装置インタフェース(以下、I/F)1130と、ネットワークI/F1140と、それら1110、1120、1130、1140を接続するバス1150とを含んで構成される。
【0036】
プロセッサ1110は、コンピュータプログラム(以下、プログラム)を実行する。メモリ1120には、後述するプログラム1121−1125及びテーブル4100−4400が格納される。外部記憶I/F1130は、外部記憶装置1160にアクセスするための通信回路である。ネットワークI/F1140は、通信ネットワーク100を介して他装置(ファイルサーバ及びクライアントマシン等)にアクセスするための通信回路である。
【0037】
図3は、メモリ1120に記憶されるプログラム内容を示す。メモリ1120には、例えば、外部記憶装置I/Fプログラム1121と、ネットワークI/Fプログラム1122と、データ管理プログラム1123と、検索制御プログラム1124と、統合検索制御プログラム1125と、が記憶されている。
【0038】
外部記憶装置I/Fプログラム1121は、外部記憶装置I/F1130を制御する。ネットワークI/Fプログラム1122は、ネットワークI/F1140を制御する。データ管理プログラム1123は、検索サーバ1100において保管データを管理するために利用されるファイルシステムまたはデータベースを提供する。検索制御プログラム1124は、検索サーバ1100において検索サービスを提供する。統合検索制御プログラム1125は、検索サーバ1100において統合検索サービスを提供する。
【0039】
図4は、メモリ1120に記憶されるテーブル(管理用データ)の内容を示す。メモリ1120には、例えば、検索インデックス登録ファイル管理テーブル4100と、検索インデックス管理テーブル4200と、検索サーバ管理テーブル4300と、統合用検索結果一時保管テーブル4400とが格納される。
【0040】
検索インデックス登録ファイル管理テーブル4100は、検索制御プログラム1124により利用されるテーブルであり、検索インデックスに登録されたファイルを管理する。検索インデックス管理テーブル4200は、検索インデックスを管理するテーブルである。検索サーバ管理テーブル4300は、統合検索制御プログラム1125により使用されるテーブルであり、統合検索システムに含まれている各検索サーバを管理する。統合用検索結果一時保管テーブル4400は、統合検索制御プログラム1125により使用されるテーブルであり、統合検索の結果を一時的に保管する。
【0041】
図3に戻る。検索制御プログラム1124は、その内部に、検索インデックス管理サブプログラム1171と、検索受付サブプログラム1172と、ハッシュアルゴリズム応答サブプログラム1173と、重複排除サブプログラム1174とを持つ。
【0042】
検索インデックス管理サブプログラム1171は、検索インデックスデータを管理するために必要な処理を行う。具体的には、検索インデックス管理サブプログラム1171は、検索サーバ1100の検索対象となっているファイルデータを保管しているファイルサーバ3100に対してクローリング処理を行い、必要に応じて検索インデックスデータを生成したり、更新したり、削除したりする。検索インデックス管理サブプログラム1171は、検索インデックスデータの実体をデータ管理プログラム1123を用いて管理する。
【0043】
検索受付サブプログラム1172は、クライアントマシンから検索クエリを指定した検索要求を受け付ける。検索受付サブプログラム1172は、その検索条件に合致するファイルを検索し、検索結果をクライアントマシンに応答する処理を行う。本実施例では、検索受付サブプログラム1172は、検索インデックス管理サブプログラム1171が別途作成した検索インデックスデータを利用して検索処理を行う。
【0044】
ハッシュアルゴリズム応答サブプログラム1173は、他の検索サーバからハッシュアルゴリズムの折衝を要求された場合、その要求を受けて、必要な処理を行った上で応答するプログラムである。ハッシュアルゴリズム応答サブプログラム1173は、当該ハッシュアルゴリズム応答プログラム1173が搭載されている検索サーバで利用可能なハッシュアルゴリズムの一覧を、問い合わせ元に応答する。詳細は後述するが、各検索サーバで共通して利用可能なハッシュアルゴリズムの使用を各検索サーバに指示することにより、統合検索結果における重複を検出することができる。
【0045】
なお、以下の説明では、主語となるプログラムまたはテーブルが搭載されている検索サーバを、自検索サーバと呼ぶことがある。
【0046】
重複排除サブプログラム1174は、自検索サーバの検索インデックス管理サブプログラム1171により管理される検索インデックスデータの中で、重複データを検出し、必要に応じて重複データを削除する処理を行う。つまり、重複排除サブプログラム1174は、一つの検索サーバ内に保管されている、重複データを排除する。
【0047】
重複データを検出するために、後述するハッシュアルゴリズムが使用される。重複排除サブプログラム1174は、ハッシュアルゴリズムにより算出されるハッシュ値に基づいて、検索インデックスデータ内の任意のあるデータと他のデータとが同一であるか否かを判断する。
【0048】
統合検索制御プログラム1125は、その内部に、統合検索受付サブプログラム1175と、ハッシュアルゴリズム折衝サブプログラム1176と、統合検索結果重複排除サブプログラム1177とを有する。
【0049】
統合検索受付サブプログラム1175は、クライアントマシンから検索クエリを指定した統合検索要求を受け付けると、統合検索可能な他の複数の検索サーバも利用して、その検索条件に合致するファイルを検索する。統合検索受付サブプログラム1175は、各検索サーバからの検索結果をまとめて、統合検索結果としてクライアントマシンに送信する。統合検索受付サブプログラム1175は、統合検索可能な検索サーバを選定するために、検索サーバ管理テーブル4300を使用する。
【0050】
ハッシュアルゴリズム折衝サブプログラム1176は、統合検索受付サブプログラム1175が統合検索要求を受けた場合、統合検索結果の中から重複した内容を排除するために使用するハッシュアルゴリズムについて、統合検索可能な検索サーバ群との間で折衝し合意するために必要な処理を行う。具体的な処理内容は後述する。
【0051】
統合検索結果重複排除サブプログラム1177は、統合検索可能な検索サーバ群から取得された検索結果データの中から重複データを検出し、必要に応じて重複データを削除する処理を行う。統合検索結果重複排除サブプログラム1177は、重複データを検出するために、他の検索サーバ群との間で取り決められたハッシュアルゴリズムを使う。統合検索結果重複排除サブプログラム1177は、そのハッシュアルゴリズムによって、検索結果データ内の任意のデータと他のデータとが同一であるか否かを判断する。
【0052】
なお、検索インデックス登録ファイル管理テーブル4100、検索インデックス管理テーブル4200、検索サーバ管理テーブル4300及び統合用検索結果一時保管テーブル4400については後述する。
【0053】
他の検索サーバ1200、1300は、統合検索に関する構成(統合検索制御プログラム1125、検索サーバ管理テーブル4300、統合検索結果一時保管テーブル4400)を備えない点を除いて、検索サーバ1100と同一構成であるため、説明を割愛する。
【0054】
図5は、ファイルサーバ2100のハードウェア構成を例示する説明図である。ファイルサーバ2100は、例えば、プログラムを実行するプロセッサ2110と、プログラム及びデータを一時的に格納するメモリ2120と、外部記憶装置2160にアクセスするための外部記憶装置I/F2130と、ネットワーク100を介して他装置(検索サーバ等)と通信するためのネットワークI/F2140と、それらを接続するバス2150とを備える。
【0055】
メモリ2120には、例えば、外部記憶装置I/Fプログラム2121と、ネットワークI/Fプログラム2122と、ファイル共有サービスプログラム2123と、ファイル管理プログラム2124とが格納される。
【0056】
外部記憶装置I/Fプログラム2121は、外部記憶装置I/F2130を制御する。ネットワークI/Fプログラム2122は、ネットワークI/F2140を制御する。ファイル共有サービスプログラム2123は、ファイルサーバ2100から提供されるファイル共有サービスを管理する。ファイル管理プログラム2124は、ファイルサーバ2100に記憶されたファイルを管理する。
【0057】
ファイル共有サービスプログラム2123は、ファイル管理プログラム2124を利用して、共有ファイルを管理する。検索サーバまたはクライアントマシン等は、ファイル共有サービスプログラム2123を利用することで、ファイルサーバ2100に保管されている共有ファイルにアクセスすることが可能になる。
【0058】
なお、他のファイルサーバ2200、2300は、ここで説明したファイルサーバ2100と同一構成のため、説明を割愛する。
【0059】
図6は、クライアントマシン3100のハードウェア構成を例示する説明図である。クライアントマシン3100は、例えば、プログラムを実行するプロセッサ3110と、プログラム及びデータを一時的に格納するメモリ3120と、外部記憶装置3160にアクセスするための外部記憶装置I/F3130と、ネットワークで接続された他装置にアクセスするためのネットワークI/F3140と、それらを接続するバス3150とを備える。
【0060】
メモリ3120には、例えば、外部記憶装置I/Fプログラム3121と、ネットワークI/Fプログラム3122と、ファイル管理プログラム3123と、検索サービスクライアントプログラム3124と、ファイル共有サービスクライアントプログラム3125とが格納される。
【0061】
外部記憶装置I/Fプログラム3121は、外部記憶装置I/F3130を制御する。ネットワークI/Fプログラム3122は、ネットワークI/F3140を制御する。ファイル管理プログラム3123は、クライアントマシン3100に保管されたファイルを管理するためのファイルシステムを提供する。検索サービスクライアントプログラム3124は、検索サーバ1100が提供する検索サービス並びに統合検索サービスを利用するためのプログラムである。ファイル共有サービスクライアントプログラム3125は、ファイルサーバ2100が提供するファイル共有サービスを利用するためプログラムである。
【0062】
検索サービスクライアントプログラム3124は、検索サービス及び統合検索サービスがHTTPプロトコルを利用する場合、HTTPクライアントプログラム(例えば、Webブラウザなど)を利用する。
【0063】
ファイル共有サービスクライアントプログラム3125は、ファイル共有サービスがNFSプロトコルを利用する場合は、NFSクライアントプログラムを使用する。ファイル共有サービスがCIFSプロトコルを利用する場合、ファイル共有サービスクライアントプログラム3125は、CIFSクライアントプログラムを利用する。あるいは、ファイル共有サービスがHTTPプロトコルを利用する場合、ファイル共有サービスクライアントプログラム3125は、HTTPクライアントプログラム(Webブラウザ等)を利用する。
【0064】
なお、他のクライアントマシン3200、3300は、クライアントマシン3100と同一構成のため、説明を割愛する。
【0065】
図7は、クライアントマシン3100から検索サーバ1100に統合検索要求を発行した場合のシステム全体の動作を模式的に示す。図7では、統合検索要求の発行、各検索サーバでの検索、各検索サーバの検索結果の取得、統合検索結果の提供等の一連の処理が9つのステップで説明されている。以下、ステップを「S」と略記する場合がある。
【0066】
なお、以下では、統合検索処理を実行する「統合検索サーバ」としての検索サーバ1100と、統合検索要求に従って検索する「所定の検索サーバ」としての検索サーバ1100とに同一の符号1100を付す。例えば、「統合検索要求を受けた検索サーバ1100は、各検索サーバ1100、1200、1300に検索を要求する。」等の文章において、「統合検索要求を受けた検索サーバ1100」とは、統合検索要求を受信して統合検索処理を実行する統合検索サーバであり、主として、統合検索制御プログラム1125に相当する。「各検索サーバ1100、1200、1300」における「検索サーバ1100」は、指定された検索を行って結果を返す検索サーバであり、主として、検索制御プログラム1124に相当する。
【0067】
始めに、S1として、クライアントマシン3100は、統合検索サービスを提供する検索サーバ1100に対して、統合検索要求を送る。統合検索要求では、検索キーワード及び検索条件が指定される。
【0068】
統合検索に使用される検索キーワード及び検索条件は、従来の一般的な検索エンジンで受付可能な検索キーワード及び検索条件と同様に指定できる。例えば、検索キーワードとして、複数の文字列を指定してもよい。検索条件として、データ作成日またはデータ最終更新日を任意の範囲で指定してもよいし、データ作成者を指定してもよい。
【0069】
S2として、統合検索要求を受け付けた検索サーバ1100内の統合検索制御部5100は、統合検索利用可能な検索サーバ1100、1200、1300に対して、ハッシュアルゴリズム(利用可能なハッシュ関数などの識別情報に相当)の折衝を行う。統合検索制御部5100は、主として統合検索制御プログラム1125により実現される。
【0070】
統合検索要求を受けた検索サーバ1100は、自検索サーバ1100にて利用可能なハッシュアルゴリズムを指定して、そのハッシュアルゴリズムを他の各検索サーバ1100、1200、1300が利用可能であるかを、他の各検索サーバ1200、1300に問い合わせる。
【0071】
S3として、問合せをうけた各検索サーバ1100、1200、1300内の検索制御部5110、5210、5310は、指定されたハッシュアルゴリズムをサポートしているかどうかの情報と、指定されたハッシュアルゴリズム以外に利用可能なハッシュアルゴリズムの情報とを、問い合わせ元である統合検索制御部5100に応答する。検索制御部5110、5120、5130は、ハッシュアルゴリズム応答サブプログラム1173により実現される。
【0072】
統合検索制御部5100は、各検索制御部5110、5210、5310からの応答結果に基づいて、統合検索に利用可能なハッシュアルゴリズムを決定する。以下の説明では、統合検索のために利用可能なハッシュアルゴリズムを、共通ハッシュアルゴリズムと呼ぶ場合がある。なお、一回の問合せで共通ハッシュアルゴリズムを決定できない場合、所定の回数だけ問い合わせと応答を繰り返し実行する構成としてもよい。
【0073】
S4として、統合検索制御部5100は、統合検索利用可能な検索サーバ1100、1200、1300に同一の検索要求を送る。その検索要求には、統合検索要求に含まれている検索キーワード及び検索条件と共に、前述の処理にて決定された共通ハッシュアルゴリズムに関する情報も含まれる。
【0074】
S5として、検索制御部5110、5210、5310は、自検索サーバ1100、1200、1300内にて管理する検索インデックス5120、5220、5320を利用して、それぞれ検索処理を実行する。検索処理では、統合検索制御部5100から指定された検索キーワードと検索条件を利用する。
【0075】
S6として、検索制御部5110、5210、5310は、それぞれの検索結果について、重複排除処理を行う。具体的には、検索制御部5110、5210、5310はそれぞれ、検索結果に含まれるエントリの中に、同一ファイルを示すエントリが複数個登録されているか否かを調べる。
【0076】
もしも、同一ファイルを示すエントリが複数個登録されている場合、検索制御部5110、5210、5310は、所定の重複削除条件に沿って、任意の一エントリのみを残して、他エントリを非表示にするか、または削除する。
【0077】
同一ファイルであるか否かを判断するために、ハッシュアルゴリズムが使用される。具体的には、ハッシュ関数などが利用される。検索制御部5110、5210、5310は、各ファイルデータについて、または、同一であるか否かを判断すべき複数のファイルデータについて、ハッシュ関数を利用してハッシュ値を生成する。ハッシュ値が一致する場合、それらのファイルは同一であると判定できる。
【0078】
S7として、検索制御部5110、5210、5310は、各検索サーバ1100、1200、1300内での重複エントリが取り除かれた検索結果を、検索要求元である検索サーバ1100の統合検索制御部5100に応答する。
【0079】
さらに、検索制御部5110、5210、5310は、検索結果に加えて、S4にて指定された共通ハッシュアルゴリズムを利用して生成された情報も、統合検索制御部5100に提供する。具体的には、共通ハッシュアルゴリズムに該当するハッシュ関数を利用して生成されたハッシュ値を統合検索制御部5100に通知する。
【0080】
S8として、統合検索制御部5100は、各検索サーバから取得した検索結果をもとにして統合検索結果を生成し、さらに、統合検索結果の中から重複したエントリを排除する処理を行う。以下、統合検索結果に含まれる複数エントリのうち重複エントリを取り除く処理を、統合検索結果重複排除処理と呼ぶことがある。
【0081】
統合検索結果重複排除処理の具体的内容は、前述した各検索制御部5110、5210、5310における重複排除処理の内容とほぼ同じである。具体的には、統合検索結果に含まれる各エントリに、同一ファイルデータを示すエントリが複数存在するか否かを調べる。もし、統合検索結果の中に同一ファイルを示すエントリが複数個登録されている場合、所定の重複削除条件に従って、任意の一エントリのみを残し、他エントリを非表示にするかまたは削除する。
【0082】
複数のファイルデータが同一であるか否かを判断するために、ハッシュアルゴリズムを使う。具体的には、各検索サーバから提供された、共通ハッシュアルゴリズムにより算出されたハッシュ値を利用する。複数のファイルデータのハッシュ値(検索サーバ内で作成されたハッシュ値)が一致する場合、それらのファイルデータは同一であると判断することができる。
【0083】
最後に、S9として、統合検索制御部5100は、重複エントリの除かれた統合検索結果を、クライアントマシン3100に応答する。以上の処理によって、クライアントマシン3100は、統合検索結果を取得することができる。
【0084】
図8は、検索インデックス登録ファイル管理テーブル4100の構成例を示す。検索インデックス登録ファイル管理テーブル4100は、検索インデックスの作成対象となっているファイルサーバから検索サーバが取得したファイルに関する情報を管理する。具体的には、検索インデックス登録ファイル管理テーブル4100は、ファイルID4110と、取得元ファイルパス名4120と、対象ファイルのメタデータ4130と、キャッシュ格納先4140と、対象ファイルのハッシュアルゴリズム(及びハッシュ値)4150とを、対応付けて管理する。
【0085】
ファイルID4110は、ファイルサーバから取得されたファイルを一意に識別するための識別子である。ファイルID4110は、検索サーバ1100により付与される連番でもよいし、または、ファイルサーバ2100により付与される連番でもよい。
【0086】
取得元ファイルパス名4120は、対象ファイルのファイルサーバにおける格納先を示すファイルパス名である。検索サーバは、ファイルサーバに、取得元ファイルパス名4120を指定してファイル取得要求を発行する。これにより、検索サーバは、ファイルサーバから所望のファイルを取得することができる。
【0087】
対象ファイルのメタデータ4130は、対象ファイルに関連付けられているメタデータの集合である。メタデータ4130としては、例えば、ファイルサーバにて管理されている、ファイル所有者、ファイル作成日時、ファイルサイズ、ファイルへのアクセス権情報等が該当する。さらに、検索サーバにて管理されている最新ファイル取得日時等の情報も、メタデータ4130に含むことができる。
【0088】
キャッシュ格納先(格納場所)4140は、対象ファイルのキャッシュデータを検索サーバ内で保管する場合の格納場所を示す情報である。具体的には、検索サーバにて、キャッシュデータをファイル形式で管理する場合、ファイルの格納パス名をキャッシュ格納先の欄4140に登録する。
【0089】
対象ファイルのハッシュアルゴリズム及びハッシュ値の欄4150は、対象ファイルデータの重複を検出するために利用する情報を格納する。欄4150には、ハッシュアルゴリズムを登録する欄4151、4153と、ハッシュ値を登録する欄4152、4154とが含まれる。
【0090】
ハッシュアルゴリズム欄4151、4153には、重複検出のために利用するハッシュ関数の識別情報を登録する。ハッシュアルゴリズム欄4151、4153には、例えば、MD5またはSHA-1等のハッシュ関数を識別するための情報が登録される。ハッシュ値欄4152、4154には、ハッシュアルゴリズム欄4151、4153に登録されたハッシュ関数を用いて作成されたハッシュ値が登録される。
【0091】
ハッシュアルゴリズム及びハッシュ値の欄4150には、ハッシュアルゴリズムとハッシュ値との組を複数個登録できるように構成する。図8では、各ファイルに対してそれぞれ二つの組を登録している例を示している。3つ以上の組を登録してもよい。さらに、全ファイルについて同じ個数の組を登録する構成でもよいし、ハッシュアルゴリズムとハッシュ値の組の登録可能数を、各ファイルで異なるような構成でもよい。
【0092】
図9は、検索インデックス管理テーブル4200の構成例を示す。検索インデックス管理テーブル4200は、検索サーバにより作成された検索インデックスの情報を管理する。具体的には、検索インデックス管理テーブル4200は、キーワード4210と、位置情報4220とを対応付けて管理する。
【0093】
キーワード4210には、対象ファイルをインデクシング処理して得られた文字列が格納される。位置情報4220には、キーワード4210の文字列を含むファイルの情報が登録される。位置情報4220は、ファイルID4221、4224と、該当位置オフセット4222、4225と、重み付け係数4223、4226とを含む。
【0094】
ファイルID4221、4224は、キーワードの文字列が出現するファイルを識別するための情報を登録する。検索インデックス登録ファイル管理テーブル4100のファイルID4110の欄に登録されているファイルIDが、ファイルID4221、4224に登録される。
【0095】
該当位置オフセット4222、4225は、ファイルの中で、キーワードの文字列が出現するオフセット情報を登録する。この欄4222、4225では、一つのファイルで複数箇所出現する場合は、複数個のオフセット情報を登録する。
【0096】
重み付け係数4223、4226は、ファイル中にキーワードの文字列が出現することについての重要度を登録する。重要度の値は、検索サーバが適宜設定できる。重要度の値は、大きければ大きいほど、重要であることを意味する。重要度の値は、検索結果の絞り込み、及び、検索結果の整列にも利用できる。
【0097】
位置情報4220では、一つのキーワード4210について複数個登録可能である。これにより、キーワード文字列に該当するファイルが複数存在する場合にも対応できる。なお、位置情報4220の欄において、該当するエントリの値が無効であることを意味するnull値を登録することもできる。図中では、null値を「−」として示す。null値は、例えば、登録数が他のエントリより少ないために項目が空いてしまうエントリに、用いられる。
【0098】
図10は、検索サーバ管理テーブル4300の構成例を示す。検索サーバ管理テーブル4300は、検索サーバが統合検索を行う場合に、検索要求の送信先となる検索サーバの一覧情報を管理する。具体的には、検索サーバ管理テーブル4300は、検索サーバID4310と、検索サーバ名4320と、IPアドレス4330と、重み付け係数4340とを対応付けて管理する。
【0099】
検索サーバID4310には、統合検索に利用可能な検索サーバを識別するための識別番号が格納される。検索サーバID4310は、統合検索を行う検索サーバ1100により付与される連番でもよいし、または、統合検索サービスを提供するシステム内で付与される連番でもよい。
【0100】
検索サーバ名4320には、検索サーバの名前を格納する。具体的には、検索サーバのホスト名でもよいし、任意の文字列からなる名称でもよい。IPアドレス4330には、検索サーバに付与されているIPアドレスを格納する。なお、DNSを利用してIPアドレスを決定するシステム構成の場合、IPアドレス4330欄には、DNSへの問合せに利用するホスト名を格納してもよい。
【0101】
重み付け係数4340には、検索サーバから得られる検索結果についての、重要性の度合いを示す値を格納する。重み付け係数の値が大きければ大きいほど、検索結果の重要性を高くできる。
【0102】
重み付け係数4340の値を検索サーバ毎に変えることにより、統合検索結果の中で、特定の検索サーバから得た検索結果を優先させることができる。即ち、重み付け係数が大きく設定された検索サーバからの検索結果を、統合検索結果内において上位に表示させることができる。重み付け係数が小さく設定された検索サーバからの検索結果は、統合検索結果のランキングにおいて下位に表示される。なお、全ての検索サーバから得る検索結果を平等に扱いたい場合は、重み付け係数4340の値を全て同じ値に設定すればよい。
【0103】
図11は、統合検索結果一時保管テーブル4400の構成例を示す。統合検索結果一時保管テーブル4400は、各検索サーバ1100、1200、1300からの検索結果をマージして統合検索結果を生成する処理において、データを一時的に保管するために利用される。
【0104】
具体的に、統合検索結果一時保管テーブル4400は、検索サーバID4410、ランク4420、ファイルID4430、スコア値4440、ファイルパス名4450、ハッシュアルゴリズム4460、ハッシュ値4470、及び検索キーワード含有文字列4480を対応付けて管理する。
【0105】
検索サーバID4410には、検索結果を取得した検索サーバを識別するための情報が格納される。検索サーバID4410には、検索サーバ管理テーブル4300の検索サーバID4310の欄に登録されている検索サーバIDと同じ情報が登録される。
【0106】
ランク4420には、検索サーバから送られてきたエントリのランクの情報をそのまま格納する。ランクとは、各検索サーバが提供する検索結果の中で、検索キーワード及び検索条件に該当する度合いが高い順に整列させ、その整列順に順位付けをした値である。
【0107】
ファイルID4430には、検索サーバから送られてきたエントリに対応するファイルのファイルIDがそのまま格納される。具体的には、ファイルID4430には、検索インデックス登録ファイル管理テーブル4100のファイルID4110の欄に登録されているファイルIDと同じ情報が登録される。
【0108】
スコア値4440には、検索サーバから送られてきたエントリのスコア値の情報がそのまま格納される。スコア値とは、各検索サーバが提供する検索結果の中で、検索キーワード及び検索条件に該当する度合いを数値化したものである。スコア値に、検索サーバ管理テーブル4300における重み付け係数4340を乗じて、統合スコア値を算出する。検索サーバ1100は、統合スコア値を統合検索結果における統合ランクを決定するために利用する。
【0109】
ファイルパス名4450には、検索サーバから送られてきたエントリに対応するファイルのファイルパス名をそのまま格納する。具体的には、ファイルパス名4450には、検索インデックス登録ファイル管理テーブル4100の取得元ファイルパス名4120の欄に登録されているファイルパス名と同じ情報が登録される。
【0110】
なお、ネットワーク100を介して対象ファイルにアクセスできるようにするために、ファイルパス名4450の欄には、ファイルパス名に加えて、対象ファイルを格納するファイルサーバの識別情報を格納してもよい。
【0111】
ハッシュアルゴリズム4460には、検索サーバで利用可能なハッシュアルゴリズムを識別するための情報が格納される。ハッシュ値4470には、ハッシュアルゴリズムにより算出されるハッシュ値を格納する。
【0112】
なお、統合検索に使用されるハッシュアルゴリズム(共通ハッシュアルゴリズム)を決定するための折衝処理において、共通ハッシュアルゴリズムを選定できなかった場合は、ハッシュアルゴリズム4460及びハッシュ値4470の欄に、無効値であることを意味するnull値が格納される。
【0113】
検索キーワード含有文字列4480には、検索サーバから送られてきた検索キーワードを含有する文字列がそのまま格納される。検索キーワード含有文字列とは、各検索サーバからの検索結果の中に含まれる各ファイルの中から、検索キーワードを含む文字列を抜き出したものの集合である。
【0114】
検索キーワードを含む文字列の情報を検索結果に含めることで、ユーザは、指定した検索キーワードが含まれる部分の文章または文字列を、検索結果の一部として利用することができる。これにより、ユーザは、検索結果に挙げられた対象ファイルに実際にアクセスすることなく、検索キーワードを含む前後の文脈を把握することができる。従って、検索キーワード含有文字列4480により、検索サービスの利便性を高めることができる。
【0115】
一つのファイルの中に、検索キーワードを含む箇所が複数個存在する場合は、検索キーワード含有文字列も欄4480に複数登録される。検索サーバは、検索インデックス管理テーブル4200に登録されている情報を利用して、検索キーワード含有文字列を生成する。なお、検索キーワード含有文字列4480の欄において、検索サーバから提供される検索キーワード含有文字列の数が他のエントリよりも少ないために空欄となる箇所には、無効値を意味するnull値を格納する。
【0116】
図12は、クライアントマシンから検索サーバ1100に統合検索要求を行う際に指定する、統合検索要求パラメータ6100の構成例を示す。本パラメータは、図7で説明したS1で利用される。具体的に、統合検索要求パラメータ6100は、要求先マシン識別情報6110、要求元マシン識別情報6120、処理種別6130、検索キーワード6140、検索オプション6150、統合検索オプション6160を含む。
【0117】
要求先マシン識別情報6110には、統合検索要求の送信先となる検索サーバを識別するための情報が格納される。要求先マシン識別情報6110には、ネットワーク100を介して検索サーバにアクセスするために、検索サーバのホスト名またはIPアドレス等のアクセス情報が格納される。
【0118】
要求元マシン識別情報6120には、統合検索を要求するクライアントマシンを識別するための情報が格納される。要求元マシン識別情報6120には、ネットワーク100を介してクライアントマシンにアクセスするために、クライアントマシンのホスト名、または、クライアントマシンのIPアドレス等のアクセス情報が格納される。
【0119】
処理種別6130は、処理の内容を識別するための情報を格納する。統合検索要求を発行する場合、処理種別6130には、統合検索要求処理を示す情報が格納される。検索キーワード6140は、統合検索要求に使用される検索キーワードを格納する。
【0120】
検索オプション6150は、各検索サーバに検索を要求する際に指定するオプションに関する情報を格納する。検索オプション6150としては、例えば、ファイル作成日時、ファイル更新日時、ファイル作成者等に関する条件を指定できる。
【0121】
統合検索オプション6160は、統合検索処理を行う検索サーバ1100に指定するオプションに関する情報を格納する。統合検索オプション6160としては、例えば、クライアントマシンに提供する統合検索結果の件数、統合検索結果の先頭エントリにおけるオフセット値に関する条件等がある。オフセット値を設定することにより、例えば、先頭エントリをランク1位から始めるのか、またはランク100位から始めるのか等を設定できる。
【0122】
図13は、検索サーバ1100がクライアントマシンに統合検索結果を応答する際に指定する、統合検索結果応答パラメータ6200の構成例を示す。本パラメータ6200は、図7で説明したS9にて利用される。具体的に、統合検索結果応答パラメータ6200は、応答先マシン識別情報6210、応答元マシン識別情報6220、処理種別6230、処理結果識別情報6240、総件数6250、応答件数6260、先頭ランク6270、検索結果6280、追加応答要求に必要な情報6290を備えている。
【0123】
応答先マシン識別情報6210は、統合検索結果の送信先となるクライアントマシンを識別する情報を格納する。例えば、ネットワーク100を介してクライアントマシンにアクセスするために、クライアントマシンのホスト名またはIPアドレス等のアクセス情報が格納される。
【0124】
応答元マシン識別情報6220には、統合検索要求を行った検索サーバ1100を識別するための情報が格納される。前記同様に、例えば、検索サーバ1100のホスト名、IPアドレス等が格納される。
【0125】
処理種別6230は、処理の内容を識別するための情報を格納する。統合検索の結果を送信する場合、処理種別6230には、統合検索結果の応答処理を示す情報が格納される。処理結果識別情報6240は、統合検索の処理結果を識別する情報を格納する。具体的には、処理が成功したのか、あるいは失敗したのかといった情報が格納される。
【0126】
総件数6250は、指定された条件に合致したファイルデータの総件数を格納する。応答件数6260は、指定された条件に合致したファイルデータの中で、統合検索結果の応答に含まれる件数を格納する。総件数6250の値が応答件数6260の上限値以下の場合、総件数6250と応答件数6260とは一致する。しかし、総件数6250が前記上限値よりも多い場合、一度の応答件数6260の上限値より多い分は、統合検索結果の応答に含めない。
【0127】
先頭ランク6270には、統合検索結果の応答に含まれる先頭エントリのランク値が格納される。もし、ランク1位のエントリが先頭であれば、先頭ランク6270には1が格納され、ランク100位のエントリが先頭であれば、先頭ランク6270には100が格納される。
【0128】
検索結果6280には、統合検索処理によって取得された統合検索結果が格納される。検索結果6280には、応答件数6280で規定された数だけ、検索結果エントリ6281、6282が格納される。検索結果エントリ6281、6282には、統合用検索結果一時保管テーブル4400の各欄4410−4480に格納されている情報と同じ情報が格納される。
【0129】
追加応答要求に必要な情報6290は、総件数6250の値よりも応答件数6260の値の方が小さい場合に利用する。追加応答要求に必要な情報6290の欄には、統合検索結果の応答に含まれていない他の検索結果に関する情報を取得するためのリンク情報が格納される。
【0130】
図14は、統合検索要求を受信した検索サーバ1100から、統合検索を利用可能な各検索サーバ1100、1200、1300に、ハッシュアルゴリズムの折衝を行う際の問合せに指定するための、ハッシュアルゴリズム問合せ要求パラメータ6300の構成例を示す。
【0131】
本パラメータ6300は、図7で説明したS2で利用される。具体的に、ハッシュアルゴリズム問合せ要求パラメータ6300は、問合せ先マシン識別情報6310、問合せ元マシン識別情報6320、処理種別6330、利用可能なハッシュアルゴリズム候補識別情報6340、問合せオプション6350を含む。
【0132】
問合せ先マシン識別情報6310は、検索要求の送信先となる検索サーバを識別するための情報を格納する。即ち、問合せ先マシン識別情報6310は、統合検索を開始する前に、利用するハッシュアルゴリズムについて交渉する必要がある各検索サーバを識別するための情報が格納される。例えば、ネットワーク100を介して検索サーバにアクセスするために、検索サーバのホスト名、IPアドレス等のアクセス情報が格納される。
【0133】
問合せ元マシン識別情報6320は、統合検索処理を行う検索サーバ1100を識別するための情報を格納する。ネットワーク100を介してマシンにアクセスするために、検索サーバ1100のホスト名またはIPアドレス等のアクセス情報が、問合せ元マシン識別情報6320に格納される。
【0134】
処理種別6330は、処理の内容を識別するための情報を格納する。ハッシュアルゴリズムの問い合わせを行う場合、処理種別6330には、ハッシュアルゴリズム問合せ要求処理を示す情報が格納される。
【0135】
利用可能なハッシュアルゴリズム候補識別情報6340には、問合せ元である検索サーバ1100において利用可能なハッシュアルゴリズムの識別情報一覧が格納される。各検索サーバにおいて、ハッシュアルゴリズム候補識別情報6340に格納された複数のハッシュアルゴリズムのうち、共通するハッシュアルゴリズムを利用できる場合、そのハッシュアルゴリズムを利用して、統合検索結果に含まれる重複を検出できる。
【0136】
問合せオプション6350は、ハッシュアルゴリズム問合せ要求処理で指定可能なオプション情報を格納する。具体的には、利用可能なハッシュアルゴリズムの候補を選択する場合の条件として、ハッシュ値のサイズが所定サイズ以上でなければならない場合、ハッシュ値サイズの下限値をオプションとして指定することができる。
【0137】
図15は、各検索サーバ1100、1200、1300が、ハッシュアルゴリズムの問合せ要求元である検索サーバ1100に応答する場合に使用される、ハッシュアルゴリズム問合せ応答パラメータ6400の構成例を示す。
【0138】
本パラメータ6400は、図7で説明したS3にて利用される。ハッシュアルゴリズム問合せ応答パラメータ6400は、応答先マシン識別情報6410、応答元マシン識別情報6420、処理種別6430、処理結果識別情報6440、相互利用可能なハッシュアルゴリズム識別情報6450、利用可能なハッシュアルゴリズム候補識別情報6460を含む。
【0139】
応答先マシン識別情報6410は、ハッシュアルゴリズムに関する問合せを応答すべき検索サーバ1100を識別する情報を格納する。前記同様に、検索サーバ1100のホスト名またはIPアドレス等のアクセス情報が格納される。
【0140】
応答元マシン識別情報6420は、ハッシュアルゴリズムについての問合せを受けた各検索サーバを識別する情報を格納する。前記同様に、各検索サーバのホスト名またはIPアドレス等のアクセス情報が格納される。
【0141】
処理種別6430は、処理の内容を識別するための情報を格納する。処理種別6430には、ハッシュアルゴリズムの問合せに対する応答であることを示す情報が格納される。処理結果識別情報6440には、ハッシュアルゴリズムの問合せについての処理結果を示す情報が格納される。具体的には、処理結果識別情報6440には、問合わせ処理が成功したのか、あるいは失敗したのかという情報が格納される。
【0142】
相互利用可能なハッシュアルゴリズム識別情報6450には、利用可能なハッシュアルゴリズム候補識別情報6340に含まれる複数のハッシュアルゴリズムのうち、問合せを受けた検索サーバにおいても利用可能なハッシュアルゴリズムを特定する情報が格納される。
【0143】
相互利用可能なハッシュアルゴリズム識別情報6450に格納されたハッシュアルゴリズムは、問合せ元検索サーバと問合せ先検索サーバの両方で、利用可能であるため、統合結果の重複検出に利用し得る候補の一つとなる。各検索サーバから返信された、相互利用可能なハッシュアルゴリズムのうち、全ての検索サーバに共通するハッシュアルゴリズムを、統合検索結果から重複を排除するためのハッシュアルゴリズムとして選択できる。
【0144】
利用可能なハッシュアルゴリズム候補識別情報6460には、ハッシュアルゴリズムの問合せを受けた検索サーバにおいて、他に利用可能なハッシュアルゴリズムがある場合、そのハッシュアルゴリズムを識別するための情報が格納される。統合検索に参加する検索サーバが、統合検索を指揮する検索サーバ1100で利用可能なハッシュアルゴリズム(図14の欄6340に登録されるハッシュアルゴリズム)以外のハッシュアルゴリズムを利用可能な場合に、そのハッシュアルゴリズムが欄6460に登録される。
【0145】
なお、この利用可能なハッシュアルゴリズム候補識別情報6460には、相互利用可能なハッシュアルゴリズム識別情報6450に格納されたハッシュアルゴリズムの識別情報は格納されない。
【0146】
図16は、統合検索要求を受けた検索サーバ1100が検索サーバ1100、1200、1300に検索要求を発行する際に指定する、検索要求パラメータ6500の構成例を示す。本パラメータ6500は、図7で説明したS4で利用される。検索要求パラメータ6500は、要求先マシン識別情報6510、要求元マシン識別情報6520、処理種別6530、検索キーワード6540、検索オプション6550を含む。
【0147】
要求先マシン識別情報6510は、検索要求の送信先となる検索サーバを識別する情報(ホスト名またはIPアドレス)を格納する。要求元マシン識別情報6520は、検索要求を発行する検索サーバ1100を識別する情報(ホスト名またはIPアドレス)を格納する。
【0148】
処理種別6530は、処理の内容を識別するための情報を格納する。ここでは、処理種別6530に、検索要求処理を示す情報が格納される。検索キーワード6540は、検索に使用される検索キーワードを格納する。検索オプション6550は、検索に関して指定されたオプション情報を格納する。例えば、オプション情報として、ファイル作成日時、ファイル更新日時、ファイル作成者等の条件を指定可能である。
【0149】
さらに、検索オプション6550は、利用ハッシュアルゴリズム識別情報6551を含む。利用ハッシュアルゴリズム識別情報6551には、ハッシュアルゴリズム問合せ処理により、関係する各検索サーバ間で統一したハッシュアルゴリズムが決定された場合、その決定されたハッシュアルゴリズム(共通ハッシュアルゴリズム)の識別情報を格納する。
利用ハッシュアルゴリズム識別情報6551で指定されたハッシュアルゴリズムを利用して、各検索サーバはハッシュ値を作成し、応答する。また、統合検索要求を受けた検索サーバ1100は、共通のハッシュアルゴリズムで作成されたハッシュ値に基づいて、統合検索結果から重複したエントリを検出し排除する。
【0150】
図17は、検索サーバ1100、1200、1300が、統合検索を行う検索サーバ1100に、検索結果を応答する際に指定する検索結果応答パラメータ6600の構成例を示す。本パラメータ6600は、図7で説明したS7にて利用される。検索結果応答パラメータ6600は、応答先マシン識別情報6610、応答元マシン識別情報6620、処理種別6630、処理結果識別情報6640、総件数6650、応答件数6660、先頭ランク6670、検索結果6680、追加応答要求に必要な情報6690を含む。
【0151】
応答先マシン識別情報6610には、検索結果の送信先となる検索サーバを識別する情報(ホスト名またはIPアドレス)を格納する。応答元マシン識別情報6620は、検索要求を受けた検索サーバを識別する情報(ホスト名またはIPアドレス)を格納する。
【0152】
処理種別6630は、処理の内容を識別するための情報を格納する。ここでは、処理種別6630に、検索結果応答処理を示す情報が格納される。
【0153】
処理結果識別情報6640は、検索の処理結果を識別する情報を格納する。具体的には、処理結果識別情報6640には、検索が成功したのか、あるいは失敗したのかを示す情報が格納される。
【0154】
総件数6650は、指定された条件に合致したファイル及びデータの総件数を格納する。応答件数6660は、指定された条件に合致したファイル及びデータの中で、検索結果応答に含まれている件数を格納する。前記同様に、総件数6650が応答件数6660の上限値以下の場合は、総件数6650と応答件数6660は一致する。総件数6650が応答件数6660の上限値よりも多い場合は、応答件数6660の上限値より多い分は、検索結果応答に含まれない。
【0155】
先頭ランク6670は、検索結果応答の中に含まれるエントリに対して、先頭エントリのランク値を格納する。前記同様に、もしも、ランク1位のエントリが先頭の場合、先頭ランク6670には1が格納される。ランク100位のエントリが先頭の場合、先頭ランク6670には100が格納される。
【0156】
検索結果6680には、検索処理により取得された検索結果が格納される。検索結果6680には、応答件数6680の数だけ、検索結果エントリ6681、6684が格納される。検索結果エントリ6681、6684には、統合用検索結果一時保管テーブル4400の各欄4410−4480に格納されている情報と同じ情報が格納される。
【0157】
さらに、検索結果エントリ6681、6684には、利用ハッシュアルゴリズム識別情報6682、6685と、ハッシュ値6683、6686とが格納される。利用ハッシュアルゴリズム識別情報6682、6685には、検索要求パラメータ6500の利用ハッシュアルゴリズム識別情報6551にて指定された情報をそのまま格納する。
【0158】
ハッシュ値6683、6686には、利用ハッシュアルゴリズム識別情報6682、6685で特定されるハッシュアルゴリズム(共通ハッシュアルゴリズム)を利用して作成されたハッシュ値が格納される。統合検索要求を受けた検索サーバ1100は、そのハッシュ値を利用して、統合検索結果の中から重複エントリを検出して排除する。
【0159】
追加応答要求に必要な情報6690は、総件数6650の値よりも応答件数6660の値が小さい場合に使用する。この場合、追加応答要求に必要な情報6690の欄には、検索結果応答に含まれていないファイルまたはデータの検索結果に関する情報を取得するためのリンク情報が格納される。
【0160】
以上、本実施例による検索システムの構成、管理情報の構成、処理パラメータの構成について詳細に説明した。以降では、本実施例による処理動作を説明する。以下のフローチャートでは、理解のためにループ等を割愛する。従って、図示される各フローチャートは、各処理の概要を示しており、実際のコンピュータプログラムとは相違する。いわゆる当業者であれば、図示されたフローチャートからステップを削除または変更したり、新たなステップをフローチャートに加えたりすることができる。そのような改変されたフローチャートも本発明の範囲に含まれる。
【0161】
図18のフローチャートは、いずれかのクライアントマシンで実行される統合検索要求処理を示している。始めに、クライアントマシンは、統合検索サービスを提供する「統合検索サーバ」としての検索サーバ1100に、検索キーワードを指定して統合検索処理を要求する(S101)。統合検索を要求する場合は、統合検索要求パラメータ6100を指定する。クライアントマシンは、統合検索処理を行う検索サーバ1100から統合検索の結果を受信した後、その統合検索結果をユーザに提供し(S102)、本処理を終了する。なお、統合検索結果の応答を検索サーバ1100から取得する場合には、統合検索結果応答パラメータ6200が使用される。
【0162】
図19及び図20は、検索サーバ1100で実行される統合検索処理のフローチャートを示している。始めに、検索サーバ1100は、クライアントマシンから受信した統合検索要求パラメータ6100の処理種別6130に基づいて、統合検索要求が指定されているか否かを判定する(S201)。もし、統合検索要求が指定されていない場合(S201:NO)、エラー終了する(S202)。
【0163】
統合検索要求が指定されている場合(S201:YES)、検索サーバ1100は、検索サーバ1100にて利用可能なハッシュアルゴリズムを特定する(S203)。具体的には、検索サーバ1100にて管理されている検索インデックス登録ファイル管理テーブル4100内のハッシュアルゴリズム4151、4153を調べることで、検索サーバ1100で利用可能なハッシュアルゴリズムを特定できる。
【0164】
検索サーバ1100は、検索サーバ管理テーブル4300に登録されている各検索サーバに、各検索サーバで利用可能なハッシュアルゴリズムを問い合わせる(S204)。検索サーバ1100は、その問い合わせに際して、ハッシュアルゴリズム問合せ要求パラメータ6300を指定する。
【0165】
検索サーバ1100は、各検索サーバから、ハッシュアルゴリズム問合せ応答パラメータ6400に含まれる情報を取得する。検索サーバ1100は、統一されたハッシュアルゴリズムを利用可能か否かを判断する(S205)。検索サーバ1100は、各検索サーバからの応答に基づいて、統合検索に参加する全検索サーバの中で、統一して利用可能なハッシュアルゴリズムが存在するか否かを判定する。
【0166】
もし、統一したハッシュアルゴリズムを利用可能な場合(S205:YES)、検索サーバ1100は、統合検索に参加する各検索サーバに、使用すべきハッシュアルゴリズムを指定して検索を要求する(S206)。検索を要求する場合、検索サーバ1100は、検索要求パラメータ6500を指定する。検索サーバ1100は、各検索サーバから検索結果応答パラメータ6600に含まれる情報をそれぞれ取得する。
【0167】
統合検索に参加する各検索サーバ間で統一したハッシュアルゴリズムを利用できない場合(S205:NO)、検索サーバ1100は、各検索サーバに対して、ハッシュアルゴリズムを指定せずに検索を要求する(S207)。検索サーバ1100は、検索を要求する場合、検索要求パラメータ6500を指定する。検索サーバ1100は、各検索サーバから検索結果応答パラメータ6600に含まれる情報をそれぞれ取得する。
【0168】
図20に移る。検索結果を取得した後、検索サーバ1100は、取得した各検索結果を統合検索結果一時保管テーブル4400に格納する(S208)。検索サーバ1100は、ハッシュ値を利用して統合検索結果から重複エントリを排除可能か否かを判定する(S209)。
【0169】
統合検索結果から重複エントリを排除できない場合(S209:NO)、S210をスキップしてS211に移る。統合検索結果から重複エントリを排除できる場合(S209:YES)、検索サーバ1100は、統一されたハッシュアルゴリズムにより算出されるハッシュ値を利用して、統合検索結果から重複エントリを検出し、排除する(S210)。
【0170】
検索サーバ1100は、統合検索結果一時保管テーブル4400に登録されている情報を利用して、検索結果をスコア値等に従って整列させ、統合検索の要求元に統合検索結果として提供するためのエントリを抽出する(S211)。
【0171】
具体的には、検索サーバ1100は、統合用検索結果一時保管テーブル4400に登録されているスコア値4440と、検索サーバ管理テーブル4300に登録されている重み付け係数4340の値とを利用して、統合スコア値を算出する。検索サーバ1100は、その統合スコア値を利用して、統合検索結果エントリを整列させる。
【0172】
最後に、検索サーバ1100は、統合検索の要求元であるクライアントマシンに、統合検索結果を応答する(S212)。検索サーバ1100は、統合検索結果応答パラメータ6200を指定することにより、統合検索結果をクライアントマシンに応答する。
【0173】
図21は、統合検索に参加する各検索サーバで実行される、ハッシュアルゴリズムの問合せに対する応答処理のフローチャートである。本処理は、「所定の検索サーバ」としての各検索サーバ1100、1200、1300でそれぞれ実施される。便宜上、以下、検索サーバ1200を例に挙げて説明する。
【0174】
始めに、検索サーバ1200は、ハッシュアルゴリズム問合せ要求パラメータ6300で指定された処理種別6330に基づいて、「ハッシュアルゴリズム問合せ要求」が指定されているか否かを判断する(S301)。もし、ハッシュアルゴリズムの問合わせ要求が指定されていない場合(S301:NO)、本処理はエラー終了する(S302)。
【0175】
ハッシュアルゴリズムの問い合わせ要求が指定されている場合(S301:YES)、検索サーバ1200は、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する(S303)。S303の「自装置」とは、ここでは、検索サーバ1200である。検索サーバ1200は、検索サーバ1200で管理されている検索インデックス登録ファイル管理テーブル4100のハッシュアルゴリズム4151、4153を調べることにより、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する。
【0176】
検索サーバ1200は、問合せ元の検索サーバ1100にて利用可能なハッシュアルゴリズムのうち、検索サーバ1200でも利用可能なハッシュアルゴリズムが有るか否かを判定する(S304)。検索サーバ1200は、ハッシュアルゴリズム問合せ要求パラメータ6300内の利用可能なハッシュアルゴリズム候補識別情報6340で指定されているハッシュアルゴリズムと、検索サーバ1200で利用可能なハッシュアルゴリズム(S303)とを比較し、両者に共通するハッシュアルゴリズムが存在するか否かを調べる。
【0177】
もし、共通のハッシュアルゴリズムが存在する場合(S304:YES)、検索サーバ1200は、そのハッシュアルゴリズムの識別情報を、ハッシュアルゴリズム問合せ応答パラメータ6400内の相互利用可能なハッシュアルゴリズム識別情報6450に登録する(S305)。
【0178】
問い合わせ元の検索サーバ1100で利用可能なハッシュアルゴリズムと、問合せ先の検索サーバ1200で利用可能なハッシュアルゴリズムとの間に共通するハッシュアルゴリズムが存在しない場合(S304:NO)、S305をスキップしてS306に移る。
【0179】
検索サーバ1200は、S304で発見された相互利用可能なハッシュアルゴリズム以外の、検索サーバ1200で利用可能な他のハッシュアルゴリズムが存在するか否かを判定する(S306)。検索サーバ1200は、処理S303において、検索サーバ1200で利用可能なハッシュアルゴリズムであると特定されたハッシュアルゴリズムの中で、処理S305の登録対象にならなかった他のハッシュアルゴリズムが存在するか否かを調べる。
【0180】
もし、他のハッシュアルゴリズムが存在する場合(S306:YES)、検索サーバ1200は、そのハッシュアルゴリズムの識別情報を、ハッシュアルゴリズム問合せ応答パラメータ6400内の利用可能なハッシュアルゴリズム候補識別情報6460に登録する(S307)。もし、他のハッシュアルゴリズムが存在しない場合(S306:YES)、S307をスキップしてS308に移る。
【0181】
検索サーバ1200は、ハッシュアルゴリズムの問合せ結果を、問合せ元の検索サーバ1100に応答する(S308)。検索サーバ1200は、ハッシュアルゴリズム問合せ応答パラメータ6400を指定して、問合せ結果を応答する。
【0182】
図22は、各検索サーバで実行される検索応答処理のフローチャートを示す。本処理は図21で述べた処理と同様に、各検索サーバ1100、1200、1300でそれぞれ実施される。ここでは便宜上、検索サーバ1200を例に挙げて説明する。
【0183】
始めに、検索サーバ1200は、検索要求パラメータ6500の中で指定された処理種別6530を調べ、「検索要求」が指定されているか否かを判定する(S401)。もし、指定されていない場合(S401:NO)、本処理はエラー終了する(S402)。指定されている場合(S401:YES)、検索サーバ1200は、指定された検索キーワードで検索処理を実行し、その検索結果を取得する(S403)。検索サーバ1200は、検索要求パラメータ6500内の検索キーワード6540及び検索オプション6550を利用して、検索処理を行う。
【0184】
検索サーバ1200は、検索要求パラメータ6500の検索オプション6550内で、利用可能ハッシュアルゴリズム識別情報6551が指定されているかどうかを調べる(S404)。もし、指定されていない場合(S404:NO)、S405をスキップしてS406に移る。
【0185】
指定されている場合(S404:YES)、検索サーバ1200は、取得した検索結果の各エントリに、各エントリに含まれるファイルのハッシュ値とハッシュ値の生成に利用したハッシュアルゴリズム識別情報とを、追加登録する(S405)。検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100に登録されているファイルのハッシュアルゴリズム4150に格納されている情報に基づいて、ハッシュ値及びハッシュアルゴリズム識別情報を取得する。
【0186】
検索サーバ1200は、検索結果を要求元の検索サーバ1100に応答する(S406)。検索サーバ1200は、検索結果応答パラメータ6600を指定して、検索結果を応答する。
【0187】
図23は、検索インデックス更新処理のフローチャートを示す。本処理は、各検索サーバ1100、1200、1300でそれぞれ実施される。便宜上、以下、検索サーバ1200を例に挙げて説明する。
【0188】
始めに、検索サーバ1200は、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する(S501)。S501における「自装置」とは、ここでは検索サーバ1200である。検索サーバ1200は、検索サーバ1200で管理されている検索インデックス登録ファイル管理テーブル4100内のハッシュアルゴリズム4151、4153を調べることにより、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する。
【0189】
検索サーバ1200は、検索インデックスの更新対象であるファイルサーバと、更新対象のルートディレクトリとを特定する(S502)。次に、検索サーバ1200は、検索インデックス更新対象ファイルを全てクローリングし、インデクシングが完了したか否かを判定する(S503)。全てのファイルについてクローリング等が終了している場合(S503:YES)、本処理を終了する。
【0190】
全ファイルについてのクローリング及びインデクシング処理が完了していない場合(S503:NO)、検索サーバ1200は、クローリング対象ファイルが格納されているファイルサーバにアクセスし、検索インデックスの更新対象範囲に格納されている任意のファイルを一つ取得する(S504)。
【0191】
検索サーバ1200は、S504で取得されたファイルに関する情報を検索インデックスに新規登録する必要があるのか、または、S504で取得されたファイルに関する情報を検索インデックス上で更新させる必要があるかを判定する(S505)。
【0192】
具体的には、検索サーバ1200は、取得したファイルが前回の検索インデックス更新処理時から更新されているか否か、あるいは、取得したファイルが前回の検索インデックス更新処理時の後に新しく記憶されたファイルであるか否か、といった観点を調べる。新規登録または更新が不要な場合(S505:NO)、S503に戻る。新規登録または更新が必要な場合(S505:YES)、図24に示すS506に移る。検索サーバ1200は、S504で取得したファイル(対象ファイル)の情報を、検索インデックスに新規登録するのか、または、検索インデックスに登録済みの情報を更新するのかを判断する(S506)。
【0193】
新規登録を行うと判断した場合、検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100に、対象ファイルのエントリを新たに作成し、対象ファイルの情報を登録する(S507)。
【0194】
更新を行うと判断した場合、検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100に記憶されている対象ファイルのエントリを特定し、必要な情報を更新する(S508)。検索サーバ1200は、対象ファイルを解析して、検索インデックス管理テーブル4200に、検索インデックス情報を登録する(S509)。検索サーバ1200は、利用可能なハッシュアルゴリズムが存在するかどうかを確認する(S510)。検索サーバ1200は、S501の特定結果に基づいて、検索サーバ1200で利用可能なハッシュアルゴリズムが一つ以上存在するかどうかを判断する。利用可能なハッシュアルゴリズムが一つも存在しない場合(S510:NO)、S503に戻る。
【0195】
利用可能なハッシュアルゴリズムが存在する場合(S510:YES)、検索サーバ1200は、利用可能な全てのハッシュアルゴリズムを用いて、対象ファイルのデータから、それぞれのハッシュ値を生成し、生成された各ハッシュ値を検索インデックス登録ファイル管理テーブル4100に登録する(S511)。
【0196】
利用可能なハッシュアルゴリズムが複数ある場合、検索サーバ1200は、全てのハッシュアルゴリズムそれぞれに対応するハッシュ値を生成して、検索インデックス登録ファイル管理テーブル4100に登録する。
【0197】
上述の通り構成される本実施例では、検索アルゴリズムまたは/及び検索インデックスの更新タイミング等がそれぞれ異なる複数の検索サーバを疎に結合したシステムにおいて、統合検索を行う場合に、各検索サーバで共通に使用されるハッシュアルゴリズムを決定する。
【0198】
従って、本実施例では、同一の検索条件に関する各検索サーバからの検索結果を統合してなる統合検索結果の中から、重複したエントリを検出して排除することができる。これにより、ユーザは、複数の検索サーバに跨る統合検索結果を無駄なく入手することができる。ユーザは、重複エントリの取り除かれた統合結果を用いて、目的のファイルを比較的簡単に発見することができ、ユーザの使い勝手が向上する。
【0199】
本実施例では、疎結合した複数の検索サーバ1100、1200、1300のうち、統合検索要求を受け付けた検索サーバ1100が、各検索サーバ1100、1200、1300と交渉することにより、各検索サーバ1100、1200、1300間で共通して利用するハッシュアルゴリズムを取り決め、実際の検索は各検索サーバ1100、1200、1300でそれぞれ行われる。さらに、本実施例では、各検索サーバ1100、1200、1300は、取り決められたハッシュアルゴリズムを用いてハッシュ値を作成し、統合検索要求を受け付けた検索サーバ1100は、ハッシュ値を用いて統合検索結果の中から重複したエントリを検出し、それを取り除く。本実施例では、ハッシュ値の作成と、ハッシュ値を利用した重複の検出及び排除とが区別されている。これにより、本実施例では、疎結合された複数の検索サーバ間で役割を分担することができる。
【実施例2】
【0200】
図25,図26を参照して第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に相当する。従って、以下の各実施例では、第1実施例との相違点を中心に説明する。
【0201】
上述した第1実施例は、統合検索要求を受けた検索サーバ1100と、他の検索サーバ1100、1200、1300との間で、統合検索処理を行うたびに、統合検索結果の中から重複エントリを排除するために利用するハッシュアルゴリズムについて折衝する。
【0202】
しかし、各検索サーバ1100、1200、1300間で共通に利用されるハッシュアルゴリズムは、そう頻繁に変更されるものではない。通常の場合、一度決定された後は、同じハッシュアルゴリズムが比較的長期間使用されると考えられる。
【0203】
そこで、本実施例では、最初に取得したハッシュアルゴリズムの情報を、統合検索要求を受け付ける検索サーバ1100内にキャッシュとして保管しておく。それ以後、統合検索要求が発行された場合は、キャッシュされたハッシュアルゴリズムの情報を用いて、共通ハッシュアルゴリズムを決定し、統合検索処理を実行する。従って、本実施例では、統合検索要求を受け付けるたびに各検索サーバ間でハッシュアルゴリズムについて折衝する必要がなく、統合検索開始時のオーバヘッドを低減することができる。
【0204】
各検索サーバ1100、1200、1300からそれぞれ取得される一つまたは複数のハッシュアルゴリズムを検索サーバ1100内にキャッシュするためには、検索サーバ1100の有する検索サーバ管理テーブル4300の構成を変更し、さらに、検索サーバ1100で実行される統合検索処理の一部を変更する必要がある。
【0205】
図25は、本実施例で使用される検索サーバ管理テーブル4300の構成例である。検索サーバ管理テーブル4300には、図10で述べた各欄4310、4320、4330、4340のほかに、利用可能なハッシュアルゴリズムの識別情報4350を管理する欄が追加されている。
【0206】
利用ハッシュアルゴリズム識別情報4350には、統合検索に参加する各検索サーバ1100、1200、1300がそれぞれ利用可能なハッシュアルゴリズムを識別するための情報が格納される。一つの検索サーバについて、複数のハッシュアルゴリズム識別情報を格納することもできる。例えば、図25において、検索サーバID4310が1番のエントリには、利用ハッシュアルゴリズム識別情報4350として、SHA-1及びSHA-2が格納されている。統合検索処理において、各検索サーバから取得された利用可能ハッシュアルゴリズムの情報に基づいて、テーブル4300に利用可能なハッシュアルゴリズムの識別情報が登録される。
【0207】
図26は、検索サーバ1100で実行される統合検索処理の変更内容を示す。本処理と、図19に示す統合検索処理とは、以下の点で異なる。第一の相違点は、S203の後、検索サーバ1100は、検索サーバ管理テーブル4300内に、利用可能なハッシュアルゴリズム情報が存在するか否かを判定する点である(S213)。検索サーバ1100は、検索サーバ管理テーブル4300内の利用ハッシュアルゴリズム識別情報4350のエントリに、ハッシュアルゴリズム識別情報が登録されているか否かを確認する。
【0208】
利用可能なハッシュアルゴリズム情報が検索サーバ管理テーブル4300に記憶されている場合(S213:YES)、検索サーバ1100は、ハッシュアルゴリズムの折衝処理S204を省略して、S205に移る。利用可能なハッシュアルゴリズム情報が検索サーバ管理テーブル4300に記憶されていない場合(S213:NO)、検索サーバ1100は、第1実施例のように、ハッシュアルゴリズムの折衝処理を行うべく、S204に移る。
【0209】
第二の相違点は、S204の後、検索サーバ1100は、S204にて取得したハッシュアルゴリズム識別情報を検索サーバ管理テーブル4300に登録する点である(S214)。具体的に、検索サーバ1100は、利用ハッシュアルゴリズム識別情報4350の欄に、他の検索サーバ1100、1200、1300からそれぞれ取得したハッシュアルゴリズム識別情報を格納する。一つの検索サーバについて複数のハッシュアルゴリズム識別情報が取得された場合は、全てのハッシュアルゴリズム識別情報を検索サーバ管理テーブル4300に登録する。S214の後はS205に移る。
【0210】
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、最初の統合検索時に取得したハッシュアルゴリズム識別情報を保持して、共通ハッシュアルゴリズムを決定し、統合検索を行う。従って、統合検索要求を受信するたびに、各検索サーバ1100、1200、1300からハッシュアルゴリズムについての情報を取得する必要が無く、統合検索のオーバヘッドを短縮できる。
【実施例3】
【0211】
図27,図28を参照して第3実施例を説明する。上述した第1実施例は、統合検索要求を受けた検索サーバ1100と他の検索サーバ1100、1200、1300との間で、統合検索処理を行うたびにハッシュアルゴリズムについて折衝する。しかし、第2実施例で述べたように、ハッシュアルゴリズムは頻繁に変更されるものではない。そこで、本実施例では、以下に述べるように、統合検索サービスを提供するシステムの構築時において、検索サーバ1100が、各検索サーバ1100、1200、1300で利用可能なハッシュアルゴリズムをそれぞれ取得し、検索サーバ1100内に事前に登録する。
【0212】
検索サーバ管理テーブル4300については、第2実施例の図25にて説明した内容と同じ変更を行う必要がある。変更内容は図25と同じであるため、説明は省略する。検索サーバ1100における統合検索制御プログラム1125については、ハッシュアルゴリズムを事前に登録するための処理を新たに追加する。
【0213】
図27は、検索サーバ1100の有するコンピュータプログラムの構成を示す。図27は、図3に示す構成に加えて、統合検索制御プログラム1125内に、ハッシュアルゴリズム事前折衝サブプログラム1178が新たに追加されている。
【0214】
ハッシュアルゴリズム事前折衝サブプログラム1178は、統合検索サービスを提供するためのシステム構築時において、各検索サーバ1100、1200、1300で利用されているハッシュアルゴリズムを事前に調査し、その調査結果を検索サーバ1100内に格納させるための処理である。
【0215】
図28は、検索サーバ1100で実行される、ハッシュアルゴリズム事前折衝処理のフローチャートを示す。本処理は、統合検索サービスを提供するシステムを構築する場合において、各検索サーバ1100、1200、1300の設定作業を行う際に、実施される。
【0216】
始めに、検索サーバ1100は、検索サーバ1100にて利用可能なハッシュアルゴリズムを特定する(S601)。検索サーバ1100の管理している検索インデックス登録ファイル管理テーブル4100内のハッシュアルゴリズム4151、4153等を調べることにより、特定することができる。
【0217】
検索サーバ1100は、検索サーバ管理テーブル4300に登録している全検索サーバ1100、1200、1300に対して、ハッシュアルゴリズムを問い合わせる(S602)。この問合せには、ハッシュアルゴリズム問合せ要求パラメータ6300が使用される。
【0218】
検索サーバ1100は、ハッシュアルゴリズム問合せ応答パラメータ6400に含まれる情報を、問合せ先の各検索サーバ1100、1200、1300から取得する。検索サーバ1100は、各ハッシュアルゴリズム識別情報を検索サーバ管理テーブル4300に登録する(S603)。
【0219】
本実施例は上述のように構成されるため、第1実施例と同様の効果を奏する。さらに、本実施例では、統合検索サービスを提供するシステム構築時に、各検索サーバからハッシュアルゴリズムに関する情報を収集して保持する。従って、統合検索要求を受けるたびにハッシュアルゴリズムについての折衝処理を行う必要がなく、統合検索のオーバヘッドを短縮できる。
【実施例4】
【0220】
図29を参照して第4実施例を説明する。上述した第1実施例は、各検索サーバ1100、1200、1300における検索インデックス更新処理時に、検索対象ファイルデータについてのハッシュ値を作成する。これに対し、本実施例では、以下に述べるように、検索処理時にハッシュ値を作成させる。従って、本実施例では、検索インデックス更新処理のオーバヘッドを低減でき、さらに、ハッシュ値を格納するための領域を不要にできる。
【0221】
本実施例では、検索サーバが検索要求を受けた際、検索条件に合致するファイルデータを探し出すと共に、そのファイルデータについてのハッシュ値をいわゆるオンデマンドで作成する。
【0222】
図29は、検索サーバにおける検索応答処理のフローチャートを示す。本処理は、図22に示すS401−S406を備えており、さらに、S404とS405との間に、新たにS407−S409が追加される。以下、図22と同様に、主語を検索サーバ1200とする。
【0223】
ハッシュアルゴリズムが指定された検索要求である場合(S404:YES)、検索サーバ1200は、指定されたハッシュアルゴリズムを用いてハッシュ値が作成されているか否かを判定する(S407)。検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100の対象ファイルのハッシュアルゴリズム4150の欄に、対象ファイルのハッシュ値が登録されているかどうかを調べる。
【0224】
ハッシュ値が作成済みの場合(S407:YES)、S405に移る。これに対し、ハッシュ値が作成されていない場合(S407:NO)、検索サーバ1200は、対象ファイルデータを取得する(S408)。検索サーバ1200は、検索インデックスを更新するためのクローリングにより取得されたファイルデータを利用してもよいし、または、ファイルサーバから対象ファイルデータを改めて取得してもよい。
【0225】
対象ファイルデータを取得した後、検索サーバは、指定されたハッシュアルゴリズムを利用して、対象ファイルデータからハッシュ値を作成する(S409)。検索サーバ1200は、ハッシュ値を作成すると、S405に移る。
【0226】
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、検索要求を受領した時点で、検索条件に合致するファイルのハッシュ値をその場で生成する。従って、本実施例では、検索インデックスの更新処理時にハッシュ値を作成したり、そのハッシュ値を保存したりする必要がない。
【実施例5】
【0227】
図30を参照して第5実施例を説明する。上述した第4実施例は、各検索サーバ1100、1200、1300での検索処理時に、検索対象ファイルについてハッシュ値を作成する。しかし、各検索サーバの処理負荷またはマシン性能等によっては、いわゆるオンデマンドでのハッシュ値作成が難しい場合もあり得る。
【0228】
そこで、本実施例では、統合検索要求を受けた検索サーバ1100において、各検索サーバ1100、1200、1300でそれぞれ検索されたファイルについてのハッシュ値を作成する。これにより、本実施例では、各検索サーバ1100、1200、1300における検索処理時のオーバヘッドを低減したり、ハッシュ値を格納するための領域を削減したりできる。
【0229】
図30は、検索サーバ1100における統合検索処理のフローチャートの一部を示す。フローチャートは、図20に示すフローチャートに対応する。相違点を中心に述べる。
【0230】
検索サーバ1100は、統合検索結果一時保管テーブル4400のエントリに格納されているファイルデータを取得する(S213)。検索サーバ1100は、統合検索結果一時保管テーブル4400のファイルパス名4450に基づいて、ファイルサーバからファイルデータを直接取得してもよい。または、検索サーバ1100内で、対象ファイルのキャッシュデータを保管している場合は、そのキャッシュデータを利用してもよい。
【0231】
検索サーバ1100は、各検索サーバで共通に利用可能なハッシュアルゴリズムを用いて、S213で取得した各ファイルデータのハッシュ値を作成し、統合検索結果一時保管テーブル4400に登録する(S214)。検索サーバ1100は、統合検索結果一時保管テーブル4400内のハッシュアルゴリズム4460欄、及びハッシュ値4470欄に、共通ハッシュアルゴリズムの識別情報、及び作成したハッシュ値を格納する。
【0232】
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、検索サーバ1100は、統合検索要求を受けた時に、検索条件に合致するファイルのハッシュ値をその場で生成する。従って、本実施例では、処理負荷が高くなりすぎるために各検索サーバでのハッシュ値作成が難しい場合、統合検索要求を受けた検索サーバにて一括してハッシュ値を作成することができる。
【0233】
さらに、本実施例では、各検索サーバの負荷状況に応じて、ハッシュ値作成の分担を変えることができる。例えば、負荷が低い検索サーバは、その検索サーバ内でハッシュ値を作成したり、負荷が高い検索サーバは、統合検索要求を受けた検索サーバ(または他の検索サーバ)でハッシュ値を作成したりすることもできる。
【実施例6】
【0234】
図31,図32を参照して第6実施例を説明する。上述した第5実施例は、検索サーバ1100における統合検索処理時に、その検索サーバ1100が、対象ファイルデータのハッシュ値を作成する。
【0235】
しかし、統合検索要求を受けた検索サーバ1100が、対象ファイルデータを格納しているファイルサーバにアクセスできない可能性もある。この場合、統合検索要求を受けた検索サーバ1100は、検索条件に合致するファイルデータを取得できない。
【0236】
そこで、ファイルデータを利用するのではなく、各検索サーバが検索結果の一部として提供する、検索キーワードを含有した文字列を利用する。本実施例では、検索キーワード含有文字列に基づいてハッシュ値を作成し、統合検索結果から重複エントリを検出して排除するために利用する。これにより、統合検索要求を受けた検索サーバ1100がファイルサーバにアクセスできない場合、または、処理負荷が高いために各検索サーバ1100、1200、1300でハッシュ値を作成することが難しい場合に、統合検索結果から重複エントリを見つけて排除することができる。
【0237】
図31は、統合検索結果一時保管テーブル4400を示す。図31の統合検索結果一時保管テーブル4400は、図11に示す統合検索結果一時保管テーブル4400と比べて、検索キーワード含有文字列4480の中に部分文字列4481と部分ハッシュ値4482とが新たに追加されている点で相違する。
【0238】
部分文字列4481は、図11に示す統合検索結果一時保管テーブル4400内の検索キーワード含有文字列4480に元々格納されている情報である。部分ハッシュ値4482には、部分文字列4481から作成されるハッシュ値が格納される。
【0239】
部分ハッシュ値4482は、統合検索結果一時保管テーブル4400のハッシュアルゴリズム4440に登録されているハッシュアルゴリズムを利用して作成してもよい。または、検索サーバ1100で利用可能な任意のハッシュアルゴリズムを一つ選択し、そのハッシュアルゴリズムを利用して作成してもよい。
【0240】
検索キーワード含有文字列4480に格納される、部分文字列4481と部分ハッシュ値4482の組は、各エントリに対して複数個保管することができる。なお、検索キーワード含有文字列4480の欄で、部分文字列4481または部分ハッシュ値4482に空欄が生じる場合、null値を格納すればよい。
【0241】
図32は、検索サーバ1100で実行される統合検索処理のフローチャートの一部を示す。本処理は、検索結果に含まれる検索キーワード含有文字列についてのハッシュ値を、オンデマンドに作成する。
【0242】
図32において、S208の後、検索サーバ1100は、検索サーバ1100で利用可能なハッシュアルゴリズムを利用して、統合検索結果一時保管テーブル4400のエントリに格納されている部分文字列のハッシュ値を作成し、それを部分ハッシュ値として、統合検索結果一時保管テーブル4400に登録する(S220)。
【0243】
ここで、統合用検索結果一時保管テーブル4400のエントリにおいて、部分文字列4481に複数の部分文字列が格納されている場合、検索サーバ1100は、それら全ての部分文字列について部分ハッシュ値をそれぞれ作成し、部分ハッシュ値4482欄に格納する。
【0244】
検索サーバ1100は、部分ハッシュ値を用いて、統合検索結果から重複したエントリを検出し、それを排除する(S221)。
【0245】
検索サーバ1100は、全ての部分ハッシュ値同士が合致するエントリを、重複エントリであると判断することができる。または、部分ハッシュ値が一定割合以上合致するエントリを、準重複エントリであると判断してもよい。例えば、n個の部分ハッシュ値のうちm(0<m<n)個以上の部分ハッシュ値が一致する2つのエントリは、重複エントリであると判定する構成としてもよい。
【0246】
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、ファイルデータからハッシュ値を求めるのではなく、検索キーワードを含む文字列(つまり、ファイルデータの一部分)からハッシュ値を求めて、重複エントリの検出に使用する。従って、検索サーバ1100がファイルサーバにアクセスできない場合、または、検索サーバ1100、1200、1300間で共通のハッシュアルゴリズムを決定できなかった場合でも、統合検索結果の中から重複したエントリを見つけて排除することができる。
【実施例7】
【0247】
図33を参照して第7実施例を説明する。本実施例では、統合検索結果の中から重複したエントリを検出した場合、その重複エントリに対応する検索インデックスを管理する検索サーバに、重複エントリが有ることを通知する。
【0248】
図33は、重複エントリを発見した場合の処理である。代表検索サーバ1100は、統合検索要求を受け付けて、統合検索を行うための検索サーバである。検索サーバ(1100、1200、1300)は、統合検索に参加する検索サーバであって、代表検索サーバ1100からの検索要求に応じて検索する検索サーバである。
【0249】
代表検索サーバ1100は、クライアントマシンから統合検索要求を受信すると、各検索サーバに検索要求を発行する(S701)。各検索サーバは、検索要求に従って検索し、検索結果を代表検索サーバ1100に返す(S702)。代表検索サーバ1100は、ハッシュ値を用いて、統合検索結果の中から重複エントリを検出する(S703)。
【0250】
代表検索サーバ1100は、重複エントリの取り除かれた統合検索結果を、クライアントマシンに送信する(S704)。さらに、代表検索サーバ1100は、重複エントリの発見された検索サーバに、重複エントリが発見された旨を通知する(S705)。その通知を受けた検索サーバは、重複エントリであることを確認する(S706)。検索サーバは、ファイルサーバに指示して、重複エントリに対応するファイルを削除させることもできる。
【0251】
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、統合検索結果から重複エントリが検出された場合、その旨を検索サーバに通知するため、重複したファイルを削除させることもできる。
【0252】
なお、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、複数の検索サーバ間で共通するハッシュアルゴリズムが見つからない場合、共通ハッシュアルゴリズムとなり得るハッシュアルゴリズムを備えていない検索サーバに、その共通ハッシュアルゴリズムとなり得るハッシュアルゴリズムを送信してインストールさせる構成としてもよい。
【技術分野】
【0001】
本発明は、検索方法、統合検索サーバ及びコンピュータプログラムに関する。
【背景技術】
【0002】
全文検索サービスでは、コンピュータシステムに格納されているファイルデータを検索サーバが解析して、検索インデックスを事前に作成する。検索サーバは、検索インデックスを利用して、ユーザに検索サービスを提供する。ユーザは、取得したいファイルを検索するための検索クエリを検索サーバに送信し、その検索結果をもとに対象ファイルにアクセスする。コンピュータシステムに保管されるファイルの数は年々増加する一方であるため、ユーザにとって全文検索サービスは、重要なサービスとなっている。
【0003】
ところで、検索サーバが複数台存在する場合、ユーザは、各検索サーバに個別に検索クエリを出し、検索結果を各検索サーバから個別に取得する必要がある。このため、ユーザの使い勝手が悪い。
【0004】
そこで、近年、独立した複数の検索サーバに一回だけ検索要求を発行するだけで、各検索サーバからの検索結果を統合的に取得することのできる、統合検索サービスが提供されている。
【0005】
例えば、OpenSearchという、統合検索のための仕様が公開されており、その仕様を利用した統合検索サービスが提供されている。統合検索サービスでは、各検索サーバはそれぞれ独立して運用される。その一方、各検索サーバは、OpenSearchのような統一した標準インタフェースに基づく検索要求を受け付けることができる。これにより、複数の検索サーバを疎に結合した統合検索が可能となる。疎に結合した統合検索では、各検索サーバが利用する検索アルゴリズムまたは検索インデックスの更新契機等はそれぞれ異なる。
【0006】
これに対し、複数の検索サーバを一体的に運用することで、密に結合した統合検索サービスを提供する形態もある。密に結合した統合検索サービスでは、各検索サーバがそれぞれ同一の検索アルゴリズムを使用しており、検索インデックスもシステム内で統一して更新される。複数の検索サーバを密に結合させた統合検索サービスは、一台の検索サーバと見ることもできる。
【0007】
さらに、検索結果の中から重複した内容を除外する機能を有する検索サーバも知られている。具体的には、検索サーバが、検索結果の各エントリから生成したハッシュ値に基づいて重複エントリを検出し、重複エントリを検索結果から削除する(特許文献1)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】米国特許第7,366,718号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
前記文献に記載の技術は、各検索サーバ内において重複エントリを削除できるだけであり、複数の検索サーバからの各検索結果を統合した統合検索結果について、重複エントリを検出することは事実上難しいという問題がある。
【0010】
複数の検索サーバを疎に結合させた形態の統合検索サービスの場合、重複エントリを検出するために利用するハッシュアルゴリズムが、各検索サーバでそれぞれ異なる可能性があるためである。各検索サーバで使用されるハッシュアルゴリズムが異なる場合、ハッシュ値に基づいて重複エントリを検出することは極めて難しい。従って、前記文献に記載の技術では、複数の検索サーバが疎結合したシステムにおいて、統合検索結果に含まれる重複エントリを検出することはできない。
【0011】
上述の課題は、重複エントリ検出のために利用するハッシュアルゴリズムを、各検索サーバ間で統一することが困難であることに起因する。既に、様々な方式のハッシュアルゴリズムが存在する上に、今後も様々なハッシュアルゴリズムが新たに登場し、検索サーバに実装されていくであろう。さらに、各検索サーバにおいて、ハッシュアルゴリズムに求められる要件もそれぞれ異なる。
【0012】
上記の理由により、それぞれ独立して運用される複数の検索サーバ間で、ハッシュアルゴリズムを統一させるのは事実上困難である。従って、前記文献に記載の従来技術を、複数の検索サーバが疎に結合した統合検索サービスに適用することはできない。
【0013】
そこで、本発明の目的は、複数の検索サーバが疎に結合したシステムにおいて、各検索結果から重複データを検出して排除できるようにした検索方法、統合検索サーバ及びコンピュータプログラムを提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【0014】
上記課題を解決すべく、本発明の第1観点に従う検索方法は、複数の検索サーバを含むコンピュータシステムを用いて検索する方法であって、コンピュータシステムは、それぞれ独立して動作する複数の検索サーバを疎結合させて構成されており、複数の検索サーバに含まれる統合検索サーバは、複数の検索サーバに含まれる複数の所定の検索サーバにそれぞれ検索させるための統合検索要求を受信すると、各所定の検索サーバが共通して利用可能な、重複を検出するための重複検出用情報を決定し、各所定の検索サーバに統合検索要求に対応する検索要求を発行し、各所定の検索サーバは、検索要求に基づいて担当のデータ群を検索し、その検索結果に、決定された重複検出用情報を用いて作成される、重複を検出するための重複検出値を含めて、統合検索サーバに送信し、統合検索サーバは、各所定の検索サーバから受信する検索結果の中から、各重複検出値に基づいて重複データを検出し、各検索結果の中から検出された重複データを取り除いて統合検索結果を作成し、その統合検索結果を統合検索要求の発行元に提供する。
【0015】
第2観点では、第1観点において、各所定の検索サーバは、担当のデータ群について、複数の重複検出用情報毎の重複検出値をそれぞれ予め記憶しており、記憶された各重複検出値のうち、統合検索サーバにより決定された重複検出用情報に対応する重複検出値を検索結果に含めて統合検索サーバに送信する。
【0016】
第3観点では、第2観点において、各所定の検索サーバは、担当のデータ群を検索するために使用する検索インデックスを更新する場合に、複数の重複検出用情報毎に重複検出値をそれぞれ作成して保存する。
【0017】
第4観点では、第1観点において、統合検索サーバは、各所定の検索サーバで利用可能な重複検出用情報に関する情報を、各所定の検索サーバから取得して保持しており、統合検索要求を受信した場合、保持された各重複検出用情報に関する情報に基づいて、各所定の検索サーバが共通に利用可能な重複検出用情報を決定する。
【0018】
第5観点では、第1観点において、統合検索サーバは、コンピュータシステムが構築される場合に、各所定の検索サーバで利用可能な重複検出用情報に関する情報を、各所定の検索サーバから取得して保持しており、統合検索要求を受信した場合、保持された各重複検出用情報に関する情報に基づいて、各所定の検索サーバが共通に利用可能な重複検出用情報を決定する。
【0019】
第6観点では、第1観点において、各所定の検索サーバは、統合検索サーバから検索要求を受信した場合に、決定された重複検出用情報による重複検出値を作成し、その重複検出値を検索結果に含めて統合検索サーバに送信する。
【0020】
第7観点では、第1観点において、重複検出用情報はハッシュアルゴリズムであり、重複検出値はハッシュ値である。
【0021】
本発明は、それぞれ独立して動作する複数の検索サーバを疎結合して構成されるコンピュータシステムを用いて検索するための統合検索サーバ、または、コンピュータを統合検索サーバとして機能させるためのコンピュータプログラムとして、把握できる。なお、上記観点の組合せ以外の組合せも本発明の範囲に含まれる。コンピュータプログラムは、通信媒体または記録媒体を介して、流通させることができる。
【図面の簡単な説明】
【0022】
【図1】図1は、コンピュータシステムの全体構成を示す図である。
【図2】図2は、検索サーバのハードウェア構成を示す図である。
【図3】図3は、検索サーバに記憶されているコンピュータプログラムの構成を示す図である。
【図4】図4は、検索サーバに記憶されているテーブルの構成を示す図である。
【図5】図5は、ファイルサーバのハードウェア構成を示す図である。
【図6】図6は、クライアントマシンのハードウェア構成を示す図である。
【図7】図7は、統合検索の一連の処理を模式的に示す図である。
【図8】図8は、検索インデックスに登録されるファイルを管理するためのテーブルを示す。
【図9】図9は、検索インデックスを管理するためのテーブルを示す。
【図10】図10は、検索サーバを管理するためのテーブルを示す。
【図11】図11は、統合検索結果を一時的に保管するためのテーブルを示す。
【図12】図12は、統合検索要求パラメータの構成例を示す。
【図13】図13は、統合検索結果の応答パラメータの構成例を示す。
【図14】図14は、ハッシュアルゴリズム問い合わせ要求パラメータの構成例を示す。
【図15】図15は、ハッシュアルゴリズム問い合わせの応答パラメータの構成例を示す。
【図16】図16は、検索要求パラメータの構成例を示す。
【図17】図17は、検索結果の応答パラメータの構成例を示す。
【図18】図18は、統合検索要求処理を示すフローチャート。
【図19】図19は、統合検索処理を示すフローチャート。
【図20】図20は、図19に続くフローチャート。
【図21】図21は、ハッシュアルゴリズムの問い合わせに応答する処理を示すフローチャート。
【図22】図22は、検索して検索結果を応答する処理を示すフローチャート。
【図23】図23は、検索インデックスを更新する処理を示すフローチャート。
【図24】図24は、図23に続くフローチャート。
【図25】図25は、第2実施例に係り、検索サーバを管理するためのテーブルの構成例を示す。
【図26】図26は、統合検索処理の一部を示すフローチャート。
【図27】図27は、第3実施例に係り、検索サーバの有するコンピュータプログラムの構成例を示す。
【図28】図28は、ハッシュアルゴリズムを事前に折衝する処理を示すフローチャート。
【図29】図29は、第4実施例に係り、検索応答処理を示すフローチャート。
【図30】図30は、第5実施例に係り、統合検索処理の一部を示すフローチャート。
【図31】図31は、第6実施例に係り、統合検索結果を一時的に保管するためのテーブルを示す。
【図32】図32は、統合検索処理の一部を示すフローチャート。
【図33】図33は、第7実施例に係り、重複エントリを検索サーバに通知する処理を示すフローチャート。
【符号の説明】
【0023】
1100:統合検索サーバ/検索サーバ、1200,1300:検索サーバ、2100,2200,2300:ファイルサーバ、3100,3200,3300:クライアントマシン、1124:検索制御プログラム、1125:統合検索制御プログラム、5100:統合検索制御部、5110,5210,5310:検索制御部、5120,5220,5320:検索インデックス
【発明を実施するための最良の形態】
【0024】
以下、図面に基づいて、本発明の実施の形態を説明する。本実施形態では、検索サーバが統合検索結果から重複した内容を検出して排除するための処理方式を説明する。以下に詳細に述べるように、本実施形態では、検索を行う各検索サーバにて使用するハッシュアルゴリズムを事前に取り決め、その取り決めたハッシュアルゴリズムにより算出されるハッシュ値を検索結果に含めて統合検索サーバに送信する。統合検索サーバは、ハッシュ値を用いて重複エントリを検出し、取り除く。
【実施例1】
【0025】
図1は、本実施例によるシステム構成を例示する説明図である。通信ネットワーク100を介して、複数の検索サーバ1100、1200、1300と、複数のファイルサーバ2100、2200、2300と、複数のクライアントマシン3100、3200、3300とが接続されている。さらに、コンピュータプログラムを配信するためのサーバ7000を通信ネットワーク100に接続してもよい。
【0026】
本システムでは、各ファイルサーバに格納されているデータの検索インデックスを、対応する検索サーバが作成する。各検索サーバは、その検索インデックスを利用して、クライアントマシンにファイルサーバ上のファイルについての検索サービスを提供する。さらに、検索サーバは、クライアントマシンに、複数の検索サーバからの検索結果をまとめて提供する統合検索サービスも提供する。
【0027】
具体的なサービス内容は次の通りである。まず、クライアントマシンは、ファイルサーバにファイル(データファイル)を登録することができる。ファイルサーバは、登録されたファイルを、当該ファイルサーバに接続された外部記憶装置に格納し保管する。検索サーバは、ファイルサーバに格納されたファイルをクローリングによって取得し、検索インデックスを作成する。検索サーバは、検索インデックスを、当該検索サーバに接続された外部記憶装置に格納し保管する。
【0028】
クライアントマシンは、検索サーバに、検索クエリを指定して検索要求を送信することができる。検索サーバは、その検索クエリの条件に合致するファイルを、当該検索サーバの有する検索インデックスを利用して抽出し、その検索結果をクライアントマシンに提供する。
【0029】
さらに、クライアントマシンは、検索サーバに、検索クエリを指定して統合検索要求を送信することができる。検索サーバは、その検索クエリの条件に合致するファイルを、当該検索サーバが有する検索インデックスを利用して抽出する。さらに、検索サーバは、統合検索可能な他の検索サーバにも検索要求を送信し、各検索サーバから応答される検索結果を統合検索結果として、クライアントマシンに提供する。
【0030】
クライアントマシンは、統合検索結果に基づいて、アクセス対象ファイルを選定することができる。クライアントマシンは、統合検索結果に格納されているファイルアクセス用のファイルパス名を利用して、ファイルサーバに保管されているファイルにアクセスすることができる。
【0031】
なお、図1では、検索サーバ、ファイルサーバ及びクライアントマシンという3種類の装置を、それぞれ別々の装置として示している。図1に示す構成に限らず、例えば、それら3種類の装置のうちいずれか2つ、または、3つ全てを一つのコンピュータ装置として構成してもよい。
【0032】
プログラム配信サーバ7000は、例えば、ハッシュアルゴリズム等のプログラムを検索サーバに配信させる装置である。プログラム配信サーバを、例えば、ファイルサーバまたは検索サーバと統合させて、一つのコンピュータ装置内に実現してもよい。
【0033】
さらに、通信ネットワーク100による接続形態は、インターネット接続でもよいし、または、ローカルエリアネットワークによるイントラネット接続などでもよい。
【0034】
図2は、検索サーバ1100のハードウェア構成を例示する説明図である。本実施例では、3台の検索サーバ1100、1200、1300のうち、検索サーバ1100が統合検索サービスの受付窓口となっている。つまり、検索サーバ1100は、統合検索サービスをクライアントマシンに提供するための「統合検索サーバ」であり、さらに、検索要求に従って検索する「所定の検索サーバ」でもある。
【0035】
検索サーバ1100は、例えば、プロセッサ1110と、メモリ1120と、外部記憶装置インタフェース(以下、I/F)1130と、ネットワークI/F1140と、それら1110、1120、1130、1140を接続するバス1150とを含んで構成される。
【0036】
プロセッサ1110は、コンピュータプログラム(以下、プログラム)を実行する。メモリ1120には、後述するプログラム1121−1125及びテーブル4100−4400が格納される。外部記憶I/F1130は、外部記憶装置1160にアクセスするための通信回路である。ネットワークI/F1140は、通信ネットワーク100を介して他装置(ファイルサーバ及びクライアントマシン等)にアクセスするための通信回路である。
【0037】
図3は、メモリ1120に記憶されるプログラム内容を示す。メモリ1120には、例えば、外部記憶装置I/Fプログラム1121と、ネットワークI/Fプログラム1122と、データ管理プログラム1123と、検索制御プログラム1124と、統合検索制御プログラム1125と、が記憶されている。
【0038】
外部記憶装置I/Fプログラム1121は、外部記憶装置I/F1130を制御する。ネットワークI/Fプログラム1122は、ネットワークI/F1140を制御する。データ管理プログラム1123は、検索サーバ1100において保管データを管理するために利用されるファイルシステムまたはデータベースを提供する。検索制御プログラム1124は、検索サーバ1100において検索サービスを提供する。統合検索制御プログラム1125は、検索サーバ1100において統合検索サービスを提供する。
【0039】
図4は、メモリ1120に記憶されるテーブル(管理用データ)の内容を示す。メモリ1120には、例えば、検索インデックス登録ファイル管理テーブル4100と、検索インデックス管理テーブル4200と、検索サーバ管理テーブル4300と、統合用検索結果一時保管テーブル4400とが格納される。
【0040】
検索インデックス登録ファイル管理テーブル4100は、検索制御プログラム1124により利用されるテーブルであり、検索インデックスに登録されたファイルを管理する。検索インデックス管理テーブル4200は、検索インデックスを管理するテーブルである。検索サーバ管理テーブル4300は、統合検索制御プログラム1125により使用されるテーブルであり、統合検索システムに含まれている各検索サーバを管理する。統合用検索結果一時保管テーブル4400は、統合検索制御プログラム1125により使用されるテーブルであり、統合検索の結果を一時的に保管する。
【0041】
図3に戻る。検索制御プログラム1124は、その内部に、検索インデックス管理サブプログラム1171と、検索受付サブプログラム1172と、ハッシュアルゴリズム応答サブプログラム1173と、重複排除サブプログラム1174とを持つ。
【0042】
検索インデックス管理サブプログラム1171は、検索インデックスデータを管理するために必要な処理を行う。具体的には、検索インデックス管理サブプログラム1171は、検索サーバ1100の検索対象となっているファイルデータを保管しているファイルサーバ3100に対してクローリング処理を行い、必要に応じて検索インデックスデータを生成したり、更新したり、削除したりする。検索インデックス管理サブプログラム1171は、検索インデックスデータの実体をデータ管理プログラム1123を用いて管理する。
【0043】
検索受付サブプログラム1172は、クライアントマシンから検索クエリを指定した検索要求を受け付ける。検索受付サブプログラム1172は、その検索条件に合致するファイルを検索し、検索結果をクライアントマシンに応答する処理を行う。本実施例では、検索受付サブプログラム1172は、検索インデックス管理サブプログラム1171が別途作成した検索インデックスデータを利用して検索処理を行う。
【0044】
ハッシュアルゴリズム応答サブプログラム1173は、他の検索サーバからハッシュアルゴリズムの折衝を要求された場合、その要求を受けて、必要な処理を行った上で応答するプログラムである。ハッシュアルゴリズム応答サブプログラム1173は、当該ハッシュアルゴリズム応答プログラム1173が搭載されている検索サーバで利用可能なハッシュアルゴリズムの一覧を、問い合わせ元に応答する。詳細は後述するが、各検索サーバで共通して利用可能なハッシュアルゴリズムの使用を各検索サーバに指示することにより、統合検索結果における重複を検出することができる。
【0045】
なお、以下の説明では、主語となるプログラムまたはテーブルが搭載されている検索サーバを、自検索サーバと呼ぶことがある。
【0046】
重複排除サブプログラム1174は、自検索サーバの検索インデックス管理サブプログラム1171により管理される検索インデックスデータの中で、重複データを検出し、必要に応じて重複データを削除する処理を行う。つまり、重複排除サブプログラム1174は、一つの検索サーバ内に保管されている、重複データを排除する。
【0047】
重複データを検出するために、後述するハッシュアルゴリズムが使用される。重複排除サブプログラム1174は、ハッシュアルゴリズムにより算出されるハッシュ値に基づいて、検索インデックスデータ内の任意のあるデータと他のデータとが同一であるか否かを判断する。
【0048】
統合検索制御プログラム1125は、その内部に、統合検索受付サブプログラム1175と、ハッシュアルゴリズム折衝サブプログラム1176と、統合検索結果重複排除サブプログラム1177とを有する。
【0049】
統合検索受付サブプログラム1175は、クライアントマシンから検索クエリを指定した統合検索要求を受け付けると、統合検索可能な他の複数の検索サーバも利用して、その検索条件に合致するファイルを検索する。統合検索受付サブプログラム1175は、各検索サーバからの検索結果をまとめて、統合検索結果としてクライアントマシンに送信する。統合検索受付サブプログラム1175は、統合検索可能な検索サーバを選定するために、検索サーバ管理テーブル4300を使用する。
【0050】
ハッシュアルゴリズム折衝サブプログラム1176は、統合検索受付サブプログラム1175が統合検索要求を受けた場合、統合検索結果の中から重複した内容を排除するために使用するハッシュアルゴリズムについて、統合検索可能な検索サーバ群との間で折衝し合意するために必要な処理を行う。具体的な処理内容は後述する。
【0051】
統合検索結果重複排除サブプログラム1177は、統合検索可能な検索サーバ群から取得された検索結果データの中から重複データを検出し、必要に応じて重複データを削除する処理を行う。統合検索結果重複排除サブプログラム1177は、重複データを検出するために、他の検索サーバ群との間で取り決められたハッシュアルゴリズムを使う。統合検索結果重複排除サブプログラム1177は、そのハッシュアルゴリズムによって、検索結果データ内の任意のデータと他のデータとが同一であるか否かを判断する。
【0052】
なお、検索インデックス登録ファイル管理テーブル4100、検索インデックス管理テーブル4200、検索サーバ管理テーブル4300及び統合用検索結果一時保管テーブル4400については後述する。
【0053】
他の検索サーバ1200、1300は、統合検索に関する構成(統合検索制御プログラム1125、検索サーバ管理テーブル4300、統合検索結果一時保管テーブル4400)を備えない点を除いて、検索サーバ1100と同一構成であるため、説明を割愛する。
【0054】
図5は、ファイルサーバ2100のハードウェア構成を例示する説明図である。ファイルサーバ2100は、例えば、プログラムを実行するプロセッサ2110と、プログラム及びデータを一時的に格納するメモリ2120と、外部記憶装置2160にアクセスするための外部記憶装置I/F2130と、ネットワーク100を介して他装置(検索サーバ等)と通信するためのネットワークI/F2140と、それらを接続するバス2150とを備える。
【0055】
メモリ2120には、例えば、外部記憶装置I/Fプログラム2121と、ネットワークI/Fプログラム2122と、ファイル共有サービスプログラム2123と、ファイル管理プログラム2124とが格納される。
【0056】
外部記憶装置I/Fプログラム2121は、外部記憶装置I/F2130を制御する。ネットワークI/Fプログラム2122は、ネットワークI/F2140を制御する。ファイル共有サービスプログラム2123は、ファイルサーバ2100から提供されるファイル共有サービスを管理する。ファイル管理プログラム2124は、ファイルサーバ2100に記憶されたファイルを管理する。
【0057】
ファイル共有サービスプログラム2123は、ファイル管理プログラム2124を利用して、共有ファイルを管理する。検索サーバまたはクライアントマシン等は、ファイル共有サービスプログラム2123を利用することで、ファイルサーバ2100に保管されている共有ファイルにアクセスすることが可能になる。
【0058】
なお、他のファイルサーバ2200、2300は、ここで説明したファイルサーバ2100と同一構成のため、説明を割愛する。
【0059】
図6は、クライアントマシン3100のハードウェア構成を例示する説明図である。クライアントマシン3100は、例えば、プログラムを実行するプロセッサ3110と、プログラム及びデータを一時的に格納するメモリ3120と、外部記憶装置3160にアクセスするための外部記憶装置I/F3130と、ネットワークで接続された他装置にアクセスするためのネットワークI/F3140と、それらを接続するバス3150とを備える。
【0060】
メモリ3120には、例えば、外部記憶装置I/Fプログラム3121と、ネットワークI/Fプログラム3122と、ファイル管理プログラム3123と、検索サービスクライアントプログラム3124と、ファイル共有サービスクライアントプログラム3125とが格納される。
【0061】
外部記憶装置I/Fプログラム3121は、外部記憶装置I/F3130を制御する。ネットワークI/Fプログラム3122は、ネットワークI/F3140を制御する。ファイル管理プログラム3123は、クライアントマシン3100に保管されたファイルを管理するためのファイルシステムを提供する。検索サービスクライアントプログラム3124は、検索サーバ1100が提供する検索サービス並びに統合検索サービスを利用するためのプログラムである。ファイル共有サービスクライアントプログラム3125は、ファイルサーバ2100が提供するファイル共有サービスを利用するためプログラムである。
【0062】
検索サービスクライアントプログラム3124は、検索サービス及び統合検索サービスがHTTPプロトコルを利用する場合、HTTPクライアントプログラム(例えば、Webブラウザなど)を利用する。
【0063】
ファイル共有サービスクライアントプログラム3125は、ファイル共有サービスがNFSプロトコルを利用する場合は、NFSクライアントプログラムを使用する。ファイル共有サービスがCIFSプロトコルを利用する場合、ファイル共有サービスクライアントプログラム3125は、CIFSクライアントプログラムを利用する。あるいは、ファイル共有サービスがHTTPプロトコルを利用する場合、ファイル共有サービスクライアントプログラム3125は、HTTPクライアントプログラム(Webブラウザ等)を利用する。
【0064】
なお、他のクライアントマシン3200、3300は、クライアントマシン3100と同一構成のため、説明を割愛する。
【0065】
図7は、クライアントマシン3100から検索サーバ1100に統合検索要求を発行した場合のシステム全体の動作を模式的に示す。図7では、統合検索要求の発行、各検索サーバでの検索、各検索サーバの検索結果の取得、統合検索結果の提供等の一連の処理が9つのステップで説明されている。以下、ステップを「S」と略記する場合がある。
【0066】
なお、以下では、統合検索処理を実行する「統合検索サーバ」としての検索サーバ1100と、統合検索要求に従って検索する「所定の検索サーバ」としての検索サーバ1100とに同一の符号1100を付す。例えば、「統合検索要求を受けた検索サーバ1100は、各検索サーバ1100、1200、1300に検索を要求する。」等の文章において、「統合検索要求を受けた検索サーバ1100」とは、統合検索要求を受信して統合検索処理を実行する統合検索サーバであり、主として、統合検索制御プログラム1125に相当する。「各検索サーバ1100、1200、1300」における「検索サーバ1100」は、指定された検索を行って結果を返す検索サーバであり、主として、検索制御プログラム1124に相当する。
【0067】
始めに、S1として、クライアントマシン3100は、統合検索サービスを提供する検索サーバ1100に対して、統合検索要求を送る。統合検索要求では、検索キーワード及び検索条件が指定される。
【0068】
統合検索に使用される検索キーワード及び検索条件は、従来の一般的な検索エンジンで受付可能な検索キーワード及び検索条件と同様に指定できる。例えば、検索キーワードとして、複数の文字列を指定してもよい。検索条件として、データ作成日またはデータ最終更新日を任意の範囲で指定してもよいし、データ作成者を指定してもよい。
【0069】
S2として、統合検索要求を受け付けた検索サーバ1100内の統合検索制御部5100は、統合検索利用可能な検索サーバ1100、1200、1300に対して、ハッシュアルゴリズム(利用可能なハッシュ関数などの識別情報に相当)の折衝を行う。統合検索制御部5100は、主として統合検索制御プログラム1125により実現される。
【0070】
統合検索要求を受けた検索サーバ1100は、自検索サーバ1100にて利用可能なハッシュアルゴリズムを指定して、そのハッシュアルゴリズムを他の各検索サーバ1100、1200、1300が利用可能であるかを、他の各検索サーバ1200、1300に問い合わせる。
【0071】
S3として、問合せをうけた各検索サーバ1100、1200、1300内の検索制御部5110、5210、5310は、指定されたハッシュアルゴリズムをサポートしているかどうかの情報と、指定されたハッシュアルゴリズム以外に利用可能なハッシュアルゴリズムの情報とを、問い合わせ元である統合検索制御部5100に応答する。検索制御部5110、5120、5130は、ハッシュアルゴリズム応答サブプログラム1173により実現される。
【0072】
統合検索制御部5100は、各検索制御部5110、5210、5310からの応答結果に基づいて、統合検索に利用可能なハッシュアルゴリズムを決定する。以下の説明では、統合検索のために利用可能なハッシュアルゴリズムを、共通ハッシュアルゴリズムと呼ぶ場合がある。なお、一回の問合せで共通ハッシュアルゴリズムを決定できない場合、所定の回数だけ問い合わせと応答を繰り返し実行する構成としてもよい。
【0073】
S4として、統合検索制御部5100は、統合検索利用可能な検索サーバ1100、1200、1300に同一の検索要求を送る。その検索要求には、統合検索要求に含まれている検索キーワード及び検索条件と共に、前述の処理にて決定された共通ハッシュアルゴリズムに関する情報も含まれる。
【0074】
S5として、検索制御部5110、5210、5310は、自検索サーバ1100、1200、1300内にて管理する検索インデックス5120、5220、5320を利用して、それぞれ検索処理を実行する。検索処理では、統合検索制御部5100から指定された検索キーワードと検索条件を利用する。
【0075】
S6として、検索制御部5110、5210、5310は、それぞれの検索結果について、重複排除処理を行う。具体的には、検索制御部5110、5210、5310はそれぞれ、検索結果に含まれるエントリの中に、同一ファイルを示すエントリが複数個登録されているか否かを調べる。
【0076】
もしも、同一ファイルを示すエントリが複数個登録されている場合、検索制御部5110、5210、5310は、所定の重複削除条件に沿って、任意の一エントリのみを残して、他エントリを非表示にするか、または削除する。
【0077】
同一ファイルであるか否かを判断するために、ハッシュアルゴリズムが使用される。具体的には、ハッシュ関数などが利用される。検索制御部5110、5210、5310は、各ファイルデータについて、または、同一であるか否かを判断すべき複数のファイルデータについて、ハッシュ関数を利用してハッシュ値を生成する。ハッシュ値が一致する場合、それらのファイルは同一であると判定できる。
【0078】
S7として、検索制御部5110、5210、5310は、各検索サーバ1100、1200、1300内での重複エントリが取り除かれた検索結果を、検索要求元である検索サーバ1100の統合検索制御部5100に応答する。
【0079】
さらに、検索制御部5110、5210、5310は、検索結果に加えて、S4にて指定された共通ハッシュアルゴリズムを利用して生成された情報も、統合検索制御部5100に提供する。具体的には、共通ハッシュアルゴリズムに該当するハッシュ関数を利用して生成されたハッシュ値を統合検索制御部5100に通知する。
【0080】
S8として、統合検索制御部5100は、各検索サーバから取得した検索結果をもとにして統合検索結果を生成し、さらに、統合検索結果の中から重複したエントリを排除する処理を行う。以下、統合検索結果に含まれる複数エントリのうち重複エントリを取り除く処理を、統合検索結果重複排除処理と呼ぶことがある。
【0081】
統合検索結果重複排除処理の具体的内容は、前述した各検索制御部5110、5210、5310における重複排除処理の内容とほぼ同じである。具体的には、統合検索結果に含まれる各エントリに、同一ファイルデータを示すエントリが複数存在するか否かを調べる。もし、統合検索結果の中に同一ファイルを示すエントリが複数個登録されている場合、所定の重複削除条件に従って、任意の一エントリのみを残し、他エントリを非表示にするかまたは削除する。
【0082】
複数のファイルデータが同一であるか否かを判断するために、ハッシュアルゴリズムを使う。具体的には、各検索サーバから提供された、共通ハッシュアルゴリズムにより算出されたハッシュ値を利用する。複数のファイルデータのハッシュ値(検索サーバ内で作成されたハッシュ値)が一致する場合、それらのファイルデータは同一であると判断することができる。
【0083】
最後に、S9として、統合検索制御部5100は、重複エントリの除かれた統合検索結果を、クライアントマシン3100に応答する。以上の処理によって、クライアントマシン3100は、統合検索結果を取得することができる。
【0084】
図8は、検索インデックス登録ファイル管理テーブル4100の構成例を示す。検索インデックス登録ファイル管理テーブル4100は、検索インデックスの作成対象となっているファイルサーバから検索サーバが取得したファイルに関する情報を管理する。具体的には、検索インデックス登録ファイル管理テーブル4100は、ファイルID4110と、取得元ファイルパス名4120と、対象ファイルのメタデータ4130と、キャッシュ格納先4140と、対象ファイルのハッシュアルゴリズム(及びハッシュ値)4150とを、対応付けて管理する。
【0085】
ファイルID4110は、ファイルサーバから取得されたファイルを一意に識別するための識別子である。ファイルID4110は、検索サーバ1100により付与される連番でもよいし、または、ファイルサーバ2100により付与される連番でもよい。
【0086】
取得元ファイルパス名4120は、対象ファイルのファイルサーバにおける格納先を示すファイルパス名である。検索サーバは、ファイルサーバに、取得元ファイルパス名4120を指定してファイル取得要求を発行する。これにより、検索サーバは、ファイルサーバから所望のファイルを取得することができる。
【0087】
対象ファイルのメタデータ4130は、対象ファイルに関連付けられているメタデータの集合である。メタデータ4130としては、例えば、ファイルサーバにて管理されている、ファイル所有者、ファイル作成日時、ファイルサイズ、ファイルへのアクセス権情報等が該当する。さらに、検索サーバにて管理されている最新ファイル取得日時等の情報も、メタデータ4130に含むことができる。
【0088】
キャッシュ格納先(格納場所)4140は、対象ファイルのキャッシュデータを検索サーバ内で保管する場合の格納場所を示す情報である。具体的には、検索サーバにて、キャッシュデータをファイル形式で管理する場合、ファイルの格納パス名をキャッシュ格納先の欄4140に登録する。
【0089】
対象ファイルのハッシュアルゴリズム及びハッシュ値の欄4150は、対象ファイルデータの重複を検出するために利用する情報を格納する。欄4150には、ハッシュアルゴリズムを登録する欄4151、4153と、ハッシュ値を登録する欄4152、4154とが含まれる。
【0090】
ハッシュアルゴリズム欄4151、4153には、重複検出のために利用するハッシュ関数の識別情報を登録する。ハッシュアルゴリズム欄4151、4153には、例えば、MD5またはSHA-1等のハッシュ関数を識別するための情報が登録される。ハッシュ値欄4152、4154には、ハッシュアルゴリズム欄4151、4153に登録されたハッシュ関数を用いて作成されたハッシュ値が登録される。
【0091】
ハッシュアルゴリズム及びハッシュ値の欄4150には、ハッシュアルゴリズムとハッシュ値との組を複数個登録できるように構成する。図8では、各ファイルに対してそれぞれ二つの組を登録している例を示している。3つ以上の組を登録してもよい。さらに、全ファイルについて同じ個数の組を登録する構成でもよいし、ハッシュアルゴリズムとハッシュ値の組の登録可能数を、各ファイルで異なるような構成でもよい。
【0092】
図9は、検索インデックス管理テーブル4200の構成例を示す。検索インデックス管理テーブル4200は、検索サーバにより作成された検索インデックスの情報を管理する。具体的には、検索インデックス管理テーブル4200は、キーワード4210と、位置情報4220とを対応付けて管理する。
【0093】
キーワード4210には、対象ファイルをインデクシング処理して得られた文字列が格納される。位置情報4220には、キーワード4210の文字列を含むファイルの情報が登録される。位置情報4220は、ファイルID4221、4224と、該当位置オフセット4222、4225と、重み付け係数4223、4226とを含む。
【0094】
ファイルID4221、4224は、キーワードの文字列が出現するファイルを識別するための情報を登録する。検索インデックス登録ファイル管理テーブル4100のファイルID4110の欄に登録されているファイルIDが、ファイルID4221、4224に登録される。
【0095】
該当位置オフセット4222、4225は、ファイルの中で、キーワードの文字列が出現するオフセット情報を登録する。この欄4222、4225では、一つのファイルで複数箇所出現する場合は、複数個のオフセット情報を登録する。
【0096】
重み付け係数4223、4226は、ファイル中にキーワードの文字列が出現することについての重要度を登録する。重要度の値は、検索サーバが適宜設定できる。重要度の値は、大きければ大きいほど、重要であることを意味する。重要度の値は、検索結果の絞り込み、及び、検索結果の整列にも利用できる。
【0097】
位置情報4220では、一つのキーワード4210について複数個登録可能である。これにより、キーワード文字列に該当するファイルが複数存在する場合にも対応できる。なお、位置情報4220の欄において、該当するエントリの値が無効であることを意味するnull値を登録することもできる。図中では、null値を「−」として示す。null値は、例えば、登録数が他のエントリより少ないために項目が空いてしまうエントリに、用いられる。
【0098】
図10は、検索サーバ管理テーブル4300の構成例を示す。検索サーバ管理テーブル4300は、検索サーバが統合検索を行う場合に、検索要求の送信先となる検索サーバの一覧情報を管理する。具体的には、検索サーバ管理テーブル4300は、検索サーバID4310と、検索サーバ名4320と、IPアドレス4330と、重み付け係数4340とを対応付けて管理する。
【0099】
検索サーバID4310には、統合検索に利用可能な検索サーバを識別するための識別番号が格納される。検索サーバID4310は、統合検索を行う検索サーバ1100により付与される連番でもよいし、または、統合検索サービスを提供するシステム内で付与される連番でもよい。
【0100】
検索サーバ名4320には、検索サーバの名前を格納する。具体的には、検索サーバのホスト名でもよいし、任意の文字列からなる名称でもよい。IPアドレス4330には、検索サーバに付与されているIPアドレスを格納する。なお、DNSを利用してIPアドレスを決定するシステム構成の場合、IPアドレス4330欄には、DNSへの問合せに利用するホスト名を格納してもよい。
【0101】
重み付け係数4340には、検索サーバから得られる検索結果についての、重要性の度合いを示す値を格納する。重み付け係数の値が大きければ大きいほど、検索結果の重要性を高くできる。
【0102】
重み付け係数4340の値を検索サーバ毎に変えることにより、統合検索結果の中で、特定の検索サーバから得た検索結果を優先させることができる。即ち、重み付け係数が大きく設定された検索サーバからの検索結果を、統合検索結果内において上位に表示させることができる。重み付け係数が小さく設定された検索サーバからの検索結果は、統合検索結果のランキングにおいて下位に表示される。なお、全ての検索サーバから得る検索結果を平等に扱いたい場合は、重み付け係数4340の値を全て同じ値に設定すればよい。
【0103】
図11は、統合検索結果一時保管テーブル4400の構成例を示す。統合検索結果一時保管テーブル4400は、各検索サーバ1100、1200、1300からの検索結果をマージして統合検索結果を生成する処理において、データを一時的に保管するために利用される。
【0104】
具体的に、統合検索結果一時保管テーブル4400は、検索サーバID4410、ランク4420、ファイルID4430、スコア値4440、ファイルパス名4450、ハッシュアルゴリズム4460、ハッシュ値4470、及び検索キーワード含有文字列4480を対応付けて管理する。
【0105】
検索サーバID4410には、検索結果を取得した検索サーバを識別するための情報が格納される。検索サーバID4410には、検索サーバ管理テーブル4300の検索サーバID4310の欄に登録されている検索サーバIDと同じ情報が登録される。
【0106】
ランク4420には、検索サーバから送られてきたエントリのランクの情報をそのまま格納する。ランクとは、各検索サーバが提供する検索結果の中で、検索キーワード及び検索条件に該当する度合いが高い順に整列させ、その整列順に順位付けをした値である。
【0107】
ファイルID4430には、検索サーバから送られてきたエントリに対応するファイルのファイルIDがそのまま格納される。具体的には、ファイルID4430には、検索インデックス登録ファイル管理テーブル4100のファイルID4110の欄に登録されているファイルIDと同じ情報が登録される。
【0108】
スコア値4440には、検索サーバから送られてきたエントリのスコア値の情報がそのまま格納される。スコア値とは、各検索サーバが提供する検索結果の中で、検索キーワード及び検索条件に該当する度合いを数値化したものである。スコア値に、検索サーバ管理テーブル4300における重み付け係数4340を乗じて、統合スコア値を算出する。検索サーバ1100は、統合スコア値を統合検索結果における統合ランクを決定するために利用する。
【0109】
ファイルパス名4450には、検索サーバから送られてきたエントリに対応するファイルのファイルパス名をそのまま格納する。具体的には、ファイルパス名4450には、検索インデックス登録ファイル管理テーブル4100の取得元ファイルパス名4120の欄に登録されているファイルパス名と同じ情報が登録される。
【0110】
なお、ネットワーク100を介して対象ファイルにアクセスできるようにするために、ファイルパス名4450の欄には、ファイルパス名に加えて、対象ファイルを格納するファイルサーバの識別情報を格納してもよい。
【0111】
ハッシュアルゴリズム4460には、検索サーバで利用可能なハッシュアルゴリズムを識別するための情報が格納される。ハッシュ値4470には、ハッシュアルゴリズムにより算出されるハッシュ値を格納する。
【0112】
なお、統合検索に使用されるハッシュアルゴリズム(共通ハッシュアルゴリズム)を決定するための折衝処理において、共通ハッシュアルゴリズムを選定できなかった場合は、ハッシュアルゴリズム4460及びハッシュ値4470の欄に、無効値であることを意味するnull値が格納される。
【0113】
検索キーワード含有文字列4480には、検索サーバから送られてきた検索キーワードを含有する文字列がそのまま格納される。検索キーワード含有文字列とは、各検索サーバからの検索結果の中に含まれる各ファイルの中から、検索キーワードを含む文字列を抜き出したものの集合である。
【0114】
検索キーワードを含む文字列の情報を検索結果に含めることで、ユーザは、指定した検索キーワードが含まれる部分の文章または文字列を、検索結果の一部として利用することができる。これにより、ユーザは、検索結果に挙げられた対象ファイルに実際にアクセスすることなく、検索キーワードを含む前後の文脈を把握することができる。従って、検索キーワード含有文字列4480により、検索サービスの利便性を高めることができる。
【0115】
一つのファイルの中に、検索キーワードを含む箇所が複数個存在する場合は、検索キーワード含有文字列も欄4480に複数登録される。検索サーバは、検索インデックス管理テーブル4200に登録されている情報を利用して、検索キーワード含有文字列を生成する。なお、検索キーワード含有文字列4480の欄において、検索サーバから提供される検索キーワード含有文字列の数が他のエントリよりも少ないために空欄となる箇所には、無効値を意味するnull値を格納する。
【0116】
図12は、クライアントマシンから検索サーバ1100に統合検索要求を行う際に指定する、統合検索要求パラメータ6100の構成例を示す。本パラメータは、図7で説明したS1で利用される。具体的に、統合検索要求パラメータ6100は、要求先マシン識別情報6110、要求元マシン識別情報6120、処理種別6130、検索キーワード6140、検索オプション6150、統合検索オプション6160を含む。
【0117】
要求先マシン識別情報6110には、統合検索要求の送信先となる検索サーバを識別するための情報が格納される。要求先マシン識別情報6110には、ネットワーク100を介して検索サーバにアクセスするために、検索サーバのホスト名またはIPアドレス等のアクセス情報が格納される。
【0118】
要求元マシン識別情報6120には、統合検索を要求するクライアントマシンを識別するための情報が格納される。要求元マシン識別情報6120には、ネットワーク100を介してクライアントマシンにアクセスするために、クライアントマシンのホスト名、または、クライアントマシンのIPアドレス等のアクセス情報が格納される。
【0119】
処理種別6130は、処理の内容を識別するための情報を格納する。統合検索要求を発行する場合、処理種別6130には、統合検索要求処理を示す情報が格納される。検索キーワード6140は、統合検索要求に使用される検索キーワードを格納する。
【0120】
検索オプション6150は、各検索サーバに検索を要求する際に指定するオプションに関する情報を格納する。検索オプション6150としては、例えば、ファイル作成日時、ファイル更新日時、ファイル作成者等に関する条件を指定できる。
【0121】
統合検索オプション6160は、統合検索処理を行う検索サーバ1100に指定するオプションに関する情報を格納する。統合検索オプション6160としては、例えば、クライアントマシンに提供する統合検索結果の件数、統合検索結果の先頭エントリにおけるオフセット値に関する条件等がある。オフセット値を設定することにより、例えば、先頭エントリをランク1位から始めるのか、またはランク100位から始めるのか等を設定できる。
【0122】
図13は、検索サーバ1100がクライアントマシンに統合検索結果を応答する際に指定する、統合検索結果応答パラメータ6200の構成例を示す。本パラメータ6200は、図7で説明したS9にて利用される。具体的に、統合検索結果応答パラメータ6200は、応答先マシン識別情報6210、応答元マシン識別情報6220、処理種別6230、処理結果識別情報6240、総件数6250、応答件数6260、先頭ランク6270、検索結果6280、追加応答要求に必要な情報6290を備えている。
【0123】
応答先マシン識別情報6210は、統合検索結果の送信先となるクライアントマシンを識別する情報を格納する。例えば、ネットワーク100を介してクライアントマシンにアクセスするために、クライアントマシンのホスト名またはIPアドレス等のアクセス情報が格納される。
【0124】
応答元マシン識別情報6220には、統合検索要求を行った検索サーバ1100を識別するための情報が格納される。前記同様に、例えば、検索サーバ1100のホスト名、IPアドレス等が格納される。
【0125】
処理種別6230は、処理の内容を識別するための情報を格納する。統合検索の結果を送信する場合、処理種別6230には、統合検索結果の応答処理を示す情報が格納される。処理結果識別情報6240は、統合検索の処理結果を識別する情報を格納する。具体的には、処理が成功したのか、あるいは失敗したのかといった情報が格納される。
【0126】
総件数6250は、指定された条件に合致したファイルデータの総件数を格納する。応答件数6260は、指定された条件に合致したファイルデータの中で、統合検索結果の応答に含まれる件数を格納する。総件数6250の値が応答件数6260の上限値以下の場合、総件数6250と応答件数6260とは一致する。しかし、総件数6250が前記上限値よりも多い場合、一度の応答件数6260の上限値より多い分は、統合検索結果の応答に含めない。
【0127】
先頭ランク6270には、統合検索結果の応答に含まれる先頭エントリのランク値が格納される。もし、ランク1位のエントリが先頭であれば、先頭ランク6270には1が格納され、ランク100位のエントリが先頭であれば、先頭ランク6270には100が格納される。
【0128】
検索結果6280には、統合検索処理によって取得された統合検索結果が格納される。検索結果6280には、応答件数6280で規定された数だけ、検索結果エントリ6281、6282が格納される。検索結果エントリ6281、6282には、統合用検索結果一時保管テーブル4400の各欄4410−4480に格納されている情報と同じ情報が格納される。
【0129】
追加応答要求に必要な情報6290は、総件数6250の値よりも応答件数6260の値の方が小さい場合に利用する。追加応答要求に必要な情報6290の欄には、統合検索結果の応答に含まれていない他の検索結果に関する情報を取得するためのリンク情報が格納される。
【0130】
図14は、統合検索要求を受信した検索サーバ1100から、統合検索を利用可能な各検索サーバ1100、1200、1300に、ハッシュアルゴリズムの折衝を行う際の問合せに指定するための、ハッシュアルゴリズム問合せ要求パラメータ6300の構成例を示す。
【0131】
本パラメータ6300は、図7で説明したS2で利用される。具体的に、ハッシュアルゴリズム問合せ要求パラメータ6300は、問合せ先マシン識別情報6310、問合せ元マシン識別情報6320、処理種別6330、利用可能なハッシュアルゴリズム候補識別情報6340、問合せオプション6350を含む。
【0132】
問合せ先マシン識別情報6310は、検索要求の送信先となる検索サーバを識別するための情報を格納する。即ち、問合せ先マシン識別情報6310は、統合検索を開始する前に、利用するハッシュアルゴリズムについて交渉する必要がある各検索サーバを識別するための情報が格納される。例えば、ネットワーク100を介して検索サーバにアクセスするために、検索サーバのホスト名、IPアドレス等のアクセス情報が格納される。
【0133】
問合せ元マシン識別情報6320は、統合検索処理を行う検索サーバ1100を識別するための情報を格納する。ネットワーク100を介してマシンにアクセスするために、検索サーバ1100のホスト名またはIPアドレス等のアクセス情報が、問合せ元マシン識別情報6320に格納される。
【0134】
処理種別6330は、処理の内容を識別するための情報を格納する。ハッシュアルゴリズムの問い合わせを行う場合、処理種別6330には、ハッシュアルゴリズム問合せ要求処理を示す情報が格納される。
【0135】
利用可能なハッシュアルゴリズム候補識別情報6340には、問合せ元である検索サーバ1100において利用可能なハッシュアルゴリズムの識別情報一覧が格納される。各検索サーバにおいて、ハッシュアルゴリズム候補識別情報6340に格納された複数のハッシュアルゴリズムのうち、共通するハッシュアルゴリズムを利用できる場合、そのハッシュアルゴリズムを利用して、統合検索結果に含まれる重複を検出できる。
【0136】
問合せオプション6350は、ハッシュアルゴリズム問合せ要求処理で指定可能なオプション情報を格納する。具体的には、利用可能なハッシュアルゴリズムの候補を選択する場合の条件として、ハッシュ値のサイズが所定サイズ以上でなければならない場合、ハッシュ値サイズの下限値をオプションとして指定することができる。
【0137】
図15は、各検索サーバ1100、1200、1300が、ハッシュアルゴリズムの問合せ要求元である検索サーバ1100に応答する場合に使用される、ハッシュアルゴリズム問合せ応答パラメータ6400の構成例を示す。
【0138】
本パラメータ6400は、図7で説明したS3にて利用される。ハッシュアルゴリズム問合せ応答パラメータ6400は、応答先マシン識別情報6410、応答元マシン識別情報6420、処理種別6430、処理結果識別情報6440、相互利用可能なハッシュアルゴリズム識別情報6450、利用可能なハッシュアルゴリズム候補識別情報6460を含む。
【0139】
応答先マシン識別情報6410は、ハッシュアルゴリズムに関する問合せを応答すべき検索サーバ1100を識別する情報を格納する。前記同様に、検索サーバ1100のホスト名またはIPアドレス等のアクセス情報が格納される。
【0140】
応答元マシン識別情報6420は、ハッシュアルゴリズムについての問合せを受けた各検索サーバを識別する情報を格納する。前記同様に、各検索サーバのホスト名またはIPアドレス等のアクセス情報が格納される。
【0141】
処理種別6430は、処理の内容を識別するための情報を格納する。処理種別6430には、ハッシュアルゴリズムの問合せに対する応答であることを示す情報が格納される。処理結果識別情報6440には、ハッシュアルゴリズムの問合せについての処理結果を示す情報が格納される。具体的には、処理結果識別情報6440には、問合わせ処理が成功したのか、あるいは失敗したのかという情報が格納される。
【0142】
相互利用可能なハッシュアルゴリズム識別情報6450には、利用可能なハッシュアルゴリズム候補識別情報6340に含まれる複数のハッシュアルゴリズムのうち、問合せを受けた検索サーバにおいても利用可能なハッシュアルゴリズムを特定する情報が格納される。
【0143】
相互利用可能なハッシュアルゴリズム識別情報6450に格納されたハッシュアルゴリズムは、問合せ元検索サーバと問合せ先検索サーバの両方で、利用可能であるため、統合結果の重複検出に利用し得る候補の一つとなる。各検索サーバから返信された、相互利用可能なハッシュアルゴリズムのうち、全ての検索サーバに共通するハッシュアルゴリズムを、統合検索結果から重複を排除するためのハッシュアルゴリズムとして選択できる。
【0144】
利用可能なハッシュアルゴリズム候補識別情報6460には、ハッシュアルゴリズムの問合せを受けた検索サーバにおいて、他に利用可能なハッシュアルゴリズムがある場合、そのハッシュアルゴリズムを識別するための情報が格納される。統合検索に参加する検索サーバが、統合検索を指揮する検索サーバ1100で利用可能なハッシュアルゴリズム(図14の欄6340に登録されるハッシュアルゴリズム)以外のハッシュアルゴリズムを利用可能な場合に、そのハッシュアルゴリズムが欄6460に登録される。
【0145】
なお、この利用可能なハッシュアルゴリズム候補識別情報6460には、相互利用可能なハッシュアルゴリズム識別情報6450に格納されたハッシュアルゴリズムの識別情報は格納されない。
【0146】
図16は、統合検索要求を受けた検索サーバ1100が検索サーバ1100、1200、1300に検索要求を発行する際に指定する、検索要求パラメータ6500の構成例を示す。本パラメータ6500は、図7で説明したS4で利用される。検索要求パラメータ6500は、要求先マシン識別情報6510、要求元マシン識別情報6520、処理種別6530、検索キーワード6540、検索オプション6550を含む。
【0147】
要求先マシン識別情報6510は、検索要求の送信先となる検索サーバを識別する情報(ホスト名またはIPアドレス)を格納する。要求元マシン識別情報6520は、検索要求を発行する検索サーバ1100を識別する情報(ホスト名またはIPアドレス)を格納する。
【0148】
処理種別6530は、処理の内容を識別するための情報を格納する。ここでは、処理種別6530に、検索要求処理を示す情報が格納される。検索キーワード6540は、検索に使用される検索キーワードを格納する。検索オプション6550は、検索に関して指定されたオプション情報を格納する。例えば、オプション情報として、ファイル作成日時、ファイル更新日時、ファイル作成者等の条件を指定可能である。
【0149】
さらに、検索オプション6550は、利用ハッシュアルゴリズム識別情報6551を含む。利用ハッシュアルゴリズム識別情報6551には、ハッシュアルゴリズム問合せ処理により、関係する各検索サーバ間で統一したハッシュアルゴリズムが決定された場合、その決定されたハッシュアルゴリズム(共通ハッシュアルゴリズム)の識別情報を格納する。
利用ハッシュアルゴリズム識別情報6551で指定されたハッシュアルゴリズムを利用して、各検索サーバはハッシュ値を作成し、応答する。また、統合検索要求を受けた検索サーバ1100は、共通のハッシュアルゴリズムで作成されたハッシュ値に基づいて、統合検索結果から重複したエントリを検出し排除する。
【0150】
図17は、検索サーバ1100、1200、1300が、統合検索を行う検索サーバ1100に、検索結果を応答する際に指定する検索結果応答パラメータ6600の構成例を示す。本パラメータ6600は、図7で説明したS7にて利用される。検索結果応答パラメータ6600は、応答先マシン識別情報6610、応答元マシン識別情報6620、処理種別6630、処理結果識別情報6640、総件数6650、応答件数6660、先頭ランク6670、検索結果6680、追加応答要求に必要な情報6690を含む。
【0151】
応答先マシン識別情報6610には、検索結果の送信先となる検索サーバを識別する情報(ホスト名またはIPアドレス)を格納する。応答元マシン識別情報6620は、検索要求を受けた検索サーバを識別する情報(ホスト名またはIPアドレス)を格納する。
【0152】
処理種別6630は、処理の内容を識別するための情報を格納する。ここでは、処理種別6630に、検索結果応答処理を示す情報が格納される。
【0153】
処理結果識別情報6640は、検索の処理結果を識別する情報を格納する。具体的には、処理結果識別情報6640には、検索が成功したのか、あるいは失敗したのかを示す情報が格納される。
【0154】
総件数6650は、指定された条件に合致したファイル及びデータの総件数を格納する。応答件数6660は、指定された条件に合致したファイル及びデータの中で、検索結果応答に含まれている件数を格納する。前記同様に、総件数6650が応答件数6660の上限値以下の場合は、総件数6650と応答件数6660は一致する。総件数6650が応答件数6660の上限値よりも多い場合は、応答件数6660の上限値より多い分は、検索結果応答に含まれない。
【0155】
先頭ランク6670は、検索結果応答の中に含まれるエントリに対して、先頭エントリのランク値を格納する。前記同様に、もしも、ランク1位のエントリが先頭の場合、先頭ランク6670には1が格納される。ランク100位のエントリが先頭の場合、先頭ランク6670には100が格納される。
【0156】
検索結果6680には、検索処理により取得された検索結果が格納される。検索結果6680には、応答件数6680の数だけ、検索結果エントリ6681、6684が格納される。検索結果エントリ6681、6684には、統合用検索結果一時保管テーブル4400の各欄4410−4480に格納されている情報と同じ情報が格納される。
【0157】
さらに、検索結果エントリ6681、6684には、利用ハッシュアルゴリズム識別情報6682、6685と、ハッシュ値6683、6686とが格納される。利用ハッシュアルゴリズム識別情報6682、6685には、検索要求パラメータ6500の利用ハッシュアルゴリズム識別情報6551にて指定された情報をそのまま格納する。
【0158】
ハッシュ値6683、6686には、利用ハッシュアルゴリズム識別情報6682、6685で特定されるハッシュアルゴリズム(共通ハッシュアルゴリズム)を利用して作成されたハッシュ値が格納される。統合検索要求を受けた検索サーバ1100は、そのハッシュ値を利用して、統合検索結果の中から重複エントリを検出して排除する。
【0159】
追加応答要求に必要な情報6690は、総件数6650の値よりも応答件数6660の値が小さい場合に使用する。この場合、追加応答要求に必要な情報6690の欄には、検索結果応答に含まれていないファイルまたはデータの検索結果に関する情報を取得するためのリンク情報が格納される。
【0160】
以上、本実施例による検索システムの構成、管理情報の構成、処理パラメータの構成について詳細に説明した。以降では、本実施例による処理動作を説明する。以下のフローチャートでは、理解のためにループ等を割愛する。従って、図示される各フローチャートは、各処理の概要を示しており、実際のコンピュータプログラムとは相違する。いわゆる当業者であれば、図示されたフローチャートからステップを削除または変更したり、新たなステップをフローチャートに加えたりすることができる。そのような改変されたフローチャートも本発明の範囲に含まれる。
【0161】
図18のフローチャートは、いずれかのクライアントマシンで実行される統合検索要求処理を示している。始めに、クライアントマシンは、統合検索サービスを提供する「統合検索サーバ」としての検索サーバ1100に、検索キーワードを指定して統合検索処理を要求する(S101)。統合検索を要求する場合は、統合検索要求パラメータ6100を指定する。クライアントマシンは、統合検索処理を行う検索サーバ1100から統合検索の結果を受信した後、その統合検索結果をユーザに提供し(S102)、本処理を終了する。なお、統合検索結果の応答を検索サーバ1100から取得する場合には、統合検索結果応答パラメータ6200が使用される。
【0162】
図19及び図20は、検索サーバ1100で実行される統合検索処理のフローチャートを示している。始めに、検索サーバ1100は、クライアントマシンから受信した統合検索要求パラメータ6100の処理種別6130に基づいて、統合検索要求が指定されているか否かを判定する(S201)。もし、統合検索要求が指定されていない場合(S201:NO)、エラー終了する(S202)。
【0163】
統合検索要求が指定されている場合(S201:YES)、検索サーバ1100は、検索サーバ1100にて利用可能なハッシュアルゴリズムを特定する(S203)。具体的には、検索サーバ1100にて管理されている検索インデックス登録ファイル管理テーブル4100内のハッシュアルゴリズム4151、4153を調べることで、検索サーバ1100で利用可能なハッシュアルゴリズムを特定できる。
【0164】
検索サーバ1100は、検索サーバ管理テーブル4300に登録されている各検索サーバに、各検索サーバで利用可能なハッシュアルゴリズムを問い合わせる(S204)。検索サーバ1100は、その問い合わせに際して、ハッシュアルゴリズム問合せ要求パラメータ6300を指定する。
【0165】
検索サーバ1100は、各検索サーバから、ハッシュアルゴリズム問合せ応答パラメータ6400に含まれる情報を取得する。検索サーバ1100は、統一されたハッシュアルゴリズムを利用可能か否かを判断する(S205)。検索サーバ1100は、各検索サーバからの応答に基づいて、統合検索に参加する全検索サーバの中で、統一して利用可能なハッシュアルゴリズムが存在するか否かを判定する。
【0166】
もし、統一したハッシュアルゴリズムを利用可能な場合(S205:YES)、検索サーバ1100は、統合検索に参加する各検索サーバに、使用すべきハッシュアルゴリズムを指定して検索を要求する(S206)。検索を要求する場合、検索サーバ1100は、検索要求パラメータ6500を指定する。検索サーバ1100は、各検索サーバから検索結果応答パラメータ6600に含まれる情報をそれぞれ取得する。
【0167】
統合検索に参加する各検索サーバ間で統一したハッシュアルゴリズムを利用できない場合(S205:NO)、検索サーバ1100は、各検索サーバに対して、ハッシュアルゴリズムを指定せずに検索を要求する(S207)。検索サーバ1100は、検索を要求する場合、検索要求パラメータ6500を指定する。検索サーバ1100は、各検索サーバから検索結果応答パラメータ6600に含まれる情報をそれぞれ取得する。
【0168】
図20に移る。検索結果を取得した後、検索サーバ1100は、取得した各検索結果を統合検索結果一時保管テーブル4400に格納する(S208)。検索サーバ1100は、ハッシュ値を利用して統合検索結果から重複エントリを排除可能か否かを判定する(S209)。
【0169】
統合検索結果から重複エントリを排除できない場合(S209:NO)、S210をスキップしてS211に移る。統合検索結果から重複エントリを排除できる場合(S209:YES)、検索サーバ1100は、統一されたハッシュアルゴリズムにより算出されるハッシュ値を利用して、統合検索結果から重複エントリを検出し、排除する(S210)。
【0170】
検索サーバ1100は、統合検索結果一時保管テーブル4400に登録されている情報を利用して、検索結果をスコア値等に従って整列させ、統合検索の要求元に統合検索結果として提供するためのエントリを抽出する(S211)。
【0171】
具体的には、検索サーバ1100は、統合用検索結果一時保管テーブル4400に登録されているスコア値4440と、検索サーバ管理テーブル4300に登録されている重み付け係数4340の値とを利用して、統合スコア値を算出する。検索サーバ1100は、その統合スコア値を利用して、統合検索結果エントリを整列させる。
【0172】
最後に、検索サーバ1100は、統合検索の要求元であるクライアントマシンに、統合検索結果を応答する(S212)。検索サーバ1100は、統合検索結果応答パラメータ6200を指定することにより、統合検索結果をクライアントマシンに応答する。
【0173】
図21は、統合検索に参加する各検索サーバで実行される、ハッシュアルゴリズムの問合せに対する応答処理のフローチャートである。本処理は、「所定の検索サーバ」としての各検索サーバ1100、1200、1300でそれぞれ実施される。便宜上、以下、検索サーバ1200を例に挙げて説明する。
【0174】
始めに、検索サーバ1200は、ハッシュアルゴリズム問合せ要求パラメータ6300で指定された処理種別6330に基づいて、「ハッシュアルゴリズム問合せ要求」が指定されているか否かを判断する(S301)。もし、ハッシュアルゴリズムの問合わせ要求が指定されていない場合(S301:NO)、本処理はエラー終了する(S302)。
【0175】
ハッシュアルゴリズムの問い合わせ要求が指定されている場合(S301:YES)、検索サーバ1200は、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する(S303)。S303の「自装置」とは、ここでは、検索サーバ1200である。検索サーバ1200は、検索サーバ1200で管理されている検索インデックス登録ファイル管理テーブル4100のハッシュアルゴリズム4151、4153を調べることにより、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する。
【0176】
検索サーバ1200は、問合せ元の検索サーバ1100にて利用可能なハッシュアルゴリズムのうち、検索サーバ1200でも利用可能なハッシュアルゴリズムが有るか否かを判定する(S304)。検索サーバ1200は、ハッシュアルゴリズム問合せ要求パラメータ6300内の利用可能なハッシュアルゴリズム候補識別情報6340で指定されているハッシュアルゴリズムと、検索サーバ1200で利用可能なハッシュアルゴリズム(S303)とを比較し、両者に共通するハッシュアルゴリズムが存在するか否かを調べる。
【0177】
もし、共通のハッシュアルゴリズムが存在する場合(S304:YES)、検索サーバ1200は、そのハッシュアルゴリズムの識別情報を、ハッシュアルゴリズム問合せ応答パラメータ6400内の相互利用可能なハッシュアルゴリズム識別情報6450に登録する(S305)。
【0178】
問い合わせ元の検索サーバ1100で利用可能なハッシュアルゴリズムと、問合せ先の検索サーバ1200で利用可能なハッシュアルゴリズムとの間に共通するハッシュアルゴリズムが存在しない場合(S304:NO)、S305をスキップしてS306に移る。
【0179】
検索サーバ1200は、S304で発見された相互利用可能なハッシュアルゴリズム以外の、検索サーバ1200で利用可能な他のハッシュアルゴリズムが存在するか否かを判定する(S306)。検索サーバ1200は、処理S303において、検索サーバ1200で利用可能なハッシュアルゴリズムであると特定されたハッシュアルゴリズムの中で、処理S305の登録対象にならなかった他のハッシュアルゴリズムが存在するか否かを調べる。
【0180】
もし、他のハッシュアルゴリズムが存在する場合(S306:YES)、検索サーバ1200は、そのハッシュアルゴリズムの識別情報を、ハッシュアルゴリズム問合せ応答パラメータ6400内の利用可能なハッシュアルゴリズム候補識別情報6460に登録する(S307)。もし、他のハッシュアルゴリズムが存在しない場合(S306:YES)、S307をスキップしてS308に移る。
【0181】
検索サーバ1200は、ハッシュアルゴリズムの問合せ結果を、問合せ元の検索サーバ1100に応答する(S308)。検索サーバ1200は、ハッシュアルゴリズム問合せ応答パラメータ6400を指定して、問合せ結果を応答する。
【0182】
図22は、各検索サーバで実行される検索応答処理のフローチャートを示す。本処理は図21で述べた処理と同様に、各検索サーバ1100、1200、1300でそれぞれ実施される。ここでは便宜上、検索サーバ1200を例に挙げて説明する。
【0183】
始めに、検索サーバ1200は、検索要求パラメータ6500の中で指定された処理種別6530を調べ、「検索要求」が指定されているか否かを判定する(S401)。もし、指定されていない場合(S401:NO)、本処理はエラー終了する(S402)。指定されている場合(S401:YES)、検索サーバ1200は、指定された検索キーワードで検索処理を実行し、その検索結果を取得する(S403)。検索サーバ1200は、検索要求パラメータ6500内の検索キーワード6540及び検索オプション6550を利用して、検索処理を行う。
【0184】
検索サーバ1200は、検索要求パラメータ6500の検索オプション6550内で、利用可能ハッシュアルゴリズム識別情報6551が指定されているかどうかを調べる(S404)。もし、指定されていない場合(S404:NO)、S405をスキップしてS406に移る。
【0185】
指定されている場合(S404:YES)、検索サーバ1200は、取得した検索結果の各エントリに、各エントリに含まれるファイルのハッシュ値とハッシュ値の生成に利用したハッシュアルゴリズム識別情報とを、追加登録する(S405)。検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100に登録されているファイルのハッシュアルゴリズム4150に格納されている情報に基づいて、ハッシュ値及びハッシュアルゴリズム識別情報を取得する。
【0186】
検索サーバ1200は、検索結果を要求元の検索サーバ1100に応答する(S406)。検索サーバ1200は、検索結果応答パラメータ6600を指定して、検索結果を応答する。
【0187】
図23は、検索インデックス更新処理のフローチャートを示す。本処理は、各検索サーバ1100、1200、1300でそれぞれ実施される。便宜上、以下、検索サーバ1200を例に挙げて説明する。
【0188】
始めに、検索サーバ1200は、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する(S501)。S501における「自装置」とは、ここでは検索サーバ1200である。検索サーバ1200は、検索サーバ1200で管理されている検索インデックス登録ファイル管理テーブル4100内のハッシュアルゴリズム4151、4153を調べることにより、検索サーバ1200で利用可能なハッシュアルゴリズムを特定する。
【0189】
検索サーバ1200は、検索インデックスの更新対象であるファイルサーバと、更新対象のルートディレクトリとを特定する(S502)。次に、検索サーバ1200は、検索インデックス更新対象ファイルを全てクローリングし、インデクシングが完了したか否かを判定する(S503)。全てのファイルについてクローリング等が終了している場合(S503:YES)、本処理を終了する。
【0190】
全ファイルについてのクローリング及びインデクシング処理が完了していない場合(S503:NO)、検索サーバ1200は、クローリング対象ファイルが格納されているファイルサーバにアクセスし、検索インデックスの更新対象範囲に格納されている任意のファイルを一つ取得する(S504)。
【0191】
検索サーバ1200は、S504で取得されたファイルに関する情報を検索インデックスに新規登録する必要があるのか、または、S504で取得されたファイルに関する情報を検索インデックス上で更新させる必要があるかを判定する(S505)。
【0192】
具体的には、検索サーバ1200は、取得したファイルが前回の検索インデックス更新処理時から更新されているか否か、あるいは、取得したファイルが前回の検索インデックス更新処理時の後に新しく記憶されたファイルであるか否か、といった観点を調べる。新規登録または更新が不要な場合(S505:NO)、S503に戻る。新規登録または更新が必要な場合(S505:YES)、図24に示すS506に移る。検索サーバ1200は、S504で取得したファイル(対象ファイル)の情報を、検索インデックスに新規登録するのか、または、検索インデックスに登録済みの情報を更新するのかを判断する(S506)。
【0193】
新規登録を行うと判断した場合、検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100に、対象ファイルのエントリを新たに作成し、対象ファイルの情報を登録する(S507)。
【0194】
更新を行うと判断した場合、検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100に記憶されている対象ファイルのエントリを特定し、必要な情報を更新する(S508)。検索サーバ1200は、対象ファイルを解析して、検索インデックス管理テーブル4200に、検索インデックス情報を登録する(S509)。検索サーバ1200は、利用可能なハッシュアルゴリズムが存在するかどうかを確認する(S510)。検索サーバ1200は、S501の特定結果に基づいて、検索サーバ1200で利用可能なハッシュアルゴリズムが一つ以上存在するかどうかを判断する。利用可能なハッシュアルゴリズムが一つも存在しない場合(S510:NO)、S503に戻る。
【0195】
利用可能なハッシュアルゴリズムが存在する場合(S510:YES)、検索サーバ1200は、利用可能な全てのハッシュアルゴリズムを用いて、対象ファイルのデータから、それぞれのハッシュ値を生成し、生成された各ハッシュ値を検索インデックス登録ファイル管理テーブル4100に登録する(S511)。
【0196】
利用可能なハッシュアルゴリズムが複数ある場合、検索サーバ1200は、全てのハッシュアルゴリズムそれぞれに対応するハッシュ値を生成して、検索インデックス登録ファイル管理テーブル4100に登録する。
【0197】
上述の通り構成される本実施例では、検索アルゴリズムまたは/及び検索インデックスの更新タイミング等がそれぞれ異なる複数の検索サーバを疎に結合したシステムにおいて、統合検索を行う場合に、各検索サーバで共通に使用されるハッシュアルゴリズムを決定する。
【0198】
従って、本実施例では、同一の検索条件に関する各検索サーバからの検索結果を統合してなる統合検索結果の中から、重複したエントリを検出して排除することができる。これにより、ユーザは、複数の検索サーバに跨る統合検索結果を無駄なく入手することができる。ユーザは、重複エントリの取り除かれた統合結果を用いて、目的のファイルを比較的簡単に発見することができ、ユーザの使い勝手が向上する。
【0199】
本実施例では、疎結合した複数の検索サーバ1100、1200、1300のうち、統合検索要求を受け付けた検索サーバ1100が、各検索サーバ1100、1200、1300と交渉することにより、各検索サーバ1100、1200、1300間で共通して利用するハッシュアルゴリズムを取り決め、実際の検索は各検索サーバ1100、1200、1300でそれぞれ行われる。さらに、本実施例では、各検索サーバ1100、1200、1300は、取り決められたハッシュアルゴリズムを用いてハッシュ値を作成し、統合検索要求を受け付けた検索サーバ1100は、ハッシュ値を用いて統合検索結果の中から重複したエントリを検出し、それを取り除く。本実施例では、ハッシュ値の作成と、ハッシュ値を利用した重複の検出及び排除とが区別されている。これにより、本実施例では、疎結合された複数の検索サーバ間で役割を分担することができる。
【実施例2】
【0200】
図25,図26を参照して第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に相当する。従って、以下の各実施例では、第1実施例との相違点を中心に説明する。
【0201】
上述した第1実施例は、統合検索要求を受けた検索サーバ1100と、他の検索サーバ1100、1200、1300との間で、統合検索処理を行うたびに、統合検索結果の中から重複エントリを排除するために利用するハッシュアルゴリズムについて折衝する。
【0202】
しかし、各検索サーバ1100、1200、1300間で共通に利用されるハッシュアルゴリズムは、そう頻繁に変更されるものではない。通常の場合、一度決定された後は、同じハッシュアルゴリズムが比較的長期間使用されると考えられる。
【0203】
そこで、本実施例では、最初に取得したハッシュアルゴリズムの情報を、統合検索要求を受け付ける検索サーバ1100内にキャッシュとして保管しておく。それ以後、統合検索要求が発行された場合は、キャッシュされたハッシュアルゴリズムの情報を用いて、共通ハッシュアルゴリズムを決定し、統合検索処理を実行する。従って、本実施例では、統合検索要求を受け付けるたびに各検索サーバ間でハッシュアルゴリズムについて折衝する必要がなく、統合検索開始時のオーバヘッドを低減することができる。
【0204】
各検索サーバ1100、1200、1300からそれぞれ取得される一つまたは複数のハッシュアルゴリズムを検索サーバ1100内にキャッシュするためには、検索サーバ1100の有する検索サーバ管理テーブル4300の構成を変更し、さらに、検索サーバ1100で実行される統合検索処理の一部を変更する必要がある。
【0205】
図25は、本実施例で使用される検索サーバ管理テーブル4300の構成例である。検索サーバ管理テーブル4300には、図10で述べた各欄4310、4320、4330、4340のほかに、利用可能なハッシュアルゴリズムの識別情報4350を管理する欄が追加されている。
【0206】
利用ハッシュアルゴリズム識別情報4350には、統合検索に参加する各検索サーバ1100、1200、1300がそれぞれ利用可能なハッシュアルゴリズムを識別するための情報が格納される。一つの検索サーバについて、複数のハッシュアルゴリズム識別情報を格納することもできる。例えば、図25において、検索サーバID4310が1番のエントリには、利用ハッシュアルゴリズム識別情報4350として、SHA-1及びSHA-2が格納されている。統合検索処理において、各検索サーバから取得された利用可能ハッシュアルゴリズムの情報に基づいて、テーブル4300に利用可能なハッシュアルゴリズムの識別情報が登録される。
【0207】
図26は、検索サーバ1100で実行される統合検索処理の変更内容を示す。本処理と、図19に示す統合検索処理とは、以下の点で異なる。第一の相違点は、S203の後、検索サーバ1100は、検索サーバ管理テーブル4300内に、利用可能なハッシュアルゴリズム情報が存在するか否かを判定する点である(S213)。検索サーバ1100は、検索サーバ管理テーブル4300内の利用ハッシュアルゴリズム識別情報4350のエントリに、ハッシュアルゴリズム識別情報が登録されているか否かを確認する。
【0208】
利用可能なハッシュアルゴリズム情報が検索サーバ管理テーブル4300に記憶されている場合(S213:YES)、検索サーバ1100は、ハッシュアルゴリズムの折衝処理S204を省略して、S205に移る。利用可能なハッシュアルゴリズム情報が検索サーバ管理テーブル4300に記憶されていない場合(S213:NO)、検索サーバ1100は、第1実施例のように、ハッシュアルゴリズムの折衝処理を行うべく、S204に移る。
【0209】
第二の相違点は、S204の後、検索サーバ1100は、S204にて取得したハッシュアルゴリズム識別情報を検索サーバ管理テーブル4300に登録する点である(S214)。具体的に、検索サーバ1100は、利用ハッシュアルゴリズム識別情報4350の欄に、他の検索サーバ1100、1200、1300からそれぞれ取得したハッシュアルゴリズム識別情報を格納する。一つの検索サーバについて複数のハッシュアルゴリズム識別情報が取得された場合は、全てのハッシュアルゴリズム識別情報を検索サーバ管理テーブル4300に登録する。S214の後はS205に移る。
【0210】
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、最初の統合検索時に取得したハッシュアルゴリズム識別情報を保持して、共通ハッシュアルゴリズムを決定し、統合検索を行う。従って、統合検索要求を受信するたびに、各検索サーバ1100、1200、1300からハッシュアルゴリズムについての情報を取得する必要が無く、統合検索のオーバヘッドを短縮できる。
【実施例3】
【0211】
図27,図28を参照して第3実施例を説明する。上述した第1実施例は、統合検索要求を受けた検索サーバ1100と他の検索サーバ1100、1200、1300との間で、統合検索処理を行うたびにハッシュアルゴリズムについて折衝する。しかし、第2実施例で述べたように、ハッシュアルゴリズムは頻繁に変更されるものではない。そこで、本実施例では、以下に述べるように、統合検索サービスを提供するシステムの構築時において、検索サーバ1100が、各検索サーバ1100、1200、1300で利用可能なハッシュアルゴリズムをそれぞれ取得し、検索サーバ1100内に事前に登録する。
【0212】
検索サーバ管理テーブル4300については、第2実施例の図25にて説明した内容と同じ変更を行う必要がある。変更内容は図25と同じであるため、説明は省略する。検索サーバ1100における統合検索制御プログラム1125については、ハッシュアルゴリズムを事前に登録するための処理を新たに追加する。
【0213】
図27は、検索サーバ1100の有するコンピュータプログラムの構成を示す。図27は、図3に示す構成に加えて、統合検索制御プログラム1125内に、ハッシュアルゴリズム事前折衝サブプログラム1178が新たに追加されている。
【0214】
ハッシュアルゴリズム事前折衝サブプログラム1178は、統合検索サービスを提供するためのシステム構築時において、各検索サーバ1100、1200、1300で利用されているハッシュアルゴリズムを事前に調査し、その調査結果を検索サーバ1100内に格納させるための処理である。
【0215】
図28は、検索サーバ1100で実行される、ハッシュアルゴリズム事前折衝処理のフローチャートを示す。本処理は、統合検索サービスを提供するシステムを構築する場合において、各検索サーバ1100、1200、1300の設定作業を行う際に、実施される。
【0216】
始めに、検索サーバ1100は、検索サーバ1100にて利用可能なハッシュアルゴリズムを特定する(S601)。検索サーバ1100の管理している検索インデックス登録ファイル管理テーブル4100内のハッシュアルゴリズム4151、4153等を調べることにより、特定することができる。
【0217】
検索サーバ1100は、検索サーバ管理テーブル4300に登録している全検索サーバ1100、1200、1300に対して、ハッシュアルゴリズムを問い合わせる(S602)。この問合せには、ハッシュアルゴリズム問合せ要求パラメータ6300が使用される。
【0218】
検索サーバ1100は、ハッシュアルゴリズム問合せ応答パラメータ6400に含まれる情報を、問合せ先の各検索サーバ1100、1200、1300から取得する。検索サーバ1100は、各ハッシュアルゴリズム識別情報を検索サーバ管理テーブル4300に登録する(S603)。
【0219】
本実施例は上述のように構成されるため、第1実施例と同様の効果を奏する。さらに、本実施例では、統合検索サービスを提供するシステム構築時に、各検索サーバからハッシュアルゴリズムに関する情報を収集して保持する。従って、統合検索要求を受けるたびにハッシュアルゴリズムについての折衝処理を行う必要がなく、統合検索のオーバヘッドを短縮できる。
【実施例4】
【0220】
図29を参照して第4実施例を説明する。上述した第1実施例は、各検索サーバ1100、1200、1300における検索インデックス更新処理時に、検索対象ファイルデータについてのハッシュ値を作成する。これに対し、本実施例では、以下に述べるように、検索処理時にハッシュ値を作成させる。従って、本実施例では、検索インデックス更新処理のオーバヘッドを低減でき、さらに、ハッシュ値を格納するための領域を不要にできる。
【0221】
本実施例では、検索サーバが検索要求を受けた際、検索条件に合致するファイルデータを探し出すと共に、そのファイルデータについてのハッシュ値をいわゆるオンデマンドで作成する。
【0222】
図29は、検索サーバにおける検索応答処理のフローチャートを示す。本処理は、図22に示すS401−S406を備えており、さらに、S404とS405との間に、新たにS407−S409が追加される。以下、図22と同様に、主語を検索サーバ1200とする。
【0223】
ハッシュアルゴリズムが指定された検索要求である場合(S404:YES)、検索サーバ1200は、指定されたハッシュアルゴリズムを用いてハッシュ値が作成されているか否かを判定する(S407)。検索サーバ1200は、検索インデックス登録ファイル管理テーブル4100の対象ファイルのハッシュアルゴリズム4150の欄に、対象ファイルのハッシュ値が登録されているかどうかを調べる。
【0224】
ハッシュ値が作成済みの場合(S407:YES)、S405に移る。これに対し、ハッシュ値が作成されていない場合(S407:NO)、検索サーバ1200は、対象ファイルデータを取得する(S408)。検索サーバ1200は、検索インデックスを更新するためのクローリングにより取得されたファイルデータを利用してもよいし、または、ファイルサーバから対象ファイルデータを改めて取得してもよい。
【0225】
対象ファイルデータを取得した後、検索サーバは、指定されたハッシュアルゴリズムを利用して、対象ファイルデータからハッシュ値を作成する(S409)。検索サーバ1200は、ハッシュ値を作成すると、S405に移る。
【0226】
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、検索要求を受領した時点で、検索条件に合致するファイルのハッシュ値をその場で生成する。従って、本実施例では、検索インデックスの更新処理時にハッシュ値を作成したり、そのハッシュ値を保存したりする必要がない。
【実施例5】
【0227】
図30を参照して第5実施例を説明する。上述した第4実施例は、各検索サーバ1100、1200、1300での検索処理時に、検索対象ファイルについてハッシュ値を作成する。しかし、各検索サーバの処理負荷またはマシン性能等によっては、いわゆるオンデマンドでのハッシュ値作成が難しい場合もあり得る。
【0228】
そこで、本実施例では、統合検索要求を受けた検索サーバ1100において、各検索サーバ1100、1200、1300でそれぞれ検索されたファイルについてのハッシュ値を作成する。これにより、本実施例では、各検索サーバ1100、1200、1300における検索処理時のオーバヘッドを低減したり、ハッシュ値を格納するための領域を削減したりできる。
【0229】
図30は、検索サーバ1100における統合検索処理のフローチャートの一部を示す。フローチャートは、図20に示すフローチャートに対応する。相違点を中心に述べる。
【0230】
検索サーバ1100は、統合検索結果一時保管テーブル4400のエントリに格納されているファイルデータを取得する(S213)。検索サーバ1100は、統合検索結果一時保管テーブル4400のファイルパス名4450に基づいて、ファイルサーバからファイルデータを直接取得してもよい。または、検索サーバ1100内で、対象ファイルのキャッシュデータを保管している場合は、そのキャッシュデータを利用してもよい。
【0231】
検索サーバ1100は、各検索サーバで共通に利用可能なハッシュアルゴリズムを用いて、S213で取得した各ファイルデータのハッシュ値を作成し、統合検索結果一時保管テーブル4400に登録する(S214)。検索サーバ1100は、統合検索結果一時保管テーブル4400内のハッシュアルゴリズム4460欄、及びハッシュ値4470欄に、共通ハッシュアルゴリズムの識別情報、及び作成したハッシュ値を格納する。
【0232】
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、検索サーバ1100は、統合検索要求を受けた時に、検索条件に合致するファイルのハッシュ値をその場で生成する。従って、本実施例では、処理負荷が高くなりすぎるために各検索サーバでのハッシュ値作成が難しい場合、統合検索要求を受けた検索サーバにて一括してハッシュ値を作成することができる。
【0233】
さらに、本実施例では、各検索サーバの負荷状況に応じて、ハッシュ値作成の分担を変えることができる。例えば、負荷が低い検索サーバは、その検索サーバ内でハッシュ値を作成したり、負荷が高い検索サーバは、統合検索要求を受けた検索サーバ(または他の検索サーバ)でハッシュ値を作成したりすることもできる。
【実施例6】
【0234】
図31,図32を参照して第6実施例を説明する。上述した第5実施例は、検索サーバ1100における統合検索処理時に、その検索サーバ1100が、対象ファイルデータのハッシュ値を作成する。
【0235】
しかし、統合検索要求を受けた検索サーバ1100が、対象ファイルデータを格納しているファイルサーバにアクセスできない可能性もある。この場合、統合検索要求を受けた検索サーバ1100は、検索条件に合致するファイルデータを取得できない。
【0236】
そこで、ファイルデータを利用するのではなく、各検索サーバが検索結果の一部として提供する、検索キーワードを含有した文字列を利用する。本実施例では、検索キーワード含有文字列に基づいてハッシュ値を作成し、統合検索結果から重複エントリを検出して排除するために利用する。これにより、統合検索要求を受けた検索サーバ1100がファイルサーバにアクセスできない場合、または、処理負荷が高いために各検索サーバ1100、1200、1300でハッシュ値を作成することが難しい場合に、統合検索結果から重複エントリを見つけて排除することができる。
【0237】
図31は、統合検索結果一時保管テーブル4400を示す。図31の統合検索結果一時保管テーブル4400は、図11に示す統合検索結果一時保管テーブル4400と比べて、検索キーワード含有文字列4480の中に部分文字列4481と部分ハッシュ値4482とが新たに追加されている点で相違する。
【0238】
部分文字列4481は、図11に示す統合検索結果一時保管テーブル4400内の検索キーワード含有文字列4480に元々格納されている情報である。部分ハッシュ値4482には、部分文字列4481から作成されるハッシュ値が格納される。
【0239】
部分ハッシュ値4482は、統合検索結果一時保管テーブル4400のハッシュアルゴリズム4440に登録されているハッシュアルゴリズムを利用して作成してもよい。または、検索サーバ1100で利用可能な任意のハッシュアルゴリズムを一つ選択し、そのハッシュアルゴリズムを利用して作成してもよい。
【0240】
検索キーワード含有文字列4480に格納される、部分文字列4481と部分ハッシュ値4482の組は、各エントリに対して複数個保管することができる。なお、検索キーワード含有文字列4480の欄で、部分文字列4481または部分ハッシュ値4482に空欄が生じる場合、null値を格納すればよい。
【0241】
図32は、検索サーバ1100で実行される統合検索処理のフローチャートの一部を示す。本処理は、検索結果に含まれる検索キーワード含有文字列についてのハッシュ値を、オンデマンドに作成する。
【0242】
図32において、S208の後、検索サーバ1100は、検索サーバ1100で利用可能なハッシュアルゴリズムを利用して、統合検索結果一時保管テーブル4400のエントリに格納されている部分文字列のハッシュ値を作成し、それを部分ハッシュ値として、統合検索結果一時保管テーブル4400に登録する(S220)。
【0243】
ここで、統合用検索結果一時保管テーブル4400のエントリにおいて、部分文字列4481に複数の部分文字列が格納されている場合、検索サーバ1100は、それら全ての部分文字列について部分ハッシュ値をそれぞれ作成し、部分ハッシュ値4482欄に格納する。
【0244】
検索サーバ1100は、部分ハッシュ値を用いて、統合検索結果から重複したエントリを検出し、それを排除する(S221)。
【0245】
検索サーバ1100は、全ての部分ハッシュ値同士が合致するエントリを、重複エントリであると判断することができる。または、部分ハッシュ値が一定割合以上合致するエントリを、準重複エントリであると判断してもよい。例えば、n個の部分ハッシュ値のうちm(0<m<n)個以上の部分ハッシュ値が一致する2つのエントリは、重複エントリであると判定する構成としてもよい。
【0246】
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、ファイルデータからハッシュ値を求めるのではなく、検索キーワードを含む文字列(つまり、ファイルデータの一部分)からハッシュ値を求めて、重複エントリの検出に使用する。従って、検索サーバ1100がファイルサーバにアクセスできない場合、または、検索サーバ1100、1200、1300間で共通のハッシュアルゴリズムを決定できなかった場合でも、統合検索結果の中から重複したエントリを見つけて排除することができる。
【実施例7】
【0247】
図33を参照して第7実施例を説明する。本実施例では、統合検索結果の中から重複したエントリを検出した場合、その重複エントリに対応する検索インデックスを管理する検索サーバに、重複エントリが有ることを通知する。
【0248】
図33は、重複エントリを発見した場合の処理である。代表検索サーバ1100は、統合検索要求を受け付けて、統合検索を行うための検索サーバである。検索サーバ(1100、1200、1300)は、統合検索に参加する検索サーバであって、代表検索サーバ1100からの検索要求に応じて検索する検索サーバである。
【0249】
代表検索サーバ1100は、クライアントマシンから統合検索要求を受信すると、各検索サーバに検索要求を発行する(S701)。各検索サーバは、検索要求に従って検索し、検索結果を代表検索サーバ1100に返す(S702)。代表検索サーバ1100は、ハッシュ値を用いて、統合検索結果の中から重複エントリを検出する(S703)。
【0250】
代表検索サーバ1100は、重複エントリの取り除かれた統合検索結果を、クライアントマシンに送信する(S704)。さらに、代表検索サーバ1100は、重複エントリの発見された検索サーバに、重複エントリが発見された旨を通知する(S705)。その通知を受けた検索サーバは、重複エントリであることを確認する(S706)。検索サーバは、ファイルサーバに指示して、重複エントリに対応するファイルを削除させることもできる。
【0251】
このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、統合検索結果から重複エントリが検出された場合、その旨を検索サーバに通知するため、重複したファイルを削除させることもできる。
【0252】
なお、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、複数の検索サーバ間で共通するハッシュアルゴリズムが見つからない場合、共通ハッシュアルゴリズムとなり得るハッシュアルゴリズムを備えていない検索サーバに、その共通ハッシュアルゴリズムとなり得るハッシュアルゴリズムを送信してインストールさせる構成としてもよい。
【特許請求の範囲】
【請求項1】
複数の検索サーバを含むコンピュータシステムを用いて検索する方法であって、
前記コンピュータシステムは、それぞれ独立して動作する前記複数の検索サーバを疎結合させて構成されており、
前記複数の検索サーバに含まれる統合検索サーバは、前記複数の検索サーバに含まれる複数の所定の検索サーバにそれぞれ検索させるための統合検索要求を受信すると、前記各所定の検索サーバが共通して利用可能な、重複を検出するための重複検出用情報を決定し、前記各所定の検索サーバに前記統合検索要求に対応する検索要求を発行し、
前記各所定の検索サーバは、前記検索要求に基づいて担当のデータ群を検索し、その検索結果に、決定された前記重複検出用情報を用いて作成される、重複を検出するための重複検出値を含めて、前記統合検索サーバに送信し、
前記統合検索サーバは、前記各所定の検索サーバから受信する前記検索結果の中から、前記各重複検出値に基づいて重複データを検出し、前記各検索結果の中から前記検出された重複データを取り除いて統合検索結果を作成し、その統合検索結果を前記統合検索要求の発行元に提供する、
検索方法。
【請求項2】
前記各所定の検索サーバは、
前記担当のデータ群について、複数の前記重複検出用情報毎の前記重複検出値をそれぞれ予め記憶しており、
記憶された前記各重複検出値のうち、前記統合検索サーバにより決定された前記重複検出用情報に対応する重複検出値を前記検索結果に含めて前記統合検索サーバに送信する、請求項1に記載の検索方法。
【請求項3】
前記各所定の検索サーバは、前記担当のデータ群を検索するために使用する検索インデックスを更新する場合に、前記複数の重複検出用情報毎に前記重複検出値をそれぞれ作成して保存する、請求項2に記載の検索方法。
【請求項4】
前記統合検索サーバは、前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持しており、前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定する、請求項1に記載の検索方法。
【請求項5】
前記統合検索サーバは、前記コンピュータシステムが構築される場合に、前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持しており、前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定する、請求項1に記載の検索方法。
【請求項6】
前記各所定の検索サーバは、前記統合検索サーバから前記検索要求を受信した場合に、前記決定された重複検出用情報による前記重複検出値を作成し、その重複検出値を前記検索結果に含めて前記統合検索サーバに送信する、請求項1に記載の検索方法。
【請求項7】
前記重複検出用情報はハッシュアルゴリズムであり、前記重複検出値はハッシュ値である、請求項1に記載の検索方法。
【請求項8】
それぞれ独立して動作する複数の検索サーバを疎結合して構成されるコンピュータシステムを用いて検索するための統合検索サーバであって、
前記複数の検索サーバに含まれる複数の所定の検索サーバにそれぞれ検索させるための統合検索要求を受信すると、
前記各所定の検索サーバが共通して利用可能な、重複を検出するための重複検出用情報を決定し、
前記各所定の検索サーバに、前記決定された重複検出用情報を指定して、前記統合検索要求に対応する検索要求を発行し、
前記各所定の検索サーバがそれぞれ担当のデータ群を検索した検索結果であって、前記決定された重複検出用情報を用いて作成される重複を検出するための重複検出値を含む前記検索結果を、前記各所定の検索サーバから受信し、
前記各所定の検索サーバから受信された前記検索結果の中から、前記各重複検出値に基づいて重複データを検出し、
前記検出された重複データを取り除いて統合検索結果を作成し、
前記統合検索結果を前記統合検索要求の発行元に提供する、
統合検索サーバ。
【請求項9】
前記統合検索サーバは、前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持しており、前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定する、
請求項8に記載の統合検索サーバ。
【請求項10】
前記統合検索サーバは、前記コンピュータシステムが構築される場合に、前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持しており、前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定する、請求項8に記載の統合検索サーバ。
【請求項11】
前記各所定の検索サーバは、前記統合検索サーバから前記検索要求を受信した場合に、前記決定された重複検出用情報による前記重複検出値を作成し、その重複検出値を前記検索結果に含めて前記統合検索サーバに送信する、請求項8に記載の統合検索サーバ。
【請求項12】
コンピュータを、それぞれ独立して動作する複数の検索サーバを疎結合して構成されるコンピュータシステムを用いて検索するための統合検索サーバとして機能させるためのコンピュータプログラムであって、
前記コンピュータに、
前記複数の検索サーバに含まれる複数の所定の検索サーバにそれぞれ検索させるための統合検索要求を受信させ、
前記各所定の検索サーバが共通して利用可能な、重複を検出するための重複検出用情報を決定させ、
前記各所定の検索サーバに、前記決定された重複検出用情報を指定して、前記統合検索要求に対応する検索要求を発行させ、
前記各所定の検索サーバがそれぞれ担当のデータ群を検索した検索結果であって、前記決定された重複検出用情報を用いて作成される重複を検出するための重複検出値を含む前記検索結果を、前記各所定の検索サーバから受信させ、
前記各所定の検索サーバから受信された前記検索結果の中から、前記各重複検出値に基づいて重複データを検出させ、
前記検出された重複データを取り除いて統合検索結果を作成させ、
前記統合検索結果を前記統合検索要求の発行元に提供させる、
コンピュータプログラム。
【請求項13】
前記コンピュータに、
前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持させ、
前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定させる、
請求項12に記載のコンピュータプログラム。
【請求項14】
前記コンピュータに、
前記コンピュータシステムが構築される場合に、前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持させ、
前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定させる、
請求項12に記載のコンピュータプログラム。
【請求項15】
前記重複検出用情報はハッシュアルゴリズムであり、前記重複検出値はハッシュ値である、請求項12に記載のコンピュータプログラム。
【請求項1】
複数の検索サーバを含むコンピュータシステムを用いて検索する方法であって、
前記コンピュータシステムは、それぞれ独立して動作する前記複数の検索サーバを疎結合させて構成されており、
前記複数の検索サーバに含まれる統合検索サーバは、前記複数の検索サーバに含まれる複数の所定の検索サーバにそれぞれ検索させるための統合検索要求を受信すると、前記各所定の検索サーバが共通して利用可能な、重複を検出するための重複検出用情報を決定し、前記各所定の検索サーバに前記統合検索要求に対応する検索要求を発行し、
前記各所定の検索サーバは、前記検索要求に基づいて担当のデータ群を検索し、その検索結果に、決定された前記重複検出用情報を用いて作成される、重複を検出するための重複検出値を含めて、前記統合検索サーバに送信し、
前記統合検索サーバは、前記各所定の検索サーバから受信する前記検索結果の中から、前記各重複検出値に基づいて重複データを検出し、前記各検索結果の中から前記検出された重複データを取り除いて統合検索結果を作成し、その統合検索結果を前記統合検索要求の発行元に提供する、
検索方法。
【請求項2】
前記各所定の検索サーバは、
前記担当のデータ群について、複数の前記重複検出用情報毎の前記重複検出値をそれぞれ予め記憶しており、
記憶された前記各重複検出値のうち、前記統合検索サーバにより決定された前記重複検出用情報に対応する重複検出値を前記検索結果に含めて前記統合検索サーバに送信する、請求項1に記載の検索方法。
【請求項3】
前記各所定の検索サーバは、前記担当のデータ群を検索するために使用する検索インデックスを更新する場合に、前記複数の重複検出用情報毎に前記重複検出値をそれぞれ作成して保存する、請求項2に記載の検索方法。
【請求項4】
前記統合検索サーバは、前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持しており、前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定する、請求項1に記載の検索方法。
【請求項5】
前記統合検索サーバは、前記コンピュータシステムが構築される場合に、前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持しており、前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定する、請求項1に記載の検索方法。
【請求項6】
前記各所定の検索サーバは、前記統合検索サーバから前記検索要求を受信した場合に、前記決定された重複検出用情報による前記重複検出値を作成し、その重複検出値を前記検索結果に含めて前記統合検索サーバに送信する、請求項1に記載の検索方法。
【請求項7】
前記重複検出用情報はハッシュアルゴリズムであり、前記重複検出値はハッシュ値である、請求項1に記載の検索方法。
【請求項8】
それぞれ独立して動作する複数の検索サーバを疎結合して構成されるコンピュータシステムを用いて検索するための統合検索サーバであって、
前記複数の検索サーバに含まれる複数の所定の検索サーバにそれぞれ検索させるための統合検索要求を受信すると、
前記各所定の検索サーバが共通して利用可能な、重複を検出するための重複検出用情報を決定し、
前記各所定の検索サーバに、前記決定された重複検出用情報を指定して、前記統合検索要求に対応する検索要求を発行し、
前記各所定の検索サーバがそれぞれ担当のデータ群を検索した検索結果であって、前記決定された重複検出用情報を用いて作成される重複を検出するための重複検出値を含む前記検索結果を、前記各所定の検索サーバから受信し、
前記各所定の検索サーバから受信された前記検索結果の中から、前記各重複検出値に基づいて重複データを検出し、
前記検出された重複データを取り除いて統合検索結果を作成し、
前記統合検索結果を前記統合検索要求の発行元に提供する、
統合検索サーバ。
【請求項9】
前記統合検索サーバは、前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持しており、前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定する、
請求項8に記載の統合検索サーバ。
【請求項10】
前記統合検索サーバは、前記コンピュータシステムが構築される場合に、前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持しており、前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定する、請求項8に記載の統合検索サーバ。
【請求項11】
前記各所定の検索サーバは、前記統合検索サーバから前記検索要求を受信した場合に、前記決定された重複検出用情報による前記重複検出値を作成し、その重複検出値を前記検索結果に含めて前記統合検索サーバに送信する、請求項8に記載の統合検索サーバ。
【請求項12】
コンピュータを、それぞれ独立して動作する複数の検索サーバを疎結合して構成されるコンピュータシステムを用いて検索するための統合検索サーバとして機能させるためのコンピュータプログラムであって、
前記コンピュータに、
前記複数の検索サーバに含まれる複数の所定の検索サーバにそれぞれ検索させるための統合検索要求を受信させ、
前記各所定の検索サーバが共通して利用可能な、重複を検出するための重複検出用情報を決定させ、
前記各所定の検索サーバに、前記決定された重複検出用情報を指定して、前記統合検索要求に対応する検索要求を発行させ、
前記各所定の検索サーバがそれぞれ担当のデータ群を検索した検索結果であって、前記決定された重複検出用情報を用いて作成される重複を検出するための重複検出値を含む前記検索結果を、前記各所定の検索サーバから受信させ、
前記各所定の検索サーバから受信された前記検索結果の中から、前記各重複検出値に基づいて重複データを検出させ、
前記検出された重複データを取り除いて統合検索結果を作成させ、
前記統合検索結果を前記統合検索要求の発行元に提供させる、
コンピュータプログラム。
【請求項13】
前記コンピュータに、
前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持させ、
前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定させる、
請求項12に記載のコンピュータプログラム。
【請求項14】
前記コンピュータに、
前記コンピュータシステムが構築される場合に、前記各所定の検索サーバで利用可能な重複検出用情報に関する情報を、前記各所定の検索サーバから取得して保持させ、
前記統合検索要求を受信した場合、前記保持された各重複検出用情報に関する情報に基づいて、前記各所定の検索サーバが共通に利用可能な重複検出用情報を決定させる、
請求項12に記載のコンピュータプログラム。
【請求項15】
前記重複検出用情報はハッシュアルゴリズムであり、前記重複検出値はハッシュ値である、請求項12に記載のコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【公開番号】特開2012−194989(P2012−194989A)
【公開日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願番号】特願2012−121624(P2012−121624)
【出願日】平成24年5月29日(2012.5.29)
【分割の表示】特願2010−111314(P2010−111314)の分割
【原出願日】平成22年5月13日(2010.5.13)
【出願人】(000233055)株式会社日立ソリューションズ (1,610)
【公開日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願日】平成24年5月29日(2012.5.29)
【分割の表示】特願2010−111314(P2010−111314)の分割
【原出願日】平成22年5月13日(2010.5.13)
【出願人】(000233055)株式会社日立ソリューションズ (1,610)
[ Back to top ]