以下に、本発明の実施形態を説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態にかかわる文書管理システムのシステム全体の構成図を示している。LAN(ローカルエリアネットワーク)150上には、MFP(マルチファンクションペリフェラル)100、MFP100と同様の構成を備えたMFP110、PC120、文書管理サーバ130がそれぞれ接続されている。LAN150上の各端末は相互にデータ通信が可能であって、LAN150を介してインターネットにも接続されている。
文書管理サーバ130は、HDDなどの記憶装置133を備えており、複数の文書を記憶しておくことができる。なお、記憶装置133が記憶する文書とは、文字コードからなるテキストデータでなくともよく、後述するMFP100のスキャナ装置で原稿上の画像を読み取って得られたビットマップ画像や、その他のフォーマットの画像データであってもよい。CPU131は、文書管理サーバ130全体の動作を制御するものであり、記憶装置133内に設けられたメモリに格納されたプログラムを読み出して動作する。
また、CPU131はネットワークI/F132を介して、LAN150上の端末(例えばMFP100)から文書の検索要求を受信すると、検索要求とともに受け取った検索条件に従って記憶装置133に記憶された文書を対象として検索を実行する。そして、検索終了後、ネットワークI/F132を介して、検索結果としてヒットした文書の総数、及び各文書のインデックス情報(文書名、ページ数、保存日時、など)を検索依頼元の端末に通知する。
図2は、MFP100のシステム構成図である。MFP100は原稿上の画像を読み取って入力し、印刷・保存、または画像データを他の外部装置へ送信することができる。MFP100は大きく分けて、装置全体の制御を行う制御ユニット200、出力画像の記録紙への印刷を行うプリンタ装置250、原稿から画像を読み取り、画像データとして装置内部に入力するスキャナ装置260からなる。
制御ユニット200は、ネットワークI/F201を介して各クライアント端末や文書管理サーバなどと通信する。入出力バッファ202は、ネットワークから入力される印刷のための制御コードや、各種PDL(Page Description Language)データや、またはMFP100に関する各種データを送受信する際に利用される。CPU205はMFP100全体の動作を制御する。プログラムROM220には、CPU205の動作を記述するプログラムが格納されている。CPU205は、プログラムROM220に記憶されているプログラムを読み出して実行することで、MFP100の備える各種機能を実現する。
RAM209は、制御コードやデータの解釈や印刷、画像の読み取り等に必要な計算、入出力される画像データの処理のためのワークメモリに利用される。不揮発性RAM(NVRAM)208は、装置の電源が遮断されても保持しておく必要のあるデータを格納する。プログラムROM220内にある制御データ解釈部221とPDLデータ解釈部222は、それぞれ外部のPCなどから受信した印刷制御データやPDLデータを解釈する。画像情報生成部223は、各種の画像オブジェクトを生成する。ビットマップ画像展開部224は、画像オブジェクトをビットマップ画像データに展開する。検索条件判定部225は、操作パネル部230でユーザが入力した検索条件が適正であるか否かを判定する。
ビットマップ画像転送部206は、ビットマップ画像展開部224によって展開されたビットマップ画像や、スキャナ装置260から原稿上の画像を読み込んで得られたビットマップ画像等を、プリンタ装置250に転送する。エンジンI/F部207は、ビットマップ画像転送部206とプリンタ装置250のエンジン制御部251を接続するI/Fである。
ビットマップ画像受信部210は、スキャナ装置260で読み込まれたビットマップ画像を受信する。スキャナI/F部211は、スキャナ装置260のスキャナ制御部261とビットマップ画像受信部210を接続するI/Fである。
操作パネル部230は、ユーザから操作指示を受け付け、またはエラーや各種処理結果、操作ガイドなどの表示を行う。パネルI/F部203は、操作パネル部230と制御ユニット200を接続するI/Fである。外部メモリ部240は、印刷データや外部から取得した画像データ、装置の各種情報などを記憶しておくことができ、メモリI/F部204を介して制御ユニット200と接続されている。
図3は、操作パネル部230に備えられた液晶表示部に表示される検索条件入力画面である。MFP100はモードキー301〜304を選択することにより、MFP100が備える各種モードを切り替えることができる。モードキー301を選択した場合は、「コピーモード」が選択される。コピーモードは、スキャナ装置260で読み取って得た画像データをプリンタ装置250において印刷するといったコピー処理を行うモードである。
モードキー302を選択した場合は、「送信モード」が選択される。送信モードは、スキャナ装置260で読み取って得た画像データを、電子メールに添付するなどをして、LAN150を介して外部装置に対して送信する送信処理を行うモードである。モードキー304を選択した場合は、「ボックスモード」が選択される。ボックスモードは、スキャナ装置260で読み取って得た画像データを、MEMORY212に設けられた記憶領域(ボックス)に記憶するか、またはLAN上の他の装置に備えられた記憶領域に記憶させる処理を行うモードである。
図3に示す画面は、検索モードが選択された場合に表示される画面である。検索モードは、文書管理サーバ130のHDD133に記憶された複数の文書の中から、ユーザが所望する文書を検索する処理を行うモードである。図3に示す検索条件入力画面上において、ユーザは所望の文書を検索するために用いる検索条件を入力することができる。検索場所指定欄310には、検索対象としたい文書が記憶されている記憶装置を指定する。ここでは、文書管理サーバ130が選択されていることが分かる。検索場所指定欄310右隅の▼印を押下すると、検索場所として指定可能な他の選択肢がコンボボックスとして表示される。
キーワード指定欄320には、最大3種類の文字列を入力することができる。この文字列は検索条件として用いられる検索キーワードであって、例えば“売上”という文字列が指定された場合は、文書中に“売上”の文字列が含まれている文書が、検索結果としてヒットする。なお、「検索結果としてヒットする」とは、検索条件として指定された条件に適合する文書が、検索を実行した検索エンジンによって特定されて、例えばそれらの文書名などを含むインデックス情報が通知されることを意味している。
続いて、論理式指定欄330には、キーワード指定欄320で入力された文字列の組み合わせを示すために演算子を用いた検索論理式を入力することができる。例えば、図3に示す“*”は論理積演算子であって、両隣の文字列をAND条件で組み合わせて検索条件とする。“+”は論理和演算子であって、両隣の文字列をOR条件で組み合わせて検索条件とする。図3に示す論理式では、“推移”と“2010年”の文字列をOR条件として組み合わせた上で、さらにその結果と“売上”の文字列をAND条件として組み合わせている。キーワードを1種類だけ指定する場合には、演算子を使用せずに“1”という論理式を作成することも可能である。論理式の指定方法は、上述した以外にも公知の検索条件を指定するための方法であれば、いずれの方法であっても構わない。
なお、ここでは文書を検索するための条件として、検索したい文書中に含まれる文字列を指定する場合について説明したが、検索条件として他の項目を用いてもよい。例えば、検索したい文書の文書名や作成者、または記憶装置に記憶された日付を検索条件として指定できるようにしてもよい。図3に示す画面で検索条件の入力が完了したら、実行ボタン340を押下することによって、CPU205はネットワークI/F201を介して文書管理サーバ130に、入力された検索条件を含む検索要求を送信する。
図4は、文書管理サーバ130から通知されてきた検索結果情報に基づいて、操作パネル部230に表示される検索結果表示画面を示している。この画面の上部には、検索条件表示欄401が設けられており、図3に示す画面で入力された検索条件が、図示するようにキーワードと論理式を組み合わせた形で表示されている。文書数表示欄402には、検索結果としてヒットした文書数が表示される。図4の例では、検索条件表示欄401に表示された検索条件を用いて検索を実行した結果、118件の文書が検索結果としてヒットしたことを示している。また、検索結果表示画面には、検索結果としてヒットした文書のインデックス情報が、項目411〜414に対応する情報とともにリスト状で表示される。ここで表示される項目411〜414はそれぞれ、文書名、文書に含まれるページ数、文書の保存日、文書の保存場所を示す。
さて、第1の実施形態では、検索結果として多数の文書がヒットした場合は、より絞り込んだ検索条件を用いて再検索を行う必要が生じ手間がかかってしまうという問題を解決するために、入力された検索条件が適正か否かの判定を行うようにしている。例えば、検索結果としてヒットする文書数の上限値が予め100件と設定されているとする。この場合、図4の例では、検索結果としてヒットした文書数は上限値を上回っているので、“売上”*(“推移”+“2010年”)の検索条件は適正でない検索条件として判定される。
適正でない検索条件、即ち、その検索条件を用いて検索を実行した場合に検索結果として予め設定された上限値を上回る文書数がヒットする検索条件と判定された検索条件は、図5に示すような構造を用いてMEMORY212内で管理される。図5は、上限値を超える文書数が検索結果としてヒットする検索条件を特定するための情報(検索条件特定情報)である。検索条件特定情報は、図5に示すように、検索条件毎に1つのレコードとして管理されており、検索が実行されてその検索結果として上限値以上の文書数がヒットする毎に新たなレコードが追加されていく。各レコードには領域501〜505のそれぞれに検索条件に関する情報が含まれている。領域501には、検索結果として上限値を上回る数の文書がヒットした場合に、その検索に用いられた検索条件を示す情報が格納されている。領域502には、領域501に格納された検索条件を用いた検索が実行された日時を示す情報が格納されている。領域503には、検索の結果ヒットした文書数を示す情報が格納されている。領域504には、レコードを作成した後で、レコードの内容が更新された最新の日時を示す情報が格納されている。領域505には、レコードが作成または更新された際に、文書管理サーバ130のHDD133に格納されていた文書の総数を示す情報が格納されている。
次に、図6乃至図8のフローチャートを用いて、図5に示した検索条件特定情報に基づいて、ユーザにより入力された検索条件が適正な検索条件であるか否かを、過去の検索結果に基づいて検索実行前に判定する処理に関する動作を説明する。図6乃至図8に示す動作は、MFP100のCPU205が、プログラムROM220またはMEMORY212に格納された検索条件判定部225などのプログラムを読み出して、実行するものである。
図6は、入力された検索条件が適正かどうか判定し、適正なものであると判定した場合に検索を実行するとともに、検索結果として上限値を上回る数の文書がヒットした場合に、その検索条件を特定するための情報を管理する動作に関するフローチャートである。
まずステップS601では、ユーザにより検索モードが選択されたか否かを判定する。ここで、検索モードが選択された場合は、ステップS602に進み、図3に示す検索条件入力画面を表示し、ユーザによる検索条件の入力を受け付ける。ステップS601で、検索モード以外のモードが選択された場合は、そのモードへ移行する。
次に、ステップS603において、実行ボタン340が押下されたか否かを判定する。実行ボタン340が押下されたと判定した場合は、ステップS604に進み、入力された検索条件が適正であるか否かを判定する。続くステップS605において、ステップS604における判定の結果に基づいて、検索条件が適正であると判断されたか否かを判断し、検索条件が適正であると判断した場合には、ステップS606に進む。なお、第1の実施形態における「適正な検索条件」とは、その検索条件を用いて検索を実行した場合に、予め設定された上限値を上回る数の文書が検索結果としてヒットすることがない検索条件とする。
ステップS606では、入力された検索条件を含む検索実行要求を文書管理サーバ130に送信する。続くステップS607では、文書管理サーバ130から通知された検索結果(文書の総数及びそれらの文書のインデックス情報を含む)を受け取って、ステップS608において操作パネル部230に表示する。なお、この後、フローチャートには記載しないが、操作パネル部230に表示された文書のインデックス情報に基づいて、ユーザが文書を選択すると、その文書を文書管理サーバ130からダウンロードしたり、他の装置へ送信したりすることが可能となっている。
ステップS609では、検索結果として文書管理サーバ130から通知された文書の総数が、上限値を上回っているか否かを判定する。ここで、「上限値」とは管理者モードにおいて予め設定される値であって、任意の整数N(0<N)を設定することができる。
ステップS609で、検索結果としてヒットした文書の数が上限値を上回ると判定した場合は、ステップS610において、図5に示す検索条件特定情報として新たにレコードを作成して、検索に用いられた検索条件をMEMORY212に格納して管理する。これは、再び同一の検索条件が入力されて検索が実行された場合には、再度多数の文書が検索結果としてヒットしてしまうという無駄が発生するため、この無駄を防ぐために、入力された検索条件が適正であるか否かを判定するための情報として管理される。ステップS609で検索結果が上限値を下回っていた場合、またはステップS610で検索条件特定情報のレコードを作成した後、処理を終了する。
図7は、図6のステップS604における入力された検索条件を判定する処理を詳しく説明するためのフローチャートである。まずステップS701においてMEMORY212において管理されている検索条件特定情報を読み出す。続くステップS702において、ステップS602で入力された検索条件に一致する検索条件のレコードが、ステップS701で読み出した検索条件特定情報の中に存在するか否かを判定する。該当するレコードが存在する場合は、ステップS703に進み、入力された検索条件は適正でないと判定する。一方、該当するレコードが存在しない場合は、ステップS704に進み、入力された検索条件は適正であると判定する。
図8は、図6のステップS605において、検索条件が適正でないと判定されたと判断した場合の動作を説明するためのフローチャートである。まず、ステップS801において図9に示す画面を、操作パネル部230に表示させる。図9に示す画面は、入力された検索条件を用いた検索を実行すべきでない旨をユーザに通知するための画面であって、該検索条件を用いて検索した場合に検索結果として上限値を上回る数の文書がヒットしてしまう可能性があることを警告するための画面である。図9に示す画面には、ユーザに択一的に選択を促すボタン911〜913が表示される。
図8のステップS802では、ボタン911が押下されたか否かを判定する。ボタン911は、検索結果として多数の文書がヒットしてしまう可能性を考慮した上で、入力された検索条件を用いた検索を実行することをユーザが望む場合に押下するボタンである。ボタン911が選択された場合は、図6に示すステップS606に進み、検索処理を開始する。
ステップS802でボタン911が押下されていないと判定した場合は、ステップS803に進み、ボタン912が押下されたか否かを判定する。ボタン912は、図9に示す画面に表示された警告を受けて、ユーザが入力した検索条件を編集(再入力)することを望む場合に押下するボタンである。ボタン912が選択された場合は、図6に示すステップS602に戻り、検索条件の再入力を受け付ける。
ステップS803でボタン912が押下されていないと判定した場合は、ステップS804に進み、ボタン913が押下されたか否かを判定する。ボタン913は、図9に示す画面に表示された警告を受けて、ユーザが検索の実行をキャンセルする場合に押下するボタンであって、ボタン913が押下された場合は処理を終了する。なお、ステップS804でボタン913が押下されていないと判定した場合は、S802に戻り、ボタン911〜913のいずれかが押下されるまで監視する。
このように、図6のステップS605で検索条件が適正でない、即ち、その検索条件を用いて検索を実行した場合に、上限値を上回る数の文書が検索結果としてヒットすると判定した場合は、その検索条件を用いた検索が実行されないよう制御する。なお、「検索が実行されないよう制御する」とは、具体的には、図9に示す画面を用いて、入力された検索条件が適正でない旨を警告することによって、ユーザに検索の実行を再考することを促すよう操作パネル部230の表示を制御することを指す。これにより、ユーザは自分の入力した検索条件では、検索結果としてヒットする文書が多くなりすぎることを検索実行前に知ることができるので、無意味な検索の実行を抑制することができる。また、ボタン911を設けたことにより、「適正でない検索条件」と判断されたとしても、ユーザが望めば強制的に検索を実行することができる。これにより、例えば、判断の元となった情報が古い場合には、その検索条件を用いた検索の結果としてヒットする文書数が変化している可能性もあるので、ユーザは自らの判断で検索を実行するかどうかを決めることができる。
また、「検索が実行されないよう制御する」内容として、入力された検索条件が適正でないと判定された場合に、その検索条件を用いた検索を実行することを禁止するように制御してもよい。これにより、広すぎる検索条件を用いた検索を防ぐことができるので、実際に検索処理を行う検索エンジン、または検索要求や検索結果の情報を通信するネットワークにかかる負荷を軽減することができる。この場合、図9に示す画面には、ボタン911は表示されず、ボタン912及び913のみが表示される。
また、第1の実施形態では、ネットワーク上の文書管理サーバ130内に記憶されている文書を検索対象として検索を実行するために、検索要求を文書管理サーバ130に送信する例について説明したが、他の態様であっても構わない。例えば、図3に示す画面上の検索場所指定欄310において、MFP100内のMEMORY212を指定した場合には、MFP100内に備えられ、文書管理サーバ130と同様の機能を有する文書検索部が、入力された検索条件に従った検索を実行する。
以上のように説明した第1の実施形態によると、入力された検索条件を用いて検索を行った結果、上限値を上回る数の文書が検索結果としてヒットした場合に、その検索条件を特定するための情報をMEMORY212に格納して管理するようにしている。そして、その後ユーザにより検索条件が入力された場合に、管理した情報に基づいて、その検索条件が適正かどうか、即ち、その検索条件を用いて検索を実行した場合に、上限値を上回る数の文書が検索結果としてヒットする検索条件であるか否かを判定する。さらに、その判定の結果、入力された検索条件が適正でないと判定された場合には、その検索条件を用いた検索が実行されないよう制御するようにしている。
これにより、例えば、過去に検索を実行した際に、膨大な数の文書が検索結果としてヒットしてしまった検索条件を再び用いて検索を実行してしまうことを抑制することができる。つまり、ユーザは実際に検索処理が実行される前に、自分の入力した検索条件が適正なものかどうかを知ることができるので、検索式を入力する度に検索を実行してその間待たされることがなくなる。また、無駄な検索処理を抑制することにより、検索エンジンまたはネットワークに無駄な負荷がかかることを防ぐことができる。
(第2の実施形態)
次に、本発明の第2の実施形態を説明する。
第2の実施形態における第1の実施形態との違いは、第1の実施形態では検索場所として記憶装置を1つだけ指定して検索を実行させることについて説明したが、第2の実施形態では複数の記憶装置を指定して一斉に検索要求を行うことができる点である。また、それぞれの記憶装置毎に、上述した検索条件特定情報のレコードを管理するようにしている。第2の実施形態における基本的な構成は、第1の実施形態と同様であるので、ここでは第2の実施形態について第1の実施形態とは異なる部分についてのみ説明する。
図10は、第2の実施形態にかかわる文書管理システムのシステム全体の構成図を示している。ここでは、図1に示した構成図と比較して、LAN150、MFP100、MFP110、PC120、文書管理サーバ130は同様であるが、それらに加えて、文書管理サーバ130と同様の機能を備える文書管理サーバ140を更に備えている。
図11は、第2の実施形態における検索条件入力画面である。ここでは、第1の実施形態とは異なり、検索場所指定欄1110には複数の記憶装置を検索場所として指定することが可能となっている。ここで複数の記憶装置が指定された場合には、検索を実行する際に、各記憶装置に対して一斉に検索要求を行う。また、各記憶装置から通知される検索結果には、それぞれの記憶装置において検索結果としてヒットした文書のインデックス情報と文書数を示す情報が含まれている。
第2の実施形態では、検索結果として上限値を上回る数の文書がヒットした場合に、その検索に用いた検索条件を特定するための情報を、記憶装置毎に区別して管理する。図12は、第2の実施形態における検索条件特定情報のレコードの構造を示している。
この検索条件特定情報は、1つまたは複数の記憶装置が指定されて検索が実行され、その検索結果としてヒットした文書数の合計が上限値を上回った場合にレコードが新たに作成されて追加される。各レコードのそれぞれには、検索に用いた検索条件(1211)とともに複数のサブレコード(1〜4)が含まれている。さらに各サブレコードのそれぞれには、検索を実行した記憶装置を示す情報(図12には文書管理サーバ140で検索された結果を示すサブレコードを例示する)が領域1221に格納される。領域1222〜1225は、図5の領域502〜505とそれぞれ同様であるので説明は省略する。なお、サブレコードは、図11の検索場所指定欄1110で指定された記憶装置の数だけ作成される。
次に、図6を参照して、第2の実施形態における動作の詳細について説明する。なお、特に説明しない部分については第1の実施形態と同様の動作をするものとする。
ステップS602では、図11に示す画面を用いてユーザが入力した検索条件であって、1つまたは複数の記憶装置が検索場所として指定された検索条件の入力を受け付ける。ステップS606では、検索場所として指定された記憶装置のそれぞれに対して一斉に検索要求を行う。そして、ステップS607では各記憶装置から検索結果としてヒットした文書のインデックス情報及び文書数を示す情報を含む検索結果情報を受け取る。ステップS609では、それぞれの記憶装置において検索結果としてヒットした文書の合計数を算出したうえで、上限値を上回っているかどうかを判定する。上限値を上回る数の文書がヒットした場合は、ステップS610において記憶装置毎のサブレコードを含むレコードを新たに作成し、検索条件特定情報として管理する。
図13は、第2の実施形態のステップS604における、入力された検索条件を判定する処理を詳しく説明するためのフローチャートである。なお、図13に示す動作は、MFP100のCPU205が、プログラムROM220またはMEMORY212に格納された検索条件判定部225などのプログラムを読み出して、実行するものである。
まず、ステップS1301においてMEMORY212で管理されている検索条件特定情報に含まれる各レコードを読み出す。続くステップS1302において、入力された検索条件と各レコードに含まれる検索条件とを比較し、入力した検索条件に一致する検索条件を含むレコードが存在するかどうか判定する。該当するレコードが存在しない場合は、ステップS1311に進み、入力された検索条件は適正であると判定して図6のフローチャートへに戻る。ステップS1302で、該当するレコードが存在すると判定した場合は、ステップS1303に進み、そのレコードに含まれる各サブレコードを読み出す。続く、ステップS1304では、入力された検索条件において指定された記憶装置を示す情報のうちいずれか1つを取り出す。そして、ステップS1305では、取り出した情報が示す記憶装置に一致する記憶装置を示す情報を含むサブレコードが存在するかどうか判定する。該当するサブレコードが存在する場合は、そのサブレコードの領域1223に格納されている文書数情報を読み出してセットする。ステップS1305で、該当するサブレコードが存在しないと判定した場合は、ステップS1307に進み、文書数として0をセットする。ステップS1308では、指定された記憶装置全てについてステップS1304〜S1307の処理を完了したか判定し、完了していなければステップS1304に戻る。完了していれば、ステップS1309に進み、ステップS1306及びステップS1307でセットされた文書数の合計数が上限値を上回っているかどうか判定する。この判定の結果、上限値を上回っていればステップS1310に進み、入力された検索条件は適正でないと判定する。ステップS1309の判定の結果、上限値を上回っていなければステップS1311に進み、入力された検索条件は適正であると判定する。
なお、第2の実施形態における図6のステップS610における処理では、検索に用いた検索条件に対応するレコードを新たに作成しない場合もある。即ち、例えば図13のステップS1309を介してステップS1311で、検索条件が適正であると判定された場合は、既にレコードがあるにも関わらず検索が実行されることになる。この時は、既に管理されている検索条件特定情報のレコードを更新するようにしてもよいし、検索場所として指定された記憶装置に対応するサブレコードが存在しない場合は、そのサブレコードを新たに作成するようにしてもよい。
上述のような動作は、以下のような場合に必要となる。例えば、ある検索条件に対して記憶装置A(文書数40)・B(文書数50)・C(文書数30)にそれぞれ対応するサブレコードが管理されているとする。なお、カッコ内はそれぞれの記憶装置で検索を行った結果としてヒットした文書数を示している。この時、検索場所として記憶装置A・Dが指定されて同一の検索条件が入力された場合を考える。図13のフローチャートに沿って判断すると、記憶装置Dに格納されている文書のうち、検索結果としてヒットする文書数は不明であるので、ステップS1309では合計文書数40が上限値(=100)を超えていないと判定される。そして、この検索条件を用いて検索が実行された後、ステップS601に進む。ステップS610では、検索場所Aのサブレコードは既に存在するので更新してもよいし、更新せずにスキップしてもよい、検索場所Dのサブレコードは存在しないので、新たに作成する。
以上のように説明した第2の実施形態では、検索場所として指定される記憶装置毎に、検索結果としてヒットした文書数を管理するようにしている。これにより、第1の実施形態で説明した効果に加えて、複数の記憶装置に対して検索要求を行うような環境であっても、入力された検索条件が適切かどうかを正確に判定することができるので、より使い勝手がよくなる。
(第3の実施形態)
次に、本発明の第3の実施形態を説明する。
第3の実施形態における第1の実施形態との違いは、第1の実施形態は検索条件特定情報として、キーワード及び論理式を含む検索条件毎にレコードを管理していたが、第3の実施形態では、キーワード毎にレコードを作成して管理する点である。第3の実施形態における基本的な構成は、第1の実施形態と同様であるので、ここでは第3の実施形態について第1の実施形態とは異なる部分についてのみ説明する。
図14は、第3の実施形態における検索条件特定情報のレコードの構造を示す。図14は、図3に示す画面で入力されている検索条件で検索した結果(文書数108件)に基づいて管理されている検索条件特定情報を示す。第1の実施形態では、キーワード及び論理式を含む検索条件毎にレコードを作成して管理していたが、第3の実施形態では、キーワード毎にレコードが作成されて管理されていることが分かる。領域1401には指定されたキーワードを示す情報が格納される。領域1402には、領域1401に格納されたキーワードを用いて検索が実行された日付の情報が格納される。領域1403には、領域1401に格納されたキーワードを含む文書の数を示す情報が格納される。言い換えれば、領域1403に格納される文書数とは、領域1401に格納されたキーワードのみを検索条件として指定した場合の検索結果としてヒットする文書数を意味する。なお、領域1403に格納されるべき情報は、キーワード毎に文書管理サーバ130から検索結果として通知されるものとする。
図15は、図14に示す検索条件特定情報に基づいて、図6のステップS604において検索条件が適正であるか否かを判定する処理を説明するためのフローチャートである。なお、図15に示す動作は、MFP100のCPU205が、プログラムROM220またはMEMORY212に格納された検索条件判定部225などのプログラムを読み出して、実行するものである。
まず、ステップS1501において、MEMORY212に格納された検索条件特定情報を読み出す。続くステップS1502では、図3の論理式指定欄330に入力された論理式を解析し、論理積演算子(“*”)で組み合わされていない独立項があるか否かを判断する。例えば、「A*B」という論理式であればAとBの両方が“*”を用いて組み合わされているので、ステップS1502ではNoと判定される。また、「A+B*C」の場合は、BとCはそれぞれ“*”で組み合わされているものの、直接的に“*”を用いて組み合わされていないAが存在するため、ステップS1502ではYesと判定される。さらに、「A*(B+C)」という論理式の場合は、BとCはそれぞれ“*”を用いてAと組み合わされているためステップS1502ではNoと判定される。なお、論理式として「A」のみが指定された場合も、ステップS1502ではYesと判定されることになる。
ステップS1502において、論理積演算子(“*”)で組み合わされていない独立項が存在すると判定した場合は、ステップS1503に進み、ステップS1502で特定された独立項のキーワードに対応する文書数が上限値を上回っているか否かを判定する。この判定に用いる文書数とは、ステップS1501で読み出した検索条件特定情報に含まれるレコードの領域1403に格納された情報を参照することにより得られる。
ステップS1502における判定の結果、上限値を上回る文書数が検索結果としてヒットするキーワードが独立項として存在する場合は、ステップS1504に進み、入力された検索条件が適正でないと判定する。また、ステップS1502において、上限値を上回る文書数が検索結果としてヒットするキーワードが独立項として存在しないと判定された場合は、ステップS1505に進み、入力された検索条件は適正であると判定する。
図15に示すフローチャートでは、論理式の中に論理積演算子で組み合わせられていない独立項が存在し、且つその独立項のキーワードにより検索結果としてヒットする文書数が上限値を上回る場合に、入力された検索条件を適正でないと判定するようにしている。即ち、上記のような独立項が存在した場合は、他のキーワード及び論理式がどのようなものであろうとも、検索結果としてヒットする文書数は上限値を上回ってしまうので、検索条件として適性でないと判定している。なお、ここではAND条件を示す“*”、及びOR条件を示す“+”のみを論理式に使用できる場合について説明したが、他の演算子を使用できるようにした場合は、それに応じて図15のフローチャートに替わる適切な判定方法を採用するようにしてもよい。
以上のように説明した第3の実施形態では、検索条件として指定されるキーワード毎に検索条件特定情報のレコードを作成して管理するようにしている。これにより、第1の実施形態で説明した効果に加えて、より柔軟に検索条件が適正か否かの判定を行うことが可能となる。具体的には、第1の実施形態では、「A+B+C」という検索条件を特定するための情報が検索条件特定情報として管理されている場合に、「A+B*C」という検索条件が入力されたとしても、該当するレコードは存在しないと判定していた。しかしながら、第3の実施形態では、A・B・Cそれぞれが別々のレコードとして管理されているので、論理式の組み合わせ方が異なったとしても、各キーワードに対応するレコードが管理されていれば、検索条件が適正であるか否かを判定することが可能となる。
(第4の実施形態)
次に、本発明の第4の実施形態を説明する。
第4の実施形態における第1の実施形態との違いは、第1の実施形態は検索条件が適正かどうかを判断するための条件として、検索結果としてヒットする文書数の上限値を1つ設定していたが、第4の実施形態では2種類の上限値を設けている点である。第4の実施形態における基本的な構成は、第1の実施形態と同様であるので、ここでは第4の実施形態について第1の実施形態とは異なる部分についてのみ説明する。
図16は、第4の実施形態における検索条件特定情報のレコードの構造を示す。図16に示すように、第4の実施形態では検索条件特定情報として管理されるレコードは、グループ(1)またはグループ(2)に分類されている。グループ(1)とは、このグループに含まれるレコードにより特定される検索条件を用いて検索を実行した場合、第1の上限値(以下、禁止上限値とする)を上回る数の文書が検索結果としてヒットすることを意味する。グループ(2)とは、このグループに含まれるレコードにより特定される検索条件を用いて検索を実行した場合、禁止上限値は上回らないが、禁止上限値よりも低い値である第2の上限値(警告上限値)を上回る数の文書が検索結果としてヒットすることを意味する。なお、これらの上限値は、予めユーザが任意に設定できるようにしてもよいし、文書検索システム全体を管理する管理者により設定されるようにしてもよい。
このように、第4の実施形態では、検索を実行した結果として、設定された数以上の文書がヒットした場合に、ヒットした文書数に応じて2つのグループに分類したうえで、検索条件特定情報のレコードとして管理する。なお、各レコードの領域1601〜1605に格納される情報の内容は図5の領域501〜505に格納される情報の内容と同様であるので、説明は省略する。
次に図17乃至図19のフローチャートを用いて、図16に示した情報に基づいて、ユーザにより入力された検索条件が適正であるか否かを、検索実行前に判定する処理に関する詳細な動作を説明する。図17乃至図19に示す動作は、MFP100のCPU205が、プログラムROM220またはMEMORY212に格納された検索条件判定部225などのプログラムを読み出して、実行するものである。
図17は、入力された検索条件が適正であるかどうか判定し、適正であると判定した場合に検索を実行し、さらに検索結果として設定された数以上の文書がヒットした場合に、その検索条件を特定するための情報を管理する動作を説明するフローチャートである。まずステップS1701では、ユーザにより検索モードが選択されたか否かを判定する。ここで、検索モードが選択された場合は、ステップS1702に進み、図3に示す検索モード基本画面上においてユーザによる検索条件の入力を受け付ける。ステップS1701で、検索モード以外のモードが選択された場合は、それぞれのモードに移行する。
次に、ステップS1702において、実行ボタン340が押下されたか否かを判定する。実行ボタン340が押下されたと判定した場合は、ステップS1704に進み、入力された検索条件が適正か否かを判定する。続くステップS1705において、ステップS1704における判定の結果に基づいて、検索条件が適正か否かを判定し、検索条件が適正であると判定された場合には、ステップS1706に進む。
ステップS1706では、入力された検索条件を含む検索実行要求を文書管理サーバ130に送信する。続くステップS1707では、文書管理サーバ130から検索結果としてヒットした文書数を示す情報及びそれらの文書のインデックス情報を含む検索結果を受け取って、ステップS1708において操作パネル部230に表示する。
ステップS1709では、検索結果として文書管理サーバ130から通知された文書数が、警告上限値を上回っているか否かを判定する。
ステップS1709で、検索結果としてヒットした文書数が警告上限値を上回っていると判定した場合は、続くステップS1710において、検索結果としてヒットした文書数が禁止上限値を上回っているか否かを判定する。ここで、禁止上限値を上回っていると判定した場合は、ステップS1711に進み、検索に用いた検索条件を特定するための情報として検索条件特定情報のグループ(1)に新たにレコードを作成して終了する。ステップS1710で、禁止上限値を下回っていると判定した場合は、ステップS1712に進み、検索に用いた検索条件を特定するための情報として検索条件特定情報のグループ(2)に新たにレコードを作成(若しくはレコードを更新)して終了する。なお、ステップS1709において、文書数が警告上限値を下回っていると判定した場合はそのまま終了する。
図18は、図17のステップS1704における入力された検索条件を判定する処理を詳しく説明するためのフローチャートである。まずステップS1801においてMEMORY212において管理されている検索条件特定情報のレコードを読み出す。続くステップS1802において、ステップS1702で入力された検索条件を特定するレコードが、ステップS1801で読み出したレコードの中に存在するか否かを判定する。該当するレコードが存在する場合は、ステップS1803に進み、そのレコードがグループ(1)に分類されているか否かを判定する。ステップS1803における判定の結果、該当するレコードがグループ(1)に分類されていると判定した場合は、ステップS1702で入力された検索条件が禁止レベルであると判定して、ステップS1705に進む。一方、ステップS1803における判定の結果、該当するレコードがグループ(1)に分類されていない(即ち、グループ(2)に分類されている)と判定した場合は、ステップS1702で入力された検索条件が警告レベルであると判定して、ステップS1705に進む。
図19は、図17のステップS1705において、検索条件が適正でないと判定された場合の動作を説明するためのフローチャートである。まず、ステップS1705において、検索条件が適正でないとされた場合は、ステップS1704において禁止レベルまたは警告レベルのいずれかであると判定されているので、ステップS1901でそのどちらであるかを判断する。ステップS1901での判断の結果、警告レベルであると判断された場合は、ステップS1902に進み、図9に示す画面を表示する。続く、ステップS1903〜S1905では、ユーザがボタン911〜913のうち、どのボタンを押下したかを判定し、それぞれ処理を異ならせる。なお、この動作は第1の実施形態における図8のステップS802〜S804と同様であるので、説明は省略する。
一方、ステップS1901での判断の結果、禁止レベルであると判断された場合は、ステップS1906に進み、図9に示す画面を表示する。但し、この時はステップS1702で入力された検索条件を用いた検索の実行が禁止されているので、ボタン911は表示されず、ボタン912及びボタン913のみが表示される。続くステップS1907及びS1908では、ユーザがボタン912及び913のいずれを押下したかを判定し、それぞれ処理を異ならせる。なお、この動作は、第1の実施形態における図8のステップS803及びS804と同様であるので、説明は省略する。
以上のように説明した第4の実施形態によれば、2種類の上限値の値を設定し、それぞれの値に基づいて入力された検索条件が適正であるか否かを判定する。そして、その判定の結果に応じて、入力された検索条件を用いた検索が実行されないようにするための制御内容を異ならせる。これにより、第1の実施形態で説明した効果に加えて、入力された検索条件のより詳細な判定及び、その判定に応じた適切な制御を行うことができるという効果がある。具体的には、例えば、ユーザが検索結果を確認できる限界数を上回る数の文書がヒットすることが予想される検索条件が入力された場合は、その検索条件を用いた検索の実行を禁止することができる。また、前述の限界数は下回るものの、比較的多い数の文書がヒットすることが予想される検索条件が入力されら場合は、その検索条件で検索すべきでない旨をユーザに警告することができる。
(第5の実施形態)
次に、本発明の第5の実施形態を説明する。
第5の実施形態における第1の実施形態との違いは、第1の実施形態において、検索条件特定情報として管理されているレコードを自動的に更新し、最新の情報を反映したものとする点である。第5の実施形態における基本的な構成は、第1の実施形態と同様であるので、ここでは第5の実施形態について第1の実施形態とは異なる部分についてのみ説明する。
図20は、MFP100が動作していない任意のタイミングにおいて、自動的に実行される動作であって、検索条件特定情報として管理されているレコードを更新または削除するための処理を行う動作を説明するためのフローチャートである。なお、この処理はユーザが手動で指示したことに応じて、実行するようにしてもよい。図20に示す動作は、MFP100のCPU205が、プログラムROM220またはMEMORY212に格納された検索条件判定部225などのプログラムを読み出して、実行するものである。
まずステップS2001において、MEMORY212に格納されている検索条件特定情報の中から、レコードを1つ取り出す。続くステップS2002において、取り出したレコードの領域504に格納された情報を参照し、最新のレコード更新日から3ヶ月以上が経過しているか否かを判定する。なお、この3ヶ月という期間はユーザが任意に設定できるものとする。ステップS2002で、最新の更新日から3ヶ月が経過していないと判定した場合は、ステップS2008に進む。また、ステップS2002で、最新の更新日から3ヶ月以上が経過していると判定した場合は、ステップS2003に進み、取り出したレコードの領域501に格納されている検索条件を含む検索要求を、文書管理サーバ130に対して行う。
ステップS2004では、文書管理サーバ130から通知された、結果の結果ヒットした文書数を示す情報を受け取る。そして、ステップS2005では、受け取った文書数が予め設定された上限値を上回っているか否かを判定する。その結果、文書数が上限値を上回っていると判定した場合は、ステップS2006に進み、レコードの中の領域503〜505に格納されている情報を更新する。一方、ステップS2005で文書数が上限値を下回っていると判定した場合は、ステップS2007に進み、レコードを削除する。ステップS2008では、検索条件特定情報として管理されているレコードの全てに対して処理を行ったかどうか判定し、完了していれば終了し、未処理のレコードがあればステップS2001に戻る。
以上のように説明した第5の実施形態によれば、検索条件特定情報として管理されているレコードを最新の情報に基づいて更新または削除するようにしている。これにより、例えばある検索条件を用いて過去に検索した際には上限値以上の文書数がヒットした場合であっても、その後時間が経過してヒットする文書数が減少し、上限値を下回っている場合には、レコードを削除することができる。また、ここでは第1の実施形態を基にして説明したが、第4の実施形態のように警告レベルと禁止レベルとに区別してレコードを管理している場合に応用させることもできる。具体的には、グループ(2)(警告レベル)として管理されているレコードにより特定される検索条件でヒットする文書数が、時間が経過して増加してしまった場合には、レコードをグループ(2)からグループ(1)(禁止レベル)へ移動させて更新することができる。即ち、第5の実施形態では、検索条件特定情報が最新の情報に基づいて管理されているので、より正確な情報に基づいて入力された検索条件が適正であるか否かを判定することができる。
(第6の実施形態)
次に、本発明の第6の実施形態を説明する。
第6の実施形態における第1の実施形態との違いは、第1の実施形態において、検索条件特定情報として管理されているレコードを、文書管理サーバ130に記憶されている文書の総数に応じて自動的に更新し、最新の情報を反映したものとする点である。第6の実施形態における基本的な構成は、第1の実施形態と同様であるので、ここでは第6の実施形態について第1の実施形態とは異なる部分についてのみ説明する。なお、第6の実施形態では、第4の実施形態で説明したように、2種類の上限値を用いて検索条件特定情報のレコードを管理しているものとする。
図21は、MFP100が動作していない任意のタイミングにおいて、自動的に実行される動作であって、検索条件特定情報として管理されているレコードを更新または削除するための処理を行う動作を説明するためのフローチャートである。なお、この処理はユーザが手動で指示したことに応じて、実行するようにしてもよい。図21に示す動作は、MFP100のCPU205が、プログラムROM220またはMEMORY212に格納された検索条件判定部225などのプログラムを読み出して、実行するものである。
まずステップS2101において、文書管理サーバ130に対して記憶装置133に記憶されている文書の総数を通知することを要求する。続くステップS2102で、文書管理サーバ130から通知された文書の総数を示す情報を受け取る。
ステップS2103では、MEMORY212に格納されている検索条件特定情報のレコードを1つ取り出す。続くステップS2104において、ステップS2102で受け取った情報、及びステップS2103で取り出したレコードの領域503・505に格納されている情報に基づいて予測文書数を算出する。予測文書数とは、各検索条件を用いて検索を実行した場合に、現時点でヒットする文書数を、現在記憶装置に記憶されている文書の総数に基づいて予測した数である。即ち、「“予測文書数”=“レコード領域503の文書数”×(“S2102で受け取った文書の総数”÷“レコード領域505の文書総数”)」の計算式を用いて求められるものである。ここでは、記憶されている文書の総数の増減に比例して、同じ検索条件でヒットする文書数も増減すると仮定して、文書の総数の増減に基づいてヒットする文書数を予測している。
ステップS2105では、算出した予測文書数が、警告上限値を上回っているか否かを判定する。ステップS2105で、予測文書数が警告上限値を上回っていると判定した場合は、続くステップS2106において、予測文書数が禁止上限値を上回っているか否かを判定する。ここで、禁止上限値を上回っていると判定した場合は、ステップS2107に進み、ステップS2103で取り出したレコードを、グループ(1)のレコードとして更新する。ステップS2107で、禁止上限値を下回っていると判定した場合は、ステップS2108に進み、ステップS2103で取り出したレコードを、グループ(2)のレコードとして更新する。なお、ステップS2105において、文書数が警告上限値を下回っていると判定した場合は、ステップS2109に進み、ステップS2103で取り出したレコードを削除する。
ステップS2110では、検索条件特定情報として管理されている全てのレコードに対して処理を終了したか否かを判断し、未処理のレコードがあればステップS2103に戻り、全て完了していれば終了する。
以上のように説明した第6の実施形態によれば、検索条件特定情報として管理されているレコードを記憶装置に記憶されている文書の総数の増減に基づいて更新または削除するようにしている。これにより、第5の実施形態で説明した効果に加えて、検索条件特定情報を更新するためにわざわざ検索を実行することなく、簡易的に検索条件特定情報を最新の状態に更新しておくことができるので、より使い勝手がよくなる。
なお、第1〜第6の実施形態として説明した内容は、それぞれ別々の形で実施してもよいし、組み合わせて実施することも可能である。また、検索条件の指定方法や、検索条件特定情報の管理方法、または検索対象となる文書の内容は、上述したものに限定されず、他の態様であっても構わない。
(その他の実施形態)
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体(記録媒体)等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図に示すフローチャートに対応したプログラム)を、システムあるいは装置に直接あるいは遠隔から供給する。そして、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
プログラムを供給するための記録媒体としては、例えば、以下のようなものがある。フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページからハードディスク等の記録媒体にダウンロードすることによっても供給できる。すなわち、ホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをダウンロードする。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布する。そして、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他にも、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後にも前述した実施形態の機能が実現される。すなわち、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行うことによっても前述した実施形態の機能が実現される。