これらの技術はいずれも、ファイルサーバに対し網羅的なアクセス(クローリング)を行うことで、どのようなファイルが保存されているか調べ、利用支援システム内にファイルの情報を保持しておくことで、ユーザに対し利便性の高い表示を行ったり管理操作を提供したりする。したがって、常に最新のファイルサーバの状態を調べておく必要がある。
しかし、ファイルサーバの大規模化に伴い、保存されているファイルの数は膨大なものになり、クローリングにより利用支援システム内のファイルの情報を更新するためにかかる時間が増大することが問題視されてきた。また、最初に利用支援システムを導入する時(初期クローリング)だけでなく、日常的な差分の更新(差分クローリング)においても処理時間が増大してしまうことは、ユーザにとって特に大きな問題である。組織内で利用支援システムを使ったユーザサービスの提供開始後も、「ファイルサーバに直接アクセスした時と同じ情報が利用できない」状態をもたらしてしまい、ユーザサービスレベルの低下を引き起こすためである。
本発明は、ユーザの利用を支援するためのシステムに登録されているファイルの情報の更新を効率化することを目的とする。
上記で述べた課題に対し、発明者は、差分クローリングの処理時間を増大させている原因として、実際に生じている差分は非常に小さい割合であるにも関わらず、ファイルサーバに保存されている膨大な数のファイル全体に対しクローリングを行っていることを発見した。組織内のファイルサーバには、数十万〜数十億のファイルが保存されている場合も珍しくないが、そのうちで毎日利用されているファイルは、0.01%に満たない場合も少なくない。そのようなファイルサーバにおいては、必要量の実に10,000倍もの情報をファイルサーバから取得して差分クローリングを行っていることになり、このことこそが処理時間を増大させている原因であると言える。必要最低限の情報のみファイルサーバから取得するように処理を改めるに際し、発明者は、ファイルサーバが管理目的で出力するアクセスログを用いて、真に情報を更新する必要のあるファイルの数を絞り込むことに想到した。以下に対応案の概要について説明する。
対応策1: ファイルサーバのアクセスログには、いつ・どのオブジェクト(ファイルまたはフォルダ)に・どのユーザがアクセスしたかが記録されている。アクセスログを参照してクローリング対象のファイルを絞り込むことで、差分クローリングを高速化することができる。
対応策1−1: ファイルサーバのアクセスログに記載のあったフォルダ・ファイルのアクセス情報を用いて、ファイルの情報を更新する。
対応策1−2: ファイルサーバのアクセスログに記載のあったフォルダ・ファイルのリストを参照し、ファイルサーバをクローリングして、ファイルの情報を更新する。
また、ファイルサーバにおける多様な利用形態に対応するため、下記の対応策によりアクセスログを利用するという解決策に想到した。
利用形態2: 初期クローリングに要する処理時間が増大している場合でも、「その時点で各ユーザが必要としているファイルが登録されている」なら、ユーザは利用支援システムの利用を部分的に開始できる。
利用形態3: ファイルサーバがアクセスログを出力する際、内部的な管理用文字列を付与した形でフォルダ名を出力する場合がある。
利用形態4: ファイルサーバに対し、情報システム管理者が管理操作のために行った操作についてもアクセスログが出力されてしまう。ウィルスチェック・バックアップなどの管理操作においては、膨大な件数のアクセスログが出力されてしまう。
利用形態5: ファイルサーバに対してユーザが行う操作の中には、フォルダ単位で行われ、サブツリー内のファイル全てに影響が及ぶものがある。例えば、フォルダの名称を変更すると、サブツリー内のファイル全てのパス名が変わる。また、フォルダの圧縮を行うと、サブツリー内のファイル全てを含む圧縮ファイルが出力される。また、フォルダの削除を行うと、サブツリー内のファイルも全て削除される。このような操作によるファイルアクセスを正しく差分クローリングで反映させるためには、フォルダに対する1件のアクセスログだけでは不十分である。
利用形態6: ファイルサーバ内のファイルを用いてユーザが業務を実行する場合、単一の業務を遂行する時間内においては、同じファイルに対して何度もアクセスを行うことが一般的である。例えば、報告書を半日かけて執筆する場合、少し書き進めるたびに文書ファイルを何度も上書き保存することなどである。この場合、アクセスログには同一のファイルに対するアクセスが何度も出力され、アクセスログを参照して差分クローリングを行うと、同じファイルについての情報を何度も取得・更新してしまうことになる。ただし、例えば、まずファイルを開いて閲覧し、その後で内容の修正を行って上書き保存し、完成後にアクセス権限を変更したような場合には、それぞれ異なった種類(内容のRead・内容のWrite・属性のWrite)のアクセスのログが出力されるため、単に最後に出力されたアクセスログを代表として用いて済ませる方式では、正しく情報を更新することができない。
利用形態7:ユーザが利用するコンピュータ端末の機能により、ユーザが意図的に行っていないアクセスがサーバに対して行われる場合がある。例えば、文書や写真のサムネイルを表示させるためにコンピュータ端末がまとめてファイルを読み込んでキャッシュ化しておく、ファイルサーバへのネットワーク接続が切断しても利用を続けられるようにコンピュータ端末がまとめてファイルを読み込んでキャッシュしておく、など。これらのアクセスが行われた場合、本来は情報の更新を行う必要のないファイルについてもアクセスログが出力されてしまう。
利用形態8: ファイルサーバ内のファイルを用いてユーザが業務を実行する場合、単一の業務に必要なファイルは、フォルダ構造上近傍のフォルダに集めて保存することが一般的である。例えば、特許明細書を執筆する場合、本文を執筆する文書ファイルと図を執筆する画像ファイルとを同じフォルダに置いて、両者の執筆を並行して進めることなどである。このようなフォルダに存在するファイルは特に利用頻度の高いものであり、優先的に利用支援システムに情報を登録できればユーザの利便性を改善することができる。
利用形態9: ファイルサーバのアクセスログ上は、ファイルに対するアクセスとフォルダに対するアクセスの種類を明示せずに出力される。このため、ファイルについてのみ情報を保持する利用支援システムや、ファイルとフォルダについてそれぞれ異なる管理機能を提供する利用支援システムにおいては、アクセスログに出力される情報だけでは正しく更新処理を行うことができない。
利用形態10: ファイルサーバのアクセスログ上は、差分クローリングを行うプロセスがアクセス権限を付与されていないファイルに対するアクセスについても出力される。このため、アクセスログに記載されているファイルに対し情報を取得しようとしても、失敗してしまう場合がある。
利用形態11: ファイルサーバのファイルに対して行われるアクセスは、書き込みよりも読み取りの方が多い。書き込みにおいては、ファイルの内容に対する書き込みであっても、アクセス権限に対する書き込みであっても、ファイルの属性情報に対する書き込みであっても、書き込まれた内容についてはアクセスログには出力されない。また、ファイルサーバが保持するファイルの属性値としての最終アクセス日時と、アクセルログ上で読み取りが行われたと出力されている日時との間に、差がある場合がある。
対応策2: 初期クローリングとしてファイルサーバに保存されているファイル全体にアクセスしてファイルの情報を取得することを避け、ファイルの情報を保持するDBを初期化するのみで差分クローリングを行うことにより、直近で利用のあったファイルに対して優先的に情報を取得・登録することができる。
対応策3: ファイルサーバごとに、管理用文字列を辞書として保持しておき、アクセスログを読み込む際にフォルダ名を標準化して保持する。
対応策4: アクセスログのうち、情報システム管理者による管理操作には、一般のユーザによるアクセスにはない特徴がある場合が多い。すなわち、アクセスを行ったユーザが特権ユーザであること・夜間や週末の時間帯に操作が行われること・ユーザが作成するオフィス文書などではなく、システムファイルに対して操作が行われることである。したがって、アクセスを行ったユーザ・アクセスが行われた時間帯・対象ファイルの拡張子に対する条件を辞書として保持しておき、アクセスログを読み込む際に条件と照合して除外することで、管理操作の影響を避けることができる。
対応策5: 発明者が調査を行った結果、サブツリー内に影響を及ぼすフォルダ操作において、フォルダに対するアクセスログを1件だけ出力するファイルサーバの種類と、(どのようなフォルダ操作に対しても)サブツリー内の全てのファイルに対するアクセスとして別々にアクセスログを出力するファイルサーバの種類とが存在することが分かった。このことに基づき、発明者は、ファイルサーバごとに、「フォルダに対するアクセスを示すアクセスログがあったら、サブツリー内の全てのファイルに対しクローリングを行って情報を更新する必要があるか」を示すフラグを辞書として保持しておき、フラグに従って「フォルダに対するアクセスログ」を読み込んだ場合の処理を振り分ける対応策を考えた。この対応策により、最小限のファイルに対する情報取得処理でファイルの情報を正しく更新することができる。
対応策6: ファイルサーバが出力したアクセスログを、同一のファイルに対するアクセスログをまとめて集約する。また、アクセスログを読み込むたびに、アクセスの種類に関するフラグ変数を更新して、どのような種類のアクセスが行われたかをまとめて保持する。これにより、同一のファイルに対してユーザが何度もアクセスを行った場合でも、ファイルサーバから1回情報を取得するだけで差分クローリングに必要な情報を得ることができる。
対応策7: 発明者が調査を行った結果、コンピュータ端末により(ユーザの意図とは別に)行われるアクセスは、特定のフォルダに存在するサブツリー内のファイルに対し網羅的な読み込み処理が行われるという特徴があることが分かった。このことに基づき、発明者は、あるフォルダに存在するサブツリー内で利用支援システムに登録されているファイル全てに対し読み込みのアクセスログが出力されていた場合、読み込みのアクセスログのみ出力されているファイルはファイルサーバから情報を取得する対象から除外する対応策を考えた。これにより、コンピュータ端末によるアクセスが行われただけのファイルに対して、ファイルサーバから情報を取得することを省略することができる。
対応策8: ファイルサーバが出力したアクセスログを、フォルダごとに集計し、それぞれのフォルダにおいてアクセスが行われたファイルの数を調べる。この数の多いフォルダからファイルの情報を取得し利用支援システムに登録していくことで、ユーザが高頻度に利用するファイルから優先してファイルの情報を利用支援システムに登録することができる。
対応策9: アクセスログから作成したリストを参照してファイルサーバから情報を取得する際、まず、ファイルサーバに存在するものがファイルなのかフォルダなのかを調べて、ファイルなのであれば、ファイルサーバから情報を取得し利用支援システムを更新する。これにより、利用支援システムが保持する、ファイルサーバ内のファイルについての情報を正しく更新することができる。
対応策10: アクセスログから作成したリストを参照してファイルサーバから情報を取得する際、まず、ファイルに対するアクセス権限があるかを調べて、アクセス権限があれば、ファイルサーバから情報を取得し利用支援システムを更新する。差分クローリングを行うプロセスがアクセス権限を持たないファイルは、利用支援システムの管理対象外と考えるべきであり、この対応策により、利用支援システムが保持する、ファイルサーバ内のファイルについての情報を正しく更新することができる。
対応策11: 利用支援システムの多くにおいて、アクセスログが出力されたファイルのうち、Readアクセスのみ出力されたファイルは、読み取りは行われたが書き込みは行われていないことを意味する。したがって、登録されている情報のうち「最終アクセス日時」は更新する必要があるが、「最終更新日時」、「所有者」、「アクセス権限」、「ファイルサイズ」などのその他の情報は更新する必要がない。したがって、ファイルサーバごとに「最終アクセス日時について、アクセスログからではなくファイルサーバから情報取得する必要があるかどうか」を示すフラグを辞書として保持しておき、アクセスログから作成したリストを参照してファイルサーバから情報を取得する際、Readアクセスのみ出力されたファイルについては、アクセスログから日時を取得して利用支援システムの登録値を更新するか、ファイルサーバから最終アクセス日時を取得して利用支援システムの登録値を更新するか、処理内容を振り分ける対応策を考えた。また、最後に出力されたアクセスがDeleteアクセスであるファイルにおいては、ファイルサーバから情報取得することなくアクセスログの情報のみから利用支援システムにおけるエントリを削除するか、ファイルサーバからファイルの存在情報を取得して利用支援システムにおけるエントリを削除するか、処理内容を振り分ける対応策を考えた。これにより、最小限のファイルに対する情報取得処理でファイルの情報を正しく更新することができる。
上記の対応策を実現するため、下記の手段により解決する手法を提案する。
発明者は、前述した課題を解決することを目的として、ファイルサーバのアクセスログに記載のあったフォルダ・ファイルのアクセス情報を用いて、ファイルの情報を更新する方法を提案する。
また、発明者は、前述した課題を解決することを目的として、ファイルサーバのアクセスログに記載のあったフォルダ・ファイルのリストを参照し、ファイルサーバをクローリングして、ファイルの情報を更新する方法を提案する。
また、発明者は、前述した課題を解決することを目的として、初期状態のDBに対して、ファイルサーバのアクセスログに記載のあったフォルダ・ファイルのリストを参照し、ファイルサーバをクローリングして、ファイルの情報を追加する方法を提案する。
また、発明者は、前述した課題を解決することを目的として、ファイルサーバごとに、管理用文字列を辞書として保持しておき、アクセスログを読み込む際にフォルダ名を標準化して保持する方法を提案する。
また、発明者は、前述した課題を解決することを目的として、アクセスを行ったユーザ・アクセスが行われた時間帯・対象ファイルの拡張子に対する条件を辞書として保持しておき、アクセスログを読み込む際に条件と照合して除外する方法を提案する。
また、発明者は、前述した課題を解決することを目的として、ファイルサーバごとに、「フォルダに対するアクセスを示すアクセスログがあったら、サブツリー内の全てのファイルに対しクローリングを行って情報を更新する必要があるか」を示すフラグを辞書として保持しておき、フラグに従って「フォルダに対するアクセスログ」を読み込んだ場合の処理を振り分ける方法を提案する。
また、発明者は、前述した課題を解決することを目的として、ファイルサーバが出力したアクセスログを、アクセスの種類に関するフラグ変数を更新しながら、同一のファイルに対するアクセスログをまとめて集約する方式を提案する。
また、発明者は、前述した課題を解決することを目的として、あるフォルダに存在するサブツリー内で利用支援システムに登録されているファイル全てに対し読み込みのアクセスログが出力されていた場合、読み込みのアクセスログのみ出力されているファイルはファイルサーバから情報を取得する対象から除外する方式を提案する。
また、発明者は、前述した課題を解決することを目的として、ファイルサーバが出力したアクセスログを、フォルダごとに集計し、それぞれのフォルダにおいてアクセスが行われたファイルの数を調べ、この数の多いフォルダからファイルの情報を取得していく方式を提案する。
また、発明者は、前述した課題を解決することを目的として、アクセスログから作成したリストを参照してファイルサーバから情報を取得する際、まず、ファイルサーバに存在するものがファイルなのかフォルダなのかを調べて、ファイルなのであれば、ファイルサーバから情報を取得する方式を提案する。
また、発明者は、前述した課題を解決することを目的として、アクセスログから作成したリストを参照してファイルサーバから情報を取得する際、まず、ファイルに対するアクセス権限があるかを調べて、アクセス権限があれば、ファイルサーバから情報を取得する方式を提案する。
また、発明者は、前述した課題を解決することを目的として、ファイルサーバごとに「最終アクセス日時について、アクセスログからではなくファイルサーバから情報取得する必要があるかどうか」を示すフラグを辞書として保持しておき、アクセスログから作成したリストを参照してファイルサーバから情報を取得する際、Readアクセスのみ出力されたファイルについては、アクセスログから日時を取得するか、ファイルサーバから最終アクセス日時を取得するか、処理内容を振り分け、最後に出力されたアクセスがDeleteアクセスであるファイルについては、アクセスログから削除された情報を取得するか、ファイルサーバからファイルの存在情報を取得するか、処理内容を振り分ける方式を提案する。
本発明によれば、大量のファイルが保存されたファイルサーバにおいて、ユーザの利用を支援するためのシステムに登録されているファイルの情報の更新を効率化することができる。
以下、添付図面を参照しながら、本発明に係る業務文書処理装置の形態例を説明する。勿論、後述する形態例やその説明は一例であり、本発明には様々な変形例が考えられる。
(1)形態例
(1−1)システム構成
図1〜図20は、以下で説明する形態例を例示する図であり、これらの図において、同一の符号を付した部分は同一物を表し、基本的な構成及び動作は同様であるものとする。
図1は、本発明の実施の形態による業務文書処理装置の内部構造例を概略的に示す機能ブロック図である。図1に示す業務文書処理装置は、データを表示するための表示装置100、表示されたデータに対してメニューを選択するなどの操作を行うためのキーボード101、マウスなどのポインティングデバイス102、必要な演算処理、制御処理などを行う中央処理装置103、中央処理装置103での処理に必要なプログラムを格納するプログラムメモリ104、中央処理装置103での処理に必要なデータを格納するデータメモリ105、利用支援システムが持つファイル属性DB106、アクセスログ107、ファイルサーバ108を備えている。なお、ファイルサーバは複数台存在する場合もある。
中央処理装置103は、インポート処理部109と、アクセスログ読み込み処理部110と、網羅アクセス除外処理部115と、優先度付与処理部116と、クローリング併用処理部117とを備えている。この形態例の場合、コンピュータによって構成され、インポート処理部109と、アクセスログ読み込み処理部110と、網羅アクセス除外処理部115と、優先度付与処理部116と、クローリング併用処理部117は、いずれもコンピュータ上で実行されるプログラムの機能の一部として実現される。なお、これらのプログラムは、プログラムメモリ104に格納されている。アクセスログ読み込み処理部110は、フォルダ名標準化処理部111、除外条件確認処理部112、サブツリー網羅処理部113、ファイルまとめ処理部114を備えている。クローリング併用処理部117は、Read_Deleteスキップ処理部118、アクセス権限再確認処理部119、ファイル_フォルダ確認処理部120を備えている。
インポート処理部109は上記の対応策2を実現するものであり、アクセスログ読み込み処理部110は上記の対応策1−1を実現するものであり、フォルダ名標準化処理部111は上記の対応策3を実現するものであり、除外条件確認処理部112は上記の対応策4を実現するものであり、サブツリー網羅処理部113は上記の対応策5を実現するものであり、ファイルまとめ処理部114は上記の対応策6を実現するものであり、網羅アクセス除外処理部115は上記の対応策7を実現するものであり、優先度付与処理部116は上記の対応策8を実現するものであり、クローリング併用処理部117は上記の対応策1−2を実現するものであり、Read_Deleteスキップ処理部118は上記の対応策11を実現するものであり、アクセス権限再確認処理部119は上記の対応策10を実現するものであり、ファイル_フォルダ確認処理部120は上記の対応策9を実現するものである。
データメモリ105に記憶される記憶データは、設定データ121、標準化ルールデータ122、適用除外条件データ123、サーバアクセスデータ124、フォルダアクセスデータ125、ファイルアクセスデータ126、アクセスログデータ127、ファイル属性データ128である。
アクセスログ107はアクセスログデータ127のデータを保持しており、利用支援システムが持つファイル属性DBはファイル属性データ128を保持している。
図2は、データメモリ105に含まれる設定データ121(a)、標準化ルールデータ122(b)、適用除外条件データ123(c)のデータ構造例を示す図である。
設定データ121は、適用除外条件有無200、サブツリー網羅条件有無201、Read_Deleteスキップ条件有無202、網羅アクセス除外条件有無203、インポート処理有無204、フォルダ名標準化ルール205、適用除外条件206を含んでいる。それぞれのファイルサーバごとに設定が行われるので、設定データ121は配列の形で保持される。フォルダ名標準化ルールは、下記に示す標準化ルールデータの配列の形で保持される。適用除外条件は、下記に示す適用除外条件データの形で保持される。
標準化ルールデータ122は、対象文字列207、置換後文字列208を含んでいる。
適用除外条件データ123は、ユーザ条件209、時間帯条件210、拡張子条件211を含んでいる。ユーザ条件209は、0、1、または複数の文字列(ユーザID)を含む配列の形で保持される。時間帯条件210は、0、1、または複数の時間帯を含む配列の形で保持される。拡張子条件211は、0、1、または複数の文字列を含む配列の形で保持される。
図3は、サーバアクセスデータ124、フォルダアクセスデータ125、ファイルアクセスデータ126のデータ構造例を示す図である。
サーバアクセスデータ124は、サーバ名300、フォルダリスト301を含んでいる。フォルダリスト301は、下記に示すフォルダアクセスデータの配列の形で保持される。
フォルダアクセスデータ125は、フォルダ名302、ファイルリスト303、優先度304、サブツリー網羅要否305を含んでいる。ファイルリスト303は、下記に示すファイルアクセスデータの配列の形で保持される。優先度304は、上記の対応策8を実現するために保持する値であり、デフォルト値は0である。また、サブツリー網羅要否305は、上記の対応策5を実現するために保持する値であり、デフォルト値はFALSEである。
ファイルアクセスデータ126は、ファイル名306、最終アクセス日時307、Readのみフラグ308、Readを含むフラグ309、最後にDeleteフラグ310を含んでいる。Readのみフラグ308は、アクセスログに記載されたそのファイルへのアクセスが全てReadアクセスであった場合にTRUEが設定され、デフォルト値はTRUEである。Readを含むフラグ309は、アクセスログに記載されたそのファイルへのアクセスのうち、1件以上がReadアクセスであった場合にTRUEが設定され、デフォルト値はFALSEである。最後にDeleteフラグは、アクセスログに記載されたそのファイルへのアクセスのうち、最後のものが、Deleteアクセスであった場合にTRUEが設定され、デフォルト値はTRUEである。
図4は、データメモリ105に含まれるアクセスログデータ127、ファイル属性データ128のデータ構造例を示す図である。
アクセスログデータ127は、対象オブジェクト400、アクセス日時401、アクセス種別402、アクセスユーザ403を含んでいる。
ファイル属性データ128は、ファイル名404、最終アクセス日時405、最終更新日時406、作成日時407、所有者408、アクセス権限409、ファイルサイズ410、全文データ411、ハッシュ値412を含んでいる。
次に、上記のように構成された本実施形態の業務文書処理装置において行われる処理について説明する。図5は、業務文書処理装置において行われる処理の流れを概略的に示すフローチャートである。図5において、まず、設定画面を表示しユーザからの入力を受け付けて設定データ121に格納する(ステップ500)。この画面については図7を参照して説明する。アクセスログを利用支援システムが持つファイル属性DB106にインポートする(ステップ501)。この処理については、インポート処理部を用いて行うものであり、図6において詳細に説明する。次に、ファイルサーバの情報を定期的に反映させるべく予め設定された時刻に到達したかどうかを調べる(ステップ502)。到達していた場合は(Yes)、ファイルサーバそれぞれについて以下の処理を行うため、インデックスserver_idxを1で初期化する(ステップ503)。server_idx以上のファイルサーバが存在するか否かを調べ(ステップ504)、存在するのであれば(Yes)、アクセスログを読み込む処理を行い(ステップ505)、網羅アクセスを除外する処理を行い(ステップ506)、優先度を付与する処理を行い(ステップ507)、クローリングを併用して利用支援システムが持つファイル属性DB106を更新する(ステップ508)。ステップ505における処理については、アクセスログ読み込み処理部110を用いて行うものであり、図9において詳細に説明する。ステップ506における処理については、網羅アクセス除外処理部115を用いて行うものであり、図14において詳細に説明する。ステップ507における処理については、優先度付与処理部116を用いて行うものであり、図16において詳細に説明する。ステップ508における処理については、クローリング併用処理部117を用いて行うものであり、図17において詳細に説明する。その後、server_idxを1だけインクリメントし(ステップ509)、ステップ504から処理をやり直す。ステップ504においてserver_idx以上のファイルサーバが存在しない場合は(No)、結果画面を表示し(ステップ510)、差分クローリングの間隔として予め設定された時間だけ待機し(ステップ511)、ステップ502から処理をやり直す。ステップ510における画面については図8を参照して説明する。ステップ502において到達していなかった場合も同様に、ステップ511を実行後、ステップ502から処理をやり直す。
図5のステップ501における、インポート処理について、図6に示す詳細フローを参照しながら説明する。まず、ファイルサーバそれぞれについて以下の処理を行うため、インデックスserver_idxを1で初期化する(ステップ600)。server_idx以上のファイルサーバが存在するか調べ(ステップ601)、存在するのであれば(Yes)、設定データ121のインポート処理有無204の値を調べる。FALSEであれば、従来技術と同様に初期クローリングを行い(ステップ603)、TRUEであれば、利用支援システムが持つファイル属性DB106を初期化する(ステップ604)。その後、server_idxを1だけインクリメントし(ステップ605)、ステップ601から処理をやり直す。ステップ601において、server_idx以上のファイルサーバが存在しない場合は(No)、処理を終了する。
図5のステップ505における、アクセスログ読み込み処理について、図9に示す詳細フローを参照しながら説明する。まず、アクセスログに出力された各エントリについて処理を行うため、インデックス変数log_idxを1で初期化する(ステップ900)。log_idx以上のアクセスログが存在するか調べ(ステップ901)、存在するのであれば(Yes)、下記の処理を行う。まず、ファイル名を標準化する処理を行い(ステップ902)、除外条件に適合するか調べる処理を行い(ステップ903)、適合しないならば(ステップ904)、サブツリー網羅に該当するか調べる処理を行い(ステップ905)、該当しないならば(ステップ906)、フォルダ名を登録し(ステップ907)、ファイル名を登録する処理を行う(ステップ908)。ステップ902における処理については、フォルダ名標準化処理部111を用いて行うものであり、図10において詳細に説明する。ステップ903における処理については、除外条件確認処理部112を用いて行うものであり、図11において詳細に説明する。ステップ905における処理については、サブツリー網羅処理部113を用いて行うものであり、図12において詳細に説明する。ステップ908における処理については、ファイルまとめ処理部114を用いて行うものであり、図13において詳細に説明する。ステップ908を行った後、または、ステップ904において適合した場合(Yes)、または、ステップ906において該当した場合は(Yes)、log_idxを1だけインクリメントして(ステップ909)、ステップ901から処理をやり直す。ステップ901においてserver_idx以上のファイルサーバが存在しない場合は(No)、処理を終了する。
図9のステップ902における、フォルダ名標準化処理について、図10に示す詳細フローを参照しながら説明する。まず、設定データ121のフォルダ名標準化ルール205それぞれについて処理を行うため、インデックス変数rule_idxを1で初期化する(ステップ1000)。フォルダ名標準化ルール205にrule_idx以上の配列要素が存在するか調べ(ステップ1001)、存在するのであれば(Yes)、アクセスログデータ127の対象オブジェクト400は、rule_idx番目の配列要素の対象文字列207を含むか調べる(ステップ1002)。含むのであれば(Yes)、該当箇所を置換後文字列208で差し替える(ステップ1003)。その後、rule_idxを1だけインクリメントし(ステップ1004)、ステップ1001から処理をやり直す。ステップ1001においてrule_idx以上の配列要素が存在しない場合は(No)、処理を終了する。
図9のステップ903における、除外条件に適合するか調べる処理について、図11に示す詳細フローを参照しながら説明する。まず、設定データ121の適用除外条件有無200に設定されている値を調べる(ステップ1100)。TRUEであれば、下記の処理を行う。まず、アクセスログデータ127のアクセスユーザ403は、設定データ121の適用除外条件206のユーザ条件209に指定されている文字列のうち1つ以上と同じであるか調べる(ステップ1101)。同じでないのであれば(No)、アクセスログデータ127のアクセス日時401は、設定データ121の適用除外条件206の時間帯条件210で指定されている時間帯のうち1つ以上に含まれないか調べる(ステップ1102)。含まれないのであれば(No)、アクセスログデータ127の対象オブジェクト400は、設定データ121の適用除外条件206の拡張子条件211のうち1つ以上を末尾に含まないか調べる(ステップ1103)。ステップ1101において同じであった場合、または、ステップ1102において含まれる場合(Yes)、または、ステップ1103において含む場合は(Yes)、適用除外条件に適合すると判定し(ステップ1104)、処理を終える。ステップ1100においてFALSEであった場合、または、ステップ1103において含まない場合は(No)、適用除外条件に適合しないと判定し(ステップ1105)、処理を終える。
図9のステップ905における、サブツリー網羅に該当するか調べる処理について、図12に示す詳細フローを参照しながら説明する。まず、設定データ121のサブツリー網羅条件有無201に設定されている値を調べる(ステップ1200)。TRUEであれば、下記の処理を行う。まず、サーバアクセスデータ124におけるフォルダリスト301の中に、フォルダ名302がアクセスログデータ127の対象オブジェクト400に含まれるものが存在するか調べる(ステップ1201)。例えば、フォルダ名302が"\server1\2\3"であるフォルダアクセスデータと、対象オブジェクト400が"server1\2\3\4.txt"であるアクセスログデータは、この条件に適合する。ステップ1201において、存在する場合(Yes)、フォルダ"server1\2\3"に含まれるサブツリーについて網羅的にクローリングを行いファイルサーバから情報を取得する必要がある。すなわち、そのフォルダアクセスデータのサブツリー網羅要否305をTRUEに設定し(ステップ1202)、ファイルリスト303を空にする(ステップ1203)。ステップ1201において、存在しない場合(No)、フォルダリスト301の中に、フォルダ名302がアクセスログデータ127の対象オブジェクト400を含むものが存在するか調べる(ステップ1204)。例えば、フォルダ名302が"server1\2\3"であるフォルダアクセスデータと、対象オブジェクトが"server1\2"であるアクセスログデータは、この条件に適合する。ステップ1204において、存在する場合(Yes)、フォルダ"server1\2"に含まれるサブツリーについて網羅的にクローリングを行いファイルサーバから情報を取得する必要がある。すなわち、親にあたるフォルダ"server1\2"についてのフォルダアクセスデータ(サブツリー網羅要否はTRUEに設定)をフォルダリスト301に追加し(ステップ1205)、子のあたるフォルダ"server1\2\3"についてのフォルダアクセスデータをフォルダリスト301から削除する。ステップ1200においてFALSEであれば、そのまま処理を終了する。
図9のステップ908における、ファイル名を登録する処理について、図13に示す詳細フローを参照しながら説明する。まず、サーバアクセスデータ124におけるフォルダリスト301の中にあるフォルダアクセスデータ125におけるファイルリスト303の中にあるファイルアクセスデータ126の中に、ファイル名306がアクセスログデータ127の対象オブジェクト400と合致するものが存在するか調べる(ステップ1300)。存在するのであれば、下記の処理を行う。まず、ファイルアクセスデータ126の最終アクセス日時307を、アクセスログデータ127のアクセス日時401で更新する(ステップ1301)。次に、アクセスログデータ127のアクセス種別402の種類が、Readであるか調べる(ステップファイルの内容のRead、属性のReadなどであるか調べる)(ステップ1302)。Readなのであれば(Yes)、ファイルアクセスデータ126のReadを含むフラグ309をTRUEに設定する(ステップ1303)。ステップ1302において、Readではなかった場合(No)、ファイルアクセスデータ126のReadのみフラグをFALSEに設定する(ステップ1304)。次に、アクセスログデータ127のアクセス種別402の種類が、Deleteであるか調べ(ステップ1305)、Deleteであれば(Yes)、ファイルアクセスデータ126の最後にDeleteフラグ310をTRUEに設定し(ステップ1306)、処理を終了する。ステップ1303を行った後、または、ステップ1305においてDeleteではなかった場合は(No)、最後にDeleteフラグ310をFALSEに設定し(ステップ1307)、処理を終了する。ステップ1300において存在しなかった場合は、そのファイルに該当するファイルアクセスデータを追加し(ステップ1308)、処理を終了する。
図5のステップ506における、網羅アクセス除外処理について、図14に示す詳細フローを参照しながら説明する。まず、サーバアクセスデータ124におけるフォルダリスト301の中にあるフォルダアクセスデータ125のそれぞれについて処理を行うため、インデックス変数folder_idxを1で初期化する(ステップ1400)。次に、Folder_idx以上のフォルダアクセスデータが存在するか調べ(ステップ1401)、存在するのであれば(Yes)、下記の処理を行う。まず、利用支援システムが持つファイル属性DBの中のファイル属性データ128から、フォルダアクセスデータ125のフォルダ名302と同じフォルダ名をファイル名404に持つものを全て取得する(ステップ1402)。取得したファイル属性データそれぞれについて処理を行うため、インデックス変数file_idxを1で初期化する(ステップ1403)。ステップ1402で取得したファイル属性データがfile_idx件以上であったか調べ(ステップ1404)、file_idx以上であれば、下記の処理を行う。まず、フォルダアクセスデータ125のファイルリスト303の中で、ファイル名306が、ファイル属性データ128のファイル名404と同じであるものが存在するか調べ(ステップ1405)、存在するのであれば(Yes)、そのファイルアクセスデータ126においてReadを含むフラグ309の値がTRUEであるか調べ(ステップ1406)、TRUEであるならばfile_idxを1だけインクリメントして(ステップ1407)ステップ1404から処理をやり直す。ステップ1405において存在しない(No)、または、ステップ1406においてFALSEであった場合は、Readアクセスがアクセスログに出力されていないファイルがあった(網羅的なReadは行われていなかった)ので、folder_idxを1だけインクリメントして(ステップ1408)、ステップ1401から処理をやり直す。ステップ1404においてfile_idx件未満であった場合(ファイル属性DBに登録されている全てのファイルについて網羅的にReadアクセスがアクセスログに出力されていた場合)は、網羅アクセスに該当するアクセスデータを削除し(ステップ1409)、ステップ1408から処理を続ける。ステップ1409における処理については、図15において詳細に説明する。ステップ1401において存在しなかった場合は、処理を終了する。
図14のステップ1409における処理について、図15に示す詳細フローを参照しながら説明する。まず、網羅的なReadアクセスが行われたフォルダに存在するファイルそれぞれについて処理を行うため、インデックス変数file_idxを1で初期化する(ステップ1500)。次に、フォルダアクセスデータ125のファイルリスト303にfile_idx以上の配列要素が存在するか調べる(ステップ1501)。存在するのであれば(Yes)、file_idx番目の配列要素のファイルアクセスデータ126におけるReadのみフラグ308がTRUEであるか調べ(ステップ1502)、FALSEであるならばfile_idxを1だけインクリメントし(ステップ1504)、TRUEであるならばその配列要素を削除して(ステップ1505)、ステップ1501から処理をやり直す。ステップ1501において存在しないのであれば(No)、そのフォルダアクセスデータ125におけるファイルリスト303が空であるか調べ(ステップ1505)、空なのであればフォルダアクセスデータを削除し(ステップ1506)、folder_idxを1だけデクリメントして(ステップ1507)、処理を終える。ステップ1505において空でなかった場合は、そのまま処理を終える。
図5のステップ507における優先度付与処理について、図16に示す詳細フローを参照しながら説明する。まず、サーバアクセスデータ124におけるフォルダリスト301の中にあるフォルダアクセスデータ125のそれぞれについて処理を行うため、インデックス変数folder_idxを1で初期化する(ステップ1600)。次に、Folder_idx以上のフォルダアクセスデータが存在するか調べ(ステップ1601)、存在するのであれば(Yes)、下記の処理を行う。まず、フォルダアクセスデータ125の優先度304を0で初期化する(ステップ1602)。次に、利用支援システムが持つファイル属性DBの中のファイル属性データ128から、フォルダアクセスデータ125のフォルダ名302と同じフォルダ名をファイル名404に持つものを全て取得する(ステップ1603)。取得したファイル属性データそれぞれについて処理を行うため、インデックス変数file_idxを1で初期化する(ステップ1604)。ステップ1603で取得したファイル属性データがfile_idx件以上であったか調べ(ステップ1605)、file_idx以上であれば(Yes)、下記の処理を行う。フォルダアクセスデータ125のファイルリスト303の中で、ファイル名306が、ファイル属性データ128のファイル名404と同じであるものが存在するか調べ(ステップ1606)、存在するのであれば(Yes)、優先度を1だけインクリメントする(ステップ1607)。ステップ1607の処理を終えた場合、または、ステップ1606において存在しなかった場合は(No)、file_idxを1だけインクリメントし(ステップ1608)、ステップ1605から処理をやり直す。ステップ1605においてfile_idx未満であった場合は、folder_idxを1だけインクリメントし(ステップ1609)、ステップ1601から処理をやり直す。ステップ1601においてfolder_idx未満であった場合は、優先度の降順になるようサーバアクセスデータ124のフォルダリスト301の中にあるフォルダアクセスデータを並べ替え(ステップ1610)、処理を終了する。
図5のステップ508におけるクローリング併用処理について、図17に示す詳細フローを参照しながら説明する。まず、サーバアクセスデータ124におけるフォルダリスト301の中にあるフォルダアクセスデータ125のそれぞれについて処理を行うため、インデックス変数folder_idxを1で初期化する(ステップ1700)。次に、Folder_idx以上のフォルダアクセスデータが存在するか調べ(ステップ1701)、存在するのであれば(Yes)、下記の処理を行う。まず、フォルダアクセスデータ125のサブツリー網羅要否305の値を調べる(ステップ1702)。FALSEであれば、そのフォルダ内のファイルに対するアクセスのうち、ReadおよびDeleteについてファイルサーバへのアクセスを省略するための処理を行う(ステップ1703)。この処理については、Read_Deleteスキップ処理部118を用いて行うものであり、図18において詳細に説明する。次に、フォルダアクセスデータ125におけるファイルリスト303の中にあるファイルアクセスデータ126のそれぞれについて処理を行うため、インデックス変数file_idxを1で初期化する(ステップ1704)。次に、file_idx以上のファイルアクセスデータが存在するか調べ(ステップ1705)、存在するのであれば(Yes)、下記の処理を行う。まず、そのファイルに対するアクセス権限を確認する処理を行い(ステップ1706)、アクセス権限があるのであれば、そのファイルが本当にファイルであるか調べる処理を行い(ステップ1707)、ファイルであるならば、ファイルサーバ108からファイル属性データ128を取得して利用支援システムが持つファイル属性DB106を更新する(ステップ1708)。ステップ1706における処理はアクセス権限再確認処理部119を用いて行うものであり、図19において詳細に説明する。ステップ1707における処理は、ファイル_フォルダ確認処理部120を用いて行うものであり、図20において詳細に説明する。ステップ1706においてアクセス権限がない(No)、または、ステップ1707においてフォルダである場合、または、ステップ1708の処理を行った後には、ステップ1709でfile_idxを1だけインクリメントし、ステップ1705から処理をやり直す。ステップ1702においてTRUEであった場合は、そのフォルダ以下のサブツリーについて、ファイルサーバに対し網羅的にクローリングを行ってファイル属性データ128を取得して利用支援システムが持つファイル属性DBを更新する(ステップ1711)。ステップ1711の処理を行った後、または、ステップ1705においてfile_idx未満であった場合、folder_idxを1だけインクリメントして(ステップ1710)、ステップ1701から処理をやり直す。ステップ1701においてfolder_idx未満であった場合、処理を終了する。
図17のステップ1703におけるRead_Deleteスキップ処理について、図18に示す詳細フローを参照しながら説明する。まず、設定データ121のRead_Deleteスキップ条件有無202の値を調べ(ステップ1800)、TRUEなのであれば下記の処理を行う。まず、フォルダアクセスデータ125のファイルリスト303に存在するファイルアクセスデータそれぞれについて処理を行うため、インデックス変数file_idxを1で初期化する(ステップ1801)。次に、フォルダアクセスデータ125のファイルリスト303にfile_idx以上の配列要素が存在するか調べる(ステップ1802)。存在するのであれば(Yes)、下記の処理を行う。まず、ファイルアクセスデータ126のReadのみフラグ308の値を調べ(ステップ1803)、TRUEなのであれば、利用支援システムが持つファイル属性DBにおけるファイル属性データのうちファイル名404がファイルアクセスデータ126のファイル名306と同じものにおける最終アクセス日時405をファイルアクセスデータ126の最終アクセス日時307で更新する(ステップ1805)。ステップ1803においてFALSEなのであれば、最後にDeleteフラグ310の値を調べ(ステップ1804)、TRUEなのであれば、利用支援システムが持つファイル属性DBにおけるファイル属性データのうちファイル名404がファイルアクセスデータ126のファイル名306と同じものを削除する(ステップ1805)。ステップ1805の処理を行った後、または、ステップ1807の処理を行った後、そのファイルアクセスデータを削除し(ステップ1806)、ステップ1802から処理をやり直す。ステップ1804においてFALSEなのであれば、file_idxを1だけインクリメントし(ステップ1808)、ステップ1802から処理をやり直す。ステップ1800においてFALSEである場合、または、ステップ1802においてfile_idx未満のデータがある場合は(No)、処理を終了する。
図17のステップ1706におけるアクセス権限再確認処理について、図19に示す詳細フローを参照しながら説明する。まず、利用支援システムのクローリングを行うユーザIDに対し、ファイルサーバ108における該当ファイル(ファイル名が、ファイルアクセスデータ126のファイル名306と同じであるファイル)へのReadアクセス権限が付与されているかを調べる(ステップ1900)。付与されているのであれば(Yes)「アクセス権限あり」と判定し(ステップ1901)、そうでなければ(No)「アクセス権限なし」と判定する(ステップ1902)。
図17のステップ1707におけるファイル_フォルダ確認処理について、図20に示す詳細フローを参照しながら説明する。まず、ファイルサーバ108上に、ファイル名が、ファイルアクセスデータ126のファイル名306と同じであるファイルが存在するか調べる(ステップ2000)。存在するのであれば(Yes)「ファイルである」と判定し(ステップ2001)、そうでなければ(No)「フォルダである」と判定する(ステップ2002)。
図5のステップ500における、設定画面を表示する処理について、図7を参照して説明する。サーバごとに(700)現在の設定内容を表示すると共に変更を受付け(701,702、703)、確認した旨を受け付けて(704)、設定データ121に格納する。
図5のステップ510における、結果画面を表示する処理について、図8を参照して説明する。サーバごとに(800)差分クローリングに関する情報を表示し(801)、確認した旨を受け付けて(802)、差分クローリング処理を終える。
本明細書では、フォルダ名標準化ルール205は、対象文字列と置換後文字列の組で与える形式とした。この方式に代えて、正規表現の形で与える方式についても、本発明を同様に適用することができる。
本明細書では、ファイル属性データ128として、全文データ411を保持する形式とした。全文検索エンジン以外(ファイルサーバの管理システム・データ格納領域管理システムなど)では、この方式に代えて、全文データを保持しない方式についても、本発明を同様に適用することができる。さらに、ハッシュ値412を保持しない方式についても、本発明を同様に適用することができる。
本明細書では、適用除外条件有無200、サブツリー網羅条件有無201、Read_Deleteスキップ条件有無202、網羅アクセス除外条件有無203、インポート処理有無204の変数をユーザの設定に従って保持し、処理内容を切り替える形式について説明している。これらの設定値についてあらかじめTRUEまたはFALSEの値を固定してしまい、常に処理を行う、または、常に処理を行わないとした方式についても、本発明を同様に適用することができる。
本発明では、ファイルサーバのアクセスログを参照し、フォルダ名の標準化・情報システムの管理者による管理操作に由来するアクセスの除外・フォルダに対するアクセスが行われた場合のサブツリーに対する網羅的情報更新・ファイルに対して複数回アクセスが行われた場合のまとめての情報更新・コンピュータ端末によるユーザの意図を伴わないアクセスの除外・ユーザのファイル利用頻度に応じた優先度付与・アクセス種別に基づく情報更新・アクセス権限に基づく情報更新・ファイルとフォルダの確認に基づく情報更新により、ファイルの情報の更新の効率化を行う。
また、上記の実施の形態において、添付図面に図示されている構成等については、これらに限定されるものではなく、本発明の効果を発揮する範囲内で適宜変更することが可能である。その他、本発明の目的の範囲を逸脱しない限りにおいて適宜変更して実施することが可能である。
また、本発明の各構成要素は、任意に取捨選択することができ、取捨選択した構成を具備する発明も本発明に含まれるものである。
また、本実施の形態で説明した機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。尚、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。