(57)【特許請求の範囲】
【請求項１】
文書を検索するための情報処理装置であって、前記情報処理装置は、
前記文書に対するアクセス権限を含ませた索引を生成して、前記文書とともに管理するデータベース管理部と、
前記情報処理装置にアクセスする前記アクセス権限をユーザ情報として取得するユーザ情報取得部と、
前記ユーザ情報および検索式を含む検索要求を取得し、前記ユーザ情報から検索要求の発行元のアクセス権限についての包含関係を指定する演算子を含む包含関係式を前記検索式に結合して結合検索式を生成し、前記結合検索式から、複数のユーザ識別値を含むドメイン内で前記複数のユーザ識別値の下に共有できる共用レベルの検索結果を取得する文書検索部と、
前記共用レベルであることを識別させたキャッシュ項目として前記共用レベルの検索結果を登録するキャッシュ管理部と、
前記共用レベルのキャッシュ項目がない場合に前記結合検索式に基づいて索引検索を実行し、前記共用レベルの検索結果を生成する索引検索実行部と
を含む、情報処理装置。
【請求項２】
前記文書検索部は、
前記検索要求から前記検索式を取得する検索式取得部と、
前記検索式取得部が取得した前記検索式と、前記ユーザ情報から生成した前記包含関係式を作成し、前記検索式に結合して前記結合検索式を生成し、前記結合検索式を使用して前記キャッシュ管理部および前記索引検索実行部の検索を制御する検索制御部と、
前記検索要求に対応する検索結果を取得し、前記検索要求の発行元に送付させる、検索結果作成部と
を含む、請求項１に記載の情報処置装置。
【請求項３】
前記アクセス権限は、セキュア検索のため、ユーザのみがアクセスできるプライベート・レベル、複数の前記ユーザを含むドメイン・レベル、および複数のドメイン・レベルを含むオープンドメイン・レベルごとにそれぞれ設定される、請求項１に記載の情報処理装置。
【請求項４】
前記索引は、転置索引として生成された全文索引である、請求項３に記載の情報処理装置。
【請求項５】
さらに前記文書および前記転置索引を管理する文書データベースと、前記検索結果をキャッシュするキャッシュメモリとを含み、前記キャッシュメモリは、前記共用レベルであることを示すキャッシュ索引と前記共用レベルの検索結果とを対応付け、前駆プライベート・レベルではキャッシュヒットしない前記キャッシュ項目として登録する、請求項４に記載の情報処理装置。
【請求項６】
ネットワークを介して文書を検索するための文書検索システムであって、前記文書検索システムは、
ユーザ識別値を使用して文書検索のための検索式を含む検索要求を前記ネットワークを介して送付する端末装置と、
前記端末装置からの前記検索要求を受領して文書検索を実行し、検索結果を前記端末装置に返す検索サーバとを含み、前記検索サーバは、
前記文書に対するアクセス権限を含ませた索引を生成して、前記文書とともに管理するデータベース管理部と、
前記情報処理装置にアクセスする前記アクセス権限をユーザ情報として取得するユーザ情報取得部と、
前記ユーザ情報および検索式を含む検索要求を取得し、前記ユーザ情報から検索要求の発行元のアクセス権限についての包含関係を指定する演算子を含む包含関係式を前記検索式に結合して結合検索式を生成し、前記結合検索式から、複数のユーザ識別値を含むドメイン内で前記複数のユーザ識別値の下に共有できる共用レベルの検索結果を取得する文書検索部と、
前記共用レベルであることを識別させたキャッシュ項目として前記共用レベルの検索結果を登録するキャッシュ管理部と、
前記共用レベルのキャッシュ項目がない場合に前記結合検索式に基づいて索引検索を実行し、前記共用レベルの検索結果を生成する索引検索実行部と
を含む、文書検索システム。
【請求項７】
前記文書検索部は、
前記検索要求から前記検索式を取得する検索式取得部と、
前記検索式取得部が取得した前記検索式と、前記ユーザ情報から生成した前記包含関係式を作成し、前記検索式に結合して前記結合検索式を生成し、前記結合検索式を使用して前記キャッシュ管理部および前記索引検索実行部の検索を制御する検索制御部と、
前記検索要求に対応する検索結果を取得し、前記検索要求の発行元に送付させる、検索結果作成部と
を含む、請求項６に記載の文書検索システム。
【請求項８】
前記ネットワークを介して接続され、前記ユーザ識別値に関連する前記アクセス権限を管理するユーザ管理サーバを含み、前記ユーザ管理サーバは、前記アクセス権限を、セキュア検索のため、ユーザのみがアクセスできるプライベート・レベル、複数の前記ユーザを含むドメイン・レベル、および複数のドメイン・レベルを含むオープンドメイン・レベルごとにそれぞれ管理する、請求項７に記載の文書検索システム。
【請求項９】
前記索引は、転置索引として生成された全文索引である、請求項８に記載の文書検索システム。
【請求項１０】
さらに前記文書および前記転置索引を管理する文書データベースと、前記検索結果をキャッシュするキャッシュメモリとを含み、前記キャッシュメモリは、前記共用レベルであることを示すキャッシュ索引と前記共用レベルの検索結果とを対応付け、前記プライベート・レベルではキャッシュヒットしない前記キャッシュ項目として登録する、請求項９に記載の文書検索システム。
【請求項１１】
文書を検索するための情報処理装置が実行する文書検索方法であって、前記文書検索方法は、
前記文書に対する前記アクセス権限を含ませた索引を生成して、前記文書とともに管理するステップと、
前記情報処理装置にアクセスするアクセス権限をユーザ情報として取得するステップと、
前記ユーザ情報および検索式を含む検索要求を取得し、前記ユーザ情報から検索要求の発行元のアクセス権限についての包含関係を指定する演算子を含む包含関係式を生成するステップと、
前記包含関係式を前記検索式に結合して結合検索式を生成し、前記結合検索式を使用して複数のユーザ識別値を含むドメイン内で前記複数のユーザ識別値の下で共用できる共用レベルの文書を検索するステップと、
共用レベルの検索結果であることを識別するキャッシュ索引を生成するステップと、
前記共用レベルの検索結果を前記キャッシュ索引と対応付けてキャッシュ項目として登録するステップと、
前記検索するステップで取得された共用レベルの検索結果を含む検索結果集合を生成するステップと
を実行する、コンピュータ実行可能な文書検索方法。
【請求項１２】
前記検索するステップは、
前記結合検索式から生成される、前記共用レベルの検索結果を生成するための検索式からhash値を生成するステップと、
前記hash値を使用して前記キャッシュ項目を検索するステップと、
前記キャッシュ項目の検索がキャッシュヒットを与える場合、前記キャッシュ項目に登録された検索済結果を前記共用レベルの検索結果とし、前記キャッシュ項目の検索がキャッシュミスヒットを与える場合に、前記結合検索式に基づいて索引検索を実行し、前記共用レベルの検索結果とするステップと
を含む、請求項１１に記載の文書検索方法。
【請求項１３】
前記検索するステップは、さらに
前記結合検索式から生成される、前記複数のユーザ識別値が共用できないプライベート・レベルの検索結果を生成するための検索式を生成するステップと、
前記プライベート・レベルの検索結果を生成するための検索式を使用して前記プライベート・レベルでの検索結果を取得するステップと、
前記プライベート・レベルの検索結果を、前記プライベート・レベルの検索結果を生成するための検索式のhash値をキャッシュ索引として、前記プライベート・レベルの検索結果に対応付けてキャッシュ項目として登録するステップと
を含む、請求項１２に記載の文書検索方法。
【請求項１４】
前記検索結果集合を生成するステップは、前記共用レベルおよび前記プライベート・レベルについての各検索結果から和集合を生成するステップを含む、請求項１３に記載の文書検索方法。
【請求項１５】
前記アクセス権限は、セキュア検索のため、ユーザのみがアクセスできるプライベート・レベル、複数の前記ユーザを含むドメイン・レベル、および複数のドメイン・レベルを含むオープンドメイン・レベルごとにそれぞれ設定され、さらに、前記索引は、転置索引として生成された全文索引である、請求項１４に記載の文書検索方法。
【請求項１６】
コンピュータが実行する文書検索方法のためのコンピュータ実行可能なプログラムであって、前記プログラムは、コンピュータが、
前記文書に対する前記アクセス権限を含ませた索引を生成して、前記文書とともに管理するステップと、
前記コンピュータにアクセスするアクセス権限をユーザ情報として取得するステップと、
前記ユーザ情報および検索式を含む検索要求を取得し、前記ユーザ情報から検索要求の発行元のアクセス権限についての包含関係を指定する演算子を含む包含関係式を生成するステップと、
前記包含関係式を前記検索式に結合して結合検索式を生成し、前記結合検索式を使用して複数のユーザ識別値を含むドメイン内で前記複数のユーザ識別値の下で共用できる共用レベルの文書を検索するステップと、
共有レベルの検索結果であることを識別するキャッシュ索引を生成するステップと、
前記共用レベルの検索結果を前記キャッシュ索引と対応付けてキャッシュ項目として登録するステップと、
前記検索するステップで取得された共用レベルの検索結果を含む検索結果集合を生成するステップと
を実行するための、コンピュータ実行可能なプログラム。
【請求項１７】
前記検索するステップは、
前記結合検索式から生成される、前記共用レベルの検索結果を生成するための検索式からhash値を生成するステップと、
前記hash値を使用して前記キャッシュ項目を検索するステップと、
前記キャッシュ項目の検索がキャッシュヒットを与える場合、前記キャッシュ項目に登録された検索済結果を前記共用レベルの検索結果とし、前記キャッシュ項目の検索がキャッシュミスヒットを与える場合に、前記結合検索式に基づいて索引検索を実行し、前記共用レベルの検索結果とするステップと
を含む、請求項１８に記載のプログラム。
【請求項１８】
前記検索するステップは、さらに
前記結合検索式から生成される、前記複数のユーザ識別値が共用できないプライベート・レベルの検索結果を生成するための検索式を生成するステップと、
前記プライベート・レベルの検索結果を生成するための検索式を使用して前記プライベート・レベルでの検索結果を取得するステップと、
前記プライベート・レベルの検索結果を、前記プライベート・レベルの検索結果を生成するための検索式のhash値をキャッシュ索引として、前記プライベート・レベルの検索結果に対応付けてキャッシュ項目として登録するステップと
を含む、請求項１７に記載のプログラム。
【請求項１９】
前記検索結果集合を生成するステップは、前記共用レベルおよび前記プライベート・レベルについての各検索結果から和集合を生成するステップを含み、前記アクセス権限は、セキュア検索のため、ユーザのみがアクセスできるプライベート・レベル、複数の前記ユーザを含むドメイン・レベル、および複数のドメイン・レベルを含むオープンドメイン・レベルごとにそれぞれ設定され、さらに、前記索引は、転置索引として生成された全文索引である、請求項１８に記載のプログラム。
【請求項２０】
文書を検索するための情報処理装置であって、前記情報処理装置は、
前記文書に対するアクセス権限を含ませた索引を生成して、前記文書とともに管理するデータベース管理部と、
前記情報処理装置にアクセスするユーザ識別値について前記アクセス権限をユーザ情報として取得するユーザ情報取得部と、
前記検索要求から検索式を取得する検索式取得部と、
前記検索式取得部が取得した前記検索式と、前記ユーザ情報から生成した検索要求の発行元のアクセス権限についての包含関係を指定する演算子を含む前記包含関係式を作成し、前記検索式に結合して前記結合検索式を生成し、前記結合検索式を使用して検索を制御し、複数のユーザ識別値を含むドメイン内で前記複数のユーザ識別値の下で共用できる共用レベルの検索結果を取得する検索制御部と、
前記検索要求に対応する検索結果を取得し、前記検索要求の発行元に送付させる検索結果作成部とを含む文書検索部と、
前記共用レベルのキャッシュ項目として前記共用レベルの検索結果と対応付けて登録するキャッシュ管理部と、
前記共用レベルのキャッシュ項目がない場合に前記結合検索式に基づいて索引検索を実行し、前記共用レベルの検索結果を生成する索引検索実行部と、
前記文書および前記転置索引を管理する文書データベースと、
前記共有レベルの検索結果をキャッシュするキャッシュメモリと、
を含み、
前記アクセス権限は、セキュア検索のため、ユーザのみがアクセスできるプライベート・レベル、複数の前記ユーザを含むドメイン・レベル、および複数のドメイン・レベルを含むオープンドメイン・レベルごとにそれぞれ設定され、前記索引は、転置索引として生成された全文索引であり、前記キャッシュメモリは、前記共用レベルであることを示すキャッシュ索引と前記共用レベルの検索結果とを対応付け、前駆プライベート・レベルではキャッシュヒットしない前記キャッシュ項目として登録する、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書検索に関し、より詳細には、全文索引を使用する場合のセキュリティを確保しつつ、検索効率を向上させる、情報処理装置、文書検索システム、文書検索方法およびプログラムに関する。
【背景技術】
【０００２】
ネットワーク技術および情報処理装置の性能向上に伴い、文書の全体の語句を索引として検索する、いわゆる全文索引検索が可能とされている。また、文書検索については、オープン環境で全ユーザに対してすべての文書を検索させるシステムもあるし、また、文書検索システムにアクセスしてきたユーザのアクセス権限をユーザ情報として使用し、アクセス権限に関連してアクセスできる文書を制限することにより、データベースなどに蓄積された文書のセキュリティを確保する、いわゆるセキュリティ検索システムも存在する。【０００３】
文書セキュリティを継承する機能(以下、セキュア検索として参照する。)を有する文書検索システムは、多くの場合、検索対象文書の全文索引内に文書に対するアクセス権情報を保持させ、アクセス索引として文書検索時にアクセス権限の判断を実行する。従来の検索システムでは、多くの場合、ユーザの検索時に取得されるユーザ名やグループ名、またはそれらの階層包含関係(以下、これらを総じてユーザ情報として参照する。)が、閲覧可能なアクセス権にマッチする文書のみを検索結果として抽出することで、セキュア検索を実現する。【０００４】
このような文書検索システムは、検索実行時にユーザ情報を含む検索式を作成し、全文検索の基盤を大きく変更することなくセキュア検索を実現可能とする。しかしながら、ユーザ情報を含む検索式は、アクセスしてきたユーザのアクセス権限の他、ユーザが属するすべてのグループ名を羅列したＯＲ検索式となる。この結果、従来のセキュア検索は、文書数およびグループ階層が増加するにつれ、グループが含む文書数の増加およびグループ数の増加により、検索対象が非線型的に増加し、検索性能に大きな影響を及ぼすという問題がある。【０００５】
上述した従来技術の問題点を改善するため、検索結果をキャッシュしておき、２回目以降の検索を、高速化する既存技術も知られている。検索結果をキャッシングする処理を採用することで、同一の検索式での検索処理を高速化することができる。しかしながら、セキュア検索についてみれば、ユーザ相互、グループ間相互のアクセス権限を保存しなければならないという特有の問題が生じる。すなわち、キャッシュ結果は、アクセス権限に基づいて登録されなければならないので、ユーザを識別するためにユーザ固有のアクセス権限を含むキャッシュ索引が作成されることになる。この結果、キャッシュ項目は、「同一のユーザ」が「同一の検索式」を使用して実行する場合にのみ、キャッシュヒットを生成させ、それ以外の場合には、キャッシュミスヒットを生じさせてしまい、キャッシュの利用効率が高められないという問題があった。【０００６】
上述した問題は、キャッシュヒットの発生が、従来の文書検索システムでは同一ユーザが同一検索式を複数回入力する場合にのみ発生することに起因する。このような検索は、ユーザまたは文書検索システム内で何らかの不都合があった場合を除き多くは生じず、非セキュア検索の場合と比較してキャッシュのヒット率が著しく低下することによる。【０００７】
これまで、セキュア検索を可能とする文書検索システムは多数知られている。例えば、特開２００５−２８４６０８号公報（特許文献１）では、セキュア検索を高速に実現する処理を開示する。特許文献１では、事前にアクセス権限の属性値をデータベースに設定することによりセキュア検索を可能とする。【０００８】
特許文献１では、検索処理以前に、事前に索引に対してアクセス権情報の組合わせにラベルを付する処理が必要となり、また検索は、ユーザのアクセス権限を網羅的にＯＲ検索し、検索結果の和集合を生成する処理が必要とされ、グループの増加およびグループ単位で蓄積される文書数の増加に対して非線型的に検索処理のオーバーヘッドが増加するので、検索効率は、非線型的に非効率化する。この結果、セキュア検索において全文索引検索を対象とするシステムにそのまま適用するには、検索効率の点で現実性が低いものである。【０００９】
また、特開２００４−１６４５５５号公報（特許文献２）には、検索装置および方法ならびにそのインデクス構築装置が開示されている。特許文献２は、セキュア検索を実現する手法に関する発明であり、特許文献２では、セキュリティ・ドメインを規定し、当該セキュリティ・ドメインに対してアクセス権を設定するための複数のインデックスを登録させることにより、ドメインごとのセキュリティ性を確保する。この際、セキュリティ・ドメインごとのインデックスの生成は、ドメインごとに設定された管理者が、セキュリティ・ドメイン内の文書を収集する収集プログラムを実行させ、セキュリティ・ドメインでアクセス可能文書を収集し、インデックスの作成および編集などにより行われている。【００１０】
特許文献２の処理によっても、セキュア検索は可能となるが、管理者によるインデックス管理などの負担が増加する。また、収集プログラムによる文書の収集は、結局の所、文書を検索し抽出するという文書検索処理の実行を伴い、実質的に文書検索プログラムを、管理者用の収集プログラムと、一般ユーザ用の文書検索プログラムというコンテキストで実装しなければならないという、ソフトウェアモジュールの無駄を発生させてしまう。【００１１】
さらに、特許文献２の処理は、文書に対して階層構造を割当て、アクセス権のチェックをインデックス単位で枝狩りすることにより検索対象となる文書数を削減することで、セキュア検索における検索効率またはレスポンス性を向上させるものである。文書に対して階層構造を割当て、枝狩りする処理を使用することによっても、検索対象空間を削減することは可能となる。しかしながら、文書に階層構造を割当てる場合でも、枝の最下層にある文書にまで到達しなければならない場合、結局の所ユーザのアクセス権の網羅的に含むＯＲ検索を実行しなければならない。この結果、検索式によって検索速度やレスポンスは大きく異なることになり、検索処理のスケーラビリティが低下する。【００１２】
また、文書は、そのセキュリティ・レベルに対応して一義的な階層構造を割当てることができない場合もあり、また、セキュリティ・レベルの変更を伴う場合、ツリー構造を再構築しなければならないという不都合がある。さらに、文書に対する階層構造割当てに依存して、本来検索可能な文書であっても、検索対象から排除されてしまう文書が発生することも想定でき、必ずしも汎用的な文書検索に適用できるわけではない。加えて、例えば、ユーザがプライベートなアクセス権限でアクセスする場合には、階層構造に依存せずにアクセスさせなければならないので、複数の索引構造を用意しなければならず、全文検索を前提としたセキュア検索においては、特許文献１と同様に実現性が低いものということができる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００５−２８４６０８号公報
【特許文献２】特開２００４−１６４５５５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
以上のように、従来のセキュア検索処理は、セキュア検索を実現するために管理者によるセキュリティ管理の負担が発生すること、セキュア検索および文書収集のための類似するソフトウェアの並列実装が必要となる。また、セキュリティ・レベルの変更に対応して索引構造を大幅に変更する必要が生じ、また異なる索引構造を並列的に実装することが必要となるなど、全文索引検索のためのセキュア検索にそのまま適用することが困難であった。加えて、ユーザが帰属されるグループの階層構造が増加するにつれて、非線型的に検索処理のオーバーヘッドが増大し、検索効率が低下するものであり、文書数の増加およびグループの階層構造の増加に柔軟に対応しながら検索効率を改善するものではない。【００１５】
すなわち、本発明は、全文索引を使用するセキュア検索処理の検索効率を向上することが可能な、情報処理装置、文書検索システム、文書検索方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、上記従来技術の問題点を、セキュア検索のための全文索引構造を修正することなく、キャッシュヒット確率を向上させ、さらに、文書検索式の集合演算回数を削減させることによりセキュア検索における検索効率を改善する。【００１７】
ユーザ単位でのセキュア性の確保は、文書に対してではなく、ユーザに対して階層構造を導入することにより行われ、ユーザの階層構造の識別処理は、ユーザログイン時の情報を利用して検索実行時に検索サーバがユーザ情報として取得する。検索サーバは、ユーザ入力された検索式と、ユーザのアクセス権限から生成される包含関係式とを結合させて結合検索式を生成する。文書検索システムは、結合検索式からユーザのプライベート・レベルの検索を実行する検索式および共用レベルの検索を実行する検索式を生成し、独立して検索を実行させる。【００１８】
各検索結果は、プライベート・レベルの検索結果および共用レベルの検索結果を識別することが可能なキャッシュ索引にそれぞれ対応付けられて、キャッシュメモリに格納される。【００１９】
特定の実施形態では、プライベート・レベルの検索結果を索引付けするキャッシュ索引は、プライベート・レベルの検索結果を与える検索式を使用したhash計算により生成され、また共用レベルの検索結果を索引付けするキャッシュ索引は、共用レベルの検索結果を与える検索式を使用したhash計算により生成される。この結果、共用レベルの検索結果についてのキャッシュ索引の検索は、同一の共用レベルに関連した検索については、検索するユーザが相違してもキャッシュヒットを発生させるが、プライベート・レベルを含むキャッシュ項目に関してキャッシュヒットを発生させず、共用レベルでのキャッシュヒット確率を向上させつつ、プライベート・レベルのセキュリティを保証することができる。【００２０】
プライベート・レベルでの検索結果は、同様にしてキャッシュ項目として、プライベート・レベルであることを示すキャッシュ索引とともに登録され、プライベート・レベルでの検索要求の場合には、キャッシュ索引の検索が実行され、キャッシュヒットの場合には、キャッシュ内容が検索結果とされる。【００２１】
一方、キャッシュミスヒットの場合には、共用レベルでも、プライベート・レベルでも全文索引を使用した全文索引検索が実行され、新たな検索結果が生成される。生成された新たな検索結果は、新たな検索結果を生成するために使用した検索式についてのhash計算により生成されるキャッシュ索引に対応付けて登録され、以後、同一の検索式に帰属される検索要求を受領した場合、キャッシュヒットに対応して全文索引検索を実行させることなくキャッシュ内容を返すことを可能とする。【００２２】
この結果、本発明では、共用レベルでは、キャッシュ内容は、ユーザが過去に検索したグループ階層単位でアクセス可能な文書を網羅したものとして登録される。この結果、共用レベルでキャッシュヒットが発生した場合、ユーザのプライベート・レベルでのキャッシュヒットまたは索引検索の検索結果と、たかだか１回のＯＲ演算を実行するだけで検索結果集合を生成することができ、集合演算のために消費されるプロセッサ能力を著しく削減することが可能となる。【００２３】
また、本発明では、グループに含まれるユーザ数が増加すれば増加するだけ、キャッシュヒット確率が向上しさらに、ユーザのグループ異動や、グループ階層が増加した場合にでも、グループ階層分の集合演算を伴う全文索引検索が実行される確率を最小限に抑制することが可能となり、セキュア検索効率を向上することができるとともに、グループ階層の増加およびそれに伴う文書の増加に柔軟に対応できるセキュア検索が可能となる。
【図面の簡単な説明】
【００２４】
【図１】本発明の文書検索システム１００の概略図。
【図２】本実施形態の検索サーバ１１０の機能ブロック図。
【図３】本実施形態のユーザのグループ階層構造３００の実施形態を示した図。
【図４】本実施形態の検索サーバ１１０が管理する全文索引４００の実施形態を示した図。
【図５】検索結果をキャッシュする場合の、キャッシュ索引生成処理５００を比較した図。
【図６】本実施形態で、キャッシュメモリ２２２内に生成されるデータ構造６００の実施形態を示した図。
【図７】本実施形態の検索サーバ１１０が実行する文書検索処理のフローチャート。
【図８】図７で説明した、プライベート・レベルでのみアクセス可能な文書に関する検索結果を含む検索結果を生成する文書検索処理のフローチャート。
【図９】本実施形態のセキュア文書検索によるＯＲ処理の削減およびキャッシュ項目の利用性の改善を、プライベート・レベルでの検索結果を含ませる図８の処理についての結合検索式９００を使用して説明する図。
【図１０】本実施形態の文書検索システム１００による検索効率改善の機能を説明した図。
【発明を実施するための形態】
【００２５】
以下、本発明につき、実施形態をもって説明するが、本発明は、後述する実施例に限定されるものではない。図１は、本発明の文書検索システム１００の概略図である。文書検索システム１００は、インターネット、ＬＡＮなどのネットワーク１０８と、ネットワーク１０８に接続され、ユーザにより操作されて、ネットワーク１０８を介して検索サーバ１１０にアクセスする復数の端末装置（以下、単に端末装置１０２として参照する。）１０２、１０４、１０６を含んで構成されている。
【００２６】
検索サーバ１１０は、本実施形態にしたがい、検索サーバ１１０が管理する文書データベース（図示せず）に格納された文書に対するセキュア検索を実行する。本実施形態では、文書は、電子化された電子データ全般を意味し、テキスト、イメージ、オーディオ、またはこれらのデータが複合的に組み合わせされたマルチメディアコンテンツを含むことができる。ネットワーク１０８には、検索サーバ１１０にアクセスするユーザの、アクセス権限を管理するユーザ管理サーバ１２０が接続されている。ユーザ管理サーバ１２０は、ユーザが検索サーバ１１０にログオンする場合、検索サーバ１１０からの問合わせを受領し、ログオン時に取得したユーザ識別値（以下、ユーザＩＤとして参照する。）などを使用してユーザのアクセス権限を検索する。ユーザ管理サーバ１２０は、ユーザ管理データベース（図示せず）を管理しており、ユーザごとのアクセス権限をリレーショナル・データベースなどを使用して管理している。
【００２７】
ユーザ管理サーバ１２０は、ユーザのアクセス権限が見出された場合、ユーザ情報として検索結果を検索サーバ１１０に返し、検索サーバ１１０によるユーザのアクセス権限を使用した包含関係式の作成を可能としている。検索サーバ１１０は、文書データベース（図示せず）を管理しており、文書データベースに登録された文書の全文索引検索を実行するため、検索サーバ１１０が管理する文書に関して全文索引を、転置索引として生成して文書を索引付けしている。
【００２８】
なお、図１に示した検索サーバ１１０とユーザ管理サーバ１２０は、文書検索システム１００が提供するサーバ機能を説明するために分離して示したものであり、特定の実施形態では、例えば、ＩＢＭ社製のＢｌａｄｅＣｅｎｔｅｒ（ＢｌａｄｅＣｅｎｔｅｒは、インターナショナル・ビジネス・マシーンズ・コーポレーション社の登録商標である。）などのラックマウント型のサーバ・ユニットとして一体となったサーバとして構成することもできる。
【００２９】
上述した検索サーバ１１０、ユーザ管理サーバ１２０は、情報処理装置として実装され、ＰＥＮＴＩＵＭ（登録商標）、ＸＥＯＮ（登録商標）、ＣＥＬＥＲＯＮ（登録商標）、ＡＴＨＲＯＮ（登録商標）などのＰＥＮＴＩＵＭ（登録商標）互換チップといったＣＩＳＣアーキテクチャのプロセッサ、または、ＰＯＷＥＲ  ＰＣ（登録商標）などのＲＩＳＣアーキテクチャのプロセッサを実装することができ、シングルコアでもマルチコアでもよい。また、検索サーバ１１０、ユーザ管理サーバ１２０は、ＷＩＮＤＯＷＳ（登録商標）２００Ｘ、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）などのオペレーティング・システム（以下、単にＯＳとして参照する。）により制御されている。
【００３０】
また検索サーバ１１０、ユーザ管理サーバ１２０は、上述したＯＳの管理下、Ｃ、Ｃ＋＋、ＪＡＶＡ（登録商標）、ＪＡＶＡ（登録商標）ＢＥＡＮＳ、ＰＥＲＬ、ＲＵＢＹ、ＰＹＴＨＯＮなどのプログラミング言語を使用して実装される、ＣＧＩ、サーブレット、ＡＰＡＣＨＥなどのサーバ・プログラムを実行し、各種サービスを提供している。
【００３１】
さらに、検索サーバ１１０とユーザ管理サーバ１２０との間のネットワーク１０８を介したトランザクションのため、これまで知られたいかなるトランザクション・プロトコルでも使用することができる。例えば、検索サーバ１１０が検索サーバ１１０にアクセスしたユーザの認証およびアクセス権限検索のため、ＤＡＰ(Directory Access Protocol)やＬＤＡＰ(Lightweight Directory Access Protocol)などを使用してユーザ情報に関するトランザクションを生成させることができる。また、ファイル転送などのため、ＨＴＴＰ、ＦＴＰなどのファイル転送プロトコルなどを使用することもできるし、ＲＭＩ(Remote Method Invocation)やＲＰＣ(Remote Procedure Call)などの分散コンピューティング環境を使用することもできる。
【００３２】
一方、端末装置１０２は、パーソナル・コンピュータ、ワークステーションとして実装され、端末装置１０４は、ＰＤＡ(Personal Data Assistant)として構成され、端末装置１０６は、携帯電話などの情報処理装置として実装されている。また、端末装置１０２は、プロセッサ（ＭＰＵ）として、これまで知られたいかなるシングルコア・プロセッサまたはデュアルコア・プロセッサを含んで実装されていてもよい。また、端末装置１０２、１０４、１０６は、ＷＩＮＤＯＷＳ（登録商標）、ＷＩＮＤＯＥＳ（登録商標）ＣＥ、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）、ＭＡＣ  ＯＳ、または携帯電話専用ＯＳなど、これまで知られたいかなるＯＳにより制御されてもよい。
【００３３】
端末装置１０２、１０４、１０６と検索サーバ１１０との間は、例えばＴＣＰ／ＩＰなどのトランザクション・プロトコルに基づき、ＨＴＴＰプロトコルなどのファイル転送プロトコルを使用するトランザクションを使用したネットワークで接続されている。端末装置１０２は、この目的のため、Internet Explorer（商標）、Mozilla、Opera、Netscape Navigator（商標）などのブラウザ・ソフトウェアを実装していて、検索サーバ１１０にアクセスし、ログオン認証の後、文書のセキュア検索を行う。
【００３４】
なお、検索サーバ１１０と端末装置１０２、１０４、１０６との間のトランザクションは、有線またはワイアレス通信を使用した通信基盤の下で、ＨＴＴＰプロトコルに限定されず、例えば、ＲＭＩ(Remote Method Invocation)、ＲＰＣ(Remote Procedure Call)などの遠隔呼出プロトコルを使用し、ＣＯＲＢＡ(Common Object Resource Broker Architecture)などの下に実装される、いわゆる分散コンピューティングシステム（ＤＣＥ）として参照される端末装置−サーバシステムとして実装することもできる。以下、ユーザ管理サーバ１２０は、本実施形態の要旨ではないので、より詳細な説明は省略する。
【００３５】
図２は、本実施形態の検索サーバ１１０の機能ブロック２００を示した図である。図２に示した各機能ブロックは、プロセッサが、ＲＡＭなどの実行空間にプログラムを読み込んで、プロセッサがプログラムを実行させることによって、検索サーバ１１０上の機能手段として実現されている。検索サーバ１１０は、ネットワーク・アダプタ２０２と、データベース管理部２０４と、文書検索部２０６とを含んで構成されている。
【００３６】
ネットワーク・アダプタ２０２は、ネットワーク１０８を介して端末装置１０２からの文書検索要求や文書登録要求を受領し、受領した各要求を対応する処理を実行する機能部に渡し、また検索結果集合から適切なフォーマットの検索結果ファイルを作成し、クライアント１０２、１０４、１０６に送付する。検索サーバ１１０は、端末装置１０２から文書登録要求を受領すると、データベース管理部２０４を呼出して、文書データベース２２０に文書および全文索引の登録を実行させる。
【００３７】
本実施形態の全文索引は、特定の形式に限定するものではないが、本実施形態では、全文検索性の効率の観点から、転置索引方式の索引付けを採用する。データベース管理部２０４は、受領した文書を、文書データベース２２０の文書格納部２２０ａに格納し、生成した転置索引を、文書データベース２２０の索引リスト格納部２２０ｂに、文書と対応付けて登録する。なお、文書には、固有の文書識別値が付されていて、転置索引の検索語が、文書識別値に対応付けされて登録される。また、データベース管理部２０４は、当該文書について設定されるアクセス権限を使用して全文索引中にアクセス権限を登録する。全文索引中のアクセス権限は、セキュア検索実行中に、ユーザのアクセス権限を判断するために参照される。
【００３８】
本実施形態では、ユーザのアクセス権限は、本実施形態では、ユーザ管理サーバ１２０により一括管理されている。検索サーバ１１０は、ユーザから文書の登録要求を受領すると、ユーザ情報取得部２０８を呼出して、ユーザがログオン時に入力したユーザＩＤおよびパスワードなどの情報を参照してユーザ管理サーバ１２０にアクセスし、ユーザのアクセス認証を実行する。そして、アクセス認証に成功すると、ユーザ情報取得部２０８は、当該ユーザのアクセス権限をユーザ情報として取得し、データベース管理部２０４に渡すことで、全文索引中にユーザに許可されたアクセス権限に対応する索引を生成し、転置索引に登録する。
【００３９】
文書検索部２０６は、本実施形態にしたがい、セキュア検索を実行し、検索式取得部２１０と、検索制御部２１２と、検索結果作成部２１４とを含んで構成されている。検索式取得部２１０は、文書検索要求が含む検索語および検索語間を接続する論理演算子を取得する。取得した検索式は、検索制御部２１２に送付されて、結合検索式を生成するためにバッファリングされる。検索結果作成部２１４は、検索制御部２１２から検索結果を受領して、検索結果をＨＴＭＬ、ＸＭＬなどの構造化文書または端末装置・プログラムに対応するフォーマットなどの検索結果ファイルを生成し、ネットワーク・アダプタ２０２を介して検索要求の発行元に返却する。また、検索結果作成部２１４は、複数の検索結果を検索制御部２１２から受領した場合、複数の検索結果の和集合を作成し、検索結果を作成する処理を実行する。
【００４０】
検索制御部２１２は、本実施形態にしたがい、セキュア検索処理のプロセスを制御する。検索制御部２１２は、ユーザ情報取得部２０８が、ユーザ・ログオン時に取得したアクセス権限から包含関係式を生成し、検索式取得部２１０から受領した検索式と合成して結合検索式を生成する。例えば、検索式取得部２１０が取得した検索式が、「ibm AND patent」であり、ユーザのアクセス権限の包含関係を示すグループ階層としてＧＸ∈ＧＹ∈ＵＡ（ＧＹがＧＸを包含する上位グループであり、ユーザＵＡは、ＧＸのメンバである。）、というユーザ情報を受領しているものとする。
【００４１】
検索制御部２１２は、取得したユーザ情報から包含関係式を、ＩＮ演算子を使用して、「acl:UA IN acl:GX IN acl:GY」として生成し、これを検索式「ibm AND patent」と合成して、結合検索式｛（ibm AND patent） AND （acl:UA IN acl:GX IN acl:GY）｝として生成する。ＩＮ演算子は、ユーザのアクセス権限の包含関係を規定する検索処理を指令する演算子、であり、より詳細に後述する。本実施形態の上述したコンテキストにおいて、検索制御部２１２は、セキュア検索を実行する場合に、索引検索実行部２１６およびキャッシュ管理部２１８の検索を制御する。検索制御部２１２は、結合検索式を生成し、結合検索式をキャッシュ管理部２１８および索引検索実行部２１６に渡す。
【００４２】
キャッシュ管理部２１８は、Ｌ２キャッシュまたはＬ３キャッシュなどとして構成される、キャッシュメモリ２２２を管理している。キャッシュメモリのキャッシュ項目は、検索語およびユーザのアクセス権限を使用して生成したhash値をキャッシュ索引とし、過去に検索された検索結果をキャッシュ内容とするレコードとしてキャッシュメモリ２２２の容量が許容するまで登録されている。
【００４３】
また、キャッシュ管理部２１８は、検索制御部２１２から結合検索式を受領すると、包含関係式が含むプライベート・レベルのアクセス権限に関連する情報を除き、ドメイン・レベルおよびオープンドメイン・レベルの文書を検索するため、受領した検索式の検索語、演算子、およびアクセス権限に関連する情報から、キャッシュ検索を実行するためのhash値を計算する。キャッシュ管理部２１８は、生成したキャッシュ索引を使用してキャッシュメモリ２２２の検索を実行する。
【００４４】
本実施形態において、プライベート・レベルでのアクセス権限とは、ユーザの帰属する階層グループとは関連せず、ユーザのみがアクセスすることを許可するアクセス権限または特権レベルを意味する。このようなプライベート・レベルは、例えば作成中またはレビュー中であって、ネットワーク上に公開する段階にない文書や、高度に閲覧制限を行う必要がある文書、または検索サーバ１１０が特定の商用検索サービスを行っている場合、ゲストまたはサブスクライバなどに応じて設定されるセキュリティ・レベルである。
【００４５】
また、ドメイン・レベルとは、複数のユーザを含むユーザ集団を意味し、特定の集団内の部門、部署などに対応する。他の実施形態では、ドメイン・レベルは、同一のアクセス権限を有するユーザ集団とすることができる。さらに、オープンドメイン・レベルは、複数のドメイン・レベルを含むドメイン集団に対応し、特定の集団全体とすることもできるし、また、商用検索システムなどではゲスト・レベルのアクセス権限を有するものとすることができる。なお、ドメイン階層は、特定の実施形態において、適宜設定され、プライベート、ドメイン、オープンドメインの３階層に限定されるものではない。
【００４６】
キャッシュヒットが発生すると、キャッシュ管理部２１８は、キャッシュ内容を検索制御部２１２に返し、検索結果の作成を依頼する。また、キャッシュミスヒットが発生した場合、検索制御部２１２にキャッシュミスヒットを通知する。キャッシュミスヒットが通知されると、検索制御部２１２は、索引検索実行部２１６に対して結合検索式を使用した検索実行を指令する。
【００４７】
なお、当該処理では、上述した結合検索式｛（ibm AND Patent） AND （acl:UA IN acl:GX IN acl:GY）｝を、プライベート・レベルの検索式Ａ＝（ibm AND Patent） AND （acl:UA）および共用レベルの検索式Ｂ＝（ibm AND Patent） AND （acl:GX IN acl:GY）に分離して独立した検索を実行させる。検索式Ａは、ユーザのプライベート・レベルに関連する検索結果を与え、検索式Ｂは、ユーザが帰属されるグループ階層についての検索語に関連する検索結果を与える。検索式Ｂで与えられる検索結果を生成するのは、キャッシュヒットの際にプライベート・レベルに関連する検索結果がグループ内の全ユーザに共有されてしまうことを防止するためである。
【００４８】
一方、検索式Ａは、ユーザのプライベート・レベルでのアクセス権限を有する文書を検索することを可能とするので、ユーザがプライベート・レベルまで含めた検索を要求する場合には、検索結果作成部２１４は、検索式Ａおよび検索式Ｂの各検索結果を受領し、検索結果として、（検索式Ａの検索結果）∪（検索式Ｂの検索結果）を生成することにより、ユーザに返す検索結果集合を作成する。一方、ユーザがプライベート・レベルまで含まない検索を要求する場合やユーザが特権レベルを有していない場合、検索結果Ｂのみの検索が実行され、検索結果作成部２１４は、（検索式Ｂの検索結果）のみを受領してユーザに返す検索結果を作成する。
【００４９】
なお、ユーザに対してどのレベルの検索結果を返すかについては、特定の集団内でのクロースドの文書検索システム１００では、ユーザが検索要求を送付する際に、ラジオボタンやチェックボックスなどの設定でユーザオンデマンドに指定することもできる。また、文書検索システム１００が、商用検索などを行うオープンなシステムである場合には、ログオン時のユーザ認証に基づき、ユーザが特権ユーザであるか否かの判断を使用して。プライベート・レベルの検索結果を生成するか否かを指定し、これをユーザ情報として検索サーバ１１０が取得することで、検索結果生成処理を変更することができる。
【００５０】
検索制御部２１２は、キャッシュミスヒットと判断した場合、結合検索式を索引検索実行部２１６に渡す。この際、本実施形態では、結合検索式から、検索式Ａおよび検索式Ｂを作成した後、検索式が含むＩＮ演算子を、例えばＳＱＬ(Structured Query Language）などが解釈可能なＯＲ演算子に変更し、索引検索実行部２１６による全文索引検索実行を可能とする形式に変換する。ＩＮ演算子からＯＲ演算子への変換処理は、検索制御部２１２が実行することもできるし、索引検索実行部２１６がＩＮ演算子を含む結合検索式を受領して変換処理を実行することもでき、特に変換処理を実行する処理部に限定はない。
【００５１】
索引検索実行部２１６は、変換処理後の検索式Ａおよび検索式Ｂを、使用して独立して全文索引検索を実行させる。全文検索の実行は、例えばＳＱＬパーザなどにより解析し、検索処理を実行し、ＡＮＤ演算子、ＯＲ演算子で結合される検索語およびアクセス権限ごとに索引リスト格納部２２０ｂを走査して、転置索引により参照される文書識別値に対応する文書のタイトル、格納場所などの情報を抽出する。抽出したデータは、検索制御部２１２に送付され、検索制御部２１２からキャッシュ制御部２１８および検索結果作成部２１４に送付され、キャッシュメモリ２２２への登録処理および検索結果が作成される。
【００５２】
検索結果作成部２１４は、キャッシュ内容または索引検索の結果を、複数の検索結果がある場合、検索要求に対応して和集合を計算し、検索結果集合を作成する。その後、文書検索部２０６は、作成された検索結果を、ネットワーク・アダプタ２０２からネットワーク１０８を介して検索要求の発行元に返却し、本実施形態のセキュア検索の一連のトランザクションが終了する。
【００５３】
以上の処理において、検索サーバ１１０は、キャッシュ管理部２１８を介して上述した検索式Ａ、検索式Ｂ、または検索式Ａおよび検索式Ｂの過去検索結果を、検索式Ａおよび検索式Ｂのhash値をそれぞれキャッシュ索引として登録することが可能となる。このため、例えば、キャッシュ管理部２１８は、過去に検索を実行したユーザが帰属される同一グループ内で、同一の検索式を与える検索要求を受領した場合、同一グループからの検索要求に対してキャッシュヒットを生成させることが可能となる。この場合、ユーザがプライベート・レベルでの検索を要しない場合、まったく集合演算を実行することなくセキュア検索が可能となる。また、プライベート・レベルまで含めたセキュア検索を実行する場合でも、集合演算は、たかだか１回まで削減でき、この集合演算は、グループ階層の増加に関わらず、キャッシュヒット確率およびプライベート・レベルの検索結果の要否にのみに依存する。
【００５４】
本実施形態では、キャッシュヒットの確率は、特定のグループに帰属されるユーザが増加すればするほど高まり、またグループ階層の増加に関わらずキャッシュ内容として、包含関係のみに関連した検索結果が登録されている。このため、本実施形態では、ユーザ数の増加やグループ階層の増加に依存することなく、全文検索を使用する文書検索システム１００の検索効率を著しく改善でき、かつスケーラビリティを保証することが可能となる。
【００５５】
図３は、本実施形態のユーザのグループ階層構造３００の実施形態を示す。図３に示すように本実施形態のグループ階層構造３００では、特定のユーザ、例えばＵＡ３２２は、グループＧ（ＧＢ）３２０に帰属され、さらにＧＢ３２０が、グループＡ（ＧＡ）３１０に帰属されている。一方、ユーザＤ（ＵＤ）３３２、ＵＥ３３４は、グループＣ（ＧＣ）３３０に帰属され、ＧＣ３３０がＧＡ３１０に帰属されている。
【００５６】
ＧＢ３２０およびＧＣ３３０とは、階層構造的には関連性を有しないが、ＧＢ３２０およびＧＣ３３０は、さらに上位階層のグループであるＧＡ３１０のメンバを構成する。図３に示したグループ階層構造３００の階層構造は、ＵＡ３２２〜ＵＣ３２６、ＵＤ３３２、ＵＥ３３４の階層がアクセス権限の最も狭いプライベート・レベルの階層であり、ＧＢ３２０、ＧＣ３３０がご同一のグループに帰属される複数のユーザにアクセス権限を認めるドメイン・レベルの階層である。
【００５７】
さらに、ＧＡ３１０は、最もアクセス権限を広く認めるオープンドメイン・レベルの階層である。オープンドメイン・レベルであるＧＡ３１０に割当てられる文書は、ＧＢ３２０、ＧＣ３３０のいずれのドメインからでも、そのアクセス権限に基づいてアクセスすることが可能とされている。一方、ドメイン・レベルの文書は、各ドメインに帰属されるユーザしか、アクセスできないアクセス権限として割当てられ、プライベート・レベルの文書は、原則的には、当該ユーザのみがアクセスすることができるものとしてセキュア検索が可能とされている。
【００５８】
なお、図３に示したグループ階層構造３００は、本実施形態のコンテキストでは、検索サーバ１１０ではなく、ユーザ管理サーバ１２０が一括して管理し、検索サーバ１１０が、検索要求を受領してオンザフライにアクセス権限をユーザ情報としてユーザ管理サーバ１２０から受領する。このため、セキュリティ階層設定と、検索処理とは完全に分離することができ、文書検索システム１００の設置後のユーザのアクセス権限変更や階層構造変更は、完全に検索サーバとは分離して設定可能となり、検索サーバ１１０の索引付処理や検索処理には影響を与えることはない。
【００５９】
図４は、本実施形態の検索サーバ１１０が管理する全文索引４００の実施形態を示す。全文索引４００は、いわゆる転置索引として構成されており、検索サーバ１１０が文書から抽出した単語と、当該単語を含む文書の文書識別値とが、特定の単語ごとにレコードとして構成されている。その他、図示した全文索引４００では、単語と同レベルでアクセス権限を処理するため、アクセス権限索引も、単語を登録するフィールド４１０に登録されている。例えば、単語「ｉｂｍ」は、フィールド４２０に示されるように、文書１、文書２、文書４、…に出現し、単語「ｐａｔｅｎｔ」は、文書２、文書３、文書４、…に出現しているのが示されている。
【００６０】
また、フィールド４１０には、文書に対して設定されたアクセス権限が、転置索引として追加されており、例えば、acl:UAとしてユーザＵＡについてプライベート・レベルでアクセスできる文書が、文書１、文書４、…であることが示されている。また、フィールド４１０には、acl:GXとして、グループＸに帰属されるユーザがアクセスできる文書が、フィールド４２０において文書３、文書４…であることが索引付けされている。フィールド４１０に含まれる単語は、検索要求に含まれる検索語として使用され、図示した実施形態では、アクセス権限も検索語と同レベルで検索要求に含まれる。なお、図４に示した転置索引には、文書識別値の他、単語の出現位置を対応付けて登録しておくことができ、少なくとも単語と、文書識別値とが対応付けられている限り、その実装形式には限定はない。
【００６１】
ボックス４３０には、本実施形態で、索引検索実行部２１６が実行する場合に使用する結合検索式、検索結果、および検索結果をキャッシュする場合のキャッシュ索引生成処理の実施形態を示す。ボックス４３０内に示された検索要求は、グループＧＸに属するユーザＵＡが、自己のプライベート・レベルでの文書検索も含むセキュア検索を要求する場合の実施形態である。ユーザＵＡは、端末装置１０２から、自己のユーザＩＤ、パスワードなどを入力して検索サーバ１１０にログオンし、検索要求を、例えば、検索語＝ibmとして検索サーバ１１０に送付する。その後、検索制御部２１２は、受領した検索式と、包含関係式とを合成する。
【００６２】
説明する実施形態では、検索制御部２１２がキャッシュ管理部２１８からキャッシュミスヒットの通知を受け、結合検索式索引検索実行部２１６の索引検索を説明する。検索サーバ１１０は、キャッシュミスヒットであると判断した場合、検索制御部２１２が生成した、「query= ibm AND (acl:UA IN acl:GX)」を修正し、ＩＮ演算子を、ＳＱＬなどの標準演算子であるＯＲ演算子に修正し、検索式「query=ibm AND (acl:UA ＯＲ acl:GX)」を生成する。ボックス４３０に示した実施形態では、さらに、索引検索実行部２１６は、queryA=ibm AND (acl:UA)およびqueryB=ibm AND (acl:GX)を生成し、独立した全文索引検索を実行する。なおこれらの検索は、順序的に実行されてもよく、また並列検索が行われてもよい。上述したqueryAは、プライベート・レベルの検索式であり、queryBが、共用レベルの検索式である。
【００６３】
図４に示した実施形態では、queryAで、検索語=ibmを含む文書が文書１、文書２、文書４であり、ユーザＵＡのアクセス権限が文書１および文書４を許容しているので、検索結果Ａとして、｛文書１、文書４｝が生成される。また、グループＸのアクセス権限は、文書３、文書４を許容しているので、queryBの検索結果Ｂは、｛文書４｝が返される。検索制御部２１２は、各検索結果Ａ、Ｂを、特定の目的に応じて、それぞれキャッシュメモリ２２２に格納する。その際、使用したqueryA、queryBの情報を使用してhash値を計算し、キャッシュ索引とする。さらに検索制御部２１２は、検索結果Ａ、Ｂを受領して和集合を生成させ、重複を排除して検索結果＝｛文書１、文書４｝を生成する。
【００６４】
キャッシュ索引を生成するためのhash計算は、hash(ibm+AND+acl:UA)として検索式全体を対象とすることもできるし、hash(ibm)+hash(AND)+hash(acl:UA)として生成することもでき、検索式とキャッシュ内容とを対応付けすることができる限り、いかなるhash計算アルゴリズムでも使用することができる。なお、ハッシュ関数としては、ＳＨＡ−１、ＳＨＡ−２、ＭＤ−２、ＭＤ−４、ＭＤ−５どのこれまで知られたいかなるハッシュ関数でも使用することができる。
【００６５】
上述したキャッシュ索引生成処理により、少なくともグループＸに帰属する全ユーザが同一の検索語を使用して検索要求を発行する場合、プライベート・レベルを除く検索結果のキャッシュ索引は、hash(ibm+AND+acl:GX)となるので、グループＸのユーザは、キャッシュ索引hash(ibm+AND+acl:GX)に対応付けられるキャッシュ内容（検索結果）にキャッシュヒットを発生させることができる。一方、プライベート・レベルについてみれば、グループＸのユーザＭが同一の検索語を発行したとしても、登録されたキャッシュ索引は、hash(ibm+AND+acl:UA)であり、キャッシュ管理部２１８が生成するhash値は、hash(ibm+AND+acl:UM)なので、キャッシュミスヒットが発生し、プライベート・レベルのセキュリティが確保できることが理解される。
【００６６】
図５は、検索結果をキャッシュする場合の、キャッシュ索引生成処理５００を比較した図である。従来のキャッシュ索引生成処理は、ボックス５１０に示されるように、検索式に含まれる全情報を使用し、全情報をhashする。なお、図５では、hash計算について、hash(ibm, acl:GX, in, acl:GY)として記述するが、図５では、hash計算に使用するデータを例示する目的であり、hash値は、hash計算に使用するべき情報またはhash値をどのように使用して計算することができる。図５に示すように、同一のユーザが同一の検索語および演算子を使用した検索要求でなければキャッシュヒットは発生しない。一方、本実施形態のキャッシュ索引生成処理は、ボックス５２０で示されるように、ドメイン・レベルでのキャッシュ項目の共有化を行うため、検索式に含まれるプライベート・レベルのアクセス権限に関連する情報を除いた情報を使用してhash値を生成してキャッシュ索引とする。
【００６７】
なお、本実施形態で、ユーザがプライベート・レベルでの検索を要求する場合、プライベート・レベルに関連する情報のみを含む検索式が生成され、hash値が生成されて、キャッシュメモリ２２２にキャッシュ索引とともにその検索結果が、キャッシュされる。
【００６８】
図６は、本実施形態で、キャッシュメモリ２２２内に生成されるデータ構造６００の実施形態を示す。データ構造６００は、キャッシュ索引を登録するフィールド６１０と、キャッシュ索引により索引付けされるキャッシュ内容（検索結果）とが対応づけれたレコードを含んで生成されている。キャッシュ管理部２１８は、キャッシュ索引を検索し、ハッシュ値が一致するレコードのキャッシュ内容を、検索結果として検索制御部２１２に返すことで検索処理の高速化を達成している。
【００６９】
キャッシュ索引を登録するフィールド６１０は、検索制御部２１２が生成した結合検索式が含む検索語（アクセス権限を含む）の中から、プライベート・レベルに関連する情報を除いた検索式のハッシュ値が登録されていて、グループ単位でのキャッシュヒットを達成させている。また、キャッシュ内容は、すでに検索された共用レベルでの検索結果またたプライベート・レベルの検索結果が、フィールド６２０内に、例えば「DOC(ibm） in GX ∪ DOC(ibm) in GY」などとして登録されている。共用レベルの検索結果およびプライベート・レベルの検索結果は、フィールド６１０に示されるように、キャッシュ索引で識別されている。なお、キャッシュ内容としては、検索結果の実データを登録しておくこともできるし、キャッシュ容量を効率的に使用することができるように、検索結果の実データを参照させる実アドレス、仮想アドレス、絶対パス名、ＵＲＩ、ＵＲＬなどを登録させておくことができる。
【００７０】
図７は、本実施形態の検索サーバ１１０が実行する、共用レベルについて検索を実行する場合の文書検索処理のフローチャートを示す。図７の処理は、ステップＳ７００から開始し、ステップＳ７０１で、ログオンしたユーザが入力した検索語を含む検索式を取得する。説明する実施形態では、query=ibmが取得される。また、ユーザが検索式としてibm AND patentを入力した場合、query=ibm AND patentが取得される。ステップＳ７０２では、ユーザのアクセス権限をユーザ情報としてユーザ管理サーバ１２０から取得する。ユーザ情報は、ログオンしたユーザのユーザＩＤなどにより照会されたユーザのプライベート・レベル、ドメイン・レベル、オープンドメイン・レベルなどのアクセス権限を含む情報としてユーザ管理データベース１２０から取得することができる。
【００７１】
ステップＳ７０３では、取得したユーザの階層レベルごとの包含関係を参照して、例えば、包含関係式を、「acl:UA IN GX IN GY」などとして設定し、包含関係式と、ユーザ入力された検索式、例えば「ibm」や、「ibm AND patent」とをＡANd演算子で結合し、結合検索式として、query=｛ibm AND (acl:UA IN GX IN GY)｝またはquery=｛(ibm AND Patent) AND (acl:UA IN GX IN GY)｝を生成する。
【００７２】
さらに、ステップＳ７０３では、上述した結合検索式をキャッシュ管理部２１８に送付し、包含関係式から、ユーザのプライベート・レベルでのアクセス権限に対応する検索語を除いた情報から共用レベルについての検索式について、ｈａｓｈ値、ｈａｓｈ（ｉｂｍ，ａｎｄ，ｉｎ，ＧＸ，ｉｎ，ＧＹ）を計算して、キャッシュ索引を生成する。ステップＳ７０４では、キャッシュ管理部２１８が、キャッシュメモリ２２２のキャッシュ索引を検索し、キャッシュヒットか否かを判断する。
【００７３】
ステップＳ７０４でキャッシュヒットと判断された場合（ｙｅｓ）、処理をステップＳ７０５に進め、キャッシュメモリからｈａｓｈ値に対応するキャッシュ内容を読込んで検索結果を取得し、ステップＳ７０６で取得した内容を検索結果作成部２１４に送付して検索結果を作成し、検索要求の発行元にネットワーク１０８を介して送付し、ステップＳ７１２で、一連のトランザクションを終了する。
【００７４】
一方、ステップＳ７０４でキャッシュミスヒットと判断された場合（ｎｏ）、処理をステップＳ７０７に分岐させ、索引検索実行部２１６において共用レベルの検索式を作成する。この処理は、例えば、結合検索式中の包含関係式内に含まれる、プライベート・レベルのアクセス権限および直後のＩＮ演算子までを分離することにより行うことができる。その後、結合検索式中のＩＮ演算子を、ＯＲ演算子に変換し、通常のＳＱＬパーザが処理可能な結合検索式に修正する。その後、ステップＳ７０８でＳＱＬなどを使用して文書データベース２２０の索引リスト格納部２２０ｂを走査して文書の全文検索をＯＲ演算子単位で実行する。
【００７５】
ステップＳ７０９では、キャッシュメモリ２２２の容量を検査し、キャッシュメモリ２２２の容量が超過する場合（ｙｅｓ）、ステップＳ７１０でキャッシュ項目のうち不要なレコードを削除する。キャッシュ項目の削除は、種々の方法および基準を使用して実行することができ、アクセス頻度が一定のしきい値よりも低いことを基準として採用することもできるし、タイムスタンプなど、最新にアクセスされた時刻が古いものを削除するなど、これまでキャッシュ項目の更新のために利用されている削除方法を適宜使用して実行することができる。また、ステップＳ７０９の判断で、キャッシュメモリの容量が超過していないと判断された場合（ｎｏ）、直ちに処理をステップＳ７１１に分岐させる。
【００７６】
ステップＳ７１１では、ＩＮ演算子を含む検索式からキャッシュ索引を生成し、取得した検索結果をキャッシュ索引に対応付けてキャッシュメモリ２２２のレコードとして登録し、キャッシュ項目を更新する。その後、各検索結果を、検索結果作成部２１４に送付して和集合を生成して検索結果を生成させる。なお、包含関係式から分離された、プライベート・レベルの検索である、｛(ibm AND Patent) AND (acl:UA)｝に対応する検索を実行する実施形態については、図８の処理で説明する。
【００７７】
図８は、図７で説明した、共用レベルの他、プライベート・レベルでアクセス可能な文書を含む検索結果を生成する文書検索処理のフローチャートである。なお、図８の実施形態では、プライベート・レベルはキャッシュヒットしなかったが、共用レベルについては、キャッシュヒットが発生したものとして説明する。
【００７８】
図８に示した実施形態の処理は、概ね図７で説明した処理と共通するが、図８で説明する実施形態では、共用レベルの検索結果については、キャッシュヒットが発生し、ステップＳ８０５でキャッシュ内容を読込み、ステップＳ８０６に渡される。一方、プライベート・レベルについてはステップＳ８０４でキャッシュヒットせず（ｎｏ）、ステップＳ８０８で、包含関係式から分離した（acl:UA IN)からプライベート・レベルでの検索式｛ibm AND (acl:UA)｝を作成し、ステップＳ８０９で、プライベート・レベルでの検索式｛ibm AND (acl:UA)｝を使用して独立して検索を実行する。
【００７９】
ステップＳ８１０で、キャッシュ容量が超過しているかを判断し、超過していなければ（ｎｏ）、ステップＳ８１２で、プライベート・レベルでの検索結果を、そのhash値をキャッシュ索引とし、キャッシュ項目として対応付けてキャッシュメモリ２２２に格納する。また、ステップＳ８１０の判断でキャッシュ容量超過と判断された場合（ｙｅｓ）、ステップＳ８１０で、キャッシュのうち不要なレコードを削除し、ステップＳ８１２でキャッシュする。
【００８０】
その後、図８の処理では、処理をステップＳ８０６に処理を分岐させ、プライベート・レベルでの検索結果を取得し、予めバッファリングされていた共用レベルの検索結果を、検索結果作成部２１４において両検索結果の和集合として検索結果集合を作成し、ステップＳ８０７で、最終的な検索結果を検索要求の発行元に返す処理を実行する。
【００８１】
図８に示した文書検索処理では、結合検索式にプライベート・レベルでのアクセス権限が含まれている場合にも効率的にユーザ入力を利用するセキュリティ検索が可能となる。また、プライベート・レベルのアクセス権限の検索結果を、ドメイン・レベルの検索結果と区別してキャッシュ項目とすることで、プライベート・レベルでのセキュア検索要求を実行する場合でも、キャッシュヒットが発生すれば索引検索を全く実行することなく各キャッシュ内容の和集合を生成することが可能となり、プライベート・レベルでのアクセス権限を含めた全検索結果をキャッシュする場合に比較して大きな処理負荷を生じることなく、同一の検索結果を生成させることができる。
【００８２】
さらに、特定のユーザＢのグループ帰属が変更された場合でも、ユーザＢは、すでにキャッシュされた変更先のドメイン・レベルでの検索結果をキャッシュメモリ２２２から検索でき、一方、ユーザＢのプライベート・レベルでの検索結果がキャッシュされている場合、全文索引検索を再実行させることなく、ユーザのグループ帰属変更に対応することができる。
【００８３】
なお、キャッシュメモリ２２２のキャッシュ項目は、プライベート・レベル、ドメイン・レベル、またはオープンドメイン・レベルでのアクセス権限が修正される場合にはクリアされ、新規なアクセス権限設定の下でのセキュア検索が行われる。また、キャッシュメモリ２２２のキャッシュ項目のリフレッシュまたは同期化などの処理のため、これまで知られたいかなる方法でも使用することができる。
【００８４】
図９は、本実施形態のセキュア文書検索によるＯＲ処理の削減およびキャッシュ項目の利用性の改善を、プライベート・レベルでの検索結果を含ませる図８の処理についての結合検索式９００を使用して説明する図である。結合検索式の検索を実行した段階で、まったくキャッシュヒットしない場合、結合検索式９１０で示されるように、ＯＲ演算は、プライベート・レベル、ドメイン・レベル、オープンドメイン・レベルの３階層について行われる。このＯＲ演算は、階層レベルが増加するに連れて増加し、セキュア検索の検索効率は、文書数の他、階層数にも依存して計算オーバーヘッドが増大することが示される。
【００８５】
一方、本実施形態によれば、少なくともプライベート・レベル以上の階層レベルでの検索結果がキャッシュされているので、結合検索式９２０で示すように、プライベート・レベルでの検索結果と、キャッシュされた検索結果とをＯＲ演算することで、結合検索式９１０と同一の検索結果が生成でき、検索効率をはるかに改善することが可能となる。
【００８６】
さらに他の実施形態でプライベート・レベルでの検索結果も別途キャッシュ索引を生成してキャッシュする実施形態では、結合検索式９３０で示すようにキャッシュ項目同士のＯＲ演算を実行することで結合検索式９１０と同一の結果を生成することができるので、包含関係を含めて結合検索式を生成する処理が追加されたとしても、キャッシュ項目が増加すればするほど全文索引を使用する検索処理が大きく削減でき、検索サーバ１１０の検索処理は大きく改善される。
【００８７】
図１０は、本実施形態の文書検索システム１００による検索効率改善の機能を説明した図である。図１０に示すように、従来の検索結果のキャッシュ方式では、同一のユーザが同一の検索式を入力した場合を除き、キャッシュヒットは生成されず、キャッシュヒットは、領域１０１０で示す程度の著しく低い確率となる。一方、本実施形態では、図１０に示す例示的な実施形態においてもキャッシュヒットは、領域１０１０に比較して少なくともユーザ数分だけ増加し、この結果、キャッシュヒットが発生する確率は、領域１０２０で示すように、少なくとも３倍に増加する。
【００８８】
さらに、キャッシュヒットは発生する確率は、図１０から示されるように、ドメイン・レベルに帰属されるユーザ数が増加するにつれて線形的に増加することになり、ユーザ数の増加が逆に検索効率を向上させることが可能となる。加えて、本実施形態では、階層レベルごとのＯＲ演算を、０または１まで削減することに加え、キャッシュメモリを併用することが可能となり、本実施形態によれば、全文索引を使用するセキュア検索の検索効率を著しく改善することが可能となる。
【００８９】
これまで説明したように、本発明によれば、全文検索を使用するセキュア検索の検索効率を著しく改善することが可能な文書検索システム、情報処理装置、文書検索方法およびプログラムを提供することが可能となる。
【００９０】
本実施形態の上記機能は、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｊａｖａ（登録商標）Ｂｅａｎｓ、Ｊａｖａ（登録商標）Ａｐｐｌｅｔ、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｐｅｒｌ、Ｒｕｂｙ、ＰＹＴＨＯＮなどのオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、当該プログラムは、ハードディスク装置、ＣＤ−ＲＯＭ、ＭＯ、フレキシブルディスク、ＥＥＰＲＯＭ、ＥＰＲＯＭなどの装置可読な記録媒体に格納して頒布することができ、また他装置が可能な形式でネットワークを介して伝送することができる。
【００９１】
これまで本実施形態につき説明してきたが、本発明は、上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００９２】
１００…文書検索システム、１０２、１０４、１０６…端末装置、１０８…ネットワーク、１１０…検索サーバ、１２０…ユーザ管理サーバ、２００…機能ブロック（検索サーバ）、２０２…ネットワーク・アダプタ、２０４…データベース管理部、２０６…文書検索部、２０８…ユーザ情報取得部、２１０…検索式取得部、２１２…検索制御部、２１４…検索結果作成部、２１６…索引検索実行部、２１８…キャッシュ管理部、２２０…文書データベース、２２２…キャッシュメモリ
【図１】
0005419886.tif 000002
【図２】
0005419886.tif 000003
【図３】
0005419886.tif 000004
【図４】
0005419886.tif 000005
【図５】
0005419886.tif 000006
【図６】
0005419886.tif 000007
【図７】
0005419886.tif 000008
【図８】
0005419886.tif 000009
【図９】
0005419886.tif 000010
【図１０】
0005419886.tif 000011