(57)【要約】  【課題】  アクセス制限がある文書管理システム環境において検索結果の取得上限を伴う検索を行なう場合でも、検索漏れを簡易な処理により抑制する。  【解決手段】  検索処理制御モジュール（６０）は、検索取得数が多い場合には検索条件編集サブモジュール（６２）を利用し、検索取得数が少ない場合には検索結果フィルタリングサブモジュール（６１）を利用する。検索条件編集サブモジュール（６２）は、ユーザから与えられた検索条件の検索範囲を検索ユーザがアクセス可能な文書識別子集合の論理和条件式に変換する。変換後の検索条件を用いた、検索モジュール（７０）の検索結果は、アクセス権チェック済みの結果であり、ユーザへそのまま提示できる。他方、検索結果フィルタリングサブモジュール（６１）は、キーワードによる検索条件を用いた検索結果に対して、現ユーザがアクセス可能な検索範囲内の文書識別子にフィルタリングし、ユーザへ提示可能にする。【選択図】  図１
2006164123.tif 000002
【特許請求の範囲】
【請求項１】
検索ユーザの指定に基づいて入力された検索条件を、上記検索ユーザがアクセス可能な文書の文書識別子集合との論理積を含む新たな検索条件に変換する検索条件変換手段と、
上記新たな検索条件を受け取って検索用データベースを参照して上記新たな検索条件に合致する文書識別子を取得数の上限の範囲で検索結果として出力する検索手段と、
上記検索手段による検索結果を出力する出力手段とを実現するためにコンピュータで実行されることを特徴とする文書検索用コンピュータプログラム。
【請求項２】
上記検索ユーザの指定に基づいて入力された検索条件に対して上記検索手段が行なった検索の検索結果から、上記検索ユーザがアクセスできる文書の文書識別子のみ取り出すフィルタリング手段とをさらに実現するためにコンピュータで実行され、
上記出力手段は、（ａ）上記フィルタリング手段により取り出される文書識別子、あるいは（ｂ）上記検索条件変換手段により変換された上記新たな検索条件に対する上記検索手段による検索結果を、出力する請求項１記載の文書検索用コンピュータプログラム。
【請求項３】
上記検索ユーザの指定に基づいて入力された検索条件に対して上記検索手段が行なった検索の検索結果から、上記検索ユーザがアクセスできる文書の文書識別子のみ取り出すフィルタリング手段をさらに実現するためにコンピュータで実行され、
上記出力手段は（ａ）上記文書識別子の取得数が所定数を越える場合に上記検索条件変換手段により変換された上記新たな検索条件に対する上記検索手段による検索結果を出力し、（ｂ）上記文書識別子の取得数が上記所定数を越えない場合に上記フィルタリング手段により取り出される文書識別子を出力する請求項１記載の文書検索用コンピュータプログラム。
【請求項４】
上記所定数は上記取得数の上限である請求項３記載の文書検索用コンピュータプログラム。
【請求項５】
上記検索条件は、検索範囲とキーワードによる論理式とを含んで記述され、上記検索範囲に含まれ、上記検索ユーザがアクセスできる文書の文書識別子集合を取得し、上記検索条件を、上記文書識別子集合と上記キーワードによる論理式との論理積からなる新たな検索条件に変換する請求項１〜４のいずれかに記載の文書検索用コンピュータプログラム。
【請求項６】
上記検索範囲はユーザの指定により、または、無指定で入力する請求項５記載の文書検索用コンピュータプログラム。
【請求項７】
上記検索ユーザがアクセス可能な文書識別子集合の要素数が上記取得数の上限より大きな所定数を超えた場合には、上記検索条件変換手段から上記検索手段への上記新たな検索条件の入力を禁止する請求項２または３記載の文書検索用コンピュータプログラム。
【請求項８】
上記検索条件変換手段は、上記検索ユーザがアクセス可能な文書識別子集合の要素数が上記取得数の上限より大きな所定数を超えた場合には、上記文書識別子集合を上記取得数の上限以下になるように複数の文書識別子の部分集合に分割し、上記の各文書識別子部分集合との論理積を含む複数の新たな検索条件に変換する請求項２または３記載の文書検索用コンピュータプログラム。
【請求項９】
上記検索条件変換手段で変換された上記新たな複数の検索条件の各々に対して、上記検索手段による複数の検索結果の合計が、上記所定数に達した時点で検索を中断し、まとめた検索結果を出力する、請求項８記載の文書検索用コンピュータプログラム。
【請求項１０】
上記検索ユーザがアクセス可能な文書識別子集合の要素数が上記取得数の上限より大きな所定数を超えた場合には、上記フィルタリング手段により取り出される文書識別子を出力する請求項７または９記載の文書検索用コンピュータプログラム。
【請求項１１】
上記検索ユーザがアクセス可能な文書識別子集合の要素数が上記取得数の上限より大きな所定数を超えた場合には、検索結果からもれている、上記検索ユーザがアクセス可能な文書があり得ることを表示する請求項１０記載の文書検索用コンピュータプログラム。
【請求項１２】
検索ユーザの指定に基づいて入力された検索条件を、文書識別子をなす整数または文書識別子に対応づけられた整数により規定される検索範囲を分割して得た複数の整数範囲の各々との論理積を含む新たな検索条件に変換する検索条件変換手段と、
上記新たな検索条件を受け取って検索用データベースを参照して上記新たな検索条件に合致する文書識別子を取得数の上限の範囲で検索結果として出力する検索手段と、
上記検索結果から、上記検索ユーザがアクセスできる文書の文書識別子のみ取り出すフィルタリング手段と、
上記フィルタリング手段により取り出される文書識別子を出力する出力手段とを実現するためにコンピュータで実行されることを特徴とする文書検索用コンピュータプログラム。
【請求項１３】
上記複数の整数範囲は要素数が所定数になるように上記検索範囲を分割する請求項１２記載の文書検索用コンピュータプログラム。
【請求項１４】
上記所定数は上記取得数の上限である請求項１３記載の分割される文書検索用コンピュータプログラム。
【請求項１５】
上記整数は、文書識別子の少なくとも一部を構成する請求項１２、１３または１４記載の文書検索用コンピュータプログラム。
【請求項１６】
上記整数は、文書識別子を可逆の関数を用いて変換した変換結果である請求項１２、１３または１４記載の文書検索用コンピュータプログラム。
【請求項１７】
検索ユーザの指定に基づいて入力された検索条件を、上記検索ユーザがアクセス可能な文書の文書識別子集合との論理積を含む新たな検索条件に変換する検索条件変換手段と、
上記新たな検索条件を受け取って検索用データベースを参照して上記新たな検索条件に合致する文書識別子を取得数の上限の範囲で検索結果として出力する検索手段と、
上記検索手段による検索結果を出力する出力手段とを有することを特徴とする文書検索装置。
【請求項１８】
検索条件変換手段が、検索ユーザの指定に基づいて入力された検索条件を、上記検索ユーザがアクセス可能な文書の文書識別子集合との論理積を含む新たな検索条件に変換する検索条件変換ステップと、
検索手段が、上記新たな検索条件を受け取って検索用データベースを参照して上記新たな検索条件に合致する文書識別子を取得数の上限の範囲で検索結果として出力する検索ステップと、
出力手段が、上記検索手段による検索結果を出力する出力ステップとを有することを特徴とする文書検索方法。
【請求項１９】
検索ユーザの指定に基づいて入力された検索条件を受け取って検索用データベースを参照して検索条件に合致する文書識別子を取得数の上限の範囲で検索結果として出力する検索手段と、
検索結果から、上記検索ユーザがアクセスできる文書の文書識別子のみ取り出すフィルタリング手段と、
上記文書識別子の取得数が上限を越える場合に、上記検索ユーザの指定に基づいて入力された検索条件を、当該検索条件と上記検索ユーザがアクセス可能な文書識別子集合との論理積からなる新たな検索条件に変換して上記検索手段に入力する検索条件変換手段と、
（ａ）上記文書識別子の取得数が上限を越える場合に上記検索条件変換手段により変換された上記論理積からなる新たな検索条件に対する上記検索手段による検索結果を出力し、（ｂ）上記文書識別子の取得数が上限を越えない場合に上記フィルタリング手段により取り出される文書識別子を出力する出力手段とを有することを特徴とする文書検索装置。
【請求項２０】
文書のアクセス権情報を保持するアクセス権情報保持手段と、
上記アクセス権情報保持手段を参照して検索範囲内でユーザがアクセス可能な文書の文書識別子集合を生成する文書識別子集合生成手段と、
検索ユーザの指定に基づいて入力された検索条件を、上記文書識別子集合との論理積を含む新たな検索条件に変換する検索条件変換手段と、
上記新たな検索条件を受け取って検索用データベースを参照して上記新たな検索条件に合致する文書識別子を取得数の上限の範囲で検索結果として出力する検索手段と、
上記検索手段による検索結果を出力する出力手段とを有することを特徴とする文書管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、文書検索技術に関し、とくに、文書に対してユーザ毎のアクセス権が管理された文書管理システムに用いて最適な文書検索技術に関する。
【背景技術】
【０００２】
文書に対してユーザ毎のアクセス権制御が可能な大規模文書管理システムにおいて、検索用インデックスデータ等にユーザのアクセス権制御データを保持しない構成を前提した場合、検索モジュールから出力された検索結果に対してさらにユーザのアクセス権チェックを行い、そのチェック結果を最終的な検索結果とする必要がある。
【０００３】
ここで、文書管理システムを構成する検索モジュールに検索結果取得の上限がある場合、例えば、１０万件のヒットで検索を打ち切り、その後アクセス権チェックで、その１０万件内には、検索ユーザのアクセス権がないものばかりで、最終的な検索結果が０件になる可能性がある。
【０００４】
このように、検索モジュールの検索結果取得に上限がある大規模文書管理システムでは、あるユーザにアクセス権があるはずなのに検索結果として得られないという問題がある。
【０００５】
この課題に対して、以下のような方策がとられている。
【０００６】
特許文献１では、検索対象のレコード（インデックスのレコード）にあらかじめユーザ毎のアクセス権情報をもたせる方法がとられている。このような方法ではユーザの追加／削除や、レコードに対するアクセス権変更などを行う場合、レコード数が大規模になった場合、そのユーザに対するアクセス権を各レコードに対してメンテナンスする煩雑な処理が必要となってしまう。また、この方法を利用して文書内容の全文検索に利用しようとした場合、文書内容もレコードの属性となり、データ自体が検索効率を上げるために検索用のインデックスデータを利用している場合、インデックス自体も大規模になり、インデックスのメンテナンスに要する処理時間も増大することになる。このため大規模文書管理システムでの利用には不向きとなる。
【特許文献１】特開２００１−７５８５４公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
この発明は、以上の事情を考慮してなされたものであり、利用する検索モジュールに検索結果取得の上限がある場合でも、検索ユーザが本来アクセス可能な文書管理システム内の文書を検索結果として得られるようにする文書検索技術を提供することを目的としている。
【課題を解決するための手段】
【０００８】
まず、この発明の原理的な構成例を説明する。
【０００９】
この発明の構成例では、検索対象の文書を管理する文書管理システムは、ユーザ毎のアクセス権を制御する。文書管理システムを構成する検索モジュール、すなわち、文書管理システムが管理する文書を検索する検索モジュールは、検索用インデックス内にユーザ毎のアクセス権情報を保持せず、文書管理システムが直接または間接に管理する、文書ごとのユーザのアクセス権情報を用いて検索結果のフィルタリングを行なう。
【００１０】
この構成例で、具体的には、検索モジュールは、ある検索条件に対する検索結果として文書識別子集合を出力する。その文書識別子は文書管理システム内で文書を一意に特定することができる情報である。検索結果の文書識別子集合に対して、文書ごとにユーザのアクセス権情報が管理されたデータを用いて、検索結果に対するアクセス権チェック（フィルタリング）が可能である。
【００１１】
検索モジュールが１度に検索可能な上限数が決まっている場合、検索後にアクセス権チェックを行うとアクセス可能な文書がなくなるため、または少なくなるため、あらかじめ検索対象の文書識別子集合を求め、文書識別子集合の論理和条件を、ユーザが与えた検索条件に論理積で連結した検索方法を採用する。ただし、一般的に、論理和の条件数に応じて検索時間も比例して増大してしまうのため、以下のような方法で検索条件を切り替える。
【００１２】
検索モジュールに検索結果取得可能な上限（Ｎ件）がある場合、ユーザが与えた検索条件で検索を実行する。ユーザが与えた検索条件による検索結果のヒット件数（ＨＣ件）がＮ件以下である（ＨＣ＜＝Ｎ、所定の整数）ならば、全検索結果を取得し、その結果に対して検索ユーザのアクセス権チェックを行い、アクセス権のある結果のみを検索結果としてユーザに提示する。ＨＣ件がＮ件を越える（ＨＣ＞Ｎ）場合、検索ユーザがアクセス可能な検索範囲内の文書識別子集合を、ユーザが与えたキーワード検索条件に論理積で加え、検索結果を取得する。ここで取得した結果は既にアクセス権チェック済みの結果であり、そのままユーザに提示する。
【００１３】
このような検索処理の制御を行なうことにより、１度に検索可能な上限数の制約がある場合に、アクセス可能な検索結果が減少したり、なくなってしまうという不具合（上限数制約時の検索漏れ）を解消できる。
【００１４】
この発明の他の構成例は、上述の構成例を処理コストの上での改善を実現する。すなわち、検索ユーザがアクセス可能な検索範囲内の文書識別子集合は論理和で処理される。論理和を加えて検索するコストは一般的に論理和の条件数に比例して大きくなるため、アクセス可能な検索範囲内の文書識別子集合が大きい場合、すべての検索結果を取得するコストが非常に大きくなる可能性がある。当該他の構成例では、これを回避するために、さらに処理手順を工夫する。
【００１５】
［１］  検索範囲内の文書識別子集合がある指定した数（これをＭとする。ＭはＮより大きな整数）以上だった場合、ループ処理を行わず、検索結果を取得し検索結果を表示する。結果とともに、すべての検索結果が表示されていないことを示すメッセージを表示する。
【００１６】
提示された検索結果に求める文書が含まれない場合には、さらに検索範囲や検索条件を絞り込んで検索することで目的の文書を取得できる。
【００１７】
［２］  文書識別子を整数とし、検索インデックスに入れておく。「ａ＜＝文書識別子  ＡＮＤ  文書識別子＜＝ｂ」という条件をユーザ指定の検索条件に論理和として加え、検索を繰り返す。ここで、ループ開始時には、ａ＝文書識別子集合に含まれる識別子の最小値、ｂ＝ａ＋Ｎとし、ａ、ｂの値はループ毎にＮを追加する。ｂが文書識別子集合に含まれる最大値に達した時点でループを終了する。そのあとで、検索結果フィルタリングサブモジュールで、取得した結果がＩＤｓに含まれるものだけにする。
【００１８】
一般的に整数の範囲指定で検索することは論理和で検索するより高速なので、検索範囲内の文書識別子集合が大きい場合には全体の検索時間を高速化できる。文書識別子が整数でない場合、なんらかの関数で識別子を整数にマッピングしてもよい。
【００１９】
たとえば、文書識別子の一部に一意な整数が含まれる場合（Ｄｏｃｕｍｅｎｔ−１０など）、整数部分を切り出してこれを検索インデックスに入れておけばよい。また、文書識別子の文字列の一部に整数部分を含まない場合でも、文字列全体をなんらかの可逆な方法（例えばハッシュ関数）で数値に変換すればよい。
【００２０】
さらに、この発明を説明する。以下では、説明の便宜上実施例における参照符号を付すが、これはこの発明を限定する趣旨ではないことに留意されたい。
【００２１】
この発明の一側面によれば、上述の目的を達成するために、文書検索装置（１０００）に：検索ユーザの指定に基づいて入力された検索条件を、上記検索ユーザがアクセス可能な文書の文書識別子集合との論理積を含む新たな検索条件に変換する検索条件変換手段（６２）と；上記新たな検索条件を受け取って検索用データベースを参照して上記新たな検索条件に合致する文書識別子を取得数の上限の範囲で検索結果として出力する検索手段（７０）と；上記検索手段による検索結果を出力する出力手段（６４）とを設けている。
【００２２】
この構成においては、当初の検索条件をユーザのアクセス可能性を反映させた新たな検索条件に変換したのち検索するようにしているので、検索結果の取得上限により検索結果が絞り込まれすぎてアクセス可能なものが漏れてしまうという問題を解消できる。
【００２３】
この構成において、当初の検索結果の取得数等に応じて検索モードを切り替えるようにしても良い。すなわち、上述の文書検索装置（１０００）に：さらに、上記検索ユーザの指定に基づいて入力された検索条件に対して上記検索手段が行なった検索の検索結果から、上記検索ユーザがアクセスできる文書の文書識別子のみ取り出すフィルタリング手段（６１）を設け；上記出力手段が（ａ）上記フィルタリング手段により取り出される文書識別子、および（ｂ）上記検索条件変換手段により変換された上記新たな検索条件に対する上記検索手段による検索結果の一方を、出力するようにしても良い。
【００２４】
この場合、通常の検索結果をアクセス可能性で絞り込んだ結果と、アクセス可能性を加味した新たな検索条件により検索結果とという２つの検索モードの出力を択一的に出力できる。どのような検索モードの出力をえるかはユーザが指定しても良いし、当初の検索結果の取得数に応じて決定しても良い。
【００２５】
また、この構成において、上述の文書検索装置（１０００）に：さらに、上記検索ユーザの指定に基づいて入力された検索条件に対して上記検索手段が行なった検索の検索結果から、上記検索ユーザがアクセスできる文書の文書識別子のみ取り出すフィルタリング手段とを設け；上記出力手段が、（ａ）上記文書識別子の取得数が所定数を越える場合に上記検索条件変換手段により変換された上記新たな検索条件に対する上記検索手段による検索結果を出力し、（ｂ）上記文書識別子の取得数が上記所定数を越えない場合に上記フィルタリング手段により取り出される文書識別子を出力するようにしてもよい。
【００２６】
上記所定数は例えば上記取得数の上限である。
【００２７】
この場合、当初の検索条件の取得数が上限を越える場合には、アクセス可能性を加味した新たな検索条件を生成して検索を行い、そうでない場合には、当初の検索を行なう。当初の検索は論理和演算が少ないので、その分、効率的な処理が可能となる。
【００２８】
上記所定数は厳密に上記取得数の上限に一致させなくともよい。この場合、検索漏れや効率の低下のペナルティがありえるが、当該ペナルティがわずかであり、問題にならない場合も多い。
【００２９】
この構成において、上記検索条件は、検索範囲とキーワードによる論理式とを含んで記述され、上記検索範囲に含まれ、上記検索ユーザがアクセスできる文書の文書識別子集合を取得し、上記検索条件を、上記文書識別子集合と上記キーワードによる論理式との論理積からなる新たな検索条件に変換することが好ましい。上記検索範囲はユーザの指定により、または、無指定で入力することも可能である。
【００３０】
また、この構成において、上記検索ユーザがアクセス可能な文書識別子集合の要素数が上記取得数の上限より大きな所定数を超えた場合には、上記検索条件変換手段から上記検索手段への上記新たな検索条件の入力を禁止することが好ましい。これにより、論理和演算によるコストが多大になるのを抑制できる。
【００３１】
あるいは、この構成において、上記検索ユーザがアクセス可能な文書識別子集合の要素数が上記取得数の上限より大きな所定数を超えた場合には、上記検索条件変換手段では、上記文書識別子集合の要素数が上記取得数の上限以下になるように、複数の集合に分割して複数の新たな検索条件に変換し、各々の新たな検索条件による検索結果の合計数が上記所定数になった時点で、検索を禁止して所定数の検索結果として出力する。この場合、検索結果からもれている、上記検索ユーザがアクセス可能な文書があり得ることを表示することが好ましい。
【００３２】
また、上記検索ユーザがアクセス可能な文書識別子集合の要素数が上記取得数の上限より大きな所定数を超えた場合には、上記フィルタリング手段により取り出される文書識別子を出力することが好ましい。
【００３３】
この場合、上記検索ユーザがアクセス可能な文書識別子集合の要素数が上記取得数の上限より大きな所定数を超えた場合には、検索結果からもれている、上記検索ユーザがアクセス可能な文書があり得ることを表示することが好ましい。
【００３４】
また、この発明の他の側面によれば、上述の目的を達成するために、文書検索装置（１０００）に：検索ユーザの指定に基づいて入力された検索条件を、文書識別子をなす整数または文書識別子に対応づけられた整数により規定される検索範囲を分割して得た複数の整数範囲の各々との論理積を含む新たな検索条件に変換する検索条件変換手段（６２）と、
【００３５】
上記新たな検索条件を受け取って検索用データベースを参照して上記新たな検索条件に合致する文書識別子を取得数の上限の範囲で検索結果として出力する検索手段（７０）と、
【００３６】
上記検索結果から、上記検索ユーザがアクセスできる文書の文書識別子のみ取り出すフィルタリング手段（６１）と、
【００３７】
上記フィルタリング手段により取り出される文書識別子を出力する出力手段（６４）とを設けている。
【００３８】
この構成においても、取得上限のある検索モジュールを用いた場合でも、少ない計算機コストで、もれのないあるいはもれの少ない検索を実現できる。
【００３９】
この構成において、上記複数の整数範囲は要素数が所定数例えば上記取得数の上限になるように上記検索範囲を分割することが好ましい。
【００４０】
上記整数は、文書識別子の少なくとも一部を構成することが好ましい。また、上記整数は、文書識別子を可逆の関数を用いて変換した変換結果であってもよい。
【００４１】
なお、この発明は装置またはシステムとして実現できるのみでなく、方法としても実現可能である。また、そのような発明の一部をソフトウェアとして構成することができることはもちろんである。またそのようなソフトウェアをコンピュータに実行させるために用いるソフトウェア製品もこの発明の技術的な範囲に含まれることも当然である。
【００４２】
この発明の上述の側面および他の側面は特許請求の範囲に記載され以下実施例を用いて詳述される。
【発明の効果】
【００４３】
この発明によれば、利用する検索モジュールに検索結果取得の上限がある場合でも、検索ユーザが本来アクセス可能な文書管理システム内の文書を検索結果として得られるようにすることができる。また、具体的な例では、検索結果取得数に応じて検索モードを切り替えて論理和演算を伴う修正された検索条件による計算コストの上昇を抑制できる。
【発明を実施するための最良の形態】
【００４４】
以下、この発明の実施例について説明する。
【００４５】
図１は、この発明の実施例の文書管理システム（１０００）を全体として示す。この例では、１つの装置として構成しているが、通信ネットワークで接続されたサーバコンピュータおよびクライアント装置で構成しても良い。文書管理システム（１０００）の各部は機能ブロック（モジュール）として示されるが、これら各部は、実際には、コンピュータのハードウェアリソースおよびソフトウェアリソースを協働させて構成される。文書管理システム（１０００）は例えばプログラムを記録した記録媒体（１００２）等を用いてコンピュータ（１００１）にインストールできる。
【００４６】
図１において、文書管理システム（１０００）は、ユーザインタフェースモジュール（１０）、文書管理モジュール（２０）、文書管理データベース（３０）、ユーザ管理モジュール（４０）、ユーザデータベース（５０）、検索処理制御モジュール（６０）、検索モジュール（７０）、検索インデックスデータベース（８０）等を含んで構成される。検索処理制御モジュール（６０）は、検索結果フィルタリングサブモジュール（６１）、検索条件編集サブモジュール（６２）、文書識別子集合データ取得サブモジュール（６３）および検索結果出力モジュール（６４）を含んで構成される。
【００４７】
ユーザインタフェースモジュール（１０）は、ユーザとシステムの界面を提供する。ユーザインタフェースモジュール（１０）は、具体的には、文書管理モジュール（２０）に対して文書の登録／更新／削除／参照／文書のアクセス権設定などの操作を依頼し、ユーザ管理モジュール（４０）に対してユーザの登録／更新／削除の操作を依頼し、検索処理制御モジュール（６０）に対して検索依頼／検索結果取得の操作を依頼する。
【００４８】
文書管理モジュール（２０）は、ユーザインタフェースモジュール（１０）を介して登録された文書を保存し、保存された各文書に対して、ユーザ管理モジュール（４０）で管理されたユーザごとのアクセス権情報を、文書管理データベース（３０）に保持する。文書管理データベース（３０）は、図２に示すように文書識別子ごとに１つ以上の属性情報と個々のユーザに対するアクセス権情報が管理されている。属性情報には例えば所有者情報等が含まれる。アクセス権情報は、ユーザ、グループ、所有者等に対するアクセスレベルを記述する。アクセスレベルは、例えば、検索表示、読み出し、書き込み（読み出し可）、全権利等である。また、文書管理モジュール（２０）は、検索処理制御モジュール（６０）具体的にはその文書識別子集合取得サブモジュール（６３）からの依頼により、ユーザ情報と検索範囲（図４を参照して後述する）から検索ユーザがアクセス可能な文書識別子集合を提供する。文書管理データベース３０は文書を保管しても良いし、別途リポジトリを設けても良い。
【００４９】
ユーザ管理モジュール（４０）は、文書管理システム１０００におけるユーザ情報を管理する。このユーザ情報にはグループ情報や認証情報（パスワード）等も含まれる。
【００５０】
検索処理制御モジュール（６０）は、ユーザインタフェースモジュール（１０）から依頼された検索条件に基づき、文書管理モジュール（２０）および検索モジュール（７０）を用いて検索結果を求める。このとき、ユーザが与えた検索条件から検索結果を得るまでの処理を効率的に行うために、検索処理制御モジュール（６０）は検索条件編集サブモジュール（６２）および検索結果フィルタリングサブモジュール（６１）を利用する。
【００５１】
検索条件編集サブモジュール（６２）は、ユーザから与えられた検索条件の検索範囲を検索ユーザがアクセス可能な文書識別子集合の論理和条件式に変換する（図４参照）。このとき、検索処理制御モジュール（６０）の制御により、ユーザが与えた「検索範囲」を１つの検索識別子集合としたシステム内部の検索条件に変換したり、複数の検索識別子集合としたシステム内部の検索条件に変換したりする。
【００５２】
例えば、図４の例では、検索条件が検索範囲およびキーワードおよび論理演算子を用いて記述した検索式により指定される（図４（ａ））。具体的には、検索ユーザが、ユーザインタフェースモジュール１０を介して検索範囲として「フォルダＡ」および「フォルダＢ」を指定し（「フォルダＡ」ＯＲ「フォルダＢ」）、検索式として「キーワード１」ＡＮＤ（「キーワード２」ＯＲ「キーワード３」）を指定する（図４（ｂ））。システム内部の検索条件の例１（図４（ｃ））では、検索範囲を、『検索ユーザがアクセス可能な「フォルダＡ」および「フォルダＢ」内の文書の文書識別子集合の論理和』に変換する。あるいは、システム内部の検索条件の例２（図４（ｄ））に示すように、検索範囲を、『検索ユーザがアクセス可能な「フォルダＡ」内の文書の文書識別子集合の論理和』および『検索ユーザがアクセス可能な「フォルダＢ」内の文書の文書識別子集合の論理和』に２つに分けて変換する。
【００５３】
検索条件編集サブモジュール（６２）で編集した検索条件を用いて、検索モジュール（７０）で検索された結果は、アクセス権チェック済みの結果であり、ユーザへそのまま提示可能である。
【００５４】
検索結果フィルタリングサブモジュール（６１）では、検索範囲を除いたキーワードによる検索条件を用いて検索モジュール（７０）で検索した結果（アクセス権未チェック結果）に対して、現ユーザがアクセス可能な検索範囲内の文書識別子にフィルタリングすることにより、アクセス権チェック済みの検索結果となり、ユーザへ提示可能である。
【００５５】
検索モジュール（７０）は、検索インデックスデータベース８０を参照して検索を行なう。検索インデックスデータベース８０は、図３に示したようにキーワードからそれを含む文書の文書識別子を得るための検索インデックスを保持し、検索モジュール（７０）はこの検索インデックスを用いて検索処理制御モジュール（６０）から与えられた検索条件に合致した検索結果として文書識別子集合を返す。
【００５６】
検索処理制御モジュール６０の検索結果出力サブモジュール６４は、当初の検索結果の取得数が取得上限Ｎ以下の場合には当初の検索結果を検索結果フィルタリングサブモジュール６１でフィルタリングした文書識別子集合を出力し、当初の検索結果の取得数が所得上限Ｎを上回った場合には検索条件編集サブモジュール６２で編集した検索条件による検索結果を出力する。出力結果はユーザインタフェースモジュール１０を介してユーザに提示される。
【００５７】
図５は、この実施例の検索処理例を示しており、この図において、検索処理制御モジュール６０の制御処理は以下のとおり行なわれる。
【００５８】
［ステップＳ１０］：検索ユーザがアクセス可能な検索範囲内の文書識別子集合（ＩＤｓ）を求める。
［ステップＳ１１］：検索処理制御モジュール６０から検索モジュール７０へ文書識別子指定なしで検索要求を送る。
［ステップＳ１２］：検索モジュール７０から検索結果件数（ＨＣ）を取得する。
［ステップＳ１３］：検索結果件数（ＨＣ）が上限以下（ＨＣ＜＝Ｎ）であればステップＳ１４へ進み、検索結果件数（ＨＣ）が上限を越えていればステップＳ１７へ進む。
［ステップＳ１４］：検索モジュール７０から検索結果を取得する。
［ステップＳ１５］：検索結果フィルタリングサブモジュール６１を用いて、検索結果を、検索ユーザがアクセス可能な検索範囲内の文書識別子集合（ＩＤｓ）に含まれるものだけに絞り込む。
［ステップＳ１６］：ユーザインタフェースモジュール１０を介して、最終的な検索結果をユーザに提示する。
［ステップＳ１７］：検索条件編集サブモジュール６２で生成した検索条件を検索モジュール７０の出力する。検索条件が複数に分かれている場合にはそれぞれの検索条件について検索条件を出力する。
［ステップＳ１８］：検索モジュールから検索結果を取得する。
［ステップＳ１９］：複数回ループして得られた検索結果をまとめ、ステップＳ１６へ進む。検索条件が１つで済む場合には、そのままステップＳ１６に進む。
【００５９】
つぎに上述実施例の変形例について説明する。一般的に、論理和を加えて検索するコストは論理和の条件数に比例して大きくなるため、アクセス可能な検索範囲内の文書識別子集合が大きい場合、すべての検索結果を取得するコストが非常に大きくなる可能性がある。以下説明する変形例はこれを回避するためのものである。
【００６０】
図６は、第１の変形例の検索制御処理例を示している。この図において図５と対応する箇所には対応する符号を付した。
【００６１】
この変形例では、当初の検索取得数が上限を越える（ＨＣ＞Ｎ）場合でも、検索範囲内の文書識別子集合がある指定した数（これをＭとする。ただしＭ＞Ｎ）以上だった場合には、ループ処理（検索範囲を文書識別子集合の和に変換した検索条件の処理）を行わず、検索モジュール７０から検索結果を取得し、検索結果フィルタリングサブモジュールで取得した結果を表示する（ステップＳ２０）。検索結果とともに、すべての検索結果が表示されていないことを示すメッセージを表示することが好ましい。
【００６２】
提示された検索結果に求める文書が含まれない場合には、さらに検索範囲や検索条件を絞り込んで検索することで目的の文書を取得できる。あるいは、事後的に、文書識別子数Ｍの制限の解除をユーザが指定して、再度検索を行い、強制的にループ処理（検索範囲を文書識別子集合の和に変換した検索条件の処理）を行なって目的の文書を取得できるようにしてもよい。当初から、ユーザが文書識別子数Ｍの制限の設定・解除をオプションで指定できるようにしても良い。
【００６３】
図６の処理は、基本的には、図５のステップＳ１３を上述のステップＳ２０に代えただけであるので、詳細な説明は繰り返さない。
【００６４】
この変形例では、文書識別子数Ｍにより検索処理コストが課題になるのを抑制できる。
【００６５】
図７は、第２の変形例の検索制御処理例を示している。この図においても図５と対応する箇所には対応する符号を付した。
【００６６】
この変形例では、文書識別子を整数とし、検索インデックスに入れておく。「ａ＜＝「文書識別子」ＡＮＤ「文書識別子」＜＝ｂ」という条件をユーザ指定の検索条件に論理和として加え、検索を繰り返す。ここで、ループ開始時には、ａ＝文書識別子集合に含まれる識別子の最小値、ｂ＝ａ＋Ｎとし、ａ、ｂの値はループ毎にＮ追加する。ｂが文書識別子集合に含まれる最大値に達した時点でループを終了する。そのあとで、検索結果フィルタリングサブモジュールで、取得した結果が、検索ユーザがアクセス可能な検索範囲内の文書識別子集合（ＩＤｓ）に含まれるものだけにする。
【００６７】
一般的に整数の範囲指定で検索することは論理和で検索するより高速なので、検索範囲内の文書識別子集合が大きい場合には全体の検索時間を高速化できる。文書識別子が整数でない場合、なんらかの関数で識別子を整数にマッピングしてもよい。たとえば、文書識別子の一部に一意な整数が含まれる場合（Ｄｏｃｕｍｅｎｔ−１０など）、整数部分を切り出してこれを検索インデックスに入れておけばよい。また、文書識別子の文字列の一部に整数部分を含まない場合でも、文字列全体をなんらかの可逆な方法（例えばハッシュ関数）で数値に変換すればよい。
【００６８】
なお、整数範囲を規定する数（Ｎ）を上限Ｎより小さなものとしてもよいし、若干の取りこぼしを無視すれば上限Ｎより大きくても良い。
【００６９】
図７の処理は以下のとおりである。
【００７０】
［ステップＳ１０］：検索ユーザがアクセス可能な検索範囲内の文書識別子集合（ＩＤｓ）を求める。
［ステップＳ１１］：検索処理制御モジュール６０から検索モジュール７０へ文書識別子指定なしで検索要求を送る。
［ステップＳ１２］：検索モジュール７０から検索結果件数（ＨＣ）を取得する。
［ステップＳ１３］：検索結果件数（ＨＣ）が上限以下（ＨＣ＜＝Ｎ）であればステップＳ１４へ進み、検索結果件数（ＨＣ）が上限を越えていればステップＳ２１へ進む。
［ステップＳ１４］：検索モジュール７０から検索結果を取得する。
［ステップＳ１５］：検索結果フィルタリングサブモジュール６１を用いて、検索結果を、検索ユーザがアクセス可能な検索範囲内の文書識別子集合（ＩＤｓ）に含まれるものだけに絞り込む。
［ステップＳ１６］：ユーザインタフェースモジュール１０を介して、最終的な検索結果をユーザに提示する。
［ステップＳ２１］：検索条件編集サブモジュール６２で生成した検索条件（『ａ＜「文書識別子」ＡＮＤ「文書識別子」＜ｂ  ＡＮＤ  キーワード条件』）を検索モジュール７０の出力する。検索条件が複数に分かれている場合にはそれぞれの検索条件について検索条件を出力する。
［ステップＳ１８］：検索モジュールから検索結果を取得する。
［ステップＳ２２］：複数回ループして得られた検索結果をまとめ、ステップＳ１５へ進み、アクセス可能な文書に絞り込む。
【００７１】
この変形例では、整数の範囲指定で検索することによる高速処理が実現できる。
【００７２】
なお、この発明は上述の実施例に限定されるものではなくその趣旨を逸脱しない範囲で種々変更が可能である。例えば、上述例では、検索処理制御モジュールが検索結果取得数に基づいて検索条件編集モジュールにより検索式を自動的に修正するようにしているが、ユーザの指定に基づいて検索モードを切り替えて強制的に検索式を修正して検索を実行するようにしても良い。また、上述の実施例および変形例では、検索モジュールによる当初の検索結果の取得数が取得上限を上回らない場合には、検索条件を修正せずにそのまま検索を行なったが、いずれの場合でも検索条件を修正して処理するようにしても良い。また検索結果の取得数等を取得上限と比較したが、厳密に取得上限を基準としなくとも良い。例えば、当初の検索結果の取得数が取得上限を若干上回った場合でも当初の検索条件による検索結果をフィルタリングして最終的な検索結果としても良い。この場合には、若干の検索漏れが予定されるが、受忍できる場合も多いと考えられる。また、当初の検索結果の取得数が取得上限を下回った場合でも修正した検索条件による検索結果を最終的な検索結果としても良い。この場合、検索の繰り返し（ループ）数が増えるが、このような効率の若干の低下も受忍できる場合が多いと考えられる。また上述のアクセス可能とは典型的には読み出し可能であるが、検索表示可能、読み出し可能、書き込み可能等のいずれでもよい。
【００７３】
また、上述の例はキーワードインデックスを用いた検索を例に挙げたが、全文検索、自然文検索等種々の検索手法にも適用できることはもちろんである。
【図面の簡単な説明】
【００７４】
【図１】この発明の実施例の文書管理システムの構成を全体として示す図である。
【図２】上述実施例の文書管理データベースのレコードスキーマの例を説明する図である。
【図３】上述実施例の検索インデックスのレコード例を説明する図である。
【図４】上述実施例の検索条件の編集例を説明する図である。
【図５】上述実施例の動作例を説明するフローチャートである。
【図６】上述実施例の第１の変形例の動作例を説明するフローチャートである。
【図７】上述実施例の第２の変形例の動作例を説明するフローチャートである。
【符号の説明】
【００７５】
１０      ユーザインタフェースモジュール
２０      文書管理モジュール
３０      文書管理データベース
４０      ユーザ管理モジュール
５０      ユーザデータベース
６０      検索処理制御モジュール
６１      検索結果フィルタリングサブモジュール
６２      検索条件編集サブモジュール
６３      文書識別子集合データ取得サブモジュール
６４      検索結果出力サブモジュール
７０      検索モジュール
８０      検索インデックスデータベース
１０００      文書管理システム
１００１      コンピュータ
１００２      記録媒体
【図１】
2006164123.tif 000003
【図２】
2006164123.tif 000004
【図３】
2006164123.tif 000005
【図４】
2006164123.tif 000006
【図５】
2006164123.tif 000007
【図６】
2006164123.tif 000008
【図７】
2006164123.tif 000009