(57)【要約】【課題】クライアント計算機からの問い合わせに対する応答性能及びキャッシュに必要な記憶領域の利用効率を向上させることを可能とする。【解決手段】データベース検索処理部５１２は、データにおける問い合わせに合致する範囲であってアクセス権テーブル４２に保持されているアクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する。データベース検索処理部５１２は、データにおける問い合わせに合致する範囲であってアクセス権テーブル４２に保持されているアクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を抽出する。キャッシュ管理部５１１は、問い合わせ、アクセス許可リスト及び検索結果文字列を対応付けて含むキャッシュエントリをキャッシュ４３に登録する。【選択図】図２
2010217974.tif 000002
【特許請求の範囲】
【請求項１】
ユーザによって利用されるクライアント計算機及びデータを格納するデータベースと接続された情報検索装置において、
前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されているデータにおいて当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブルと、
前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信する問い合わせ受信手段と、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する作成手段と、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該データから抽出する抽出手段と、
前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを格納するキャッシュ格納手段と
を具備することを特徴とする情報検索装置。
【請求項２】
前記受信された問い合わせを含むキャッシュエントリが前記キャッシュ格納手段に格納されているかを判定する第１の判定手段と、
前記受信された問い合わせを含むキャッシュエントリが前記キャッシュ格納手段に格納されていると判定された場合、当該問い合わせに対応付けて当該キャッシュエントリに含まれているアクセス許可リストに保持されるアクセス権管理単位によって示される範囲が当該問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報によって示されるアクセス可能な範囲に含まれるかを判定する第２の判定手段と、
前記アクセス許可リストに含まれるアクセス権管理単位によって示される範囲が前記アクセス許可設定情報によって示されるアクセス可能な範囲に含まれると前記第２の判定手段によって判定された場合、前記受信された問い合わせに対応付けて前記キャッシュエントリに含まれる検索結果文字列を、当該問い合わせに含まれるユーザ識別情報によって識別されるユーザによって利用されるクライアント計算機に対して送信する送信手段と
を具備することを特徴とする請求項１記載の情報検索装置。
【請求項３】
第３の判定手段を更に具備し、
前記アクセス権テーブルは、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて前記データベースに格納されているデータにおいて当該ユーザがアクセス不能な範囲を示すアクセス禁止設定情報を更に保持し、
前記作成手段は、前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス禁止設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせに合致する範囲であって当該アクセス禁止設定情報によって示されるアクセス不能な範囲を示すアクセス権管理単位を保持するアクセス拒否リストを更に作成し、
前記キャッシュ格納手段に格納されているキャッシュエントリは、前記受信された問い合わせに対応付けて前記作成されたアクセス拒否リストを更に含み、
前記第３の判定手段は、前記アクセス許可設定情報によって示されるアクセス可能な範囲に含まれると前記第２の判定手段によって判定された場合、前記受信された問い合わせに対応付けて前記キャッシュエントリに含まれるアクセス拒否リストに保持されるアクセス権管理単位によって示される範囲が当該問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス禁止設定情報によって示されるアクセス不能な範囲に含まれるかを判定し、
前記送信手段は、前記アクセス禁止リストに保持されるアクセス権管理単位によって示される範囲が前記アクセス禁止設定情報によって示されるアクセス不能な範囲に含まれると前記第３の判定手段によって判定された場合、前記受信された問い合わせに対応付けて前記キャッシュエントリに含まれる検索結果文字列を、当該問い合わせに含まれるユーザ識別情報によって識別されるユーザによって利用されるクライアント計算機に対して送信する
ことを特徴とする請求項２記載の情報検索装置。
【請求項４】
選択手段、第４の判定手段、算出手段、第５の判定手段、無効化手段及び削除手段を更に具備し、
前記キャッシュ格納手段は、複数のキャッシュエントリを格納し、
前記選択手段は、前記キャッシュ格納手段に格納されている複数のキャッシュエントリのうち、当該キャッシュエントリに含まれる問い合わせ及び検索結果文字列が同一の第１及び第２のキャッシュエントリを選択し、
前記第４の判定手段は、前記選択された第１のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されるアクセス権管理単位の第１の和集合と、前記選択された第２のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されるアクセス権管理単位の第２の和集合とが同一であるかを判定し、
前記算出手段は、前記第１の和集合と第２の和集合とが同一であると判定された場合、前記選択された第１のキャッシュエントリに含まれるアクセス許可リストに保持されるアクセス権管理単位と前記選択された第２のキャッシュエントリに含まれるアクセス許可リストに保持されるアクセス権管理単位との差集合を算出し、
前記第５の判定手段は、前記算出された差集合の要素数が１であるかを判定し、
前記無効化手段は、前記算出された差集合の要素数が１であると判定された場合、前記選択された第２のキャッシュエントリを前記キャッシュ格納手段において無効化し、
前記削除手段は、前記算出された差集合を前記第１のキャッシュエントリに含まれるアクセス許可リストから削除する
ことを特徴とする請求項３記載の情報検索装置。
【請求項５】
前記クライアント計算機によって送信された階層構造を有するデータを受信するデータ受信手段と、
前記データ受信手段によって受信されたデータを前記データベースに登録する登録手段と、
前記データ受信手段によって受信されたデータを解析する解析手段と、
前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス許可リストに保持されるアクセス権管理単位によって示される範囲の一部が前記データ受信手段によって受信されたデータに含まれるかを、前記解析手段による解析結果に基づいて判定する判定手段と、
前記アクセス許可リストに保持されるアクセス権管理単位によって示される範囲が前記データに含まれると判定された場合、当該アクセス許可リストを含むキャッシュエントリを前記キャッシュ格納手段において無効化する無効化手段と
を更に具備することを特徴とする請求項１記載の情報検索装置。
【請求項６】
除去手段を更に具備し、
前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス許可リストは、複数のアクセス権管理単位を保持し、
前記除去手段は、前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス許可リストに保持されている複数のアクセス権管理単位のうち、第１のアクセス権管理単位によって示される範囲が第２のアクセス権管理単位によって示される範囲に含まれる場合、当該第１のアクセス権管理単位を当該アクセス許可リストから除去する
ことを特徴とする請求項１記載の情報検索装置。
【請求項７】
除去手段を更に具備し、
前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス拒否リストは、複数のアクセス権管理単位を保持し、
前記除去手段は、前記キャッシュ格納手段に格納されているキャッシュエントリに含まれるアクセス拒否リストに保持されている複数のアクセス権管理単位のうち、第１のアクセス権管理単位によって示される範囲が第２のアクセス権管理単位によって示される範囲に含まれる場合、当該第１のアクセス権管理単位を当該アクセス拒否リストから除去する
ことを特徴とする請求項３記載の情報検索装置。
【請求項８】
ユーザによって利用されるクライアント計算機及び階層構造を有するデータを格納するデータベースと接続され、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されているデータにおいて当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブル及びキャッシュ格納手段を備える情報検索装置が実行する情報検索方法であって、
前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該データから抽出するステップと、
前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを前記キャッシュ格納手段に登録するステップと
を具備することを特徴とする情報検索方法。
【請求項９】
ユーザによって利用されるクライアント計算機及びデータを格納するデータベースと接続され、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されているデータにおいて当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブル及びキャッシュ格納手段を備える情報検索装置のコンピュータによって実行されるプログラムであって、
前記コンピュータに、
前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成するステップと、
前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されているデータにおける前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該データから抽出するステップと、
前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを前記キャッシュ格納手段に登録するステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、問い合わせに応じて検索された検索結果をキャッシュする情報検索装置、情報検索方法及びプログラムに関する。
【背景技術】
【０００２】
一般的に、データベース管理システムに代表されるデータ検索システムにおいては、サーバ計算機（上で動作するデータ検索プログラム）がクライアント計算機（上で動作するクライアントプログラム）から送信された問い合わせ（検索要求）を受信し、当該問い合わせに応じてデータベースから必要なデータを検索する。このように検索された結果（検索結果）が、問い合わせに対する応答としてクライアント計算機に対して返される。
【０００３】
ところで、サーバ計算機におけるデータベース検索処理は処理コストが高く検索システム全体のボトルネックになりやすい。このボトルネックを解消するために、例えば検索結果をサーバ計算機の主記憶装置上にキャッシュするという対策が考えられる。
【０００４】
このようにキャッシュを用いたシステムにおいては、例えばクライアント計算機からの最初の問い合わせではキャッシュ内に該当するデータが存在しないため、サーバ計算機（上で動作するデータ検索プログラム）においてはデータベース検索処理が実行される。サーバ計算機は、検索結果をクライアント計算機に対して返信するとともに、当該クライアント計算機からの問い合わせの内容及び当該検索結果をキャッシュに登録する。
【０００５】
この後、クライアント計算機から同一内容の問い合わせが送信された場合、サーバ計算機は、当該問い合わせに対する検索結果をキャッシュから取得することができるため、当該問い合わせに応じたデータベース検索処理を再度実行することなく当該検索結果をクライアント計算機に返すことができる。
【０００６】
これにより、キャッシュを用いたシステムにおいては、サーバ計算機への負荷を軽減することができるとともに、クライアント計算機（上で動作するクライアントプログラム）に対する応答時間を短縮することができる。
【０００７】
ところで、一般的に、データベース管理システム等のデータ検索システムは、アクセス権制御が可能である。クライアント計算機からの問い合わせが例えばアクセス権が設定されたデータベースに対する問い合わせである場合には、当該問い合わせを送信したクライアント計算機（を利用するユーザ）に設定されている権限によっては、当該問い合わせに応じて検索される検索結果に差が生じることがある。
【０００８】
例えばデータＡ及びデータＢにアクセス可能なユーザＸとデータＡにアクセス可能であってデータＢにアクセス不能なユーザＹとがともにデータＡ及びＢが検索される内容の問い合わせをした場合を想定する。この場合、サーバ計算機においては、ユーザＸからの問い合わせに対してはデータＡ及びＢが検索結果として返される。一方、ユーザＹからの問い合わせに対しては、当該ユーザＹはデータＢにアクセス不能であるため、データＡのみが検索結果として返されることになる。
【０００９】
したがって、上記したようにサーバ計算機において検索結果をキャッシュしておく場合、アクセス権によって検索結果が異なるため、当該キャッシュをユーザ別に管理する必要がある。
【００１０】
上記したような検索結果をキャッシュする技術に関連して、制限されたコンテンツの効率的なコンテンツキャッシュを容易にする技術（以下、先行技術と表記）が開示されている（例えば、特許文献１を参照）。この先行技術によれば、制限されたコンテンツがキャッシュサーバに位置する場合は、制限されたコンテンツにユーザがアクセス認可されているか否かを判断し、アクセス認可されている場合は、制限されたコンテンツがキャッシュサーバから供給される。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特表２００７−５０１９８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ところで、上記したように問い合わせが同一であってもユーザが異なれば検索結果が異なる場合がある一方で、ユーザに設定されている権限によっては問い合わせが同一であればユーザが異なっていても検索結果が同一になる場合もある。上記した例において例えばユーザＸ及びユーザＹがともにデータＡが検索される内容の問い合わせをした場合には、異なるアクセス権が設定されたユーザからの問い合わせであるにもかかわらず、ユーザＸ及びユーザＹのどちらからの問い合わせに対してもデータＡが検索結果として返される。
【００１３】
しかしながら、上記したようなユーザ別にキャッシュを管理する方法では、たとえ問い合わせ及びその検索結果が等しい場合であっても当該問い合わせをしたユーザが異なる場合には、キャッシュ内のデータ（検索結果）を共有できない。このため、キャッシュミスによる応答性能劣化及びキャッシュデータの重複による主記憶使用量（キャッシュに必要な記憶領域）の増加を招く。
【００１４】
そこで、本発明の目的は、クライアント計算機からの問い合わせに対する応答性能及びキャッシュに必要な記憶領域の利用効率を向上させることが可能な情報検索装置、情報検索方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１５】
本発明の１つの態様によれば、ユーザによって利用されるクライアント計算機及び階層構造を有する構造化データを格納するデータベースと接続された情報検索装置が提供される。この情報検索装置は、前記クライアント計算機を利用するユーザを識別するためのユーザ識別情報に対応付けて、前記データベースに格納されている構造化データが有する階層構造において当該ユーザがアクセス可能な範囲を示すアクセス許可設定情報を予め保持するアクセス権テーブルと、前記クライアント計算機を利用するユーザによって指定された検索対象範囲を示す問い合わせであって、当該クライアント計算機によって送信された当該ユーザを識別するためのユーザ識別情報を含む問い合わせを受信する問い合わせ受信手段と、前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されている構造化データが有する階層構造における前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する作成手段と、前記受信された問い合わせに含まれるユーザ識別情報に対応付けて前記アクセス権テーブルに保持されているアクセス許可設定情報に基づいて、前記データベースに格納されている構造化データが有する階層構造における前記受信された問い合わせによって示される検索対象範囲に合致する範囲であって当該アクセス許可設定情報によって示されるアクセス可能な範囲に該当する検索結果文字列を、当該構造化データから抽出する抽出手段と、前記受信された問い合わせ、前記作成されたアクセス許可リスト及び前記抽出された検索結果文字列を対応付けて含むキャッシュエントリを格納するキャッシュ格納手段とを具備する。
【発明の効果】
【００１６】
本発明は、クライアント計算機からの問い合わせに対する応答性能及びキャッシュに必要な記憶領域の利用効率を向上させることを可能とする。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係る文書検索装置を含む文書検索システムのハードウェア構成を示すブロック図。
【図２】図１に示す文書検索装置５０の主として機能構成を示すブロック図。
【図３】図２に示すデータベース６０に格納されている構造化文書のデータ構造の一例を示す図。
【図４】図２に示すアクセス権テーブル４２のデータ構造の一例を示す図。
【図５】図２に示すキャッシュ４３のデータ構造の一例を示す図。
【図６】クライアント計算機２０によって問い合わせが送信された場合の文書検索装置５０に含まれるＤＢＭＳ５１の処理手順を示すフローチャート。
【図７】キャッシュヒット判定処理の処理手順を示すフローチャート。
【図８】データベース検索処理の処理手順を示すフローチャート。
【図９】クライアント計算機２０によって構造化文書の登録要求が送信された場合の文書検索装置５０に含まれるＤＢＭＳ５１の処理手順を示すフローチャート。
【図１０】キャッシュエントリ無効化処理の処理手順を示すフローチャート。
【図１１】データベース登録処理部５１３によって抽出された構造化文書１００の木構造の一例を示す図。
【図１２】キャッシュ管理部５１１によるキャッシュエントリ統合処理の処理手順を示すフローチャート。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、本発明の実施形態について説明する。
【００１９】
図１は、本実施形態に係る文書検索装置（情報検索装置）を含む文書検索システムのハードウェア構成を示すブロック図である。
【００２０】
図１の文書検索システムは、主として、コンピュータ１０と、複数のクライアント計算機とから構成される。複数のクライアント計算機は、例えば複数のユーザによって利用される。複数のクライアント計算機は、クライアント計算機２０を含む。クライアント計算機２０上では、コンピュータ１０を利用するクライアントプログラムが動作する。クライアント計算機２０を含む複数のクライアント計算機は、例えば通信路３０を介してコンピュータ１０と接続されている。なお、図１にはクライアント計算機２０以外のクライアント計算機は省略されている。
【００２１】
コンピュータ１０は、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）のような外部記憶装置４０と接続されている。この外部記憶装置４０は、コンピュータ１０によって実行されるプログラム４１を格納する。コンピュータ１０及び外部記憶装置４０は、文書検索装置５０を構成する。
【００２２】
なお、上記したクライアント計算機２０上で動作するクライアントプログラムは、例えば文書検索装置５０に対して通信路３０介して当該クライアント計算機２０を利用するユーザによって指定された問い合わせを送信し、当該問い合わせに対する検索結果（応答）を当該文書検索装置５０から受信するプログラムである。
【００２３】
図２は、図１に示す文書検索装置５０の主として機能構成を示すブロック図である。文書検索システム５０は、クライアント計算機２０（上で動作するクライアントプログラム）によって送信される問い合わせによる検索対象となる文書（データ）が格納されているデータベース６０と接続されている。なお、検索対象となる文書は、例えば階層構造を有する構造化文書（構造化データ）である。この構造化文書は、例えばＸＭＬ（eXtensible Markup Language）で記述される。ＸＭＬで記述された構造化文書（ＸＭＬデータ）は、タグで囲まれたノードと呼ばれる構造からなり、当該ノード内に更にノードが存在することにより階層構造を有する。
【００２４】
文書検索装置５０は、データベース管理システム（ＤＢＭＳ：Database Management System）５１を含む。このＤＢＭＳ５１は、クライアント計算機２０によって送信された問い合わせを受信し、データベース６０に対する検索処理の結果を当該クライアント計算機２０に返す処理を実行する。
【００２５】
ＤＢＭＳ５１は、キャッシュ管理部５１１、データベース検索処理部５１２及びデータベース登録処理部５１３を含む。本実施形態において、これらの各部５１１乃至５１３（を含むＤＢＭＳ５１）は、図１に示すコンピュータ１０が外部記憶装置４０に格納されているプログラム４１を実行することにより実現されるものとする。このプログラム４１は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム４１が通信路３０を介してコンピュータ１０にダウンロードされても構わない。
【００２６】
また、ＤＢＭＳ５１は、アクセス権テーブル４２及びキャッシュ（格納部）４３を含む。本実施形態において、アクセス権テーブル４２は、例えば外部記憶装置４０に格納される。また、キャッシュ４３は、例えばコンピュータ１０に備えられる主記憶装置（メモリ）内にその領域が確保される。
【００２７】
なお、本実施形態に係る文書検索装置５０においては、予め設定されているクライアント計算機２０を利用するユーザの権限に基づいてデータベース６０（に格納されている構造化データ）に対するアクセスが制限（つまり、アクセス権制御）される。
【００２８】
具体的には、データベース６０に格納されている構造化文書が有する階層構造において、ユーザによって指定された問い合わせ（検索条件）に合致する範囲であっても当該範囲が当該ユーザのアクセス可能な範囲外である場合には、当該範囲（に該当する文字列）は検索結果として当該ユーザが利用するクライアント計算機２０には返されない。なお、文書検索装置５０におけるアクセス権の制御は、例えば構造化文書が有する階層構造におけるノード（以下、単に構造化文書上のノードと表記）の位置を示すＸＰａｔｈ（以下、パスと表記）単位で行われる。
【００２９】
アクセス権テーブル４２には、クライアント計算機２０を利用するユーザに設定されているアクセス権を示すアクセス権情報が管理される。アクセス権テーブル４２には、クライアント計算機２０を利用するユーザを識別するためのユーザＩＤに対応付けて、データベース６０に格納されている構造化文書上において当該ユーザがアクセス可能なノードの範囲を示すアクセス許可設定情報及び当該ユーザがアクセス不能なノードの範囲を示すアクセス禁止設定情報が予め保持される。なお、アクセス許可設定情報及びアクセス禁止設定情報は、パスによって表される。
【００３０】
キャッシュ４３には、後述するようにクライアント計算機２０によって送信された問い合わせ（文字列）、データベース検索処理部５１２によって作成されたアクセス許可リスト、アクセス拒否リスト及び当該問い合わせに応じてデータベース６０に格納されている構造化文書から抽出された検索結果文字列を対応付けて含むキャッシュエントリが格納される。
【００３１】
キャッシュ管理部５１１は、クライアント計算機２０を利用するユーザによって指定された検索対象範囲を示す問い合わせを受信する。この問い合わせには、当該問い合わせを送信したクライアント計算機２０を利用するユーザを識別するためのユーザ識別情報（以下、ユーザＩＤと表記）が含まれる。キャッシュ管理部５１１によって受信された問い合わせは、後述するように当該問い合わせに含まれるユーザＩＤによって識別されるユーザに設定されている権限に応じて処理される。なお、問い合わせとしては、例えばＸＭＬデータ用の検索言語であるＸＱｕｅｒｙが用いられる。
【００３２】
キャッシュ管理部５１１は、受信された問い合わせに基づいてキャッシュヒット判定処理を実行する。キャッシュ管理部５１１は、受信された問い合わせを含むキャッシュエントリがキャッシュ４３に格納（登録）されているか否かを判定する。キャッシュ管理部５１１は、受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報及びアクセス許可設定情報と、当該問い合わせを含むキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストとに基づいてキャッシュヒットであるか否かを判定する。
【００３３】
キャッシュ管理部５１１は、キャッシュヒット判定処理においてキャッシュヒットであると判定された場合、受信された問い合わせを送信したクライアント計算機（当該問い合わせに含まれるユーザＩＤによって識別されるユーザによって利用されるクライアント計算機）２０に対してキャッシュ４３に格納されている検索文字列（キャッシュヒットと判定されたキャッシュエントリの検索文字列）を送信する。
【００３４】
キャッシュ管理部５１１は、クライアント計算機２０によって送信された構造化文書の登録要求を受信する。キャッシュ管理部５１１は、受信された登録要求に付随する構造化文書をデータベース登録処理部５１３に渡す。
【００３５】
データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせに応じてデータベース６０（に格納されている構造化文書）に対する検索処理（以下、データベース検索処理と表記）を実行する。
【００３６】
データベース検索処理部５１２は、データベース検索処理において、キャッシュ管理部５１１によって受信された問い合わせに合致するデータベース６０に格納されている構造化文書上の各ノードに対するアクセス可否判定処理を実行する。データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報及びアクセス禁止設定情報に基づいてアクセス可否判定処理を実行する。
【００３７】
データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報に基づいて、データベース６０に格納されている構造化文書上における当該問い合わせ（によって示される検索対象範囲）に合致するノードの範囲であって当該アクセス許可設定情報及び当該アクセス禁止設定情報によって示されるアクセス可能なノードの範囲を示すアクセス権管理単位を保持するアクセス許可リストを作成する。
【００３８】
また、データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス禁止設定情報に基づいて、データベース６０に格納されている構造化文書上における当該問い合わせに合致するノードの範囲であって当該アクセス許可設定情報及び当該アクセス禁止設定情報によって示されるアクセス不能なノードの範囲を示すアクセス権管理単位を保持するアクセス拒否リストを作成する。
【００３９】
データベース検索処理部５１２は、作成されたアクセス許可リスト及びアクセス拒否リストをキャッシュ管理部５１１に渡す。
【００４０】
なお、データベース検索処理部５１２によって作成されたアクセス許可リスト及びアクセス拒否リストに含まれるアクセス権管理単位はパスによって表される。
【００４１】
データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報に基づいて、データベース６０に格納されている構造化文書上における当該問い合わせに合致するノードの範囲であって当該アクセス許可設定情報及び当該アクセス禁止設定情報によって示されるアクセス可能なノードの範囲に該当する文字列を検索結果文字列として当該構造化文書から抽出する。
【００４２】
データベース検索処理部５１２は、抽出された検索結果文字列をキャッシュ管理部５１１に渡す。
【００４３】
上記したようにキャッシュ管理部５１１に渡されたアクセス許可リスト、アクセス拒否リスト及び検索結果文字列は、当該キャッシュ管理部５１１によって受信された問い合わせに対応付けてキャッシュ４３に登録される。また、キャッシュ管理部５１１に渡された検索結果文字列は、当該キャッシュ管理部５１１によって受信された問い合わせに含まれるユーザＩＤによって識別されるユーザによって利用されるクライアント計算機（つまり、当該問い合わせを送信したクライアント計算機）２０に送信される。
【００４４】
データベース登録処理部５１３は、キャッシュ管理部５１１から渡された構造化文書をデータベース６０に登録する。
【００４５】
データベース登録処理部５１３は、キャッシュ管理部５１１から渡された構造化文書を解析する。データベース登録処理部５１３は、解析結果を含むキャッシュ無効化要求をキャッシュ管理部５１１に返す。なお、データベース登録処理部５１３による解析結果には、データベース６０に登録された構造化文書上の各ノードの位置を示すパスの一覧が含まれる。
【００４６】
この場合、キャッシュ管理部５１１においては、データベース登録処理部５１３から渡された解析結果及びキャッシュ４３に格納されているキャッシュエントリに含まれるアクセス許可リストに基づいて、当該キャッシュエントリの無効化処理が実行される。なお、キャッシュエントリの無効化処理の詳細については後述する。
【００４７】
図３は、図２に示すデータベース６０に格納されている構造化文書のデータ構造の一例を示す。データベース６０に格納されている構造化文書は、例えばＸＭＬで記述されている。図３に示すように、構造化文書は、タグで囲まれたノードと呼ばれる構造からなり、当該ノード内に更にノードが存在することにより階層構造を有する。
【００４８】
図３に示す例では、構造化文書１００が有する階層構造におけるノード（構造化文書１００上のノード）には、dbノード、empノード、nameノード、addressノード及びテキストノードが含まれる。
【００４９】
なお、構造化文書が有する階層構造において、任意のノードより下位の階層に位置するノードを当該任意のノードに対する子孫ノードと称する。図３に示す構造化文書１００においては、empノード、nameノード及びaddressノードは、dbノードに対する子孫ノードである。
【００５０】
また、構造化文書が有する階層構造において、任意のノードより上位の階層に位置するノードを当該任意のノードに対する祖先ノードと称する。図３に示す構造化文書１００においては、dbノード及びempノードは、nameノード（またはaddressノード）に対する祖先ノードである。
【００５１】
図４は、図２に示すアクセス権テーブル４２のデータ構造の一例を示す。図４に示すように、アクセス権テーブル４２には、クライアント計算機２０を利用するユーザを識別するためのユーザＩＤに対応付けて、データベース６０に格納されている構造化文書上において当該ユーザがアクセス可能なノードの範囲を示すアクセス許可設定情報及び当該ユーザがアクセス不能なノードの範囲を示すアクセス禁止設定情報が保持される。アクセス許可設定情報及びアクセス禁止設定情報としては、構造化文書上のノードの位置を示すパスが用いられる。
【００５２】
図４に示す例では、アクセス権テーブル４２には、ユーザＩＤ「db user1」に対応付けて、アクセス許可設定情報「/db/emp/name」及びアクセス禁止設定情報「NIL」が保持されている。
【００５３】
ここで、「/db/emp/name」は、構造化文書上におけるdbノードより下位の階層に位置するempノードより更に下位の階層に位置するnameノードを示す（特定する）パスである。この場合、アクセス許可設定情報「/db/emp/name」は、パス「/db/emp/name」によって示されるnameノードと、当該nameノードに対する子孫ノードと、当該nameノードに対する祖先ノードであるdbノード及びempノードとにアクセス可能であることを示す。このように、アクセス許可設定情報「/db/emp/name」は、構造化文書上においてアクセス可能なノードの範囲を示す。
【００５４】
一方、アクセス禁止設定情報「NIL」は、空集合、つまり、構造化文書上においてアクセス不能なノードの範囲が設定（指定）されていないことを示す。
【００５５】
図４に示す例では、アクセス権テーブル４２には、ユーザＩＤ「db user2」に対応付けて、アクセス許可設定情報「/db/emp」及びアクセス禁止設定情報「/db/emp/address」が保持されている。
【００５６】
ここで、「/db/emp」は、構造化文書上におけるdbノードより下位の階層に位置するempノードを示すパスである。この場合、アクセス許可設定情報「/db/emp」は、パス「/db/emp」によって示されるempノードと、当該empノードに対する子孫ノードと、当該empノードに対する祖先ノードであるdbノードとにアクセス可能であることを示す。
【００５７】
一方、「/db/emp/address」は、構造化文書上におけるdbノードより下位の階層に位置するempノードより更に下位の階層に位置するnameノードを示すパスである。この場合、アクセス禁止設定情報「/db/emp/address」は、パス「/db/emp/address」によって示されるaddressノードと、当該addressノードに対する子孫ノードとにアクセス不能であることを示す。このように、アクセス禁止設定情報「/db/emp/address」は、構造化文書上においてアクセス不能なノードの範囲を示す。
【００５８】
ここで、アクセス禁止設定情報によって示されるアクセス不能なノードの範囲に含まれるaddressノード（及び当該addressノードに対する子孫ノード）は、empノードに対する子孫ノードである。このため、addressノード（及び当該addressノードに対する子孫ノード）は、アクセス許可設定情報「/db/emp」によって示されるアクセス可能なノードの範囲に含まれる。よって、addressノード及び当該addressノードに対する子孫ノードは、アクセス許可設定情報「/db/emp」によって示されるアクセス可能なノードの範囲及びアクセス禁止設定情報「/db/emp/address」によって示されるアクセス不能なノードの範囲の両方が設定されていることになるが、この場合、アクセス禁止設定情報はアクセス許可設定情報よりも優先されるものとする。
【００５９】
つまり、ユーザＩＤ「db user2」によって識別されるユーザは、アクセス許可設定情報「/db/emp」及びアクセス禁止設定情報「/db/emp/address」によれば、addressノード及び当該addressノードに対する子孫ノードについてはアクセス不能である。
【００６０】
また、図４に示す例では、アクセス権テーブル４２には、ユーザＩＤ「db user3」に対応付けて、アクセス許可設定情報「/db/emp/address」及びアクセス禁止設定情報「NIL」が保持されている。
【００６１】
ここで、「/db/emp/address」は、構造化文書上におけるdbノードより下位の階層に位置するempノードより更に下位の階層に位置するaddressノードを示す（特定する）パスである。この場合、アクセス許可設定情報「/db/emp/address」は、パス「/db/emp/address」によって示されるaddressノードと、当該addressノードに対する子孫ノードと、当該addressノードに対する祖先ノードであるdbノード及びempノードとにアクセス可能であることを示す。
【００６２】
一方、アクセス禁止設定情報「NIL」は、上記したように構造化文書上においてアクセス不能なノードの範囲が設定（指定）されていないことを示す。
【００６３】
なお、図４に示すアクセス権テーブル４２においては、アクセス可能なノードの範囲及びアクセス不能なノードの範囲を明示的に設定可能なようにアクセス許可設定情報及びアクセス禁止設定情報が保持されるものとして説明したが、アクセス権テーブル４２に例えばアクセス許可設定情報のみが保持され、当該アクセス許可設定情報によって明示的にアクセスが許可されている範囲以外は全てアクセス禁止という形態でも構わない。同様に、アクセス権テーブル４２に例えばアクセス禁止設定情報のみが保持され、当該アクセス許可設定情報によって明示的にアクセスが禁止されている範囲以外は全てアクセス可能という形態でも構わない。つまり、アクセス権テーブル４２においては、ユーザに設定されているアクセス権を示すことができるものであれば、上記した図４に示すデータ構造に限定されない。
【００６４】
図５は、図２に示すキャッシュ４３のデータ構造の一例を示す。キャッシュ４３には、キャッシュエントリが格納される。キャッシュエントリには、問い合わせ（文字列）、アクセス許可リスト、アクセス拒否リスト及び検索結果文字列が含まれる。
【００６５】
問い合わせは、クライアント計算機２０から送信された問い合わせ文字列（例えばＸＱｕｅｒｙ）である。
【００６６】
アクセス許可リストは、対応付けられている問い合わせに応じて実行されるデータベース検索処理におけるアクセス可否判定処理（アクセス権監査）においてアクセス可能と判定された構造化文書上のノードの位置を示すパス（アクセス権管理単位）のリストである。
【００６７】
アクセス拒否リストは、対応付けられている問い合わせに応じて実行されるデータベース検索処理におけるアクセス可否判定処理（アクセス権監査）においてアクセス不能と判定された構造化文書上のノードの位置を示すパス（アクセス権管理単位）のリストである。
【００６８】
検索結果文字列は、当該検索結果文字列に対応付けられている問い合わせに応じて実行されるデータベース検処処理においてデータベース６０に格納されている構造化文書から検索結果として抽出された文字列である。
【００６９】
図５に示す例では、キャッシュ４３には、キャッシュエントリ４３１及び４３２が格納されている。
【００７０】
キャッシュエントリ４３１に含まれる問い合わせは、問い合わせ「/db/emp」である。キャッシュエントリ４３１に含まれるアクセス許可リストには、アクセス権管理単位としてパス「/db/emp」、「/db/emp/name」及び「/db/emp/name/text()」が保持されている。このアクセス許可リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス可能と判定された構造化文書上のノードが、パス「/db/emp」によって示されるempノード、パス「/db/emp/name」によって示されるnameノード及びパス「/db/emp/name/text()」によって示されるテキストノードであることが示される。
【００７１】
キャッシュエントリ４３１に含まれるアクセス拒否リストには、アクセス権管理単位としてパス「/db/emp/address」が保持されている。このアクセス拒否リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス不能と判定された構造化文書上のノードが、パス「/db/emp/address」によって示されるaddressノードであることが示される。
【００７２】
また、キャッシュエントリ４３１に含まれる検索結果文字列は、検索結果文字列「<emp><name>name1</name></emp>」及び「<emp><name>name2</name></emp>」である。この検索結果文字列は、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理においてデータベース６０に格納されている構造化文書から検索結果として抽出された文字列である。
【００７３】
また、キャッシュエントリ４３２に含まれる問い合わせは、問い合わせ「/db/emp」である。キャッシュエントリ４３２に含まれるアクセス許可リストには、アクセス権管理単位としてパス「/db/emp」、「/db/emp/address」及び「/db/emp/address/text()」が保持されている。このアクセス許可リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス可能と判定された構造化文書上のノードが、パス「/db/emp」によって示されるempノード、パス「/db/emp/address」によって示されるadressノード及びパス「/db/emp/address/text()」によって示されるテキストノードであることが示される。
【００７４】
キャッシュエントリ４３２に含まれるアクセス拒否リストには、アクセス権管理単位としてパス「/db/emp/name」が保持されている。このアクセス拒否リストに保持されるパスによれば、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理におけるアクセス可否判定処理においてアクセス不能と判定された構造化文書上のノードが、パス「/db/emp/name」によって示されるnameノードであることが示される。
【００７５】
また、キャッシュエントリ４３２に含まれる検索結果文字列は、検索結果文字列「<emp><address>address1</address></emp>」及び「<emp><address>address2 </address></emp>」である。この検索結果文字列は、問い合わせ「/db/emp」に応じて実行されるデータベース検索処理においてデータベース６０に格納されている構造化文書から検索結果として抽出された文字列である。
【００７６】
上記したように、キャッシュエントリに含まれる問い合わせが同一である場合であっても、当該問い合わせを送信したクライアント端末２０を利用するユーザに設定されている権限（アクセス許可設定情報及びアクセス禁止設定情報）によっては、当該問い合わせに応じて実行されるデータベース検索処理において作成されるアクセス許可リスト、アクセス拒否リスト及び構造化文書から抽出される検索結果文字列は異なる。
【００７７】
次に、図６のフローチャートを参照して、クライアント計算機２０によって問い合わせが送信された場合の文書検索装置５０に含まれるＤＢＭＳ５１の処理手順について説明する。
【００７８】
まず、ＤＢＭＳ５１に含まれるキャッシュ管理部５１１は、クライアント計算機２０によって送信された問い合わせを受信する（ステップＳ１）。問い合わせは、当該問い合わせを送信したクライアント端末２０を利用するユーザによって指定された検索対象範囲を示す。問い合わせには、当該問い合わせを送信したクライアント計算機２０を利用するユーザを識別するためのユーザＩＤが含まれる。なお、問い合わせとしては、例えばＸＭＬデータ用の検索言語であるＸＱｕｅｒｙが用いられる。
【００７９】
次に、キャッシュ管理部５１１は、受信された問い合わせに基づいて、キャッシュ４３に格納されているキャッシュエントリに対するキャッシュヒット判定処理を実行する（ステップＳ２）。キャッシュヒットの判定処理は、受信された問い合わせに対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報及びアクセス禁止設定情報と、当該問い合わせに対応付けてキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに基づいて実行される。キャッシュヒット判定処理の詳細については後述する。
【００８０】
キャッシュヒット判定処理においてキャッシュヒットでない（つまり、キャッシュミスヒット）と判定された場合（ステップＳ３のＮＯ）、データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせに応じて、データベース６０に格納されている構造化文書１００に対するデータベース検索処理を実行する（ステップＳ４）。データベース検索処理部５１２は、アクセス権テーブル４２を参照してデータベース検索処理を実行する。
【００８１】
このデータベース検索処理においては、キャッシュ管理部５１１によって受信された問い合わせ（によって示される検索範囲）に合致する検索結果文字列がデータベース６０に格納されている構造化文書から抽出される。また、データベース検索処理においては、検索結果文字列の抽出と同時に、アクセス許可リスト及びアクセス拒否リストが作成される。なお、データベース検索処理の詳細については後述する。
【００８２】
データベース検索処理部５１２は、作成されたアクセス許可リスト、アクセス拒否リスト及びデータベース６０に格納されている構造化文書から抽出された検索結果文字列をキャッシュ管理部５１１に渡す。
【００８３】
キャッシュ管理部５１１は、受信された問い合わせに対応付けて、データベース検索処理部５１２から渡されたアクセス許可リスト、アクセス拒否リスト及び検索結果文字列を対応付けて含むキャッシュエントリをキャッシュ４３に登録する（キャッシュする）処理（キャッシュ登録処理）を実行する（ステップＳ５）。
【００８４】
キャッシュ管理部５１１は、受信された問い合わせに対する応答として、データベース検索処理部５１２から渡された検索結果文字列を当該問い合わせに含まれるユーザＩＤによって識別されるユーザによって利用されるクライアント計算機（当該問い合わせを送信したクライアント計算機）２０に対して送信する（ステップＳ６）。
【００８５】
一方、ステップＳ３においてキャッシュヒットであると判定された場合、キャッシュ管理部５１１は、受信された問い合わせに対応付けてキャッシュエントリ（キャッシュヒットであると判定されたキャッシュエントリ）に含まれる検索結果文字列をキャッシュ４３から取得する（ステップＳ７）。ステップＳ７の処理が実行されると、ステップＳ６の処理が実行される。つまり、ステップＳ７において取得された検索結果文字列が、キャッシュ管理部５１１によって受信された問い合わせに対する応答として当該問い合わせに含まれるユーザＩＤによって識別されるユーザによって利用されるクライアント計算機２０に対して送信される。
【００８６】
次に、図７に示すフローチャートを参照して、前述したキャッシュヒット判定処理（図６に示すステップＳ２の処理）の処理手順について説明する。なお、キャッシュヒット判定処理は、キャッシュ４３に格納されているキャッシュエントリ毎に実行される。以下、キャッシュヒット判定処理の対象となるキャッシュエントリを対象キャッシュエントリと称する。
【００８７】
まず、キャッシュ管理部５１１は、受信された問い合わせ（文字列）及び対象キャッシュエントリに含まれる問い合わせ（文字列）が一致するか否かを判定する（ステップＳ１１）。
【００８８】
問い合わせが一致すると判定された場合（ステップＳ１１のＹＥＳ）、キャッシュ管理部５１１は、受信された問い合わせに含まれるユーザＩＤによって識別されるユーザが対象キャッシュエントリに含まれるアクセス許可リストに保持されるパス（アクセス権管理単位）によって示されるノード（の範囲）の全てにアクセス可能（アクセス許可リストの全てにアクセス可能）であるか否かを判定する（ステップＳ１２）。キャッシュ管理部５１１は、受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報及びアクセス禁止設定情報に基づいて判定処理を実行する。
【００８９】
この場合、受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報によって示されるアクセス可能なノードの範囲に、対象キャッシュエントリに含まれるアクセス許可リストに保持されるパスによって示されるノード（の範囲）が全て含まれる場合には、アクセス許可リストの全てにアクセス可能であると判定される。
【００９０】
アクセス許可リストの全てにアクセス可能であると判定された場合（ステップＳ１３のＹＥＳ）、キャッシュ管理部５１１は、受信された問い合わせに含まれるユーザＩＤによって識別されるユーザが対象キャッシュエントリに含まれるアクセス拒否リストに保持されるパス（アクセス権管理単位）によって示されるノード（の範囲）の全てにアクセス不能（アクセス拒否リストの全てにアクセス不能）であるか否かを判定する（ステップＳ１３）。キャッシュ管理部５１１は、受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス禁止設定情報に基づいて判定処理を実行する。
【００９１】
この場合、受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス禁止設定情報によって示されるアクセス不能なノードの範囲に、対象キャッシュエントリに含まれるアクセス拒否リストに保持されるパスによって示されるノード（の範囲）が全て含まれる場合には、アクセス拒否リストの全てにアクセス不能であると判定される。
【００９２】
アクセス拒否リストの全てにアクセス不能であると判定された場合（ステップＳ１３のＹＥＳ）、キャッシュ管理部５１１は、対象キャッシュエントリに対するキャッシュヒット判定処理結果をキャッシュヒット判定とする（ステップＳ１４）。
【００９３】
一方、ステップＳ１１において問い合わせが一致しないと判定された場合（ステップＳ１１のＮＯ）、キャッシュ管理部５１１は、対象キャッシュエントリに対するキャッシュヒット判定処理結果をキャッシュミスヒット判定とする（ステップＳ１５）。
【００９４】
同様に、ステップＳ１２においてアクセス許可リストの全てにアクセス可能でないと判定された場合、または、ステップＳ１３においてアクセス拒否リストの全てにアクセス不能でないと判定された場合、キャッシュ管理部５１１は、対象キャッシュエントリに対するキャッシュヒット判定処理結果をキャッシュミスヒット判定とする（ステップＳ１５）。
【００９５】
キャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リスト（に保持されるパス）の和集合は、当該キャッシュエントリに含まれる問い合わせに応じて実行されるデータベース検索処理に関わるパスの集合である。このため、上記したステップＳ１２及びステップＳ１３の処理においては、対象キャッシュエントリに含まれる問い合わせに応じて実行されるデータベース検索処理に関わるパスに基づいて、当該対象キャッシュエントリが登録された際のユーザのアクセス権と現在処理中の問い合わせを指定したユーザのアクセス権が同等であるか否かが判定されている。
【００９６】
次に、図８のフローチャートを参照して、前述したデータベース検索処理（図６に示すステップＳ４の処理）の処理手順について説明する。
【００９７】
データベース検索処理においては、キャッシュ管理部５１１によって受信された問い合わせに合致する構造化文書上の各ノードに対するアクセス可否判定処理が実行される。アクセス可否判定処理は、キャッシュ管理部５１１によって受信された問い合わせに合致する構造化文書上の各ノードの各々に対して、キャッシュ管理部５１１によって受信された問い合わせに含まれるユーザＩＤによって識別されるユーザがアクセス可能であるかまたはアクセス不能であるか（つまり、アクセス可否）を判定する処理である。
【００９８】
このアクセス可否判定処理においては、データベース６０に格納されている構造化文書を参照して、キャッシュ管理部５１１によって受信された問い合わせ（パス）によって示される当該構造化文書上のノード以下（つまり、検索対象範囲）の階層構造を辿ることにより当該アクセス可否判定処理の対象となるノードが抽出（特定）される。以下、アクセス可否判定処理の対象となるノードを対象ノードと称する。
【００９９】
まず、データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス禁止設定情報によって示されるアクセス不能なノードの範囲（以下、禁止範囲と表記）に対象ノードが含まれるか否かを判定する（ステップＳ２１）。
【０１００】
禁止範囲に対象ノードが含まれないと判定された場合（ステップＳ２１のＮＯ）、データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせに含まれるユーザＩＤに対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報によって示されるアクセス可能なノードの範囲（以下、許可範囲と表記）に対象ノードが含まれるか否かを判定する（ステップＳ２２）。
【０１０１】
許可範囲に対象ノードが含まれると判定された場合（ステップＳ２２のＹＥＳ）、データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせに含まれるユーザＩＤによって識別されるユーザが対象ノードにアクセス可能である（つまり、アクセス可）と判定する（ステップＳ２３）。
【０１０２】
データベース検索処理部５１２は、アクセス可と判定された場合、対象ノードを示すパスをアクセス権管理単位としてアクセス許可リストに追加する（ステップＳ２４）。なお、アクセス許可リストに既に対象ノードを示すパスが保持されている場合には、当該パスは追加されない。
【０１０３】
一方、禁止範囲に対象ノードが含まれると判定された場合（ステップＳ２１のＹＥＳ）または許可範囲に対象ノードが含まれないと判定された場合（ステップＳ２２のＮＯ）、データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせに含まれるユーザＩＤによって識別されるユーザが対象ノードにアクセス不能である（つまり、アクセス不可）と判定する（ステップＳ２５）。
【０１０４】
データベース検索処理部５１２は、アクセス不可と判定された場合、対象ノードを示すパスをアクセス権管理単位としてアクセス拒否リストに追加する（ステップＳ２６）。なお、アクセス拒否リストに既に対象ノードを示すパスが保持されている場合には、当該パスは追加されない。
【０１０５】
ステップＳ２４またはステップＳ２６の処理が実行されると、データベース検索処理部５１２は、上記したステップＳ２１以降の処理がキャッシュ管理部５１１によって受信された問い合わせによって示される検索対象範囲内の全てのノード（問い合わせによって示される構造化文書上のノード以下の全てのノード）について実行されたか否かを判定する（ステップＳ２７）。
【０１０６】
全てのノードについて実行されていないと判定された場合（ステップＳ２７のＮＯ）、ステップＳ２１に戻って処理が繰り返される。この場合、ステップＳ２１の処理が実行されていないノードを対象ノードとして当該処理が実行される。
【０１０７】
このように、キャッシュ管理部５１１によって受信された問い合わせによって示される構造化文書上のノード以下の全てのノードについて上記したステップＳ２１以降の処理（アクセス可否判定処理）が実行されることにより、アクセス許可リスト及びアクセス拒否リストが作成される。
【０１０８】
ステップＳ２７において全てのノードについて実行されたと判定された場合、データベース検索処理部５１２は、上記したキャッシュ管理部５１１によって受信された問い合わせによって示される検索対象範囲内の全てのノードに対するアクセス可否判定処理結果に基づいて構造化文書（データベース６０に格納されている構造化文書）から検索結果文字列を抽出する（ステップＳ２８）。データベース検索処理部５１２は、データベース６０に格納されている構造化文書が有する階層構造における問い合わせ（によって示される検索対象範囲）に合致するノードの範囲であって当該問い合わせに含まれるユーザＩＤによって識別されるユーザがアクセス可能なノードの範囲（許可範囲）に該当する文字列を検索結果文字列として抽出する。
【０１０９】
上記したようにデータベース検索処理部５１２によって作成されたアクセス許可リスト、アクセス拒否リスト及び当該データベース検索処理部５１２によって抽出された検索結果文字列は、キャッシュ管理部５１１を介してキャッシュ４３に登録される。
【０１１０】
以下、上述した図３及び図４を用いて、クライアント計算機２０によって問い合わせが送信された場合のＤＢＭＳ５１の動作について具体的に説明する。ここでは、データベース６０に格納される構造化文書は、図３に示す構造化文書１００であるものとする。また、ＤＢＭＳ５１に含まれるアクセス権テーブル４２は、図４に示すデータ構造を有するものとする。なお、キャッシュ４３には、キャッシュエントリは格納（登録）されていないものとする。
【０１１１】
まず、キャッシュ管理部５１１は、クライアント計算機２０によって送信された問い合わせを受信する。
【０１１２】
ここでは、問い合わせ「/db/emp」が受信されたものとする。この問い合わせ「/db/emp」は、データベース６０に格納されている構造化文書１００が有する階層構造においてdbノードより下位の階層に位置するempノード及び当該empノードに対する子孫のノード（に該当する文字列）を取得する旨を指示する問い合わせである。換言すれば、問い合わせ「/db/emp」によって示される検索対象範囲には、dbノードより下位の階層に位置するempノード及び当該empノードに対する子孫のノードが含まれる。
【０１１３】
また、問い合わせ「/db/emp」には、当該問い合わせを送信したクライアント端末２０を利用するユーザを識別するためのユーザＩＤとしてユーザＩＤ「db user1」が含まれているものとする。なお、ユーザＩＤ「db user1」によって識別されるユーザを第１のユーザと称する。
【０１１４】
次に、キャッシュ管理部５１１は、受信された問い合わせ「/db/emp」に基づいてキャッシュヒット判定処理を実行する。上記したようにキャッシュ４３にはキャッシュエントリは格納されていないため、ここでは、キャッシュミスヒットと判定される。
【０１１５】
この場合、キャッシュ管理部５１１は、データベース検索処理部５１２に対して検索処理要求を行う。この際、キャッシュ管理部５１１は、受信された問い合わせ「/db/emp」をデータベース検索処理部５１２に渡す。
【０１１６】
データベース検索処理部５１２は、キャッシュ管理部５１１からの検索処理要求に応じてデータベース検索処理を実行する。
【０１１７】
データベース検索処理においては、問い合わせ「/db/emp」、当該問い合わせ「/db/emp」に含まれるユーザＩＤ「db user1」に対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報及びアクセス拒否設定情報に基づいて、データベース６０に格納されている構造化文書１００上の各ノードに対するアクセス可否判定処理が実行される。
【０１１８】
アクセス可否判定処理においては、キャッシュ部５１１によって受信された問い合わせ「/db/emp」によって示される構造化文書１００上のempノード以下（検索対象範囲）の階層構造を辿ることにより当該アクセス可否判定処理の対象となるノードが抽出（特定）される。つまり、アクセス可否判定処理は、問い合わせ「/db/emp」によって示されるempノードを始点として構造化文書１００の階層構造において深さ優先で各ノードに対して実行される。
【０１１９】
ここで、図４に示すアクセス権テーブル４２によれば、問い合わせ「/db/emp」に含まれるユーザＩＤ「db user1」に対応付けて当該アクセス権テーブル４２に保持されているアクセス許可設定情報は、アクセス許可設定情報「/db/emp/name」である。また、図４に示すアクセス権テーブル４２によれば、問い合わせ「/db/emp」に含まれるユーザＩＤ「db user1」に対応付けてアクセス権テーブル４２に保持されているアクセス禁止設定情報は、アクセス禁止設定情報「NIL」である。
【０１２０】
まず、データベース検索処理部５１２は、キャッシュ管理部５１１によって受信された問い合わせ「/db/emp」によって示される構造化文書１００上のempノードを対象ノードとしてアクセス可否判定処理を実行する。
【０１２１】
データベース検索処理部５１２は、問い合わせ「/db/emp」に含まれるユーザＩＤ「db user1」に対応付けてアクセス権テーブル４２に保持されているアクセス禁止設定情報によって示される禁止範囲に対象ノード（empノード）が含まれるか否かを判定する。
【０１２２】
ここで、ユーザＩＤ「db user1」に対応付けてアクセス権テーブル４２に保持されているアクセス禁止設定情報「NIL」は、禁止範囲が設定されていないことを示す。
【０１２３】
したがって、データベース検索処理部５１２は、アクセス禁止設定情報「NIL」によって示される禁止範囲には対象ノードであるempノードが含まれないと判定する。
【０１２４】
次に、データベース検索処理部５１２は、問い合わせ「/db/emp」に含まれるユーザＩＤ「db user1」に対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報「/db/emp/name」によって示される許可範囲に対象ノードが含まれているかを判定する。
【０１２５】
ここで、アクセス許可設定情報「/db/emp/name」によって示される許可範囲には、パス「/db/emp/name」によって示されるnameノード、当該nameノードに対する子孫ノード、当該nameノードに対する祖先ノード（dbノード及びempノード）が含まれる。
【０１２６】
したがって、データベース検索処理部５１２は、アクセス許可設定情報「/db/emp/name」によって示される許可範囲には対象ノードであるempノードが含まれると判定する。
【０１２７】
この場合、データベース検索処理部５１２は、対象ノードであるempノードを示すパス「/db/emp」がアクセス許可リストに保持されていなければ、当該パス「/db/emp」をアクセス権管理単位としてアクセス許可リストに追加する。
【０１２８】
このように、問い合わせ「/db/emp」によって示されるempノードを対象ノードとしてアクセス可否判定処理が実行されると、構造化文書１００上の当該empノードに対する子ノード（当該empノードの下位の階層に位置するノード）を対象ノードとしてアクセス可否判定処理が実行される。この場合、問い合わせ「/db/emp」によって示されるempノードに対する子ノードは、nameノード及びaddressノードであるので、これらを対象ノードとしてアクセス可否判定処理が実行される。
【０１２９】
ここで、構造化文書１００上のnameノードを対象ノードとしてアクセス可否判定処理が実行された場合を想定する。この場合、構造化文書１００上のnameノード（対象ノード）は、アクセス許可設定情報「/db/emp/name」によって示される許可範囲に含まれる。したがって、構造化文書１００上のnameノードを示すパス「/db/emp/name」がアクセス許可リストに保持されていなければ、当該パス「/db/emp/name」がアクセス権管理単位としてアクセス許可リストに追加される。
【０１３０】
次に、構造化文書１００上のnameノードに対する子ノードを対象ノードとしてアクセス可否判定処理が実行される。この場合、構造化文書１００上のnameノードに対する子ノードはテキストノードである。構造化文書１００上のテキストノード（nameノードに対する子ノード）は、アクセス許可設定情報「/db/emp/name」によって示される許可範囲に含まれる。したがって、構造化文書１００上のテキストノードを示すパス「/db/emp/name/text()」がアクセス許可リストに保持されていなければ、当該パス「/db/emp/name/text()」がアクセス権管理単位としてアクセス許可リストに追加される。
【０１３１】
ここで、構造化文書１００上のnameノードに対する子ノードであるテキストノードは当該構造化文書１００が有する階層構造において子孫ノードを有さないため、当該テキストノードの上位のnameノードに処理が戻される。また、nameノードは、構造化文書１００が有する階層構造においてテキストノード以外の子孫ノードを有さないため、更に上位のempノードに処理が戻される。empノードは、構造化文書１００が有する階層構造において、アクセス可否判定処理が実行されたnameノード以外にaddressノードを有するため、当該addressノードを対象ノードとしてアクセス可否判定処理が実行される。
【０１３２】
この場合、構造化文書１００上のaddressノードは、アクセス許可設定情報「/db/emp/name」によって示される許可範囲に含まれない。したがって、構造化文書１００上のaddressノードを示すパス「/db/emp/address」がアクセス拒否リストに保持されていなければ、当該パス「/db/emp/address」がアクセス権管理単位としてアクセス拒否リストに追加される。
【０１３３】
なお、構造化文書１００上のaddressノードへのアクセスは不能であるため、当該addressノードより下位の階層に位置するノードについてはアクセス可否判定処理は実行されない。
【０１３４】
上記したように構造化文書１００上のaddressノードを対象ノードとしてアクセス可否判定処理が実行されると、当該addressノードの上位のempノードに処理が戻される。この場合、構造化文書１００上のempノード以下の全てのノードに対してアクセス可否判定処理が実行されたため、アクセス可否判定処理は終了される。このように、構造化文書１００上のempノード（問い合わせ「/db/emp」によって示されるempノード）以下の全てのノードに対してアクセス可否判定処理が実行されることで、アクセス許可リスト及びアクセス拒否リストが作成される。
【０１３５】
上記したように作成されたアクセス許可リストには、パス「/db/emp」、「/db/emp/name」及び「/db/emp/name/text()」がアクセス権管理単位として保持される。また、アクセス拒否リストには、パス「/db/emp/address」がアクセス権管理単位として保持される。
【０１３６】
なお、構造化文書１００上に問い合わせ「/db/emp」によって示されるempノードが複数存在する場合には、それらの全てのついて同様の処理が繰り返される。
【０１３７】
ここで、データベース検索処理部５１２は、以上のアクセス可否判定処理結果に基づいて構造化文書１００から検索結果文字列を抽出する。この場合、データベース検索処理部５１２は、アクセス可否判定処理においてアクセス可能と判定された構造化文書１００上のノード、すなわちempノード、nameノード及びnameノード直下のテキストノードに該当する文字列（empノード、nameノード及びnameノード直下のテキストノードの内容）が検索結果文字列として抽出される。これにより、データベース検索処理部５１２によるデータベース検索処理は終了される。
【０１３８】
この場合、データベース検索処理部５１２によって抽出された検索結果文字列は、「<emp><name>name1</name></emp>」及び「<emp><name>name2</name></emp>」である。
【０１３９】
上記したように、データベース検索処理が終了されると、データベース検索処理部５１２は、作成されたアクセス許可リスト、アクセス拒否リスト及び構造化文書１００から抽出された検索結果文字列をキャッシュ管理部５１１に渡す。
【０１４０】
キャッシュ管理部５１１は、問い合わせ「/db/emp」に対応付けて、データベース検索処理部５１１から渡されたアクセス許可リスト、アクセス拒否リスト及び検索結果文字列を含むキャッシュエントリをキャッシュ４３に登録する。ここでは、上述した図５に示すキャッシュエントリ４３１がキャッシュ４３に登録される。
【０１４１】
また、キャッシュ管理部５１１は、データベース検索処理部５１１から渡された検索結果文字列を、問い合わせ「/db/emp」に対する応答としてクライアント計算機２０に送信する。この場合、キャッシュ管理部５１１は、問い合わせ「/db/emp」に含まれるユーザＩＤ「db user1」によって識別される第１のユーザによって利用されるクライアント計算機（問い合わせ「/db/emp」を送信したクライアント計算機）２０に対して検索結果文字列を送信する。
【０１４２】
このように、問い合わせ「/db/emp」に対する応答がクライアント計算機２０に返されると、ＤＢＭＳ５１の処理は終了される。
【０１４３】
なお、上記したキャッシュ４３に対するキャッシュエントリ４３１の登録に際して、例えばアクセス許可リスト及びアクセス拒否リストに複数のパス（アクセス権管理単位）が保持されている場合に当該アクセス許可リスト及びアクセス拒否リストから冗長な情報を必要に応じて除去する処理（以下、冗長情報除去処理と表記）が実行されても構わない。アクセス権テーブル４２に保持されている例えばアクセス許可設定情報「/de/emp/name」によれば、パス「/db/emp/name」によって示されるnameノード、当該nameノードに対する子孫ノード、当該nameノードに対する祖先ノードであるdbノード及びempノードへのアクセスが可能である旨が示される。つまり、アクセス許可設定情報と同様に、例えばアクセス許可リストに保持されているパス「/db/emp/name」によって示されるnameノードへのアクセスが許可されたという情報は、パス「/db/emp」によって示されるempノードへのアクセスが許可されたという情報を含むことができる。したがって、冗長情報除去処理によれば、例えばアクセス許可リストに保持される複数のパスのうち、第１のパス（第１アクセス権管理単位）によって示される範囲が第２のパス（第２のアクセス権管理単位）によって示される範囲に含まれる場合、当該第１のパスが当該アクセス許可リストから除去される。具体的には、アクセス許可リストにパス「/db/emp」及びパス「/db/emp/name」が保持されている場合には、当該アクセス許可リストからパス「/db/emp」（冗長な情報）を除去（削除）することができる。なお、アクセス拒否リストについても同様に冗長な情報を除去することができる。
【０１４４】
例えば図５に示すキャッシュエントリ４３１に含まれるアクセス許可リストに対して冗長情報除去処理が実行されると、当該アクセス許可リストに保持されるパス（アクセス権管理単位）は、パス「/db/emp/name/text()」のみとなる。
【０１４５】
このようにアクセス許可リスト及びアクセス拒否リストに対して冗長情報除去処理が実行されることにより、当該アクセス許可リスト及びアクセス拒否リストに保持されるパスが削減されるため、キャッシュヒット判定処理における処理量を軽減することが可能となる。
【０１４６】
ここで、上記したようにキャッシュ４３にキャッシュエントリ４３１が登録された後に、例えばユーザＩＤ「db user2」によって識別されるユーザによって利用されるクライアント計算機２０から問い合わせ「/db/emp」が送信された場合を想定する。この場合、問い合わせ「/db/emp」には、ユーザＩＤ「db user2」が含まれる。なお、ユーザＩＤ「db user2」によって識別されるユーザを第２のユーザと称する。
【０１４７】
キャッシュ管理部５１１は、クライアント計算機２０よって送信された問い合わせ「/db/emp」を受信する。
【０１４８】
キャッシュ管理部５１１は、受信された問い合わせ「/db/emp」及びキャッシュ４３に格納されているキャッシュエントリ４３１に基づいてキャッシュヒット判定処理を実行する。ここでは、キャッシュエントリ４３１について説明するが、キャッシュ４３に複数のキャッシュエントリが格納されている場合には、当該キャッシュエントリの各々についてキャッシュヒット判定処理が実行される。
【０１４９】
まず、キャッシュ管理部５１１は、受信された問い合わせ（文字列）「/db/emp」及びキャッシュエントリ４３１に含まれる問い合わせ（文字列）が一致するか否かを判定する。図５に示すように、キャッシュエントリ４３１に含まれる問い合わせは、問い合わせ「/db/emp」である。したがって、キャッシュ管理部５１１は、問い合わせ「/db/emp」が一致すると判定する。
【０１５０】
次に、キャッシュ管理部５１１は、受信された問い合わせ「/db/emp」に含まれるユーザＩＤ「db user2」によって識別される第２のユーザがキャッシュエントリ４３１に含まれるアクセス許可リストに保持されるパス（アクセス権管理単位）によって示されるノード（の範囲）の全てにアクセス可能（アクセス許可リストの全てにアクセス可能）であるか否かを判定する。キャッシュ管理部５１１は、問い合わせ「/db/emp」に含まれるユーザＩＤ「db user2」に対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報に基づいて判定処理を実行する。
【０１５１】
ここで、ユーザＩＤ「db user2」に対応付けてアクセス権テーブル４２に保持されているアクセス許可設定情報は、アクセス許可設定情報「/db/emp」である。このアクセス許可設定情報「/db/emp」によれば、第２のユーザがアクセス可能な構造化文書１００上のノードは、パス「/db/emp」によって示されるempノード、当該empノードに対する子孫ノード及び当該empノードに対する祖先ノード（dbノード）である。
【０１５２】
また、キャッシュエントリ４３１に含まれるアクセス許可リストに保持されるパス（アクセス権管理単位）によって示される構造化文書１００上のノードは、パス「/db/emp」によって示されるempノード、パス「/db/emp/name」によって示されるnameノード及びパス「/db/emp/name/text()」によって示されるテキストノードである。
【０１５３】
この場合、キャッシュエントリ４３１に含まれるアクセス許可リストに保持されているパスによって示されるノードの全てが、アクセス許可設定情報「/db/emp」によって示されるアクセス可能なノード（第２のユーザがアクセス可能なノード）の範囲に含まれている。したがって、キャッシュ管理部５１１は、キャッシュエントリ４３１に含まれるアクセス許可リストの全てにアクセス可能であると判定する。
【０１５４】
次に、キャッシュ管理部５１１は、受信された問い合わせ「/db/emp」に含まれるユーザＩＤ「db user2」によって識別される第２のユーザがキャッシュエントリ４３１に含まれるアクセス拒否リストに保持されるパス（アクセス権管理単位）によって示されるノード（の範囲）の全てにアクセス不能（アクセス拒否リストの全てにアクセス可能）であるか否かを判定する。キャッシュ管理部５１１は、問い合わせ「/db/emp」に含まれるユーザＩＤ「db user2」に対応付けてアクセス権テーブル４２に保持されているアクセス禁止設定情報に基づいて判定処理を実行する。
【０１５５】
ここで、ユーザＩＤ「db user2」に対応付けてアクセス権テーブル４２に保持されているアクセス禁止設定情報は、アクセス禁止設定情報「/db/emp/address」である。このアクセス禁止設定情報「/db/emp/address」によれば、第２のユーザがアクセス可能な構造化文書１００上のノードは、パス「/db/emp/address」によって示されるaddressノード及び当該addressノードに対する子孫ノードである。
【０１５６】
また、キャッシュエントリ４３１に含まれるアクセス拒否リストに保持されるパス（アクセス権管理単位）によって示される構造化文書１００上のノードは、パス「/db/emp/address」によって示されるaddressノードである。
【０１５７】
この場合、キャッシュエントリ４３１に含まれるアクセス拒否リストに保持されているパスによって示されるノードの全てが、アクセス禁止設定情報「/db/emp/address」によって示されるアクセス不能なノード（第２のユーザがアクセス不能なノード）の範囲に含まれている。したがって、キャッシュ管理部５１１は、キャッシュエントリ４３１に含まれるアクセス拒否リストの全てにアクセス不能であると判定する。
【０１５８】
上記したようにキャッシュエントリ４３１に含まれるアクセス許可リストの全てにアクセス可能であると判定され、かつ、当該キャッシュエントリ４３１に含まれるアクセス拒否リストの全てにアクセス不能であると判定された場合、キャッシュ管理部５１１はキャッシュヒット、つまり、第２のユーザがキャッシュエントリ４３１を利用可能であると判定する。
【０１５９】
この場合、キャッシュ管理部５１１は、キャッシュエントリ４３１に含まれる検索結果文字列「<emp><name>name1</name></emp>」及び「<emp><name>name2</name> </emp>」を、問い合わせ「/db/emp」に対する応答として、ユーザＩＤ「db user2」によって識別される第２のユーザによって利用されるクライアント計算機２０に対して送信する。
【０１６０】
このように、問い合わせ「/db/emp」に対する応答がクライアント計算機２０に返されると、ＤＢＭＳ５１の処理は終了される。
【０１６１】
上記したように、ユーザＩＤ「db user1」によって識別される第１のユーザのアクセス権（アクセス許可設定情報及びアクセス禁止設定情報）に基づいて登録されたキャッシュエントリ（ここでは、キャッシュエントリ４３１）であっても、ユーザＩＤ「db user2」によって識別される第２のユーザによって同一の問い合わせ（ここでは、問い合わせ「/db/emp」）が送信された場合にはキャッシュヒット判定がされる。したがって、第１のユーザとはアクセス権が異なる第２のユーザであっても、キャッシュエントリ４３１を利用することができる。つまり、異なるユーザであっても同一の問い合わせが送信された場合には、同一のキャッシュエントリ４３１を利用することができる。
【０１６２】
なお、詳細な説明は省略するが、例えばユーザＩＤ「db user3」によって識別されるユーザ（以下、第３のユーザと表記）によって利用されるクライアント端末２０によって問い合わせ「/db/emp」が送信された場合には、図５に示すキャッシュエントリ４３２がキャッシュ４３に登録される。この後に、ユーザＩＤ「db user2」によって識別される第２のユーザによって利用されるクライアント端末２０によって問い合わせ「/db/emp」が送信された場合には、キャッシュヒット判定処理においてはキャッシュエントリ４３２に対してキャッシュミスヒットが判定される。
【０１６３】
このように、異なるユーザが同一の問い合わせを送信した場合であっても、当該ユーザに設定されているアクセス権（アクセス許可設定情報及びアクセス拒否設定情報）によってはキャッシュエントリの利用を拒否することができる。
【０１６４】
次に、図９のフローチャートを参照して、クライアント計算機２０によって構造化文書の登録要求が送信された場合の文書検索装置５０に含まれるＤＢＭＳ５１の処理手順について説明する。
【０１６５】
まず、ＤＢＭＳ５１に含まれるキャッシュ管理部５１１は、クライアント計算機２０によって送信された構造化文書の登録要求を受信する。これにより、キャッシュ管理部５１１は、受信された登録要求に付随する構造化文書（データベース６０への登録の対象となる構造化文書）を受信する（ステップＳ３１）。キャッシュ管理部５１１は、受信された構造化文書をデータベース登録処理部５１３に渡す。
【０１６６】
次に、データベース登録処理部５１３は、キャッシュ管理部５１１から渡された構造化文書をデータベース６０に登録する（ステップＳ３２）。
【０１６７】
ステップＳ３２において構造化文書がデータベース６０に登録されると、当該構造化文書に基づいてキャッシュ４３に格納（登録）されているキャッシュエントリを無効化する処理（以下、キャッシュエントリ無効化処理と表記）が実行される（ステップＳ３３）。
【０１６８】
図１０のフローチャートを参照して、キャッシュエントリ無効化処理（図９に示すステップ３３の処理）の処理手順について説明する。ここでは、図９に示すステップＳ３２においてデータベース６０に登録された構造化文書は、図３に示す構造化文書１００であるものとして説明する。
【０１６９】
まず、データベース登録処理部５１３は、データベース６０に登録された構造化文書１００を解析する（ステップＳ４１）。これにより、データベース登録処理部５１３は、構造化文書１００のデータ構造（階層構造）を表す木構造（構造化文書１００の木構造）を抽出する。
【０１７０】
データベース登録処理部５１３は、抽出された構造化文書１００の木構造における祖先ノードを記憶しながら例えば深さ優先探索によってトラバースすることにより、構造化文書１００上の各ノードを示すパス（構造化文書１００に含まれるパス）の一覧を、当該木構造から抽出する（ステップＳ４２）。
【０１７１】
ここで、図１１は、データベース登録処理部５１３によって抽出された構造化文書１００の木構造の一例を示す。図１１に示す木構造２００によれば、構造化文書１００上のノードは、dbノード、empノード、nameノード、当該nameノードに対する子ノードであるテキストノード、addressノード及び当該addressノードに対する子ノードであるテキストノードである。したがって、この木構造２００から抽出されるパスの一覧には、「/db」、「/db/emp」、「/db/emp/name」、「/db/emp/name/text()」、「/db/emp/address」及び「/db/emp/address/text()」が含まれる。なお、図１１に示す木構造２００において、「/db/emp」、「/db/emp/name」、「/db/emp/name/text()」、「/db/emp/address」及び「/db/emp/address/text()」のように同一のパスが複数抽出される場合には、当該同一のパスは１つのパスとして扱われる。
【０１７２】
デーベース登録処理部５１３は、抽出されたパスの一覧を含むキャッシュエントリ無効化要求をキャッシュ管理部５１１に送る。
【０１７３】
キャッシュ管理部５１１は、データベース登録処理部５１３からのキャッシュエントリ無効化要求を受け取ると、当該キャッシュエントリ無効化要求に含まれるパスの一覧とキャッシュ４３に格納されているキャッシュエントリ（に含まれるアクセス許可リスト）の１つとを照合する（ステップＳ４３）。
【０１７４】
キャッシュ管理部５１１は、キャッシュエントリ無効化要求に含まれるパスの一覧に含まれるパスの少なくとも１つがキャッシュエントリに含まれるアクセス許可リストに保持されているか否かを判定する（ステップＳ４４）。この処理により、キャッシュ管理部５１１は、キャッシュエントリに含まれるアクセス許可リストに保持されているパス（アクセス権管理単位）によって示されるノード（の範囲）の一部がデータベース６０に登録された構造化文書１００（が有する階層構造）に含まれるか否かを判定する。
【０１７５】
パスの一覧に含まれるパスの少なくとも１つがキャッシュエントリに含まれるアクセス許可リストに保持されていると判定された場合（ステップＳ４４のＹＥＳ）、キャッシュ管理部５１１は、キャッシュ４３に格納されている当該キャッシュエントリを無効化（つまり、キャッシュ４３から削除）する（ステップＳ４５）。
【０１７６】
ここで、例えば上述した図５に示すキャッシュエントリ４３１及び４３２がキャッシュ４３に格納されている場合を想定する。
【０１７７】
この場合、キャッシュエントリ４３１に含まれるアクセス許可リストには、パスの一覧に含まれるパス「/db/emp」、「/db/emp/name」、「/db/emp/name/text()」が保持されている。このため、上記したように構造化文書１００がデータベース６０に新たに登録されたときは、キャッシュエントリ４３１はキャッシュエントリ無効化処理によって無効化される。
【０１７８】
また、キャッシュエントリ４３２に含まれるアクセス許可リストには、パスの一覧に含まれる「/db/emp」、「/db/emp/address」及び「/db/emp/address/text()」が保持されている。このため、構造化文書１００がデータベース６０に新たに登録されたときは、キャッシュエントリ４３２はキャッシュエントリ無効化処理によって無効化される。
【０１７９】
次に、キャッシュ管理部５１１は、キャッシュ４３に格納されている全てのキャッシュエントリについて上記したステップＳ４３以降の処理が実行されたか否かを判定する（ステップＳ４６）。
【０１８０】
全てのキャッシュエントリについて処理が実行されていないと判定された場合（ステップＳ４６のＮＯ）、上記したステップＳ４３に戻って処理が繰り返される。
【０１８１】
一方、全てのキャッシュエントリについて処理が実行されたと判定された場合（ステップＳ４６のＹＥＳ）、処理は終了される。
【０１８２】
また、上記したステップＳ４４においてパスの一覧に含まれるパスがいずれもキャッシュエントリに含まれるアクセス許可リストに保持されていないと判定された場合、ステップＳ４６の処理が実行される。つまり、この場合にはキャッシュエントリは無効化されない。
【０１８３】
上記したように、キャッシュエントリ無効化処理においては、データベース６０に新たな構造化文書が登録されることにより、検索結果（文字列）が変更されるようなキャッシュエントリのみが無効化される。
【０１８４】
ところで、キャッシュ４３に複数のキャッシュエントリが格納されている場合において、キャッシュ管理部５１１が当該複数のキャッシュエントリを統合する処理（以下、キャッシュエントリ統合処理と表記）を実行する構成であっても構わない。
【０１８５】
以下、図１２のフローチャートを参照して、キャッシュ管理部５１１によるキャッシュエントリ統合処理の処理手順について説明する。キャッシュエントリ統合処理は、例えばキャッシュ４３にキャッシュエントリが登録（追加）された場合に実行される。なお、キャッシュエントリ統合処理は、例えば定期的に実行されても構わない。
【０１８６】
まず、キャッシュ管理部５１１は、キャッシュ４３に格納されている複数のキャッシュエントリのうち、問い合わせ（文字列）が同一のキャッシュエントリのペアを選択する（ステップＳ５１）。キャッシュ管理部５１１によって選択されたキャッシュエントリのペアのうち、一方のキャッシュエントリを第１のキャッシュエントリ、他方のキャッシュエントリを第２のキャッシュエントリと称する。
【０１８７】
次に、キャッシュ管理部５１１は、選択された第１及び第２のキャッシュエントリに含まれる検索結果文字列が同一であるか否かを判定する（ステップＳ５２）。
【０１８８】
つまり、ステップＳ５１及びステップＳ５２の処理によって、キャッシュエントリ統合処理の対象となるキャッシュエントリ（問い合わせ及び検索結果文字列が同一の第１及び第２のキャッシュエントリ）が選択される。
【０１８９】
第１及び第２のキャッシュエントリに含まれる検索結果文字列が同一であると判定された場合（ステップＳ５２のＹＥＳ）、キャッシュ管理部５１１は、第１のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されているパス（アクセス権管理単位）の和集合（以下、第１の和集合と表記）を算出する。
【０１９０】
また、キャッシュ管理部５１１は、第２のキャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されているパス（アクセス権管理単位）の和集合（以下、第２の和集合と表記）を算出する。
【０１９１】
キャッシュ管理部５１１は、算出された第１の和集合（に含まれるパス）と第２の和集合（に含まれるパス）とが同一であるか否かを判定する（ステップＳ５３）。
【０１９２】
第１の和集合と第２の和集合とが同一であると判定された場合（ステップＳ５３のＹＥＳ）、キャッシュ管理部５１１は、選択された第１のキャッシュエントリに含まれるアクセス許可リスト（に保持されているパス）と第２のキャッシュエントリに含まれるアクセス許可リスト（に保持されているパス）との差集合を算出する（ステップＳ５４）。
【０１９３】
次に、キャッシュ管理部は前述の差集合の要素数が１であるか否かを判定する（ステップＳ５５）。
【０１９４】
差集合の要素数が１であると判定された場合（ステップＳ５５のＹＥＳ）、キャッシュ管理部５１１は、選択された第１及び第２のキャッシュエントリのうち、アクセス許可リストに保持されるパスが少ないキャッシュエントリ（ここでは、第２のキャッシュエントリとする）を無効化（つまり、キャッシュ４３から削除）する（ステップＳ５６）。
【０１９５】
次に、キャッシュ管理部５１１は、選択された第１及び第２のキャッシュエントリのうち、ステップＳ５６において削除されていないキャッシュエントリ（ここでは、第１のキャッシュエントリ）に含まれるアクセス許可リストからステップＳ５４において算出された差集合（に含まれるパス）を削除する（ステップＳ５７）。
【０１９６】
上記したようにキャッシュエントリ統合処理が実行されることで、ステップＳ５１において選択された第１及び第２のキャッシュエントリを１つのキャッシュエントリに統合することができる。
【０１９７】
なお、ステップＳ５２において第１及び第２のキャッシュエントリに含まれる検索結果文字列が同一でないと判定された場合、処理は終了される。
【０１９８】
また、ステップＳ５３において第１の和集合と第２の和集合とが同一でないと判定された場合、処理は終了される。
【０１９９】
また、ステップＳ５５において差集合の要素数が１でないと判定された場合、処理は終了される。
【０２００】
図１２に示すキャッシュエントリ統合処理では、第１及び第２のキャッシュエントリに含まれるアクセス許可リスト（に保持されているパス）に基づいて第１及び第２のキャッシュエントリが統合される場合について説明したが、例えばアクセス拒否リスト（に保持されているパス）に基づいて統合される構成であってもよい。
【０２０１】
この場合、図１２に示すステップＳ５４においては、第１のキャッシュエントリに含まれるアクセス許可リストと第２のキャッシュエントリに含まれるアクセス拒否リストとの差集合が算出される。ステップＳ５５においては、算出された差集合の要素数が１であるか否かが判定される。ステップＳ５６においては、第１及び第２のキャッシュエントリのうち、アクセス拒否リストに保持されるパスが少ないキャッシュエントリが無効化される。更に、ステップＳ５７においては、ステップＳ５５において無効化されていないキャッシュエントリに含まれるアクセス拒否リストからステップＳ５４において算出された差集合が削除される。
【０２０２】
上記したように本実施形態においては、例えば第１のユーザによって利用されるクライアント計算機２０から問い合わせが送信された場合、当該問い合わせに応じて実行されるデータベース検索処理において第１のユーザに設定されているアクセス権に基づいてアクセス許可リスト及びアクセス拒否リストが作成され、当該問い合わせに対する検索結果文字列が構造化文書から抽出される。本実施形態においては、クライアント計算機２０によって送信された問い合わせ、データベース検索処理において作成されたアクセス許可リスト、アクセス拒否リスト及び抽出された検索結果文字列がキャッシュ４３に登録される。
【０２０３】
これにより、本実施形態においては、例えば第１のユーザとは異なる第２のユーザによって利用されるクライアント計算機２０から上記した第１のユーザと同一の問い合わせが送信された場合、当該問い合わせに対応付けてキャッシュエントリに含まれているアクセス許可リストに保持されているパス（アクセス権管理単位）によって示されるノード（の範囲）の全てに第２のユーザがアクセス可能であり、かつ、アクセス拒否リストに保持されているパス（アクセス権管理単位）によって示されるノード（の範囲）の全てに第２のユーザがアクセス不能であれば、当該第２のユーザは当該キャッシュエントリを利用することができる。
【０２０４】
つまり、本実施形態においては、例えばキャッシュエントリをアクセス権が異なるユーザ毎に管理する場合と比較して、異なるユーザによる問い合わせに応じて登録されたキャッシュエントリであっても利用することができるためキャッシュヒット率を向上させることが可能となる。これにより、本実施形態においては、クライアント計算機からの問い合わせに対する応答性能を向上（応答時間を短縮）させることができる。
【０２０５】
また、本実施形態においては、異なるユーザ間であってもキャッシュエントリを共有することが可能となるため、キャッシュエントリをユーザ毎に管理する場合と比較して、よりキャッシュに必要な記憶領域の利用効率（主記憶使用効率）を向上させることが可能となる。
【０２０６】
また、本実施形態においては、上述した冗長情報除去処理により、キャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストから冗長な情報（パス）を除去することができる。これにより、キャッシュエントリに含まれるアクセス許可リスト及びアクセス拒否リストに保持されているパスが簡潔になり、例えばキャッシュヒット判定処理に必要な処理が軽減されるため、文書検索装置５０（に含まれるＤＢＭＳ５１）の負荷及び処理時間を低減することが可能となる。
【０２０７】
また、本実施形態においては、データベース６０に新たに構造化文書が登録された場合に、キャッシュ４３に格納されている上述したキャッシュエントリを無効化する処理が実行される。これにより、本実施形態においては、データベース６０に新たに登録された構造化文書（構造化データ）に関連するキャッシュエントリのみを高精度に特定（つまり、無効化されるキャッシュエントリを限定）して無効化することが可能となる。これにより、本実施形態においては、データベース６０に新たに構造化文書が登録された場合において必要最低限のキャッシュエントリのみを無効化することができるため、当該キャッシュエントリの無効化によるキャッシュヒット率の低下を抑制することが可能となる。
【０２０８】
また、本実施形態においては、上述したキャッシュエントリ統合処理によって、キャッシュ４３に格納されている複数のキャッシュエントリを統合することができる。これにより、本実施形態においては、キャッシュ４３に必要な記憶領域を削減することにより、記憶領域の有効利用を図ることができる。
【０２０９】
上述したように本実施形態においては文書検索装置５０について説明したが、本実施形態は、例えばファイルシステムのファイル一覧検索のような問い合わせが一致していてもアクセス権設定によって検索結果に差が生じる可能性のある検索システムにおけるキャッシュ全般において適用可能であり、このようなキャッシュに適用された場合であってもキャッシュヒット率の向上及び主記憶使用効率の向上が期待できる。
【０２１０】
なお、本実施形態においては、新たに構造化文書がデータベース６０に登録された場合にキャッシュエントリ無効化処理が実行されるものとして説明したが、当該キャッシュエントリ無効化処理は、例えばデータベース６０に既に登録されている構造化文書が部分的に更新された場合に実行される構成であっても構わない。この場合には、部分的に更新された構造化文書に対して図１０に示すキャッシュエントリ無効化処理が実行される。
【０２１１】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。  
【符号の説明】
【０２１２】
１０…コンピュータ、２０…クライアント計算機、３０…通信路、４０…外部記憶装置、４２…アクセス権テーブル、４３…キャッシュ（キャッシュ格納手段）、５０…文書検索装置（情報検索装置）、５１…ＤＢＭＳ、６０…データベース、５１１…キャッシュ管理部、５１２…データベース検索処理部、５１３…データベース登録処理部。
【図１】
2010217974.tif 000003
【図２】
2010217974.tif 000004
【図３】
2010217974.tif 000005
【図４】
2010217974.tif 000006
【図５】
2010217974.tif 000007
【図６】
2010217974.tif 000008
【図７】
2010217974.tif 000009
【図８】
2010217974.tif 000010
【図９】
2010217974.tif 000011
【図１０】
2010217974.tif 000012
【図１１】
2010217974.tif 000013
【図１２】
2010217974.tif 000014