(57)【特許請求の範囲】
【請求項１】
ユーザが複数組み合わせられてグループとして管理される検索システムにおいて検索による抽出対象であるデータソースに基づいて検索対象となるインデックス情報を管理するインデックス管理プログラムであって、
前記インデックス情報は、それぞれの前記データソースについて、そのデータソースに対するアクセスを許可されたユーザの一覧を示すアクセス許可ユーザ一覧の情報を含み、
それぞれの前記グループに含まれるユーザを識別するユーザＩＤの一覧を前記検索システムの利用権限を認証する認証部から取得するステップと、
前記グループを識別するグループＩＤと、それぞれのグループに含まれるユーザを識別するユーザＩＤとが関連付けられたグループリストに基づき、前記認証部から取得されたユーザＩＤの一覧と前記グループリストにおいて対応するグループＩＤに関連付けられたユーザＩＤとが一致するか否か確認するステップと、
前記取得されたユーザＩＤの一覧と前記グループリストにおけるグループＩＤに関連付けられたユーザＩＤとが不一致である場合に、前記認証部から取得されたユーザＩＤの一覧によって前記グループリストにおける前記グループＩＤに関連付けられたユーザＩＤを更新するステップと、
前記グループリストの更新に応じて、前記インデックス情報における前記アクセス許可ユーザ一覧の情報を更新するステップとを情報処理装置に実行させることを特徴とするインデックス管理プログラム。
【請求項２】
前記グループリストは、それぞれのグループＩＤについて、関連付けられているユーザＩＤの一覧に基づいて生成されるハッシュ値を含み、
前記認証部から取得されたユーザＩＤの一覧に基づいて生成されたハッシュ値と前記グループリストに含まれるハッシュ値とを比較することにより前記取得されたユーザＩＤの一覧と前記グループリストにおけるグループＩＤに関連付けられたユーザＩＤとが一致するか否か確認することを特徴とする請求項１に記載のインデックス管理プログラム。
【請求項３】
前記グループリストの更新に応じて、前記インデックス情報における前記アクセス許可ユーザ一覧の情報の更新が必要であることを示すフラグ処理を実行するステップと、
前記フラグ処理が確認された場合に、前記インデックス情報における前記アクセス許可ユーザ一覧の情報を更新するステップとを情報処理装置に実行させることを特徴とする請求項１または２に記載のインデックス管理プログラム。
【請求項４】
前記フラグ処理が、前記アクセス許可ユーザ一覧の情報を所定の値とする処理であることを特徴とする請求項３に記載のインデックス管理プログラム。
【請求項５】
それぞれの前記グループに含まれるユーザの一覧を前記認証部から取得するステップよりも前に、前記データソースに基づいて前記インデックス情報の更新要否を判断するステップと、
前記インデックス情報の更新が必要である場合に、前記フラグ処理を実行するステップとを情報処理装置に実行させることを特徴とする請求項３または４に記載のインデックス管理プログラム。
【請求項６】
ユーザが複数組み合わせられてグループとして管理される検索システムであって、
検索対象となるインデックス情報を記憶しているインデックス情報記憶部と、
検索対象であるデータソースに基づいて前記インデックス情報を管理するインデックス管理部と、
前記グループを識別するグループＩＤと、それぞれのグループに含まれるユーザを識別するユーザＩＤとが関連付けられたグループリストを記憶しているグループリスト記憶部と、
前記ユーザＩＤに基づいて前記検索システムの利用権限を認証する認証部とを含み、
前記インデックス情報記憶部は、それぞれの前記データソースについて、そのデータソースに対するアクセスを許可されたユーザの一覧を示すアクセス許可ユーザ一覧の情報を含み、
前記インデックス管理部は、
それぞれの前記グループに含まれるユーザを識別するユーザＩＤの一覧を前記検索システムの利用権限を認証する認証部から取得し、
前記認証部から取得されたユーザＩＤの一覧と前記グループリストにおいて対応するグループＩＤに関連付けられたユーザＩＤとが一致するか否か確認し、
前記取得されたユーザＩＤの一覧と前記グループリストにおけるグループＩＤに関連付けられたユーザＩＤとが不一致である場合に、前記認証部から取得されたユーザＩＤの一覧によって前記グループリストにおける前記グループＩＤに関連付けられたユーザＩＤを更新し、
前記グループリストの更新に応じて、前記インデックス情報における前記アクセス許可ユーザ一覧の情報を更新することを特徴とする検索システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インデックス管理プログラ及び検索システムに関し、特に、アクセス権を反映した検索結果の取得のためのインデックス情報の管理に関する。
【背景技術】
【０００２】
電子化された情報の検索について様々な技術が提案されているが、その一態様として、アクセス権の設定されたデータソースを検索して検索結果を提示する際、検索者であるユーザのアクセス権限を考慮してデータソースを検索し、検索者であるユーザがアクセス権を有しないデータについては検索結果に含めず、ユーザがアクセス権を有するデータのみを検索結果に表示することが求められる。
【０００３】
アクセス権が設定されたデータソースを検索する技術として、データソースのデータベース化の際にアクセス権の情報をインデックスファイルの項目に加えることにより、アクセス権を反映した検索結果の取得を可能とする方法が提案されている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示された技術においてアクセス権のインデックス化処理の対象となっているのはファイルサーバに格納された情報のみである。しかしながら、電子化された情報の検索システムにおけるデータソースはファイルサーバに格納された情報に限らず、様々な情報形式があり、夫々アクセス権処理の方法が異なる。
【０００５】
例えば、一般的なｗｅｂページとして提供されるデータソースの場合、ディレクトリ単位、ファイル単位でアクセス許可／拒否を指定可能であり、また許可と拒否の優先順位も変更可能である。また、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）プロトコルに従うサーバでは、データソースである情報の格納されたフォルダ階層に従い、情報に近いフォルダほど優先度が高く、アクセス許可／拒否が設定される。
【０００６】
さらに、グループウェアによっては、その文書が属する文書グループと、その文書そのものの２階層でのみアクセス権の記述が可能であり、その処理も、当然、２つの階層において記述された情報を用いている。
【０００７】
アクセス権がインデックス化されていないデータソースに対する検索結果をアクセス権に応じて表示させる方法として、検索結果を得る度に、抽出された個々のデータについてアクセス権の問い合わせを行い、アクセスが許可されているデータのみに絞り込んだうえで検索結果として表示する方法が考えられる。しかしながら、検索結果として抽出された夫々のデータについてアクセスの可否を問い合わせる必要があるため、検索結果を表示するまでに要する処理量が増大し、検索結果の表示までに要する時間が長くなる。
【０００８】
特許文献１に開示された技術を様々なデータソース、様々なアクセス権管理態様に対応させるように拡張することも可能である。しかしながら、その場合、データソースが増えることによって新規なアクセス権管理態様が追加される度に、インデックスを生成するクローラのアクセス権についての項目の機能を拡張する必要があり、運用コストが増大する。
【０００９】
検索結果を高速に表示し、かつ、問い合わせの種類を増やさない方法としては、あらかじめ、アクセス権情報を計算によって単純化し、アクセス可能なユーザの一覧に変換しておく方法が考えられる。この場合、検索部は、検索を行っているユーザが、その文書に対するアクセス権を持っているか否かのみを判断すればよいため、問い合わせの種類は増えない。
【００１０】
これに対して、文書のもともとのアクセス権情報が、グループを用いて記述されているような場合、文書側において何ら情報の変更が行われず、グループを管理する側のモジュールにおいてグループに含まれるメンバーの変更が行われる場合がある。このような場合、文書とユーザ名とは直接関連付けられていないため、ユーザ名のリストのみでは、単純化されたアクセス権情報を変更すべきか否かが判断できないため、グループメンバーの更新があるようなケースでは、データソース内の全文書について、アクセス権情報を再取得し、再計算する必要がある。その結果、不要なクロールが発生し、システム全体としてのクロール速度の低下につながる。
【００１１】
本特許は、上記した状況に鑑み、異なったアクセス権処理を行う複数種類のデータソースを対象とした検索システムにおいて、検索結果を表示するのに要する時間の増大や煩雑なアクセス権の運用管理を必要とすることなく、アクセス権に応じた検索結果を表示させることを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明の一態様は、ユーザが複数組み合わせられてグループとして管理される検索システムにおいて検索による抽出対象であるデータソースに基づいて検索対象となるインデックス情報を管理するインデックス管理プログラムであって、前記インデックス情報は、それぞれの前記データソースについて、そのデータソースに対するアクセスを許可されたユーザの一覧を示すアクセス許可ユーザ一覧の情報を含み、それぞれの前記グループに含まれるユーザを識別するユーザＩＤの一覧を前記検索システムの利用権限を認証する認証部から取得するステップと、前記グループを識別するグループＩＤと、それぞれのグループに含まれるユーザを識別するユーザＩＤとが関連付けられたグループリストに基づき、前記認証部から取得されたユーザＩＤの一覧と前記グループリストにおいて対応するグループＩＤに関連付けられたユーザＩＤとが一致するか否か確認するステップと、前記取得されたユーザＩＤの一覧と前記グループリストにおけるグループＩＤに関連付けられたユーザＩＤとが不一致である場合に、前記認証部から取得されたユーザＩＤの一覧によって前記グループリストにおける前記グループＩＤに関連付けられたユーザＩＤを更新するステップと、前記グループリストの更新に応じて、前記インデックス情報における前記アクセス許可ユーザ一覧の情報を更新するステップとを情報処理装置に実行させることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、異なったアクセス権処理を行う複数種類のデータソースを対象とした検索システムにおいて、検索結果を表示するのに要する時間の増大や煩雑なアクセス権の運用管理を必要とすることなく、アクセス権に応じた検索結果を表示させることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るシステムの全体構成を示す図である。
【図２】本発明の実施形態に係るアクセス権の設定態様を示す図である。
【図３】本発明の実施形態に係るアクセス権の設定態様を示す図である。
【図４】本発明の実施形態に係るＬＤＡＰサーバによるユーザ、グループの管理態様を示す図である。
【図５】本発明の実施形態に係る検索ＤＢの内容を示す図である。
【図６】本発明の実施形態に係るグループリストの内容を示す図である。
【図７】本発明の実施形態に係るクロール動作全体の流れを示すフローチャートである。
【図８】本発明の実施形態に係るファイルサーバのクロール動作を示すフローチャートである。
【図９】本発明の実施形態に係るファイルサーバのクロール動作を示すフローチャートである。
【図１０】本発明の実施形態に係るグループウェアのクロール動作を示すフローチャートである。
【図１１】本発明の実施形態に係るユーザ・グループ更新チェック動作を示すフローチャートである。
【図１２】本発明の実施形態に係るユーザ・グループ更新チェック動作を示すフローチャートである。
【図１３】本発明の実施形態に係るユーザ・グループ更新チェック動作を示すフローチャートである。
【図１４】本発明の実施形態に係るユーザ・グループ更新チェック動作を示すフローチャートである。
【図１５】本発明の実施形態に係るファイルサーバ内の文書についての検索用アクセス権情報の計算動作を示すフローチャートである。
【図１６】本発明の実施形態に係るファイルサーバ内の文書についての検索用アクセス権情報の計算動作を示すフローチャートである。
【図１７】本発明の実施形態に係るファイルサーバ内の文書についての検索用アクセス権情報の計算動作を示すフローチャートである。
【図１８】本発明の実施形態に係るグループウェア内の文書についての検索用アクセス権情報の計算動作を示すフローチャートである。
【図１９】本発明の実施形態に係るファイルサーバ内の文書についての検索用アクセス権情報の計算動作を示すフローチャートである。
【図２０】本発明の他の実施形態に係るシステムの全体構成を示す図である。
【図２１】本発明の他の実施形態に係る検索ＤＢの内容を示す図である。
【図２２】本発明の他の実施形態に係るユーザ定義の内容を示す図である。
【図２３】本発明の他の実施形態に係るクロール動作全体の流れを示すフローチャートである。
【図２４】本発明の他の実施形態に係る検索用アクセス権情報の付与動作を示すフローチャートである。
【図２５】本発明の他の実施形態に係るファイルサーバ内の文書についてのユーザリストの計算動作を示すフローチャートである。
【図２６】本発明の他の実施形態に係るファイルサーバ内の文書についてのユーザリストの計算動作を示すフローチャートである。
【図２７】本発明の他の実施形態に係るユーザリストの計算動作の詳細を示すフローチャートである。
【図２８】本発明の実施形態に係る情報処理装置のハードウェア構成を模式的に示すブロック図である。
【発明を実施するための形態】
【００１７】
実施の形態１．
以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、電子化された文書を利用するシステムであって、文書を管理するサーバと、ユーザが文書を閲覧する際のユーザインタフェースとなる情報処理端末とを含むシステムを例として説明する。
【００１８】
図１は、本発明の実施形態に係る検索システムの全体構成を示すブロック図である。図１に示すように、本実施形態に係る検索システムは、検索部１０１、検索ＤＢ１０２、グループリスト１０３、タスクスケジューラ１０４、ＬＤＡＰ（Ｌｉｇｈｔｗｅｉｇｈｔ  Ｄｉｒｅｃｔｏｒｙ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）サーバ１０５、グループウェア１０６、ファイルサーバ１０７、クロール部１１０を含む。また、クロール部１１０は、文書情報取得部Ａ１１１、検索用アクセス権情報計算部Ａ１１２、文書情報取得部Ｂ１１３、検索用アクセス権情報計算部Ｂ１１４及びユーザ・グループ更新チェック部１１５を含む。
【００１９】
本実施形態に係る検索システムにおける検索対象のデータソースはグループウェア１０６及びファイルサーバ１０７に格納された情報である。グループウェア１０６及びファイルサーバ１０７へのアクセス権は、ＬＤＡＰサーバ１０５において管理されるユーザ名やグループ名に従って認証される。即ち、ＬＤＡＰサーバ１０５が、ユーザの検索システムの利用権限を認証する認証部として機能する。ここで、グループウェア１０６及びファイルサーバ１０７のアクセス権の具体例について説明する。なお、以下の説明において、文書やファイルのアクセス権としては、作成や更新、削除、読み取りなどさまざまなものがあるが、本発明では、文書やファイルからは情報を読み出すだけであるため、読み取り権のみを扱うものとする。
【００２０】
図２は、ファイルサーバ１０７に格納された情報を示す。図２において、“ａａａ．ｂｂｂ．ｃｃｃ．ｃｏｍ”は、ファイルサーバのネットワーク上のアドレスを示す。また、ファイルサーバ１０７には、フォルダ１〜フォルダ４の４つのフォルダが含まれ、フォルダ２にファイル３、フォルダ３にファイル２、フォルダ４にファイル１が格納されている。
【００２１】
ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）のファイルサーバでは、読み取り権はネットワーク共有上の読み取り制御リストと、フォルダやファイル毎の読み取り制御リストの２種類から決定され、２つのうち厳しい方の制限が適用される。図２には、グループ１を“ｇ１”、ユーザ１を“ｕ１”といった値で示した読み取り制御リストが示されている。本実施形態においては、これらの“ｇ１”、“ｕ１”といった文字列がグループを識別するためのグループＩＤ、ユーザを識別するためのユーザＩＤとして用いられる。そして、“許可”や“拒否”は、それぞれ破線で関連付けられているネットワーク共有、フォルダ及びファイルについての読み取り権の有無を示す。
【００２２】
例えば、ネットワーク共有上の読み取り制御リストとしては、“ｇ１”及び“ｇ２”が“許可”であり、“ｕ１０”が“拒否”であることが設定されている。また、フォルダ１の読み取り制御リストとして、“ｇ１”が“許可”であることが設定されている。また、ファイル１の読み取り制御リストとして、“ｕ４”が“許可”であることが設定されている。
【００２３】
フォルダ・ファイルの読み取り制御リストは、複数の上位フォルダの読み取り制御リストを継承し、自身の読み取り制御リストとあわせて決定される。そのため、複数個所の読み取り制御リストを評価する必要がある。たとえばファイル１の場合、ｇ１に属するユーザであっても、ｇ４に属するユーザはアクセスが拒否されるが、ｕ４のユーザは読み取りが許可される。
【００２４】
図３は、グループウェア１０６に格納された情報を示す。図３に示すように、本実施形態に係るグループウェア１０６は、掲示板１及び掲示板２を含み、破線で関連付けて示すように、それぞれの掲示について固有の読み取り制御リストが設定されている。また、それぞれの掲示板には、投稿文書１〜投稿文書３のように投稿文書が含まれ、それぞれの投稿文書にも読み取り制御リストが設定されている。なお、図３において、“ＡＬＬ”で示されるグループは、システムにアクセス可能な全メンバーを示す。
【００２５】
図３に示すように、グループウェア１０６にはファイルサーバ１０７の場合と異なり、掲示板と文書以外の階層は無く、また、掲示板に対して読み取り権を持たないユーザやグループは、個別の文書に対する読み取り権限の記述によらず、掲示板内の文書を読むことはできない。すなわち、本実施例中のグループウェアは、ファイルサーバ１０７の仕組みであるＣＩＦＳとは異なるアクセス制御の仕組みに従って動作している。
【００２６】
図４は、ＬＤＡＰサーバ１０５によるグループ及びユーザの管理態様を示す図である。図４に示すように、組織としてのｂｂｂ．ｃｃｃ．ｃｏｍには、ｏｕ＝ｇ１及びｏｕ＝ｇ２の２つの部署があり、ｏｕ＝ｇ１にはさらに２つの部署ｏｕ＝ｇ３及びｏｕ＝ｇ４が含まれる。ｕｉｄ＝ｕ１〜ｕ１０はそれぞれユニークなユーザである。
【００２７】
検索部１０１は、ユーザが本実施形態に係る検索システムを利用する際のユーザインタフェースとして機能する。検索部１０１は、例えば、ウェブブラウザのアプリケーション・プログラムや、本実施形態に係る検索システムを利用するための専用のアプリケーション・プログラムがインストールされたＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）のような情報処理端末によって構成される。
【００２８】
検索ＤＢ１０２は、検索対象であるグループウェア１０６及びファイルサーバ１０７の情報がインデックス化されて格納されたインデックス情報のデータベースである。検索ＤＢ１０２に格納されている情報について図５を参照して説明する。図５に示すように、本実施形態に係る検索ＤＢ１０２は、“文書ＩＤ”、“文書ＵＲＬ”、“種別”、“テキスト”、“検索用アクセス権情報”、“計算用アクセス権情報”を含む。
【００２９】
“文書ＩＤ”は文字列値であり、検索対象となる個別の投稿文書やファイル（以下、総じて文書とする）をユニークに示す識別子である。“文書ＵＲＬ”は、文字列値であり、不グループウェア１０６やファイルサーバ１０７において、文書が格納されている記憶領域をネットワークアドレスとして示す。
【００３０】
“種別”は文書を取得したクローラである文書情報取得部Ａ１１１、文書情報取得部Ｂ１１３に応じた値であり、ファイルサーバ用であれば“１”、グループウェア用であれば“２”の整数値となる。“テキスト”は文字列値であり、それぞれの文書から抽出したテキストが格納されている。検索ＤＢ１０２内では、この“テキスト”を元にインデックスが作成されている。
【００３１】
“検索用アクセス権情報”には、文書の読み取り権を持つユーザのリストが、文字列の配列として格納されている。このユーザのリストは、図２、図３において説明したようにユーザについて設定された許可／拒否の値に加えて、グループについて設定された許可／拒否の値をグループに含まれるユーザに適用し、アクセス権を有するユーザのリストとして生成された情報である。即ち、本実施形態に係る“検索用アクセス権情報”はデータソースに対するアクセスを許可されたユーザの一覧を示すアクセス許可ユーザ一覧の情報である。
【００３２】
“計算用アクセス権情報”は文字列値である。計算用アクセス権情報には、ファイルサーバ１０７及びグループウェア１０６のそれぞれに対応する検索用アクセス権情報計算部Ａ１１２、検索用アクセス権情報計算部Ｂ１１４が、“検索用アクセス権情報”を再計算するための計算式を示す情報が格納されている。この計算式は、図２、図３において説明したアクセス権の許可／拒否設定に従って格納されている。“計算用アクセス権情報”のフォーマットは自由であるが、ユーザ、グループを示す文字列のみは“［ｕ１］”のように括弧でくくって表現する。換言すると、“計算用アクセス権情報”は、文書に対するアクセス権がグループＩＤ及びユーザＩＤによって記述されたアクセス権記述情報である。
【００３３】
グループリスト１０３は、図６に示すように、夫々のグループに含まれるユーザのリストを示す情報が格納されたデータベースであり、“グループ名”、“ユーザリスト”、“更新日時”、“ハッシュ値”の情報を含む。“グループ名”は文字列値であり、検索システムが対象とするデータソース群で利用されているグループを示す情報である。グループ名は、図４に示すＬＤＡＰサーバの管理態様における“ｏｕ”属性である。
【００３４】
“ユーザリストは文字列値の配列であり、そのグループに含まれる複数のユーザを示す情報を格納している。ユーザは、図４に示すＬＤＡＰサーバの管理態様における“ｕｉｄ”属性である。“更新日時”は、そのグループのユーザリストが最後に更新された日時を示す。“ハッシュ値”は、ユーザリストから一意に計算されるハッシュ値である。なお、グループ名の欄に“［ｕ１］”のようにユーザ名が格納されているが、これは後述する処理の都合上の格納であり、これらのユーザ名については、ユーザリストを持たない。
【００３５】
タスクスケジューラ１０４は、クロール部１１０に含まれるそれぞれの構成を、予め定められたタイミングで起動する。クロール部１１０は、本実施形態に係る検索システムにおいて、データソースであるグループウェア１０６及びファイルサーバ１０７の情報をインデックス化して検索ＤＢ１０２を更新すると共に、アクセス権に応じた検索を可能とするために図５に示す“検索用アクセス権情報”を更新する。クロール部１１０の処理が本実施形態に係る要旨の１つである。
【００３６】
文書情報取得部Ａ１１１および文書情報取得部Ｂ１１３は、それぞれファイルサーバ１０７、グループウェア１０６を対象としてデータソースである文書情報を取得し、図５に示す“文書ＩＤ”、“文書ＵＲＬ”、“種別”、“テキスト”、“計算用アクセス権情報”の情報を生成して格納または更新する。また、その際、文書情報取得部Ａ１１１および文書情報取得部Ｂ１１３は、“計算用アクセス権情報”に変化のあった文書について、“検索用アクセス権情報”をＮｕｌｌ値にすることにより、“検索用アクセス権情報”が更新されるようにする。
【００３７】
ユーザ・グループ更新チェック部１１５は、グループリスト１０３における“ユーザリスト”と、ＬＤＡＰサーバ１０５中のユーザ・グループの情報との間に不一致が無いかを確認し、両者に不一致があった場合、“ユーザリスト”を更新する。また、“ユーザリスト”の更新に応じて、そのグループに関連する“検索用アクセス権情報”をＮｕｌｌ値にすることにより、“検索用アクセス権情報”が更新されるようにする。
【００３８】
検索用アクセス権情報計算部ＡおよびＢは、それぞれ、検索ＤＢ内の、ファイルサーバから取得した文書、グループウェアから取得した文書を対象として、“検索用アクセス権情報”がＮｕｌｌ値の場合に“検索用アクセス権情報”を計算し、検索ＤＢ１０２を更新する。
【００３９】
このようなシステムにおいて、ユーザは検索部１０１を操作することによってまずシステムにログインした後に、検索条件等を入力して検索を行う。検索部１０１は、ユーザのログイン操作に応じて、ＬＤＡＰサーバ１０５に対して認証処理を行う。検索処理においては、ユーザの操作に応じて検索条件を受け取り、認証されたユーザ名を条件に用いて検索ＤＢ１０２に問い合わせを行い、結果を取得し、検索結果をユーザに提示するための表示情報を生成して表示装置に表示させる。その結果、表示される検索結果は、当該ユーザがアクセス権を持つ文書だけである。
【００４０】
以下、本実施形態に係るシステムの動作について説明する。なお、本来、データソースから削除された文書を検索ＤＢ１０２から削除する処理が必要であるが、本発明の特徴となる動作を説明するために必須ではないため、以下の説明においては、文書の削除処理について説明を省略する。
【００４１】
まず、定期的に実行されるクロール動作について図７を参照して説明する。図７に示すように、クロール動作は大きく分けてファイルサーバ１０７のクロール（Ｓ７０１）、グループウェア１０６のクロール（Ｓ７０２）、ユーザ・グループ更新チェック（Ｓ７０３）、ファイルサーバ１０７の文書について検索用アクセス権情報計算（Ｓ７０４）、グループウェア１０６の文書について検索用アクセス権情報計算（Ｓ７０５）の、５つの動作を含む。
【００４２】
ファイルサーバ１０７のクロールは、文書情報取得部Ａ１１１が、グループウェア１０６のクロールは、文書情報取得部Ｂ１１３が、ユーザ・グループ更新チェックはユーザ・グループ更新チェック部１１５が、ファイルサーバ１０７の文書についての検索用アクセス権情報計算は、検索用アクセス権情報計算部Ａ１１２が、グループウェア１０６の文書についての検索用アクセス権情報計算は、検索用アクセス権情報計算部Ｂ１１４が、それぞれ実行する。これらの動作は、タスクスケジューラ１０４がクロール部１１０の各部を定められたスケジュールに従って起動することにより実行される。換言すると、タスクスケジューラ１０４は、クロール部１１０の各部を、図７に示すフローに従って起動する。
【００４３】
また、ファイルサーバ１０７のクロールとグループウェア１０６のクロールは相互に影響がなく、Ｓ７０１とＳ７０２とは順序を入れ替えることが可能である。さらに、検索用アクセス権情報の計算についても、Ｓ７０４とＳ７０５との２つの動作の順序を入れ替えることが可能である。
【００４４】
図８は、図７のＳ７０１におけるファイルサーバ１０７のクロール、すなわちタスクスケジューラ１０４が文書情報取得部Ａ１１１を起動した際の文書情報取得部Ａ１１１の動作を示すフローチャートである。図８に示すように、文書情報取得部Ａ１１１は、起動後に、記憶媒体に記憶されている前回のクロール日時を取得し（Ｓ８０１）、設定情報として、対象ファイルサーバ、クロール用ＩＤとパスワード、対象フォルダ一覧、対象フォルダごとの共有アクセス権を取得する（Ｓ８０２）。
【００４５】
次に、文書情報取得部Ａ１１１は、取得したＩＤとパスワードを用いて対象とするファイルサーバにログインし（Ｓ８０３）、個別の対象フォルダについて順次処理を行う。それぞれのフォルダについて、文書情報取得部Ａ１１１は、まず対象フォルダのファイル一覧を取得する（Ｓ８０４）。ここで、Ｗｉｎｄｏｗｓ（登録商標）のコマンドが利用可能であれば、たとえば、当該フォルダのパスを引数に「ｄｉｒ  ／ａ：−ｄ  ／ｂ  ／Ｓ」といったコマンドを実行すれば、ファイルの一覧を取得できる。
【００４６】
次に、文書情報取得部Ａ１１１は、取得した個々の対象ファイルについて、「対象ファイル情報を検索ＤＢに格納／更新／維持」処理、すなわち必要に応じて、検索ＤＢに格納する、格納内容を更新する、あるいは何も更新しないといった処理を行い（Ｓ８０５）、全てのファイルについて処理が完了するまでＳ８０５の処理を繰り返す（Ｓ８０６／ＮＯ）。Ｓ８０５の処理については後に詳述する。
【００４７】
個別のファイルについての処理が終わると（Ｓ８０６／ＹＥＳ）、文書情報取得部Ａ１１１は、次の対象フォルダについて、同様の処理を行う（Ｓ８０７／ＮＯ）。すべての対象フォルダについて処理が完了すると（Ｓ８０７／ＹＥＳ）、文書情報取得部Ａ１１１は、現在日時を記憶媒体に格納し（Ｓ８０８）処理を終了する。格納した現在日時は、次回クロール時に上述した前回クロール日時として利用される。
【００４８】
以上の動作は、ファイルサーバをクロールする場合には、ほぼ一般的な動作であるが、図８のＳ８０５の詳細に本実施形態の要旨に係る動作が含まれる。図９は、図８のＳ８０５の処理の詳細を示すフローチャートである。図９に示すように、文書情報取得部Ａ１１１は、Ｓ８０４において取得したファイルについて、図５に示す文書ＩＤ、文書ＵＲＬを計算する（Ｓ９０１）。図５に示すように、対象ファイルの文書ＩＤ及び文書ＵＲＬは、ファイルの絶対パスの先頭に“ｆｉｌｅ：”を付加し、‘￥’マークを‘／’に置き換えたものである。
【００４９】
次に、文書情報取得部Ａ１１１は、夫々の文書、即ちファイルについて、計算用アクセス権情報を生成する（Ｓ９０２）。計算用アクセス権情報は、ファイルサーバ１０７の場合、２つのアクセス権のセットから生成され、ひとつは共有のアクセス権、もうひとつは、ファイルシステムのアクセス権である。
【００５０】
共有のアクセス権は、クライアントからは、通常の権限で知ることはできないため、ここでは、図２において説明した通り、設定値として事前に設定された値があり、文書情報取得部Ａ１１１はこれを用いる。また、ファイルシステムのアクセス権は、対象ファイルを右クリックし、“セキュリティ”タブにおいて“詳細設定”を選択した際に得られる値である。検索結果の表示において重要なアクセス権は、当該ユーザが対象ファイルを読むことを許されているか否かであるため、ファイルシステムのアクセス権からは、ユーザ名と、読み取りが可能であるか否かの情報のみを取得する。
【００５１】
読み取りが可能であるか否かを示す値としては、「許可・拒否とも未設定」「許可・拒否とも設定」「許可のみ設定」「拒否のみ設定」が考えられるが、このうち、「許可のみ設定」のケースでは読み取りが可能であり、それ以外は読み取り不可である。なお、読み取りが可能であるか否かの情報は、Ｗｉｎｄｏｗｓ（登録商標）では、上述したように“詳細設定”を選択して表示された“アクセス許可”タブにおいて、それぞれのユーザやグループを選択した上で“編集”を選択することにより表示することができる。
【００５２】
クロール時には、実際には、上述したようなＧＵＩ上の操作ではなく、文書情報取得部Ａ１１１の機能として上述したような情報を取得するためのコマンドを用意し、文書情報取得部Ａ１１１が実行する。そして、文書情報取得部Ａ１１１は、読み取りが可能な場合には“＋”を、不可の場合には“−”を付与し、次に、［］で囲んで記述するユーザあるいはグループ名、最後に継承元情報を、それぞれカンマで区切ってアクセス制御の記述として出力し、１つのアクセス制御の記述は｛｝でくくって示す。ファイルサーバの場合、図５に示すような“計算用アクセス権情報”は、以上のようにして生成される。
【００５３】
次に、文書情報取得部Ａ１１１は、文書の最終更新日時を取得し（Ｓ９０３）、これを前回クロール日時と比較する（Ｓ９０４）。Ｓ９０４の比較の結果、更新日時が古く（Ｓ９０４／ＹＥＳ）、計算用アクセス権情報の変更が無い文書については（Ｓ９０５、Ｓ９０６／ＹＥＳ）、何も更新動作を行わない。
【００５４】
他方、更新日時が前回クロール日時よりも新しい場合（Ｓ９０４／ＮＯ）、即ち、前回クロール日時の後に文書に何らかの変更が加えられている場合、文書情報取得部Ａ１１１は、文書の本分の情報を取得し（Ｓ９０７）、その情報を検索ＤＢ１０２の“テキスト”に格納する（Ｓ９０８）。
【００５５】
Ｓ９０８の処理の後、若しくは更新日時が前回クロール日時よりも古く、計算用アクセス権情報に変更があった場合（Ｓ９０６／ＮＯ）、文書情報取得部Ａ１１１は、検索ＤＢ１０２の“計算用アクセス権情報”を、Ｓ９０２において生成した情報で更新し（Ｓ９０９）、検索ＤＢ１０２の“検索用アクセス権情報”をＮｕｌｌ値とする（Ｓ９１０）。これによって、以降の処理で、検索用アクセス権情報の再計算が行われるようになる。
【００５６】
対象ファイルからテキストを抽出する処理は、ｄｏｃ、ｐｄｆ、ｔｘｔ、ｈｔｍｌ等の対象ファイルの種類によって様々であるが、例えばＡｐａｃｈｅ  Ｔｉｋａ等の公知の技術があり、これを利用することができる。
【００５７】
図９は、図７のＳ７０２におけるグループウェア１０６のクロール、すなわちタスクスケジューラ１０４が文書情報取得部Ｂ１１３を起動した際の文書情報取得部Ｂ１１３の動作を示すフローチャートである。グループウェア１０６のクロールについても、動作はファイルサーバ１０７の場合と基本的には同じであるが、アクセス権の扱いが異なり、本実施例で扱うグループウェアシステムでは、掲示板単位と、文書単位のアクセス権設定が存在するのみである。
【００５８】
このため、文書情報取得部Ｂ１１３は、各掲示板について、最初に掲示板のアクセス権を取得し（Ｓ１００４）、その処理において、内容に変更／新規追加のあった文書のみ文書のアクセス権を取得している。図１０のＳ１００６における処理は、図９と同様であり、詳細な説明を省略する。ただし、グループウェア１０６の場合、計算用アクセス権情報Ｘの生成にあたって、処理の詳細が異なる。
【００５９】
計算用アクセス権情報は掲示板のアクセス権と文書のアクセス権のみから、継承関係も無く生成されるため、計算用アクセス権情報として格納される値は、図５に示すように簡単な形態になる。また、“ＡＬＬ”というグループのみはＬＤＡＰサーバ１０５において記載のない特別なグループであり、グループウェアシステムに固有である。そのため、文書情報取得部Ｂ１１３は、“ＡＬＬ”という文字列を“計算用アクセス権情報”には格納するが、図５に示すように［］で括らず、グループとしては扱わない。
【００６０】
以上、述べたような動作のうち、計算用アクセス権情報の生成については、生成された計算用アクセス権情報の文字列は、「グループ名が識別できること」、「検索用アクセス権情報計算部Ａ１１２、検索用アクセス権情報計算部Ｂ１１４が計算用アクセス権情報とグループリストを用いて検索用アクセス権情報を計算可能であること」が満たされれば、文字列のフォーマットはいかなる形態でも良い。
【００６１】
図１１は、図７のＳ７０３におけるユーザ・グループ更新チェック動作を示すフローチャートである。ファイルサーバ１０７及びグループウェア１０６のクロールが完了すると、タスクスケジューラ１０４の処理によりユーザ・グループ更新チェック部１１５が起動し、図１１に示す動作が開始される。
【００６２】
ユーザ・グループ更新チェック部１１５は、まず、前回保存済の前回クロール日時を取得し（Ｓ１１０１）、次に、ユーザ・グループ更新チェック部１１５は、グループリスト１０３に新しいグループ名を追加する（Ｓ１１０２）。さらに、ユーザ・グループ更新チェック部１１５は、追加されたグループ名も含め、ＬＤＡＰへの問い合わせを行い、グループリスト全体を更新する（Ｓ１１０３）。次いで、ユーザ・グループ更新チェック部１１５は、更新されたグループリストとつき合わせて、検索ＤＢ１０２をチェックし、検索用アクセス権情報を更新する必要のある文書について、検索用アクセス権情報の値をＮｕｌｌ値に設定する（Ｓ１１０４）。最後に、ユーザ・グループ更新チェック部１１５は、現在日時を格納する（Ｓ１１０５）。
【００６３】
次に、図１１のＳ１１０２の処理の詳細について、図１２を参照して説明する。図１２に示すように、ユーザ・グループ更新チェック部１１５は、検索ＤＢ１０２の個々の文書の計算用アクセス権情報を参照し、［］で囲まれた文字列をグループ名として抽出する（Ｓ１２０１）。そして、ユーザ・グループ更新チェック部１１５は、抽出したグループ名がグループリスト１０３中に存在しなければ（Ｓ１２０２／ＮＯ）、これをグループリストに追加する（Ｓ１２０３）。
【００６４】
なお、ユーザ・グループ更新チェック部１１５は、グループ名をグループリスト１０３に追加する際、更新日時の項目に０（日時にして１９７０年１月１日０時０分）を、ユーザリストはＮｕｌｌ値とし、ハッシュ値には０を格納する。ユーザ・グループ更新チェック部１１５は、検索ＤＢ１０２に格納されている全ての計算用アクセス権情報について、Ｓ１２０１〜Ｓ１２０３の処理を繰り返し（Ｓ１２０４／ＮＯ）、全ての計算用アクセス権情報についてＳ１２０１〜Ｓ１２０３の処理が完了したら（Ｓ１２０４／ＹＥＳ）、処理を終了する。
【００６５】
次に、図１１のＳ１１０３の処理の詳細について、図１３を参照して説明する。図１３に示すように、ユーザ・グループ更新チェック部１１５は、グループリスト１０３中の個々のそれぞれのグループ名“Ｇ”について、図４において説明したようなＬＤＡＰサーバ１０５による管理情報からｏｕ＝“Ｇ”となるエントリを抽出し、当該エントリにｕｉｄが存在すればこれを次々に取得し、取得したｕｉｄのリストをもってユーザ名一覧とする（Ｓ１３０１）。
【００６６】
次に、ユーザ・グループ更新チェック部１１５は、取得したユーザ名一覧を用いてハッシュ値を計算する（Ｓ１３０２）。この際、ユーザ・グループ更新チェック部１１５は、ユーザ名一覧がＮｕｌｌ値の場合は、ハッシュ値=０とする。この値を、格納済みのハッシュ値と比較し（Ｓ１３０３）、異なっている場合（Ｓ１３０３／ＮＯ）、ユーザ・グループ更新チェック部１１５は、グループリスト１０３の項目の更新を行う（Ｓ１３０４）。更新処理において、ユーザ・グループ更新チェック部１１５は、現在の日時、新しいハッシュ値、ユーザ名一覧を用いて、“更新日時”、“ハッシュ値”、“ユーザリスト”を更新する。このＳ１３０２〜Ｓ１３０４が、本実施形態において最も重要な処理の１つであり、この処理により、グループに含まれるユーザの一覧に変更があるか否かが確認される。
【００６７】
ユーザ・グループ更新チェック部１１５は、グループリスト１０３に格納されている全てのグループ名について、Ｓ１３０１〜Ｓ１３０４の処理を繰り返し（Ｓ１３０５／ＮＯ）、全てのグループ名についてＳ１３０１〜Ｓ１３０４の処理が完了したら（Ｓ１３０５／ＹＥＳ）、処理を終了する。
【００６８】
次に、図１１のＳ１１０４の処理の詳細について、図１４を参照して説明する。図１４に示すように、ユーザ・グループ更新チェック部１１５は、検索ＤＢ１０２中の個々の文書について、まず、“計算用アクセス権情報”に記載された個々のグループに注目し、グループリスト１０３を参照して“更新日時”を取得する（Ｓ１４０１）。そして、ユーザ・グループ更新チェック部１１５は、取得した“更新日時”が、前回クロール日時よりも後であるか否かを判断する（Ｓ１４０２）。
【００６９】
Ｓ１４０２の判断の結果、“更新日時”が前回クロール日時よりも後であれば（Ｓ１４０２／ＹＥＳ）、即ち、グループのメンバーに変化があれば、ユーザ・グループ更新チェック部１１５は、“検索用アクセス権情報”をＮｕｌｌ値とし（Ｓ１４０３）、検索ＤＢ１０２の他の文書について、Ｓ１４０１からの処理を繰り返す（Ｓ１４０５／ＮＯ）。
【００７０】
他方、“更新日時”が前回クロール日時よりも前であれば（Ｓ１４０２／ＮＯ）、即ち、グループのメンバーに変化がなければ、ユーザ・グループ更新チェック部１１５は、他のグループ名についてＳ１４０１からの処理を繰り返す（Ｓ１４０４／ＮＯ）。Ｓ１４０４において、選択中の“計算用アクセス権情報”に記載された個々のグループ全てについてＳ１４０１からの処理が完了していれば（Ｓ１４０４／ＹＥＳ）、ユーザ・グループ更新チェック部１１５は、Ｓ１４０５の処理に進む。
【００７１】
Ｓ１４０５において、検索ＤＢ１０２の全ての文書についてＳ１４０１からの処理が完了していれば（Ｓ１４０５／ＹＥＳ）、ユーザ・グループ更新チェック部１１５は、そのまま処理を終了する。
【００７２】
なお、図７のＳ７０１、Ｓ７０２のクロールの時点で、計算用アクセス権情報の文字列に変化がある場合、すでに検索用アクセス権情報は、図９のＳ９１０等の処理によってＮｕｌｌ値となっている。従って、計算用アクセス権情報のグループや許可／不許可などの設定に変化があるか、あるいは設定は同じでも、グループの構成メンバーに変化があるかした場合、検索用アクセス権情報はＮｕｌｌ値とされる。
【００７３】
次に、図７のＳ７０４の処理の詳細について、図１５を参照して説明する。図１５に示すように、検索用アクセス権情報計算部Ａ１１２は、検索ＤＢ１０２内のすべての文書について、種別＝１の文書、即ちファイルサーバ１０７内の文書を対象とし（Ｓ１５０１／ＮＯ）、文書の“検索用アクセス権情報”がＮｕｌｌ値である場合（Ｓ１５０２／ＮＯ）、検索用アクセス権情報計算部Ａ１１２は、共有アクセス権を有するユーザ一覧Ａを計算すると共に（Ｓ１５０３）、ファイルに対するアクセス権を有するユーザ一覧Ｂを計算し（Ｓ１５０４）、Ａ及びＢの論理積すなわち両方のユーザ一覧に存在するユーザの一覧を“検索用アクセス権情報”として検索ＤＢ１０２に格納する（Ｓ１５０５）。
【００７４】
Ｓ１５０２の処理は、換言すると、図９のＳ９１０や図１４のＳ１４０３においてアクセス権情報がＮｕｌｌ値とされたか否かを確認する処理である。即ち、本実施形態に係る検索システムにおいては、一般的なクロール処理であるＳ７０１、Ｓ７０２の処理において、“検索用アクセス権情報”の更新が必要であると判断された場合に、即座に更新を実行するのではなく、更新が実行されるためのフラグ処理として“検索用アクセス権情報”をＮｕｌｌ値とする。
【００７５】
そして、本実施形態に係る検索システムの特徴的な処理であるＳ７０３の処理においても、“検索用アクセス権情報”の更新が必要であると判断された場合、即座に更新を実行するのではなく、更新が実行されるためのフラグ処理として“検索用アクセス権情報”をＮｕｌｌ値とする。そして、その後のＳ７０４、Ｓ７０５の処理において、上記フラグ処理を確認し、フラグ処理があれば“検索用アクセス権情報”を更新する。
【００７６】
なお、本実施形態においては、上記フラグ処理として、“検索用アクセス権情報”をＮｕｌｌ値とするが、これに限らず、１ビットのフラグ情報を格納する等の他の処理でも良く、検索用アクセス権情報計算部Ａ１１２、検索用アクセス権情報計算部Ｂ１１４が、“検索用アクセス権情報”の更新が必要であると判断可能な処理であれば良い。
【００７７】
このように、フラグ処理によって“検索用アクセス権情報”の更新要否を判断し、後から検索用アクセス権情報計算部Ａ１１２、検索用アクセス権情報計算部Ｂ１１４が“検索用アクセス権情報”を更新することにより、Ｓ７０１、Ｓ７０２での処理と、Ｓ７０３での処理とで二重の処理が発生してしまうことを回避することができる。
【００７８】
検索用アクセス権情報計算部Ａ１１２は、Ｓ１５０５の処理を終了すると、検索ＤＢ１０２の全ての文書についてＳ１５０１からの処理を繰り返し（Ｓ１５０６／ＮＯ）、検索ＤＢ１０２の全ての文書についてＳ１５０１からの処理を完了したら（Ｓ１５０６／ＹＥＳ）、処理を終了する。
【００７９】
図１５のＳ１５０３の処理の詳細について、図１６を参照して説明する。図１６に示すように、検索用アクセス権情報計算部Ａ１１２は、文字列で記述された“計算用アクセス権情報”から、まず、共有アクセス権の記述に相当する文字列Ｓを抽出する（Ｓ１６０１）。Ｓ１６０１の処理は、最初の“（”から、最初の“）”までの間を取り出すことによって実現される。
【００８０】
次に、検索用アクセス権情報計算部Ａ１１２は、ユーザ一覧Ａの初期値をＮｕｌｌ値とし（Ｓ１６０２）、文字列Ｓを、さらにグループ名あるいはユーザ名単位の処理リストに分割して格納する（Ｓ１６０３）。この処理は、“＋Ｇ”あるいは“−Ｇ”（Ｇはそれぞれ“＋”、“−”を含まない不定長の文字列）を単位として文字列Ｓをサブ文字列に分割することによって実現される。
【００８１】
処理リストは“＋Ｇ”あるいは“−Ｇ”のサブ文字列を含むが、このうち“−Ｇ”のパターンは、ユーザの集合のうち、Ｇに含まれるユーザはアクセスできないことを示す否定のアクセス権であるため、検索用アクセス権情報計算部Ａ１１２は、“＋Ｇ”のパターンのみを最初に処理し、まず否定対象となるユーザの集合を作成する。このため、処理リストを“＋Ｇ”のパターンが最初に処理されるように並べ替える（Ｓ１６０４）。
【００８２】
並べ替えが終わると、検索用アクセス権情報計算部Ａ１１２は、処理リストを順番に処理し、ユーザ一覧Ａを更新していく。検索用アクセス権情報計算部Ａ１１２は、まず、処理リスト中のグループ名あるいはユーザ名Ｇについてグループリスト１０２を参照し、ユーザリスト｛ｇ｝を取得する（Ｓ１６０５）。｛ｇ｝が取得できない場合（Ｓ１６０６／ＹＥＳ）、Ｇはユーザ名であるため、検索用アクセス権情報計算部Ａ１１２は、ユーザリスト｛ｇ｝としてメンバーＧのみを持つユーザリストを設定する（Ｓ１６０７）。
【００８３】
次に、検索用アクセス権情報計算部Ａ１１２は、処理リスト中の“＋”あるいは“−”の文字を評価し、“＋”であれば（Ｓ１６０８／ＮＯ）、ユーザ一覧Ａに｛ｇ｝を追加し（Ｓ１６０９）、“−”であれば（Ｓ１６０８／ＹＥＳ）、ユーザ一覧Ａから｛ｇ｝を削除する（Ｓ１６１０）。検索用アクセス権情報計算部Ａ１１２は、以上の処理を処理リスト中のすべてのグループ名Ｇについて繰り返し（Ｓ１６１１／ＮＯ）、すべてのグループ名Ｇについて完了すると（Ｓ１６１１／ＹＥＳ）、ユーザ一覧Ａが生成されて処理が終了する。
【００８４】
図１５のＳ１５０４の処理の詳細について、図１７を参照して説明する。図１７に示すように、検索用アクセス権情報計算部Ａ１１２は、文字列で記述された“計算用アクセス権情報”から、まず、ファイルのアクセス権の記述に相当する文字列Ｔを抽出する（Ｓ１７０１）。Ｓ１７０１の処理は、２番目の“（”から、２番目の“）”までの間を取り出すことによって実現される。
【００８５】
次に、検索用アクセス権情報計算部Ａ１１２は、ユーザ一覧Ｂの初期値をＮｕｌｌ値とし（Ｓ１７０２）、文字列Ｔを、さらにグループ名あるいはユーザ名単位の処理リストに分割して格納する（Ｓ１７０３）。この処理は、“｛”から“｝”までを単位として文字列Ｔをサブ文字列に分割することによって実現される。
【００８６】
処理リストは継承元の情報、“＋Ｇ”あるいは“−Ｇ”のサブ文字列を含むが、このうち継承元の情報は“,”以降の文字列を取得することによって得られる。継承元が対象文書に近いほどアクセス権は優先して適用されるため、検索用アクセス権情報計算部Ａ１１２は、まず、処理リストを、継承元の文字列が短いもの（対象文書から遠い継承元）から長いもの（対象文書に近い継承元）の順に並べ替える（Ｓ１７０４）。例外として“継承なし”の処理リストは対象文書に直接付与されたアクセス権であるため、並べ替えの末尾に配置する。
【００８７】
さらに共有アクセス権と同様、“−Ｇ”のパターンは、ユーザの集合のうち、Ｇに含まれるユーザはアクセスできないことを示す否定のアクセス権であるため、検索用アクセス権情報計算部Ａ１１２は、処理リストを、継承元が同じであれば、“＋Ｇ”のパターンが最初に処理されるように並べ替える。並べ替えが終わると、検索用アクセス権情報計算部Ａ１１２は、処理リストを順番に処理し、ユーザ一覧Ｂを更新していく（Ｓ１７０５以降）。Ｓ１７０５以降の処理は、図１６に示すＳ１６０５以降の処理と同様であるため、説明を省略する。以上の処理によって、ユーザ一覧Ｂが作成される。
【００８８】
次に、図７のＳ７０５の処理の詳細について、図１８を参照して説明する。図１８に示す動作はグループウェア１０６内の文書を対象にしているため、種別＝２の判断を行っている。動作の概要は、ファイルサーバ内の文書を対象にした際と同様であるが、グループウェアに固有な“ＡＬＬ”というグループの処理を行う必要があるため、一時グループリストを最初に生成している（Ｓ１８０１、Ｓ１８０２）。
【００８９】
Ｓ１８０５及びＳ１８０６のユーザ一覧の計算方法は、掲示板、投稿文書共に変わりがないため、２つで共通に用いる処理を図１９に示す。処理は図１６に示すファイルサーバ１０７における共有アクセス権の処理とほぼ同様だが、ＡＬＬの処理を行うため、グループリストではなく、一時グループリストを利用している。
【００９０】
このような処理により、定期的に実行されるクロール動作が完了し、図５に示すようにすべての文書について、“検索用アクセス権情報”にユーザのリストが設定される。検索を行う際、ユーザは検索部１０１を操作して検索システムにログインし、しかる後に検索条件を指定して検索を行う。ユーザは、ログイン時には、検索部１０１に、ＬＤＡＰサーバ１０５が管理するｕｉｄおよびｕｓｅｒＰａｓｓｗｏｒｄを入力する。検索部１０１は、ｕｉｄおよびｕｓｅｒＰａｓｓｗｏｒｄを用いてＬＤＡＰサーバ１０５に対して認証を行う。認証がＯＫの場合は、ログインが成立し、ユーザは検索を行うことが可能となる。
【００９１】
検索条件は、複数の文字列を空白で区切って入力することにより指定される。検索部１０１は、空白で区切られた複数の文字列Ｗ１、Ｗ２、Ｗ３・・・およびｕｉｄ（仮にＵ１とする）を用いて、検索ＤＢ１０２に対して、“テキスト  ｌｉｋｅ  ‘％Ｗ１％’  ＡＮＤ  テキスト  ｌｉｋｅ  ‘％Ｗ２％’  ＡＮＤ・・・AND  ‘Ｕ１’  ｉｎ  検索用アクセス権情報［］”のように、すべての文字列を含み、“検索用アクセス権情報”にログインに用いられたユーザ名であるＵ１があることを条件に検索する。この結果、検索部１０１が検索結果をユーザに提示する際に表示される検索結果は、当該ユーザがアクセス権を持つ文書だけである。
【００９２】
以上説明したように、本実施形態に係る検索システムによれば、図５に示すように、検索ＤＢ１０２においてそれぞれの文書のインデックス情報が“検索用アクセス権情報”を含むため、検索部１０１は、“検索用アクセス権情報”がログインに用いられたユーザ名を含むことを条件として検索するのみで、検索結果を表示するのに要する時間の増大や煩雑なアクセス権の運用管理を必要とすることなく、アクセス権に応じた検索結果を得ることが可能となる。
【００９３】
そして、本実施形態に係る検索システムによれば、クロール部１１０が定期的なクロールを実行する際に、データソースであるファイルサーバ１０７やグループウェア１０６におけるアクセス権の情報に基づいて“計算用アクセス権情報”を更新して“検索用アクセス権情報”をＮｕｌｌ値にし（図９のＳ９０２、Ｓ９０９、Ｓ９１０）、“計算用アクセス権情報”に含まれるグループ名が新規であればグループリスト１０３に追加してグループリスト１０３を更新し（図１２のＳ１２０３、図１３のＳ１３０３）、更新されたグループリストに基づいて“検索用アクセス権情報”を更新する（図１５のＳ１５０５、図１８のＳ１８０７）。
【００９４】
このようなクロール部１１０の処理により、検索ＤＢ１０２における“検索用アクセス権情報”が最新の情報に保たれるため、検索部１０１による検索結果が、最新のアクセス権を反映した検索結果となる。また、図６に示すように、グループリスト１０３が“ユーザリスト”の“ハッシュ値”を含み、クロール部１１０がＬＤＡＰサーバ１０５からグループ名に対応するユーザ名の一覧を取得してハッシュ値を計算し、グループリスト１０３の“ハッシュ値”と比較することにより（Ｓ１３０３）、グループに含まれるユーザの変更有無が確認される。これにより、グループに含まれるユーザが変更された場合も“検索用アクセス権情報”が更新されるため、検索部１０１による検索結果が、最新のアクセス権を反映した検索結果となる。
【００９５】
尚、上記実施形態においては、グループリスト１０３の“ユーザリスト”の“ハッシュ値”と、ＬＤＡＰサーバ１０５から取得されたグループ名に対応するユーザ名の一覧のハッシュ値とを比較することにより、グループに含まれるユーザの変更有無を確認する場合を例として説明した。これにより、比較処理における処理負荷を軽減することが可能である。しかしながら、ハッシュ値ではなく、ユーザ名の一覧そのものを比較しても良いし、ユーザ名の一覧のデータサイズ等を比較することによって、ユーザリストの異同を確認することも可能である。
【００９６】
実施の形態２．
図２０は、図１とは異なる実施形態に係る検索システムの全体構成を示す図である。実施の形態１においては、ＬＤＡＰサーバ１０５において管理されているユーザ及びグループに従ってアクセス権を管理する場合を例として説明した。本実施形態においては、それぞれの文書についてアクセスが許可されたユーザの組み合わせをグループとして定義することにより、定義されたグループに従ってアクセス権を管理する。
【００９７】
図２０に示すように、本実施形態に係る検索システムは、グループリスト１０３に替えてグループ定義１０８、検索用アクセス権情報計算部Ａ１１２に替えてグループ定義計算部Ａ１１６、検索用アクセス権情報計算部Ｂ１１４に替えてグループ定義計算部Ｂ１１７、ユーザ・グループ更新チェック部１１５に替えてグループ定義検索部１１８を含むことが図１の態様とは異なる。
【００９８】
図２１は、本実施形態に係る検索ＤＢ１０２に格納されている情報を示す図である、図２１に示すように、本実施形態に係る検索ＤＢ１０２は、“検索用アクセス権情報”として、ユーザ名の一覧ではなく、１つのグループ名が格納されている。このため、本実施形態に係る“検索用アクセス権情報”は、配列ではなく、文字列値となる。換言すると、本実施形態に係る“検索用アクセス権情報”は、データソースに対するアクセスを許可されたユーザの一覧を識別するアクセス許可識別情報である。
【００９９】
図２２は、本実施形態に係るグループ定義１０８に格納されている情報を示す図である。図２２に示すように、グループ定義１０８は、“グループ名”、“ユーザリスト”、“種別”、“計算用アクセス権情報”を含む。図２２に示す“計算用アクセス権情報”及び“種別”は、それぞれ図５において説明した情報と同様の情報である。また、“ユーザリスト”は、図６の場合と同様に、ユーザの一覧が格納された文字列の配列である。
【０１００】
また、本実施形態に係るタスクスケジューラ１０４は、図２０に示す文書情報取得部１１１、文書情報取得部１１３、グループ定義計算部Ａ１１６、グループ定義計算部Ｂ１１７及びグループ定義検索部１１８をそれぞれ特定のタイミングで起動する。
【０１０１】
次に、本実施形態に係る検索システムにおいて定期的に実行されるクロール動作について図２３を参照して説明する。図２３に示すように、本実施形態に係るクロール動作は大きく分けてファイルサーバ１０７のクロール（Ｓ２３０１）、グループウェア１０６のクロール（Ｓ２３０２）、検索用アクセス権情報の付与（Ｓ２３０３）、ファイルサーバ１０７の文書についてユーザリストの計算（Ｓ２３０４）、グループウェア１０６の文書についてユーザリストの計算（Ｓ２３０５）の、５つの動作を含む。
【０１０２】
ファイルサーバ１０７のクロール（Ｓ２３０１）、グループウェア１０６のクロール（Ｓ２３０２）は、図７のＳ７０１、Ｓ７０２とそれぞれ同様の動作である。検索用アクセス権情報の付与（Ｓ２３０３）は、図２０中のグループ定義検索部１１８が、ファイルサーバ１０７の文書についてユーザリストの計算（Ｓ２３０４）は、グループ定義計算部Ａ１１６が、グループウェア１０６の文書についてユーザリストの計算（Ｓ２３０５）は、グループ定義計算部Ｂ１１７が、それぞれ実行する。
【０１０３】
図２４は、図２３におけるＳ２３０３の処理の詳細を示すフローチャートである。図２４に示すように、グループ定義検索部１１８は、検索ＤＢ１０２内のそれぞれの文書について、“計算用アクセス権情報”を取得し（Ｓ２４０１）、取得した“計算用アクセス権情報”に基づいてグループ定義１０８を検索する（Ｓ２４０２）。検索により同じ“計算用アクセス権情報”を持つレコードが見つかった場合は（Ｓ２４０３／ＹＥＳ）、グループ定義検索部１１８は、そのレコードの“グループ名”を取得して（Ｓ２４０４）検索ＤＢ１０２の当該文書の“検索用アクセス権情報”として格納する（Ｓ２４０７）。
【０１０４】
Ｓ２４０２の検索の結果、同一の“計算用アクセス権情報”が見つからなかった場合は（Ｓ２４０３／ＮＯ）、グループ定義検索部１１８は、グループ定義１０３の既存レコードに存在しないランダム文字列を新しい“グループ名”として生成し（Ｓ２４０５）、グループ定義１０３に、新しい“グループ名”でレコードを追加すると共に、そのレコードの“計算用アクセス権情報”として検索に利用した値を格納する（Ｓ２４０６）。この際、“ユーザリスト”はＮｕｌｌ値とする。さらに、グループ定義検索部１１８は、生成した“グループ名”を、検索ＤＢ１０２の当該文書の“検索用アクセス権情報”として格納する（Ｓ２４０７）。
【０１０５】
グループ定義検索部１１８は、Ｓ２４０１〜Ｓ２４０７までの処理を、検索ＤＢ１０２内の全ての文書について繰り返し（Ｓ２４０８／ＮＯ）、検索ＤＢ１０２内の全ての文書について完了したら（Ｓ２４０８／ＹＥＳ）、処理を終了する。
【０１０６】
図２３のＳ２３０４、Ｓ２３０５において、グループ定義計算部Ａ１１６、グループ定義計算部Ｂ１１７は、それぞれ、ファイルサーバから取得した文書、グループウェアから取得した文書を対象として、グループ定義１０８内の“ユーザリスト”を計算し、グループ定義１０８を更新する。
【０１０７】
図２５は、図２３におけるＳ２３０４の処理の詳細を示すフローチャートである。図２５に示すように、グループ定義計算部Ａ１１６によるＳ２１０４の処理は、図１５の処理とほぼ同様であるが、図１５においては、検索ＤＢ１０２内の文書を対象にしていたことに比べ、図２５ではグループ定義１０８を対称にしていることが異なる。また、図１５においては“検索用アクセス権情報”の有無を判断していたが、図２５では“ユーザリスト”がすでに格納されているか否かによらず、すべてのグループについて“ユーザリスト”を格納している。
【０１０８】
図２５におけるユーザ一覧Ａ、Ｂの計算処理は、それぞれ図１６、１７とほぼ同じである。図１６、１７では、ユーザリスト｛ｇ｝の取り出しをグループリスト１０２から行っていたが、図２５では、グループリスト１０２ではなく、ＬＤＡＰサーバ１０５から行う。
【０１０９】
図２６は、図２３におけるＳ２３０５の処理の詳細を示すフローチャートである。図２６に示すように、グループ定義計算部Ｂ１１７によるＳ２３０５の処理は、図１７とほぼ同様であるが、図１７では検索ＤＢ１０２内の文書を対象にしていたことに比べ、図２６ではグループ定義１０８を対象にしていることが異なる。また、図１７では“検索用アクセス権情報”の有無を判断していたが、図２６では“ユーザリスト”がすでに格納されているか否かによらず、すべてのグループについて“ユーザリスト”を格納している。また、図１７と同じく“ＡＬＬ”というグループに対応するため、処理のはじめに設定ファイルから、ＡＬＬに相当するユーザリストを読み込んでいる。
【０１１０】
図２６におけるユーザ一覧Ｘ１、Ｘ２の計算処理を図２７に示す。処理は、図１９とほぼ同じである。図１９では、ユーザリスト｛ｇ｝の取り出しを、グループリストから行っていたが、図２７では、グループリストではなく、ＬＤＡＰサーバ１０５から行う。また、ＬＤＡＰサーバ１０５にはＡＬＬのグループが存在しないため、このグループ名を発見した際は、ユーザリストとして｛ＡＬＬ｝を用いる。
【０１１１】
このような処理により定期的に実行されるクロール動作が完了し、図２１に示すように全ての文書について“検索用アクセス権情報”が設定されると共に、図２２に示すように全ての“グループ名”について“ユーザリスト”が設定される。検索を行う際、ユーザは検索部１０１を操作して検索システムにログインし、しかる後に検索条件を指定して検索を行う。ユーザは、ログイン時には、検索部１０１に、ＬＤＡＰサーバ１０５が管理するｕｉｄおよびｕｓｅｒＰａｓｓｗｏｒｄを入力する。検索部１０１は、ｕｉｄおよびｕｓｅｒＰａｓｓｗｏｒｄを用いてＬＤＡＰサーバ１０５に対して認証を行う。
【０１１２】
認証がＯＫの場合は、ログインが成立し、同時に検索部１０１は、ｕｉｄを用いてグループ定義１０８の検索を行い、当該ｕｉｄをユーザリスト内に持つグループ名の一覧Ｇ［］を取得する。Ｇ［］には、ｕｉｄそのものも含まれる。この後、ユーザは検索を行うことが可能となる。
【０１１３】
検索条件は、複数の文字列を空白で区切って入力することにより指定される。検索部１０１は、空白で区切られた複数の文字列Ｗ１、Ｗ２、Ｗ３・・・およびグループ名の一覧Ｇ［］を用いて、検索ＤＢ１０２に対して、“テキスト  ｌｉｋｅ  ‘％Ｗ１％’  ＡＮＤ  テキスト  ｌｉｋｅ  ‘％Ｗ２％’  ＡＮＤ・・・AND  検索用アクセス権情報  ｉｎ  Ｇ［］”のように、すべての文字列を含み、“検索用アクセス権情報”がＧ［］に含まれることを条件に検索する。この結果、検索結果をユーザに提示する際に表示される検索結果は、当該ユーザがアクセス権を持つ文書だけである。
【０１１４】
尚、実施の形態１、実施の形態２において説明した検索部１０１、クロール部１１０、ＬＤＡＰサーバ１０５、タスクスケジューラ１０４並びに検索ＤＢ１０２、グループリスト１０３、グループウェア１０６、ファイルサーバ１０７およびグループ定義１０８は、ＰＣ等の情報処理装置によって実現される。図２８を参照して、本実施形態に係る検索システム１を構成する情報処理装置のハードウェア構成について説明する。
【０１１５】
図２８に示すように、本実施形態に係る情報処理装置は、一般的なサーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等と同様の構成を含む。即ち、本実施形態に係る情報処理装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）４０及びＩ／Ｆ５０がバス８０を介して接続されている。また、Ｉ／Ｆ５０にはＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）６０及び操作部７０が接続されている。
【０１１６】
ＣＰＵ１０は演算手段であり、情報処理装置全体の動作を制御する。ＲＡＭ２０は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、ＣＰＵ１０が情報を処理する際の作業領域として用いられる。ＲＯＭ３０は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。ＨＤＤ４０は、情報の読み書きが可能な不揮発性の記憶媒体であり、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や各種の制御プログラム、アプリケーション・プログラム等が格納される。
【０１１７】
Ｉ／Ｆ５０は、バス８０と各種のハードウェアやネットワーク等を接続し制御する。ＬＣＤ６０は、ユーザが情報処理装置の状態を確認するための視覚的ユーザインタフェースである。操作部７０は、キーボードやマウス、タッチパネル等、ユーザが情報処理装置に情報を入力するためのユーザインタフェースである。なお、ＬＤＡＰサーバ１０５やクロール部１１０等、本実施形態に係る検索システム１の各部はサーバとして運用される場合もあり得る。従って、ＬＣＤ６０及び操作部７０等のユーザインタフェースは省略可能である。
【０１１８】
このようなハードウェア構成において、ＲＯＭ３０やＨＤＤ４０若しくは図示しない光学ディスク等の記憶媒体に格納されたプログラムがＲＡＭ２０に読み出され、ＣＰＵ１０がそれらのプログラムに従って演算を行うことにより、ソフトウェア制御部が構成される。このようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、本実施形態に係る検索システム１の各部の機能を実現する機能ブロックが構成される。特に、クロール部１１０の機能を実現するためのプログラムが、インデックス管理プログラムである。
【０１１９】
尚、図１及び図２０に示す検索システム１は、単一の装置によって構成される場合に限らず、ネットワークを介して接続された複数の情報処理装置によって実現される場合もある。例えば、検索部１０１として機能する１つのＰＣ、検索ＤＢ１０２、ユーザリスト１０３（またはユーザ定義１０８）、タスクスケジューラ１０４及びクロール部１１０を含む１つのサーバ、ＬＤＡＰサーバ１０５として機能する１つのサーバ、ファイルサーバ１０７として機能する１つのサーバ、グループウェア１０６として機能する１つのサーバによって実現される態様が考えられる。
【符号の説明】
【０１２０】
１  検索システム
１０  ＣＰＵ
２０  ＲＡＭ
３０  ＲＯＭ
４０  ＨＤＤ
５０  Ｉ／Ｆ
６０  ＬＣＤ
７０  操作部
８０  バス
１０１  検索部
１０２  検索ＤＢ
１０３  グループリスト
１０４  タスクスケジューラ
１０５  ＬＤＡＰ
１０６  グループウェア
１０７  ファイルサーバ
１０８  ユーザ定義
１１０  クロール部
１１１  文書情報取得部Ａ
１１２  検索用アクセス権情報計算部Ａ
１１３  文書情報取得部Ｂ
１１４  検索用アクセス権情報計算部Ｂ
１１５  ユーザ・グループ更新チェック部
１１６  グループ定義計算部Ａ
１１７  グループ定義計算部Ｂ
１１８  グループ定義検索部Ｂ
【先行技術文献】
【特許文献】
【０１２１】
【特許文献１】特開２０１０−１０８１１１号公報
【図１】
0005842426.tif 000002
【図２】
0005842426.tif 000003
【図３】
0005842426.tif 000004
【図４】
0005842426.tif 000005
【図５】
0005842426.tif 000006
【図６】
0005842426.tif 000007
【図７】
0005842426.tif 000008
【図８】
0005842426.tif 000009
【図９】
0005842426.tif 000010
【図１０】
0005842426.tif 000011
【図１１】
0005842426.tif 000012
【図１２】
0005842426.tif 000013
【図１３】
0005842426.tif 000014
【図１４】
0005842426.tif 000015
【図１５】
0005842426.tif 000016
【図１６】
0005842426.tif 000017
【図１７】
0005842426.tif 000018
【図１８】
0005842426.tif 000019
【図１９】
0005842426.tif 000020
【図２０】
0005842426.tif 000021
【図２１】
0005842426.tif 000022
【図２２】
0005842426.tif 000023
【図２３】
0005842426.tif 000024
【図２４】
0005842426.tif 000025
【図２５】
0005842426.tif 000026
【図２６】
0005842426.tif 000027
【図２７】
0005842426.tif 000028
【図２８】
0005842426.tif 000029