(57)【要約】【課題】ファイルサーバの負担を軽減しつつ、検索結果を利用者に提示する場合、利用者が全ての階層でアクセス権限を有する場合にのみファイルにアクセス可能とする仕組みを提供する。【解決手段】フォルダ階層構造を有し、各フォルダ、ファイルについてアクセス権限が設定されているファイルシステム下で、検索対象ファイルについて予めインデックスファイルを作成し、インデックスファイルを参照して指定されたファイルを検索する検索方法を採用する場合において、インデックスファイルを作成する際、各ファイルについての適切なファイルアクセス権限を設定することにより、検索結果として利用者が参照権限を有するファイルのみ表示するようにしている。【選択図】図１
2010108111.tif 000002
【特許請求の範囲】
【請求項１】
ファイル検索サーバが検索要求に基づいて検索を実行し、検索結果をクライアント装置に提示し、前記クライアント装置がファイルサーバから該当ファイルを取得するファイル検索システムであって、
前記ファイルサーバは、複数の検索対象ファイルを格納する検索対象ファイル格納部を備え、
前記ファイル検索サーバは、前記複数の検索対象ファイルのインデックスファイルを格納するインデックスファイル格納部と、前記検索要求に従って前記インデックスファイルに対して検索を実行する検索手段と、を備え、
前記インデックスファイルは、前記検索対象ファイルのそれぞれに対するアクセス権限及び各ファイルが関連するフォルダに対するアクセス権限を全て考慮して生成されたファイルアクセス権限情報を含み、
前記ファイル検索サーバは、前記アクセス権限を有する利用者が操作するクライアント装置にのみ前記検索結果を提示することを特徴とするファイル検索システム。
【請求項２】
前記ファイルアクセス権限情報は、全ての利用者に関して、前記検索対象ファイル及び当該ファイルが関連する全てのフォルダに対してアクセス権限を有するか否かを識別する情報によって構成されることを特徴とする請求項１に記載のファイル検索システム。
【請求項３】
前記ファイルアクセス権限情報は、前記検索対象ファイル及び当該ファイルが関連する全てのフォルダに対してアクセス権限を有する利用者条件を示す第１の情報と、アクセス権限を持たない利用者の条件を示す第２の情報によって構成され、前記第１の情報と前記第２の情報の論理積が当該ファイルに対するアクセス権限を有する利用者を表すことを特徴とする請求項１に記載のファイル検索システム。
【請求項４】
前記ファイル検索サーバは、さらに、前記インデックスファイルを作成するインデックス作成手段を備え、
前記インデックス作成手段は、前記ファイルサーバが有するシステムファイルであって、各フォルダ及び各ファイルについてのアクセス権限及び利用者を管理するための管理テーブルを含むシステムファイルを参照して、前記インデックスファイルを作成することを特徴とする請求項１乃至３の何れか１項に記載のファイル検索システム。
【請求項５】
前記インデックス作成手段は、所定のタイミングで前記検索対象ファイル格納部を参照し、前記インデックスファイルを更新することを特徴とする請求項４に記載のファイル検索システム。
【請求項６】
クライアント装置の検索要求に基づいて検索を実行し、検索結果を前記クライアント装置に提示するファイル検索サーバ装置あって、
ファイルサーバが格納する複数の検索対象ファイルのインデックスファイルを格納するインデックスファイル格納部と、
前記検索要求に従って前記インデックスファイルに対して検索を実行する検索手段と、を備え、
前記インデックスファイルは、前記検索対象ファイルのそれぞれに対するアクセス権限及び各ファイルが関連するフォルダに対するアクセス権限を全て考慮して生成されたファイルアクセス権限情報を含み、
前記アクセス権限を有する利用者が操作するクライアント装置にのみ前記検索結果を提示することを特徴とするファイル検索サーバ装置。
【請求項７】
前記ファイルアクセス権限情報は、全ての利用者に関して、前記検索対象ファイル及び当該ファイルが関連する全てのフォルダに対してアクセス権限を有するか否かを識別する情報によって構成されることを特徴とする請求項６に記載のファイル検索サーバ装置。
【請求項８】
前記ファイルアクセス権限情報は、前記検索対象ファイル及び当該ファイルが関連する全てのフォルダに対してアクセス権限を有する利用者条件を示す第１の情報と、アクセス権限を持たない利用者の条件を示す第２の情報によって構成され、前記第１の情報と前記第２の情報の論理積が当該ファイルに対するアクセス権限を有する利用者を表すことを特徴とする請求項６に記載のファイル検索サーバ装置。
【請求項９】
前記ファイル検索サーバは、さらに、前記インデックスファイルを作成するインデックス作成手段を備え、
前記インデックス作成手段は、前記ファイルサーバが有するシステムファイルであって、各フォルダ及び各ファイルについてのアクセス権限及び利用者を管理するための管理テーブルを含むシステムファイルを参照して、前記インデックスファイルを作成することを特徴とする請求項６乃至８の何れか１項に記載のファイル検索サーバ装置。
【請求項１０】
前記インデックス作成手段は、所定のタイミングで前記検索対象ファイル格納部を参照し、前記インデックスファイルを更新することを特徴とする請求項９に記載のファイル検索サーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル検索システム、及びその一部を構成するファイル検索サーバ装置であって、検索対象ファイルについてのインデックスファイルを参照して指定されたファイルを検索するファイル検索システム、及びファイル検索サーバ装置に関するものである。
【背景技術】
【０００２】
近年、情報のデジタル化が急速に進展している。かつては、銀行の口座や市町村の住民票等、企業・官公庁等のコンピュータシステムが基幹業務を実行するために参照するためのデータを、ファイルやＤＢ（Data Base）に記憶するというのがデジタル化の中心だった。
【０００３】
一方、現在では、企業等の組織において日常業務で作成される各種の書類が、各従業員のクライアントＰＣ（Personal Computer）に文書ファイルとして記憶され、電子メールの添付文書として他のクライアントＰＣに送信され、あるいは、組織全体の共有情報としてファイルサーバに記憶される。そして、ファイルサーバに記憶された文書ファイルは、さまざまな従業員により参照され、時にはクライアントＰＣに複製され、更新される。
【０００４】
このように、多量のデジタル情報がさまざまなコンピュータに分散記憶されると、組織内に重複あるいは類似した多数のデジタル情報が存在することになる。また、各デジタル情報の記憶容量も増大し続けている。
【０００５】
ところで、組織内において、例えば、既に退職した従業員がかつて作成した文書ファイルが必要になる等、記憶場所が不明なデジタル情報を参照したい場合が多々生ずる。このような場合、文書ファイル内に含まれているはずのキーワードやファイル作成者を指定し、指定キーワードを含む文書ファイル等を検索するという方法が広く行われている。
【０００６】
しかしながら、組織内の全てのコンピュータからデジタル情報を検索しようとすると、各従業員のクライアントＰＣにも全ての従業員からのアクセスを許可する必要があり、セキュリティ上好ましくない。このため、組織全体で共有すべきデジタル情報については所定のファイルサーバに記憶しておくということが、一般に行われている。
【０００７】
一方、文書ファイル等を所定のいくつかのファイルサーバに記憶させた場合、文書ファイルが必要になるたびにファイルサーバに記憶されている全てのファイルを検索しようとすると、ファイルＩＯ（Input Output）等を行うための膨大な時間を必要とする。
【０００８】
このため、例えば特許文献１のように、ファイルサーバに記憶されているＣＳＶ（Comma Separated Values）ファイル等内の各レコードについて、記憶場所やキーワード等、検索に使用するための小容量の情報（インデックス情報）をインデックスファイルとして記憶するという技術が知られている。すなわち、インデックスファイルを作成することで、検索時に、各レコードについてのインデックス情報を１回のファイルＩＯで取得することが可能となり、各レコード等へのファイルＩＯを不要とすることができる。この結果、ファイル検索時のレスポンスタイムを短くすることができるとともに、ファイルサーバの負荷を軽減することができる。
【０００９】
【特許文献１】特開２００３−１６２５４５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
特許文献１に開示された技術は、１つのＣＳＶファイル内の各レコードについてインデックスファイルを作成する技術であり、この技術を複数のファイルについてインデックスファイルを作成する技術に応用する場合、次のような問題が発生する。
【００１１】
すなわち、多くのコンピュータにおいては、１以上のフォルダ（ファイルシステムによっては「ディレクトリ」という場合もあるが、以降の説明においては「フォルダ」と記載する。）による階層構造を可能にし、いずれかのフォルダの中にファイルが存在するというファイルシステムを採用している。そして、フォルダおよびファイルそれぞれについて、当該コンピュータの利用者（以下「操作者」と記載する場合もある。）のうちのいずれに参照等を許可するかが定められている。
【００１２】
従って、複数のファイルについて、記憶場所やキーワード等、検索に使用するための小容量の情報（インデックス情報）をインデックスファイルとして作成し、インデックスファイルを参照して検索を行った場合、検索を行った利用者が参照を許可されていないファイルも検索結果として表示されてしまう。当該利用者が当該ファイルの内容を参照しようとする場合には、ファイルシステムによって参照が許可されていないと判定され、ファイルの内容を参照することができないとしても、参照が許可されていないファイルの存在や存在場所が知られてしまうことになり、セキュリティ上好ましくない。
【００１３】
この問題は、インデックスファイルを作成する際、各ファイルについて利用者のうちのいずれに参照等を許可するかについての情報（以下「ファイル（フォルダ）アクセス権限」といい、例えば参照については「ファイル（フォルダ）参照権限」という。）もインデックス情報の一部として記憶することによって解決可能であるかのように思える。
【００１４】
しかしながら、前述したように、多くのコンピュータにおいては、１以上のフォルダによる階層構造を可能にし、いずれかのフォルダの中にファイルが存在するというファイルシステムを採用しており、また、フォルダおよびファイルそれぞれについて、当該コンピュータの利用者のファイル（フォルダ）アクセス権限が定められている。従って、例えば”etc”フォルダ内に”file1”ファイルが存在し、利用者のうち”user1”は”file1”ファイルを参照可能だが、”etc”フォルダは参照できないということもありうる。単に”file1”ファイルのアクセス権限をインデックス情報の一部として記憶すると、この場合、検索時には”user1”が”file1”ファイル参照可能であると判定し、”file1”ファイルが検索結果として表示されてしまう。つまり、ファイルのアクセス権限はあるがその上位階層にあるフォルダのアクセス権限がない場合でも、フォルダ経由では当該ファイルにはアクセスできないが、サーチ結果に現れればファイルに直接アクセスはできてしまう。この場合、本来上位階層にあるフォルダにアクセス権限がないのであるから、ファイルにアクセス権限があってもアクセスできないようにするのがセキュリティ上好ましい。
【００１５】
本発明はこのような状況に鑑みてなされたものであり、ファイルサーバの負担を軽減しつつ、検索結果を利用者に提示する場合、利用者が全ての階層でアクセス権限を有する場合にのみファイルにアクセス可能とする仕組みを提供するものである。
【課題を解決するための手段】
【００１６】
上記課題を解決するために、本発明では、フォルダ階層構造を有し、各フォルダ、ファイルについてアクセス権限が設定されているファイルシステム下で、検索対象ファイルについて予めインデックスファイルを作成し、インデックスファイルを参照して指定されたファイルを検索する検索方法を採用する場合において、インデックスファイルを作成する際、各ファイルについての適切なファイルアクセス権限を設定することにより、検索結果として利用者が参照権限を有するファイルのみ表示するようにしている。
【００１７】
即ち、本発明は、ファイル検索サーバが検索要求基づいて検索を実行し、検索結果をクライアント装置に提示し、クライアント装置がファイルサーバから該当ファイルを取得するファイル検索システムに関する。ここで、ファイルサーバは、複数の検索対象ファイルを格納する検索対象ファイル格納部を備える。また、ファイル検索サーバは、複数の検索対象ファイルのインデックスファイルを格納するインデックスファイル格納部と、検索要求に従ってインデックスファイルに対して検索を実行する検索手段と、を備える。インデックスファイルは、前記検索対象ファイルのそれぞれに対するアクセス権限及び各ファイルが関連するフォルダに対するアクセス権限を全て考慮して生成されたファイルアクセス権限情報を含んでおり、ファイル検索サーバは、アクセス権限を有する利用者が操作するクライアント装置にのみ検索結果を提示する。より具体的に、ファイルアクセス権限情報は、全ての利用者に関して、検索対象ファイル及び当該ファイルが関連する全てのフォルダに対してアクセス権限を有するか否かを識別する情報によって構成されるか、或いは、検索対象ファイル及び当該ファイルが関連する全てのフォルダに対してアクセス権限を有する利用者条件を示す第１の情報と、アクセス権限を持たない利用者の条件を示す第２の情報によって構成されている。そして、第１の情報と第２の情報の論理積が当該ファイルに対するアクセス権限を有する利用者を表すものとなる。
【００１８】
ファイル検索サーバは、さらに、インデックスファイルを作成するインデックス作成手段を備える。この場合、インデックス作成手段は、ファイルサーバが有するシステムファイルであって、各フォルダ及び各ファイルについてのアクセス権限及び利用者を管理するための管理テーブルを含むシステムファイルを参照して、インデックスファイルを作成する。また、インデックス作成手段は、所定のタイミングで検索対象ファイル格納部を参照し、インデックスファイルを更新する。
【００１９】
さらなる本発明の特徴は、以下本発明を実施するための最良の形態および添付図面によって明らかになるものである。
【発明の効果】
【００２０】
本発明によれば、ファイルサーバの負担を軽減しつつ、利用者が全ての階層でアクセス権限を有する場合にのみ検索結果を提示することが可能なシステムを提供できる。従って、検索条件に合致するファイルであっても利用者にアクセス権限がなければ、存在の有無すら知られることがなくなり、よりセキュアなシステムが実現できるようになる。
【発明を実施するための最良の形態】
【００２１】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００２２】
本実施形態においては、「ファイル」とは、文書ファイル、表ファイル、電子メール、データベース、データベースに記憶された各レコード、プログラム等、情報処理装置に記憶される全ての種類・形式のデジタル情報のうち、「フォルダ」を除いたものを示す。また、「フォルダ」とは、ファイルや他のフォルダを管理するための階層構造を備えたデジタル情報であり、ファイルシステムによっては「ディレクトリ」という場合もある。
【００２３】
「利用者」または「操作者」とは、各コンピュータを利用または操作する者を示す。以降の説明においては、概ね「利用者」が実際にコンピュータを操作する場合に「操作者」と記載するが、用語としての意味の相違はない。
【００２４】
さらに、「ファイル（フォルダ）アクセス権限」とは、各ファイル（フォルダ）について利用者のうちのいずれに参照、書き込み、実行を許可するかを定めた情報を示し、アクセス権限の一部、例えば参照権限については「ファイル（フォルダ）参照権限」のように記載する。また、参照等のアクセス権限が許可されている場合、「アクセス権限を有する」というように記載する。
【００２５】
（１）第１の実施形態
＜ファイル検索システムの構成＞
図１は、本発明に係る第１の実施形態によるファイル検索システムの概略構成を示す図である。
【００２６】
当該ファイル検索システムは、クライアント３、ファイル検索サーバ６、およびファイルサーバ１を備え、それらを例えばＬＡＮ（Local Area Network）４等の有線又は無線の通信回線により通信可能に接続したシステムとなっている。ここで、クライアント３、ファイル検索サーバ６、ファイルサーバ１は１台ずつ図示しているが、それぞれ複数存在していてもよい。
【００２７】
また、図１においては、クライアント３、ファイル検索サーバ６、およびファイルサーバ１はＬＡＮ４によって互いに通信可能に接続されているが、接続方法はＬＡＮに限定されるものではなく、例えばＷＡＮ（Wide Area Network）やインターネットによって接続されていてもよい。
【００２８】
以上のような構成により、クライアント３はファイル検索サーバ６にファイル検索要求（以下「検索要求」と略記する。）を送信し、ファイル検索サーバ６は必要に応じてファイルサーバ１が記憶しているファイルの内容を参照するなどして検索を行い、クライアント３にファイル検索結果（以下「検索結果」と略記する。）を送信することができる。
【００２９】
クライアント３はＰＣ等の装置であり、入力装置３２、表示装置３３および記憶装置５と通信可能に接続されている。入力装置３２はキーボード、マウス等の装置であり、クライアント３の操作者は入力装置３２を操作することで、クライアント３が実行するべき処理を指示することができる。すなわち入力装置３２はクライアント３の入力手段として機能する。
【００３０】
表示装置（出力装置）３３は液晶ディスプレイ、プリンタ等の装置であり、クライアント３が実行した処理の結果等を表示あるいは印刷出力する。すなわち表示装置３３はクライアント３の表示手段および出力手段として機能する。記憶装置５は磁気ディスク等の装置であり、クライアント３に内蔵され又は外部接続される。記憶装置５と、図示していないがクライアント３の主記憶装置等は、クライアント３の記憶手段として機能する。
【００３１】
クライアント３は図示していないがＣＰＵ（Central Processing Unit）、主記憶装置等を備えている。ＣＰＵは、図１には示されていないが、記憶装置５に記憶されている検索要求プログラム等のプログラムを主記憶上にローディングし、その命令コードを実行することで各種の処理を実行する。以上のようなプログラム実行にかかわる技術は周知である。以降の説明および図面においては、プログラム実行に係る説明が煩雑になるのを避けるため、検索要求プログラムを検索要求手段というように、各種プログラムについてあたかもハードウェアが存在するかのように記載し、各手段が処理を実行するかのように記載する。なお、実際に各手段（例えば検索要求手段３１）を電子装置または電子装置とファームウェアの組合せ等で構成することも可能である。
【００３２】
検索要求手段３１は上述したように検索要求プログラムであり、クライアント３の操作者が入力装置３２によって入力したファイル検索条件およびファイル検索指示（例えば、ファイル名が「会計ファイル」であるファイルを検索するように、という指示）を受けて、検索条件式を作成し、ファイル検索サーバ６に検索条件式を含む検索要求を送信する。また、ファイル検索サーバ６がクライアント３に送信した検索結果を受信し、表示装置３３に表示する。
【００３３】
ファイルサーバ１はＰＣ等の装置で構成され、記憶装置２と通信可能に接続されている。記憶装置２は磁気ディスク等の装置であり、ファイルサーバ１に内蔵され又は外部接続される。記憶装置２と、図示していないがファイルサーバ１の主記憶装置等は、ファイルサーバ１の記憶手段として機能する。
【００３４】
記憶装置２は、システムファイル２１および検索対象ファイル２２を記憶している。ここで、検索対象ファイル２２とは記憶装置２に記憶されている特定のファイルを示しているのではなく、検索対象となりうる全てのファイルを要素とするファイル集合体のことである。従って、検索対象ファイル２２は、記憶装置２に記憶されている全てのファイルであってもよいし、システムファイル等の機密性の高いファイルを除いた全てのファイルであってもよい。
【００３５】
システムファイル２１は、図示していないが主としてファイルサーバ１のＯＳ（Operating System）がコンピュータを管理するために使用するファイルの総称である。それには、例えば、ファイルサーバ１における各プロセスの実行状況を管理するファイル、ファイルサーバ１の利用者を管理するファイル、各フォルダや各ファイルについてのアクセス権限を管理するファイル等、多数のファイルが含まれる。システムファイル２１のうち、第１の実施形態に直接関連するファイルについては、後述する（図２参照）。なお、よく知られているように、同様のファイルはクライアント３の記憶装置５、およびファイル検索サーバ６の記憶装置７にも存在するが、本発明の説明には不要であるため記載していない。
【００３６】
ファイルサーバ１は、ファイル管理手段１１（ファイル管理プログラム）と、クライアント３と同様、図示していないがＣＰＵと、主記憶装置等を備えている。ＣＰＵは、図示していないが、記憶装置２に記憶されているファイル管理プログラム等のプログラムを主記憶上にローディングし、その命令コードを実行することで各種の処理を実行する。以降の説明および図面においては、プログラム実行に係る説明が煩雑になるのを避けるため、ファイル管理プログラムをファイル管理手段１１というように、各種プログラムについてあたかもハードウェアが存在するかのように記載し、各手段が処理を実行するかのように記載する。なお、実際に各手段（例えばファイル管理手段１１）を電子装置または電子装置とファームウェアの組合せ等で構成することも可能である。
【００３７】
ファイル管理手段１１は、記憶装置２に記憶されたファイルに対してＩＯを行う等の機能を有しており、ＯＳの一部として実装されることが多い。
【００３８】
ファイル検索サーバ６はＰＣ等の装置であり、記憶装置７と通信可能に接続されている。記憶装置７は磁気ディスク等の装置であり、ファイル検索サーバ６に内蔵され又は外部接続される。記憶装置７と、図示していないがファイル検索サーバ６の主記憶装置等は、ファイル検索サーバ６の記憶手段として機能する。
【００３９】
記憶装置７には、インデックスファイル７１が記憶されている。インデックスファイル７１は、ファイルサーバ１が記憶装置２内で管理するファイルについて、検索に使用するための比較的小容量の情報（インデックス情報）を記憶するファイルである。インデックスファイルの記憶内容等については、以降のファイル検索サーバ６の機能説明と合わせて説明する。
【００４０】
ファイル検索サーバ６は、インデックス作成手段６１（インデックス作成プログラム）および検索手段６２（検索プログラム）を備えている。
【００４１】
ファイル検索サーバ６はクライアント３と同様、図示していないがＣＰＵ、主記憶装置等を備えている。ＣＰＵは、図示していないが、記憶装置７に記憶されているインデックス作成プログラム等のプログラムを主記憶上にローディングし、その命令コードを実行することで各種の処理を実行する。以降の説明および図面においては、プログラム実行に係る説明が煩雑になるのを避けるため、インデックス作成プログラムをインデックス作成手段６１というように、各種プログラムについてあたかもハードウェアが存在するかのように記載し、各手段が処理を実行するかのように記載する。なお、実際に各手段（例えばインデックス作成手段６１）を電子装置または電子装置とファームウェアの組合せ等で構成することも可能である。
【００４２】
インデックス作成手段６１は、例えば毎日同じ時刻等の所定のタイミングで、検索対象ファイル２２を参照し、インデックスファイル７１を作成する。前述したように、検索対象ファイル２２は、ファイル検索サーバ６がクライアント３からの検索要求を受信した場合に、検索対象とすべきファイルであり、例えば記憶装置２に記憶されている全てのファイルであってもよいし、あるいは、特定のフォルダ内の全てのファイル等、記憶装置２に記憶されている一部のファイルであってもよい。
【００４３】
いずれの場合であっても、検索要求を受信するたびに検索対象ファイル２２を参照して検索すると、そのたびに多数のファイルＩＯが発生する。
【００４４】
そこで、検索に要する時間を短縮するとともに検索によるファイル検索サーバ６およびファイルサーバ１の負荷増大を防止するために、検索対象ファイル２２のファイル名、作成者等、検索条件として使用される可能性の高い、比較的小容量の情報（以下「インデックス情報」という）を、インデックスファイル７１に記憶しておく。
【００４５】
例えば複数のインデックス情報を１ファイルにまとめて記憶することで、１回のファイルＩＯで複数のインデックス情報が参照できる。ファイル検索サーバ６はクライアント３からの検索要求を受信した場合に、まずインデックス情報を参照して、検索要求の検索条件式に合致するファイルが存在するか判定することができる。
【００４６】
なお、上記のように、インデックス情報を参照して検索する場合、インデックス情報作成後に検索対象ファイル２２が削除されあるいは変更された場合（例えばファイル名が「会計ファイル」であるファイルについてインデックス情報が作成された後、当該ファイルが削除された場合）、検索対象ファイル２２を検索した場合とは異なる検索結果が得られることになる（インデックス情報を参照すると「会計ファイル」が存在しているように見えるが、検索対象ファイル２２には存在していない）。
【００４７】
そこで、前述したように、インデックス作成手段６１は、例えば毎日同じ時刻等の所定のタイミングで処理を行うようにすることができる。このようにすることで、インデックスファイル７１が定期的に更新され、検索対象ファイル２２と大きく乖離することを防ぐことができる。
【００４８】
そして、インデックス作成手段６１が処理を行うタイミングの間隔を短くすれば（例えば、１時間おきに処理を行う）、インデックスファイル７１と検索対象ファイル２２の乖離を、より小さくすることができる。ただし、インデックス作成手段６１が処理を行うタイミングの間隔を短くするということは、検索対象ファイル２２の全ファイルに対するＩＯが発生する間隔も短くなるということなので、ファイル検索サーバ６およびファイルサーバ１の性能等も考慮した上で、インデックス作成手段６１が処理を行うタイミングの間隔を決める必要がある。つまり、ファイルサーバ１の負荷を過大にすることのないように更新間隔を決める必要がある。
【００４９】
例えば、ファイルサーバ１において、ＣＰＵ使用率、一定時間におけるＩＯ頻度等を常時監視するプログラムを走行させておき、ＣＰＵ使用率、一定時間におけるファイルＩＯ頻度等が所定値以下になった場合に、インデックス作成手段６１を実行させるようにする等も、有効な方法である。
【００５０】
あるいは、検索対象ファイル２２におけるファイルＩＯを常時監視するプログラムを走行させておき、検索対象ファイル２２が更新等されるたびに、インデックスファイル７１内の当該ファイルについてのインデックス情報を更新するようにしてもよい。あるいは、インデックスファイル７１を作成、更新した後の検索対象ファイル２２の更新等を記録しておき、更新等された検索対象ファイル２２についてだけ、インデックスファイル７１内の当該ファイルについてのインデックス情報を更新するようにしてもよい。このようにすることで、１回だけ全ての検索対象ファイル２２についてインデックスファイル７１を作成すれば、以降は更新されたファイルについてのみインデックスファイル７１を更新すればよいので、ファイル検索サーバ６およびファイルサーバ１の負荷軽減を実現することができる。
【００５１】
＜システムファイルの構成例＞
図２は、第１の実施形態における、システムファイル２１のうち、本発明の説明に直接必要なファイルを抜粋して示したデータ構成例を示す図である。具体的には、図２においては利用者を管理するためのファイル２１０（以下「利用者管理テーブル２１０」という。）と、ファイルおよびフォルダを管理するためのファイル２２０（以下「ファイル管理テーブル２２０」という）が含まれている。
【００５２】
利用者管理テーブル２１０は、各利用者を識別するユーザＩＤ２１１と、当該利用者が所属するユーザグループを識別するグループＩＤ２１２を対応付けて記憶している。例えば、図２の例においては、”user1”は”grp1”に所属しており、”user2”と ”user3”は”grp2”に所属しており、”user4”、 ”user5”および”user6”は”grp3”に所属している。
【００５３】
なお、図２の利用者管理テーブル２１０はユーザＩＤ２１１とグループＩＤ２１２の対応方法を例示したものに過ぎず、実際のコンピュータシステムにおいて、ユーザＩＤ２１１とグループＩＤ２１２が、図２に示すように一つのテーブルにおいて対応付けて記憶されているとは限らない。例えば、ユーザＩＤ２１１とグループＩＤ２１２をそれぞれ別のテーブルに記憶させ、ユーザＩＤ２１１とグループＩＤ２１２をリンク情報によって対応付けることも可能である。さらに、一般には同じユーザＩＤ２１１に対して２以上の異なるグループＩＤ２１２を対応付けることができるが、そのような場合についても以降に示す技術を適応することは容易である。どのような構成をとった場合でも、利用者のユーザＩＤが分かれば、当該利用者が所属するユーザグループのグループＩＤを知ることができ、また、グループＩＤが分かれば、当該ユーザグループに所属する全ての利用者のユーザＩＤを知ることができる。
【００５４】
ファイル管理テーブル２２０は、ファイルまたはフォルダの名称であるファイル・フォルダ名２２１と、当該ファイルまたはフォルダのオーナ（すなわち、当該ファイルまたはフォルダについてのアクセス権限を設定、更新することが可能な利用者）のユーザＩＤであるオーナＩＤ２２２と、当該ファイルまたはフォルダに対してアクセス権限を有することがありうるユーザグループのグループＩＤであるグループＩＤ２２３と、当該ファイルまたはフォルダに対する、オーナＩＤ２２２、グループＩＤ２２３およびその他の利用者のそれぞれの参照権限を示す参照権限２２４を対応付けて記憶している。
【００５５】
例えば、図２の例においては、”/”（ルート）フォルダのオーナ、ユーザグループはそれぞれ”user1”、”grp1”であり、参照権限２２４の”r, r, r”のうち、左の”r”はオーナである”user1”が参照権限を有することを示し、中央の”r”はユーザグループである”grp2”に所属する利用者（従って、図２の例では”user2”および”user3”）が参照権限を有することを示し、右の”r”はオーナでなくユーザグループにも属さない利用者（従って、図２の例では”user4”、”user5”および”user6”）が参照権限を有することを示している。結局、”/”（ルート）フォルダの参照権限を有する利用者は、”user1”、”user2”、”user3”、”user4”、”user5”および”user6”ということになる。
【００５６】
また、”/financial”フォルダについては、オーナ、ユーザグループはそれぞれ”user2”、 ”grp2”であり、参照権限２２４の”r ,   , r”のうち、左の”r”はオーナである”user2”が参照権限を有することを示し、中央の” ”（空白）はユーザグループである” grp2”に所属する利用者（従って、図２の例では”user2”および”user3”）のうちオーナを除いた利用者（従って、図２の例では”user3”）が参照権限を有さないことを示し、右の”r”はオーナでなくユーザグループにも属さない利用者（従って、図２の例では”user1”、”user4”、”user5”および”user6”）が参照権限を有することを示している。結局、”/financial”フォルダの参照権限を有する利用者は、”user1”、”user2”、”user4”、”user5”および”user6”ということになる。
【００５７】
さらに、” /financial/074q”フォルダについては、オーナ、ユーザグループはそれぞれ”user3”、”grp1”であり、参照権限２２４の”r ,   , r”のうち、左の”r”はオーナである”user3”が参照権限を有することを示し、中央の” ”（空白）はユーザグループである” grp1”に所属する利用者（従って、図２の例では”user1”）が参照権限を有さないことを示し、右の”r”はオーナでなくユーザグループにも属さない利用者（従って、図２の例では”user2”、”user4”、”user5”および”user6”）が参照権限を有することを示している。結局、”/financial/074q”フォルダの参照権限を有する利用者は、”user2”、”user4”、”user5”および”user6”ということになる。
【００５８】
同様に、”/financial/074q/file2”ファイルについては、オーナ、ユーザグループはそれぞれ”user4”、”grp2”であり、参照権限２２４の”r , r ,  ”のうち、左の”r”はオーナである”user4”が参照権限を有することを示し、中央の”r”はユーザグループである” grp2”に所属する利用者（従って、図２の例では”user2”および”user3”）が参照権限を有することを示し、右の”r”はオーナでなくユーザグループにも属さない利用者（従って、図２の例では”user1”、”user5”および”user6”）が参照権限を有さないことを示している。
【００５９】
ここで、”/financial/074q/file2”を実際に参照可能な利用者は、”/financial/074q/file2”の全ての上位フォルダ（”/”、”/financial”および”/financial/074q”）が参照可能な利用者に限定される。従って、この例で”/financial/074q/file2”を実際に参照可能な利用者、すなわち参照権限を有する利用者は、（”user1”、”user2”、”user3”、”user4”、”user5”、”user6”）、（”user1”、”user2”、”user4”、”user5”、”user6”）、（”user2”、”user3”、”user4”、”user5”、”user6”）、および（”user2”、”user3”、”user4”）の共通する利用者、すなわち”user2”および”user4”ということになる。
【００６０】
つまり、/financial/074q/file2に関して、従来の方法では、（”user2”、”user3”、”user4”）の利用者に参照権限があるので、検索結果がこの利用者には提示される。しかし、利用者user3は本来/financialフォルダに参照権限を持たないにも拘わらず、従来の方法では提示されてしまう。この点、本発明では、対象ファイルが関連する全ての上位フォルダの参照権限（アクセス権限）を考慮して最終的な参照権限が決定されるので、この例の場合、利用者user3は、/financial/074q/file2にアクセスすることができない。よって、よりセキュアに検索結果を利用者に提示することができるようになる。
【００６１】
なお、図２のファイル管理テーブル２２０は、ファイルまたはフォルダについての、アクセス権限設定方法を、本発明と直接関係する参照権限に限定して例示したものに過ぎない。実際のコンピュータシステムにおいては、例えば、フォルダについてのアクセス権限は”r(read)”（当該フォルダ内のファイル、フォルダの一覧を参照可能）、”w(write)”（当該フォルダ内にファイル、フォルダを作成・更新可能）、”x(execute)”（当該フォルダ内のファイル内容を実行可能）の３種類で管理し、ファイルについてのアクセス権限は”r”（当該ファイルの内容を参照可能）、”w”（当該ファイルの内容を作成・更新可能）、”x”（当該ファイルの内容をプログラムとして実行可能）の３種類で管理するのがＵＮＩＸでは一般的である。このような場合、フォルダについての”x”およびファイルについての”r”は、関連するファイル内容の参照を可能にする権限であるという点において同じ意味合いを持つと考え、フォルダについての”x”およびファイルについての”r”を参照権限２２４の”r”に置き換えて本発明技術を適用することができる。また、フォルダについては”r”権限があればファイルの内容を表示することはできなくても、当該フォルダ内のファイル、フォルダの一覧を参照することは可能なので、検索の結果、ファイルの存在を知られてもセキュリティ上の問題はないとも考えられる。そのように考えるのであれば、フォルダについての”r”または”x”、およびファイルについての”r”を参照権限２２４の”r”に置き換えて本発明技術を適用してもよい。
【００６２】
さらに、ファイルまたはフォルダについてのアクセス権限は、ファイル管理テーブル２２０のようなテーブルに記憶されている必要はなく、例えば、各ファイル、フォルダ毎にファイル属性情報の一つとして記憶されていてもよい。
【００６３】
また、図２のファイル管理テーブル２２０には４つのフォルダおよびファイルを記載しているが、これは発明を説明するために十分な例に限定して示したに過ぎず、当然ながら、実際のコンピュータシステムにおいては、膨大な数のフォルダおよびファイルが設定されている。
【００６４】
＜インデックスファイルのデータ構成例＞
図３は、第１の実施形態における、インデックスファイル７１のデータ構成例を示す図である。
【００６５】
インデックスファイル７１は、検索対象ファイル２２に含まれる各ファイル（以下、図３の説明において「検索ファイル要素」という。）に対応するインデックスレコード７１０から構成される。すなわち各インデックスレコード７１０は、インデックスファイル７１作成時点の各検索ファイル要素と１対１に対応している。
【００６６】
インデックスレコード７１０は、ファイル名７１１、ユーザＩＤ７１３、参照可否７１４、アクセス日時７１５、およびファイル記憶場所７１６の各データ項目から構成される。ユーザＩＤ７１３と参照可否７１４は、利用者別アクセス権限７１２と総称し、利用者管理テーブル２１０に設定されている利用者数分（ｍ個：図２の例では６個）設定される。
【００６７】
ファイル名７１１には、対応する検索ファイル要素のファイル名が設定される。具体的には、例えば当該ファイルを作成する際にファイルの作成者によって付与され、ファイルの属性情報（例えばMicrosoft Office（Microsoftは登録商標）ファイルのプロパティー）として設定されているタイトル名を設定すればよい。
【００６８】
利用者別アクセス権限７１２には、対応する検索ファイル要素に対して設定されているアクセス権限が１つ以上、利用者別に設定される。後述するように、ファイルサーバ１のファイル管理手段１１によってファイル管理テーブル２２０に設定されているアクセス権限を参照することで、利用者別アクセス権限７１２を設定することができる。上述したように、本発明では、ある利用者が、特定のファイルについて、そのファイルが関連する上位フォルダの全てにもアクセス権限を有する場合に、当該特定のファイルのアクセスが許可されるようになっている。
【００６９】
ユーザＩＤ７１３には、ファイルサーバ１の利用者を識別するユーザＩＤが設定される。また、参照可否７１４には、当該利用者の参照権限が設定される。例えば、各ユーザＩＤ７１３と参照可否７１４を（ユーザＩＤ７１３、参照可否７１４）と表したとき、（”user1”、” ”（スペース））、（”user2”、” ”（スペース）） 、（”user3”、” ”（スペース））、（”user4”、” ”（スペース））、（”user5”、”r”）、（”user6”、”r”）が設定されている場合には、当該検索ファイル要素については、”user5”、”user6”が参照権限を有し、”user1”、”user2”、”user3”、”user4”は参照権限を有さないことを示している。アクセス日時７１５には、任意の利用者による、対応検索ファイル要素の最終アクセス日時が設定される。具体的には、ファイルの属性情報として設定されており、ファイルサーバ１のファイル管理手段１１が、ファイルアクセスが発生するたびに更新する最終アクセス日時を設定すればよい。
【００７０】
なお、以上のほか、ファイル作成者等、他のファイル属性情報についても、インデックスレコード７１０のデータ項目とすることができる。
【００７１】
ファイル記憶場所７１６には、対応する検索ファイル要素の記憶場所が記憶される。例えば、”/financial/074q/file2”（ルート直下の”financial”フォルダ内の”074q”フォルダ内の”file2”）のようにファイルの絶対パスを記憶してもよいし、特定のフォルダを基準とした相対パスを記憶してもよい。その他、ファイルの記憶場所を特定することが可能な任意の情報を記憶すればよい。
【００７２】
以上のようなデータが設定されたインデックスレコード７１０は、後述するようにインデックス作成手段６１によって作成、更新、削除され、検索手段６２により参照される。
【００７３】
＜インデックス作成処理＞
図４は、第１の実施形態における、インデックス作成手段６１の動作を説明するためのフローチャートである。
【００７４】
インデックス作成手段６１は、前述したように所定のタイミングで起動されると、インデックスファイル７１を削除する（Ｓ４０１）。
【００７５】
インデックス作成手段６１は、次に、検索対象ファイル２２に含まれる全てのファイルについて、インデックスレコード７１０の作成処理（Ｓ４０２）を行う。例えば、記憶装置２の特定フォルダ内の全てのファイルが検索対象ファイル２２である場合、インデックス作成手段６１は、当該フォルダ内のファイルを順次参照し、各ファイルについてインデックスレコード７１０を作成する。すなわち、ファイルの属性情報等を参照して、ファイル名７１１、利用者別アクセス権限７１２、アクセス日時７１５を設定し、当該検索対象ファイル２２の記憶場所をファイル記憶場所７１６に設定する。
【００７６】
そして、インデックス作成手段６１は、インデックスレコード７１０を記憶装置２に記憶する（Ｓ４０２）。なお、各データの設定内容は図３を使用して説明したとおりであるが、利用者別アクセス権限７１２の設定方法については後に詳述する。
【００７７】
検索対象ファイル２２に含まれる全てのファイルについて、インデックスレコード７１０の作成処理（Ｓ４０２）を行うと、インデックス作成手段６１は、処理を終了する。
【００７８】
以上の説明は、インデックス作成手段６１が処理を行うたびに、処理時点の検索対象ファイル２２に含まれる全てのファイルについてインデックスファイル７１を再作成するという方法を前提としているが、前述したように、１回だけ検索対象ファイル２２に含まれる全てのファイルについてインデックスファイル７１を作成し、以降は更新されたファイルについてのみインデックスファイル７１を更新するようにしてもよい。
【００７９】
また、検索対象ファイル２２に含まれるファイルは、どのような順番で参照してよく、従って、インデックスレコード７１０の並びとファイルの絶対パスの並びとは特に関係がない。
【００８０】
＜利用者別アクセス権限の設定＞
ここで、利用者別アクセス権限７１２の設定方法について、説明する。
【００８１】
ファイル管理テーブル２２０において、参照権限２２４の設定内容としては、”-, - ,-”、”-, -, r”、”-, r, -”、”-, r, r”、”r, -, -”、”r, -, r”、”r, r, -”、”r, r, r”の８通りしか存在しない。ただし、以上の設定内容において”-”はスペースが設定されていること、すなわち参照権限がないことを示している。
【００８２】
そこで、この８通りの設定内容のそれぞれについて、当該フォルダまたはファイルのオーナ、ユーザグループをそれぞれ”the_user”、”the_group”と表記し、利用者管理テーブル２１０に設定されている全ての利用者を”all_users” と包括表記して、参照権限を有する利用者を挙げると、次の通りである。
【００８３】
i)参照権限２２４の設定内容が”- , - ,- ”の場合の参照権限を有する利用者：  なし
ii)参照権限２２４の設定内容が”- , - , r ”の場合の参照権限を有する利用者：  ”all_users”から、”the_user”および”the_group”に所属する利用者を除いた利用者
iii)参照権限２２４の設定内容が”- , r , - ”の場合の参照権限を有する利用者：  ”the_group”に所属する利用者のうち”the_user”を除いた利用者
iv)参照権限２２４の設定内容が”-, r , r ”の場合の参照権限を有する利用者：  ”all_users”から、”the_user”を除いた利用者
v)参照権限２２４の設定内容が”r , - , - ”の場合の参照権限を有する利用者：  ”the_user”
vi)参照権限２２４の設定内容が”r ,- , r ”の場合の参照権限を有する利用者：  ”the_user”と、”all_users”から”the_group”に所属する利用者を除いた利用者
vii)参照権限２２４の設定内容が”r , r , - ”の場合の参照権限を有する利用者：  ”the_user”と、”the_group”に所属する利用者
viii)参照権限２２４の設定内容が”r , r , r ”の場合の参照権限を有する利用者：  ”all_users”
【００８４】
”all_users”についての実際のユーザＩＤは、利用者管理テーブル２１０を参照することにより知ることができる（図２の例では、”user1”、”user2”、”user3”、”user4”、 ”user5”および”user6”である）。上記いずれの場合も、ファイル管理テーブル２２０および利用者管理テーブル２１０を参照すれば”the_user”と、”the_group”に所属する利用者のユーザＩＤを知ることができるので、具体的にどのユーザＩＤ２１１が参照権限を有するか知ることができる。そして、”all_users”から参照権限を有するユーザＩＤ２１１を除外すれば、参照権限を有さないユーザＩＤ２１１も知ることができる。
【００８５】
以上を前提に、例えば絶対パスが”/folder1/folder2/…/folderN/the_file”であるファイル”the_file”について利用者別アクセス権限７１２の設定方法を説明する。
【００８６】
まず、最上位のフォルダである”/”（ルート）について、以上の方法により参照権限を有する利用者を求める。次に、”/”（ルート）直下のフォルダである”folder1” について、同じ方法により参照権限を有する利用者を求め、当該利用者のうち”/”（ルート）について参照権限を有する利用者のみを”folder1” について参照権限を有する利用者であると決定する。
【００８７】
次に、”folder1”直下のフォルダである”folder2” について、同じ方法により参照権限を有する利用者を求め、当該利用者のうち”folder1”について参照権限を有する利用者のみを”folder2” について参照権限を有する利用者であると決定する。同様の方法で、次々と下位フォルダーについて参照権限を有する利用者を決定する。
【００８８】
最後に、”folderN”直下のファイル”the_file”について、同じ方法により参照権限を有する利用者を求め、当該利用者のうち”folderN”について参照権限を有する利用者のみを”the_file”について参照権限を有する利用者であると決定する。そして、”the_file”について参照権限を有する利用者（ユーザＩＤ）をユーザＩＤ７１３に設定し、当該ユーザＩＤ７１３に対応する参照可否に”r”を設定する。また、”all_users”から”the_file”について参照権限を有する利用者（ユーザＩＤ）を除いた利用者（ユーザＩＤ）をユーザＩＤ７１３に設定し、当該ユーザＩＤ７１３に対応する参照可否に” ”（スペース）を設定する。
【００８９】
以上のような方法により、利用者別アクセス権限７１２を適切に設定することができる。
【００９０】
このように、参照権限を有する利用者を識別する情報と、参照権限を有さない利用者を識別する情報を記憶することにより、後述するように、検索処理時に利用者を識別する情報によって文字列検索を行うという簡易な方法により、クライアント３の利用者が参照権限を有するか否かを判定することが可能になる。
【００９１】
＜検索要求手段の動作＞
図５は、第１の実施形態における、クライアント装置の検索要求手段３１の動作を説明するためのフローチャートである。
【００９２】
検索要求手段３１は、クライアント３の操作者が入力装置３２を使用して起動する。検索要求手段３１は、起動されると、ログイン処理を行う（Ｓ５０１）。具体的には、表示装置３３に図８のようなログイン画面を表示する。クライアント３の操作者が入力装置３２を使用して利用者ＩＤおよびパスワードを入力し、「実行」ボタンを押すと、入力された利用者ＩＤとパスワードが適切かどうか判定する。なお、上記のようなログイン処理自体は周知技術であるので、これ以上の説明は省略する。
【００９３】
次に、検索要求手段３１は、入力された利用者ＩＤとパスワードが適切であると判定した場合、表示装置３３に検索要求画面を表示する（Ｓ５０２）。図９に検索要求画面の表示例を示す。図９において、検索要求画面は、検索条件部Ｇ９１、検索結果部Ｇ９２および「検索」、「終了」のボタンから構成されている。クライアント３の操作者は、入力装置３２を使用して検索条件部Ｇ９１の各項目を入力する。検索条件部Ｇ９１に入力した項目は検索条件となり、例えば、アクセス日時に”>2007.10.12 12:00:00”を入力した場合、２００７年１０月１２日の１２時より後でアクセスされたファイルがファイル検索サーバ６において検索対象となる。なお、検索条件部Ｇ９１の入力項目は、図示した項目に限る必要はなく、例えばファイル名等、インデックスファイル７１のデータ項目と合わせて決めればよい。さらに、インデックスファイル７１のデータ項目にない項目であっても、検索対象ファイル２２の属性情報または記憶内容と照合可能な項目であれば、どのような項目であってもよい。
【００９４】
検索結果部Ｇ９２には、ファイル検索サーバ６によって得られた検索結果がスクロール表示される。ここで、検索結果部Ｇ９２には、例えば図１０に示す内容が表示される（Ｓ５０７）。つまり、”server1.somecompany.co.jp/financial/074q/file2”、”server1.somecompany.co.jp/mailbox/user3/file2”、および” server1.somecompany.co.jp/section1/user3/file1”の３つのファイルが、検索条件式に合致したファイル（例）である。
【００９５】
なお、検索結果部Ｇ９２には、図１０に示す他に、検索結果に含まれる任意のデータ項目（例えば利用者別アクセス権限７１２）をそのまま、あるいは編集して表示することができる。
検索要求手段３１は、検索要求画面表示（Ｓ５０２）後、検索ボタンまたは終了ボタンが押下されるのを待つ（Ｓ５０３、Ｓ５０４）。検索ボタンが押された場合、すなわち検索要求を検知した場合（Ｓ５０３でＹＥＳの場合）、検索要求処理（Ｓ５０６、Ｓ５０６、Ｓ５０７）を行う。終了ボタンが押された場合、すなわち終了要求を検知した場合（Ｓ５０４でＹＥＳの場合）、処理を終了する。
【００９６】
検索要求手段３１は、検索要求を検知した場合（Ｓ５０３でＹＥＳの場合）、検索条件部Ｇ９１の入力内容から、検索条件を作成し、検索手段６２に送信する（Ｓ５０５）。例えば、アクセス日時に”>2007.10.12 12:00:00”が入力された場合、”Search * (accesstime>2007.10.12 12:00:00)”といった検索条件式を作成し、ログイン画面で入力された利用者ＩＤとともに、検索手段６２に送信する。ここで、検索条件式は検索手段６２によって解釈される式であり、検索手段６２が解釈可能な構文規則等に従って作成すればよい。
【００９７】
検索要求手段３１は、検索条件式を検索手段６２に送信した後、検索手段６２から検索結果を受信するまで待つ（Ｓ５０６）。検索結果を受信すると、検索結果を検索要求画面の検索結果部Ｇ９２に表示し（Ｓ５０７）、再び、検索ボタンまたは終了ボタンが押下されるのを待つ（Ｓ５０３、Ｓ５０４）。
【００９８】
＜検索処理＞
図６は、第１の実施形態における、ファイル検索サーバ６の検索手段６２の動作を説明するためのフローチャートである。
【００９９】
検索手段６２は、ファイル検索サーバ６がクライアント３からの検索要求を受信すると、ファイル検索サーバ６により起動される。検索手段６２は、まず、全てのインデックスレコード７１０を参照して、クライアント３の操作者が参照権限を有しており、かつ検索要求に含まれる検索条件と合致するファイル（インデックスレコード７１０）を選択する（Ｓ６０１）。具体的には、クライアント３から受信した検索要求に含まれる利用者ＩＤ（すなわち、ログイン画面で入力された利用者ＩＤ）と、インデックスレコード７１０の参照可否７１４が”r”であるユーザＩＤ７１３を照合し、一致するユーザＩＤ７１３が設定されているファイル（インデックスレコード７１０）について、クライアント３の操作者が参照権限を有していると判定する。また、検索要求に含まれる検索条件と合致するファイル（インデックスレコード７１０）の選択については、例えば、検索条件(式)が”Search * ((accesstime>2007.10.12 12:00:00)&(keyword=”０７年度”))”である場合、アクセス日時７１５に２００７年１０月１２日の１２時より後の日時が設定されている全てのインデックスレコード７１０を選択する。
【０１００】
次に、検索手段６２は、検索条件(式)にキーワード指定が含まれているかどうか判定する（Ｓ６０２）。含まれている場合（例えば、上記の検索式のようにkeyword=”０７年度”といった条件が指定されている場合）、Ｓ６０１において選択した全ファイルについて、キーワード検索を実行し（Ｓ６０３）、検索結果として送信対象とすべきファイル（インデックスレコード７１０）を確定する。
【０１０１】
一方、例えば、検索条件(式)が”Search * (accesstime>2007.10.12 12:00:00)”である場合には、検索条件式にキーワード指定が含まれていないのでキーワード検索は行わず、Ｓ６０１において選択したファイル（インデックスレコード７１０）全てを送信対象とする（Ｓ６０２でＮＯの場合）。
【０１０２】
検索手段６２は、以上の処理によって送信対象とするファイル（インデックスレコード７１０）を決定した後、送信対象としたファイルのインデックスレコード７１０の全てについて、データ項目（ファイル名７１１、利用者別アクセス権限７１２、アクセス日時７１５およびファイル記憶場所７１６）を検索結果としてクライアント３に送信し（Ｓ６０４）、処理を終了する。
【０１０３】
＜キーワード検索処理＞
図７は、第１の実施形態における、ファイル検索サーバ６の検索手段６２によるキーワード検索処理（Ｓ６０３）を説明するためのフローチャートである。
【０１０４】
検索手段６２は、Ｓ６０１の処理で選択されたファイル（図７についての以降の説明で「選択ファイル」という。）について、ファイル記憶場所７１６を参照して当該ファイルを取得し（Ｓ７０１）、検索条件式のキーワード条件が合致するかを判定する（Ｓ７０２）。キーワード条件が合致するかの判定方法そのものは周知の技術であるので詳述しないが、例えば”keyword=”０７年度””という検索条件が指定されている場合、”０７年度”という文字を含むファイルを、”keyword not = ０７年度”という検索条件が指定されている場合、”０７年度”という文字を含まないファイルを合致するファイルと判定すればよい。このほか、さまざまな論理式を組み合わせてキーワード条件とすることができる。
【０１０５】
続いて、検索手段６２は、キーワード条件が合致する場合（Ｓ７０２でＹＥＳの場合）、選択ファイルを送信対象とし（Ｓ７０３）、合致しない場合（Ｓ７０２でＮＯの場合）、選択ファイルを送信対象外とする（Ｓ７０４）。
【０１０６】
（２）第２の実施形態
＜インデックスファイルのデータ構造＞
図１１は、本発明に係る第２の実施形態における、インデックスファイル７１のデータ構成図である。なお、第２の実施形態おける、ファイル検索システムのシステム構成は、第１の実施形態（図１）と同一であるので説明を省略する。
【０１０７】
第２の実施形態におけるインデックスファイル７１のデータ構成は、第１の実施形態のそれとは利用者別アクセス権限７１２の構成のみが異なるだけで、その他の構成は同一である。すなわち、第１の実施形態においては、利用者別アクセス権限７１２に全てのユーザＩＤ７１３と参照権限７１４を対応付けて設定している。このような方法は検索時に容易に参照権限の有無を判定できるという点では優れており、特に、全てのユーザＩＤ７１３の数が少数（例えば１００以下）であり、かつ新たな利用者の追加等がない場合には望ましい。
【０１０８】
しかしながら、一般にファイルサーバ１の利用者数は多数（たとえば１０００以上）であることも多く、そのような場合、全てのユーザＩＤ７１３と参照権限７１４を対応付けて設定しようとすると、利用者別アクセス権限７１２の記憶容量が大きくなるというデメリットもある。
【０１０９】
また、ファイルサーバ１の利用者が新たに追加される等により、インデックスレコード７１０作成後に利用者管理テーブル２１０の内容が変更された場合には、変更後の実際の参照権限と、利用者別アクセス権限７１２が異なることになる。従って、参照権限を有する利用者が検索しても、ファイルが検索結果として表示されない等の不都合が発生する。この不都合は、例えば、ファイルサーバ１において、利用者管理テーブル２１０の変更有無を監視するプロセスを走行させておき、利用者管理テーブル２１０の内容が変更されるたびにインデックスレコード７１０の利用者別アクセス権限７１２を適切に更新することによって解決可能ではあるが、そのような解決方法は、ファイルサーバ１の負荷増大にもつながる。
【０１１０】
そこで、ファイルサーバ１の負荷を増大させることなく上記の不都合を解消するためには、利用者別アクセス権限７１２に全てのユーザＩＤ７１３と参照権限７１４を対応付けて設定しておくのでなく、当該ファイルへの参照権限を有する利用者を、可能な限りユーザＩＤに依存しない論理式によって表現し、この論理式を利用者別アクセス権限７１２に設定することが望ましい。例えば、あるフォルダ１に対して参照権限を有する利用者を表現する論理式が”condition1”であり、そのフォルダ１の直下のフォルダ２について参照権限を有する利用者を表現する論理式が参照権限２２４によれば”condition2”である場合、フォルダ２に対して参照権限を有する利用者を表現する論理式は”condition1”&”condition2”である。
【０１１１】
従って、絶対パスの最上位フォルダから始めて、絶対パスを次々に下位にたどり、論理式を次々とアンド条件で連ねることで、最終的にファイルに対して参照権限を有する利用者を表現する論理式を求めることができる。そして、この論理式を利用者別アクセス権限７１２に設定し、検索手段６２が利用者別アクセス権限７１２に設定された論理式を解釈して、参照権限を有するかどうかを判定することで、クライアント３の操作者が参照権限を有するファイルのみを検索結果として表示装置３３に表示することが可能になる。
【０１１２】
ただし、このように単に論理式をアンド条件で連ねる場合には、フォルダ階層が深くなるほど論理式が長くなり、その結果、利用者別アクセス権限７１２が増大するとともに、検索手段６２による論理式解釈処理が複雑になる。
【０１１３】
従って、論理式をできる限り短く、かつ単純にすることが望ましい。これを実現するために、本実施形態では、参照権限を有する利用者を識別する情報と、参照権限を有さない利用者を識別する情報を記憶する。これにより、検索処理時に利用者を識別する情報によって文字列検索を行うという簡易な方法を用いることができ、クライアント３の利用者が参照権限を有するか否かを判定することができるようになる。
【０１１４】
ここで、第２の実施形態における、利用者別アクセス権限７１２の設定方法、およびそのようの設定する場合の参照権限有無を判定する方法について、説明する。
【０１１５】
ファイル管理テーブル２２０において、参照権限２２４の設定内容としては、第１の実施形態と同様、”-, -,-”、”-, -, r”、”-, r, -”、”-, r, r”、”r, -, -”、”r, -, r”、”r, r, -”、”r, r, r”の８通りしか存在しない。ただし、以上の設定内容において”-”はスペースが設定されていること、すなわち参照権限がないことを示している。
【０１１６】
そこで、この８通りの設定内容のそれぞれについて、当該フォルダまたはファイルのオーナ、ユーザグループをそれぞれ”the_user”、”the_group”と表記し、該当する利用者が存在しないことを” no_user”、全ての利用者を”all_users”と表記して、参照権限を有さない利用者、または参照権限を有する利用者を示すと、以下のi)〜viii)に示すとおりである。
【０１１７】
i)〜viii)において、()内の文字列は、許可条件７１７、不許可条件７１８に設定される文字列を示している。例えば、「参照権限を有さない利用者：”no_user”」と記載した場合、不許可条件７１８には何も設定されず（＝空白が設定され）、「参照権限を有さない利用者：”the_user”or”the_group”」 と記載した場合、不許可条件７１８には”Uthe_user Gthe_group”が設定され（”the_user”が示すユーザＩＤの先頭に区切り文字”U”を付け、”the_group”が示すグループＩＤの先頭に区切り文字”G”を付けて間に空白を置いて設定）、「参照権限を有する利用者：”all_users”」と記載した場合、許可条件７１７には”all_users”の文字列が設定されることを示している。他の設定内容も同様である。なお、UやGは区切り文字であり、Uthe_userやGthe_groupは、例えばU 1やG 1（the_userやthe_groupには数字が入る）のように標記される。
【０１１８】
ここで、ある利用者が参照権限を有するか否かの判断は、次のように行う。まず当該利用者のユーザＩＤおよび、当該利用者が所属する全てのユーザグループのグループＩＤを取得する。当該利用者が所属する全てのユーザグループのグループＩＤは、利用者管理テーブル２１０を参照することで取得できる。以下の説明では、取得したユーザＩＤを”user”、グループＩＤを”grp1”…”grpN”と記載する。
【０１１９】
次に、”Uuser”（”user”が示すユーザＩＤの先頭に区切り文字”U”を付けた文字列）、”Ggrp1”（”grp1”が示すグループＩＤの先頭に区切り文字”G”を付けて結合した文字列）、…”GgrpN”のN+1個の文字列すべてが、不許可条件７１８に設定した文字列に含まれ、かつ”UuserGgrp1”（”user” が示すユーザＩＤの先頭に区切り文字”U”を付けた文字列と、”grp1”が示すグループＩＤの先頭に区切り文字”G”を付けを付けた文字列を結合した文字列）、…”UuserGgrpN”のN個の文字列のいずれも、不許可条件７１８に設定した文字列に含まれない場合は参照権限を有さないと判断する。
【０１２０】
参照権限を有さないと判断しなかった場合は、”Uuser”と”Ggrp1”、…”GgrpN”のN個の文字列のうちから選んだm個（m=0またはm>1）の文字列の結合文字列（”Uuser”、”UuserGgrp1”、” UuserGgrp1Ggrp2”等）または” Ggrp1”、…” GgrpN”のN個の文字列のうちから選んだm個（m>1）の文字列の結合文字列（”Ggrp1”、” Ggrp1Ggrp2”等）のいずれかが許可条件７１７に設定した文字列に含まれるか判定し、含まれる場合には参照権限を有すると判断し、いずれも含まれない場合には参照権限を有さないと判断する。
【０１２１】
以下、許可条件７１７及び不許可条件７１８の設定内容について説明する。本実施形態では、許可条件７１７と不許可条件７１８のand条件を取ることによって、参照（アクセス）権限を有する利用者が決定される。()内は、インデックスファイル上での表現方法を示している。
【０１２２】
i)参照権限２２４の設定内容が”-, -, -”の場合
参照権限を有さない利用者：”no_user”（ ）
参照権限を有する利用者：” no_user” （ ）
ii)参照権限２２４の設定内容が”-, -, r”の場合
参照権限を有さない利用者：”the_user”or”the_group”（Uthe_user Gthe_group）
参照権限を有する利用者：” all_users” （all_users）
iii)参照権限２２４の設定内容が”- , r , - ”の場合
参照権限を有さない利用者：”the_user” （Uthe_user）
参照権限を有する利用者：”the_group” （Gthe_group）
iv)参照権限２２４の設定内容が”-, r , r ”の場合
参照権限を有さない利用者：” the_user” （Uthe_user）
参照権限を有する利用者：” all_users” （all_users）
v)参照権限２２４の設定内容が”r, -, -”の場合
参照権限を有さない利用者：” no_user” （ ）
参照権限を有する利用者：” the_user” （Uthe_user）
vi)参照権限２２４の設定内容が”r ,- , r ”の場合
参照権限を有さない利用者：” the_group”and not”the_user”
（Gthe_group Uthe_userGthe_group）
参照権限を有する利用者：” all_users” （all_users）
vii)参照権限２２４の設定内容が”r, r, -”の場合
参照権限を有さない利用者：” no_user” （ ）
参照権限を有する利用者：”the_user”or”the_group” （Uthe_user Gthe_group）
viii)参照権限２２４の設定内容が”r, r, r”の場合
参照権限を有さない利用者：” no_user” （ ）
参照権限を有する利用者：” all_users” （all_users）
【０１２３】
ここで、以下に説明するように、例えば”/folder1/folder2”というフォルダー階層において、” folder1”フォルダの許可条件７１７、不許可条件７１８が上記のi)〜viii)である場合、”folder2”フォルダについて当該フォルダの参照権限２２４から導かれる許可条件７１７、不許可条件７１８（上記のi)〜viii)のいずれかである）を組み合わせることで、”folder2”フォルダの許可条件７１７、不許可条件７１８を求めることができる。
【０１２４】
”folder1”フォルダの不許可条件７１８は、空白、ユーザＩＤ、グループＩＤまたはユーザＩＤとグループＩＤの結合文字列を、それらの間に空白を置いていくつか結合した文字列である。この文字列が空白の場合には、”folder2”フォルダについて当該フォルダの参照権限２２４から導かれる不許可条件７１８の文字列により、また空白でない場合には、”folder1”フォルダの不許可条件７１８の文字列に、”folder2”フォルダについて当該フォルダの参照権限２２４から導かれる不許可条件７１８の文字列を、それらの間に空白を置いて結合させることで”folder2”フォルダの不許可条件７１８を求めることができる。
【０１２５】
従って、”folder2”フォルダの不許可条件７１８も、空白、ユーザＩＤ、グループＩＤまたはユーザＩＤとグループＩＤの結合文字列を、それらの間に空白を置いていくつか結合した文字列になる。そして、最上位の”/”（ルート）フォルダの不許可条件７１８は、空白、ユーザＩＤ、グループＩＤまたはユーザＩＤとグループＩＤの結合文字列を、それぞれの間に空白を置いていくつか結合した文字列である。よって、全てのフォルダの不許可条件７１８も、同様に、空白、ユーザＩＤ、グループＩＤまたはユーザＩＤとグループＩＤの結合文字列を、それらの間に空白を置いていくつか結合した文字列になる。  さらに、フォルダ内のファイルの不許可条件７１８も、空白、ユーザＩＤ、グループＩＤまたはユーザＩＤとグループＩＤの結合文字列を、それらの間に空白を置いていくつか結合した文字列になる。
【０１２６】
”folder1”フォルダの許可条件７１７は、空白、”all_users”、 またはユーザＩＤとグループＩＤを、その間に空白を置いていくつか結合した文字列である（ユーザＩＤのみの場合、グループＩＤのみの場合、後で示すユーザＩＤとグループＩＤの結合文字列も含む）。この文字列が空白の場合には空白により、”all_users”の場合には”folder2”フォルダについて当該フォルダの参照権限２２４から導かれる許可条件７１７の文字列により、”folder2”フォルダの許可条件７１７を求めることができる。
【０１２７】
また、”folder1”フォルダの許可条件７１７が、ユーザＩＤとグループＩＤを、空白を置いていくつか結合した文字列である場合、”folder2”フォルダについて当該フォルダの参照権限２２４から導かれる許可条件７１７の文字列が空白の場合には空白により、”all_users”の場合には”folder1”フォルダの許可条件７１７により”folder2”フォルダの許可条件７１７を求めることができる。
【０１２８】
また、”folder1”フォルダの許可条件７１７、”folder2”フォルダについて当該フォルダの参照権限２２４から導かれる許可条件７１７のいずれも、ユーザＩＤとグループＩＤを、その間に空白を置いていくつか結合した文字列である場合は、各ユーザＩＤ、グループＩＤを結合させ、同一の結合結果および許可条件７１７としてありえない結合は除き、これらを空白を置いていくつか結合した文字列によって”folder2”フォルダの許可条件７１７を求めることができる。
【０１２９】
例えば、”folder1”フォルダの許可条件７１７が”Uthe_user1 Gthe_group1”で、”folder2”フォルダについて当該フォルダの参照権限２２４から導かれる許可条件７１７が”Uthe_user2 Gthe_group2”の場合について考える。
【０１３０】
まず、”folder2”フォルダの許可条件７１７は、(user1 or group1)and(user2 or group2)となる。従って、”the_user1“と”the_user2“が同一の場合には”Uthe_user1 Uthe_user1Gthe_group1 Uthe_user1Gthe_group2 Gthe_group1Gthe_group2”と表される。一方、”the_user1“と”the_user2“が異なる場合には”Uthe_user1Gthe_group2 Uthe_user2Gthe_group1 Gthe_group1Gthe_group2”と表される。なお、”the_group1”と”the_group2”が同一の場合は、それぞれ”Uthe_user1 Uthe_user1Gthe_group1 Gthe_group1”、”Uthe_user1Gthe_group1 Uthe_user2Gthe_group1 Gthe_group1”となる。
【０１３１】
以上のように、”folder2”フォルダの許可条件７１７も、空白、”all_users”、またはユーザＩＤとグループＩＤを空白を置いていくつか結合した文字列になる（ユーザＩＤのみの場合、グループＩＤのみの場合、ユーザＩＤとグループＩＤの結合文字列も含む）。そして、最上位の”/”（ルート）フォルダの許可条件７１７は、空白、”all_users”、またはユーザＩＤとグループＩＤを、その間に空白を置いていくつか結合した文字列であるから、全てのフォルダの許可条件７１７は、空白、”all_users”、またはユーザＩＤとグループＩＤを、その間に空白を置いていくつか結合した文字列になり、フォルダ内のファイルの許可条件７１７は、空白、”all_users”、またはユーザＩＤとグループＩＤを、その間に空白を置いていくつか結合した文字列になる。
【０１３２】
以上の方法により、例えば絶対パスが”/folder1/folder2/…/folderN/the_file”であるファイル”the_file”については、上位のフォルダから順に許可条件７１７および不許可条件７１８を求めることで、許可条件７１７および不許可条件７１８を求めて設定することができる。
【０１３３】
このように、第２の実施形態においては、利用者別アクセス権限７１２に許可条件７１７（参照を許可する条件）および不許可条件７１８（参照を許可しない条件）が設定されている。
【０１３４】
従って、検索手段６２は、クライアント３の操作者が参照権限を有しており、かつ検索要求に含まれる検索条件と合致するファイル（インデックスレコード７１０）を選択する（図６のＳ６０１）際、クライアント３から受信した検索要求に含まれる利用者ＩＤ（すなわち、ログイン画面で入力された利用者ＩＤ）および当該利用者ＩＤが属するユーザグループのグループＩＤを使用して、許可条件７１７および不許可条件７１８の文字列検索を行うことで、当該利用者が参照権限を有するか否かを判定することができる。
【０１３５】
すなわち、第1の実施形態と同様、参照権限を有する利用者を識別する情報（許可条件７１７）と、参照権限を有さない利用者を識別する情報（不許可条件７１８）を記憶することにより、検索処理時に利用者を識別する情報（ユーザＩＤおよびグループＩＤ）によって文字列検索を行うという簡易な方法により、クライアント３の利用者が参照権限を有するか否かを判定することができる。また、不許可条件７１８に参照権限を有さない者を追加するだけで、簡単に参照を許可する者を簡単に絞ることができる。よって条件変更がしやすくなり、ファイルサーバ１の負担を軽減することができるようになる。なお、具体的な検索方法は既に説明したとおりである。
【０１３６】
（３）第３の実施形態
図１２は、本発明の第３の実施形態によるファイル検索システムの概略構成を示す図である。
【０１３７】
第３の実施形態においては、クライアント３、ファイルサーバ１、ファイル検索サーバ６およびＬＡＮ４のみを図示しているが、各記憶装置、手段等の表示は記載を省略しただけであり、各クライアント３、各ファイルサーバ１、各ファイル検索サーバ６は、第１及び第２の実施形態と同様の構成を備えている。図１２に示すように、複数のファイル検索サーバ６を、それぞれ１以上のファイルサーバ１とＬＡＮ４によって通信可能に接続し、各クライアント３から複数のファイル検索サーバ６に検索要求を送信することが可能である。
【０１３８】
また、インデックスファイルのデータ構造については、第１及び第２の実施形態で説明したもの（図３及び図１１）の何れを用いても良い。
【０１３９】
なお、本発明に係るファイル検索システムは、システム内に複数のファイルサーバと複数のファイル検索サーバを設けたものであり、図１２の構成は一例に過ぎず、図１２に示される構成以外にさまざまな構成を採ることが可能である。
【０１４０】
（４）その他
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１４１】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【０１４２】
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ-ＲＷ、ＣＤ-Ｒ等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【図面の簡単な説明】
【０１４３】
【図１】本発明に係る第１の実施形態によるファイル検索システムの概略構成を示す図である。
【図２】第１の実施形態における、システムファイルのデータ構成例を示す図である。
【図３】第１の実施形態における、インデックスファイルのデータ構成例を示す図である。
【図４】第１の実施形態における、インデックス作成手段の動作を説明するためのフローチャートである。
【図５】第１の実施形態における、検索要求手段の動作を説明するためのフローチャートである。
【図６】第１の実施形態における、検索手段の動作を説明するためのフローチャートである。
【図７】第１の実施形態における、検索手段のキーワード検索処理を説明するためのフローチャートである。
【図８】第１の実施形態における、ログイン画面を例示する図である。
【図９】第１の実施形態における、検索要求画面を例示する図である。
【図１０】第１の実施形態における、検索要求画面での検索結果の表示内容を例示する図である。
【図１１】本発明に係る第２の実施形態における、インデックスファイルのデータ構成例を示す図である。
【図１２】本発明に係る第３の実施形態における、ファイル検索システムの概略構成を示す図である。
【符号の説明】
【０１４４】
１…ファイルサーバ、１１…ファイル管理手段、２…記憶装置、２１…システムファイル、２２…検索対象ファイル、３…クライアント、３１…検索要求手段、３２…入力装置、３３…表示装置、４…ＬＡＮ、５…記憶装置、５１…検索履歴ファイル、６…ファイル検索サーバ、６１…インデックス作成手段、６２…検索手段、７…記憶装置、７１…インデックスファイル。
【図１】
2010108111.tif 000003
【図２】
2010108111.tif 000004
【図３】
2010108111.tif 000005
【図４】
2010108111.tif 000006
【図５】
2010108111.tif 000007
【図６】
2010108111.tif 000008
【図７】
2010108111.tif 000009
【図８】
2010108111.tif 000010
【図９】
2010108111.tif 000011
【図１０】
2010108111.tif 000012
【図１１】
2010108111.tif 000013
【図１２】
2010108111.tif 000014