情報検索装置及びデータベース検索前処理回路及び情報検索方法
【課題】 複合データベースの検索において、通常の検索指定に基づけば、リソース消費量が装置で利用可能な上限値を超えて、従来方式では検索実行が不可能となる場合でも、検索の実行を可能とする装置、方法を得る。
【解決手段】 所望の情報検索を記述する検索式を読込み、所定の簡易形式に分割する検索式分割部104と、この分割した簡易形式検索式による検索時の必要リソースがシステムで持つリソース上限値内であるかを評価する検索式評価部103と、検索式分割部が出力する検索命令リストに従って所望の情報検索を行う検索処理部と、を備えて、検索式分割部は、検索式評価部がリソース上限値内であると評価する簡易形式に分割して、検索処理部105は、この簡易形式に基づいて情報検索を行うようにした。
【解決手段】 所望の情報検索を記述する検索式を読込み、所定の簡易形式に分割する検索式分割部104と、この分割した簡易形式検索式による検索時の必要リソースがシステムで持つリソース上限値内であるかを評価する検索式評価部103と、検索式分割部が出力する検索命令リストに従って所望の情報検索を行う検索処理部と、を備えて、検索式分割部は、検索式評価部がリソース上限値内であると評価する簡易形式に分割して、検索処理部105は、この簡易形式に基づいて情報検索を行うようにした。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、マルチデータベース・システムにおけるデータ検索の容易化、特に複雑な検索条件により多量の資源を使用する検索の容易化に関するものである。
【背景技術】
【0002】
従来、マルチデータベース・システムにおけるデータ検索に関して、検索コスト、つまり検索時間や検索時のメモリ等の資源を少なくしたり、検索意図に添った適切対象に絞り込む、といった検索装置、方法が多数提案されている。
例えば特許文献1の「データベース照会最適化システム」によれば、マルチデータベースシステムのデータ照会に要するコストを、最適化する方式が提案されている。上記特許文献1の方式では、最適化の第1段階として、SQLのようなデータ照会言語から、先ずリソース全体の消費量の最適化を考えて、例えば左に深く分岐した、つまり検索処理回数が多い、照会ツリーを一旦生成する。その後に第2段階として、応答時間の短縮を考えて、左に深い照会ツリーを平衡の取れたツリーに変換する。このとき上記文献では、第2段階の平衡の取れたツリーへの変換方式として、ボトムアップ・アプローチや、トップダウン・アプローチという方式が示されている。
【0003】
ところで、昨今、流通するマルチメディアデータの増加に伴い、データベース(DB)に蓄積されるデータ規模の巨大化、検索対象の多様化が予測される。こうなると、必然的にこれらDB中に登録されたデータの増加、検索処理の負荷が高い検索方式の適用、検索式の複雑化などの要因で、検索時のリソースの消費量が増加する。その場合、従来の検索式の最適化を行う検索装置では、検索式の複雑化により装置で利用可能なリソースの上限値を超えることも起こり得る。
【特許文献1】特開平8−328920号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
従来のデータ検索装置、方法においては、SQLのような検索式を入力として、複数のデータベースで構成される複合データベースから所望の情報を得す場合に、上記特許文献1等のさまざまな検索式の最適化方法が考えられてきた。しかしそれらの検索式の最適化方法は、検索時間や、リソース使用量を最小化することである。従って、検索条件が複雑化してリソース使用量が利用可能な上限値を超えるような場合については言及されていず、従って複雑な検索式または多量のデータベースのために検索が実行不可能となる場合が生じるという課題がある。
【0005】
この発明は上記の課題を解決するためになされたもので、複合データベースの検索において、通常の検索指定に基づけば、リソース消費量が装置で利用可能な上限値を超えて、従来方式では検索実行が不可能となる場合でも、検索の実行を可能とする装置、方法を得ることを目的とする。
また更に、そのままでは検索不可能な条件を検索可能とした上で、その可能な検索処理を高速化する装置、方法を得ることを目的とする。
【課題を解決するための手段】
【0006】
この発明に係る情報検索装置は、データベースから所望の情報を検索する情報検索装置において、
上記所望の情報検索を記述する検索式を読込み、この読込んだ検索式を所定の簡易形式に分割する検索式分割部と、
上記検索式分割部が分割した簡易形式検索式による検索時の必要リソースがシステムで持つリソース上限値内であるかを評価する検索式評価部と、
上記検索式分割部が出力する検索命令リストに従って上記所望の情報検索を行う検索処理部と、を備えて、
上記検索式分割部は、上記検索式評価部がリソース上限値内であると評価する簡易形式に分割して、上記検索処理部は、この簡易形式に基づいて情報検索を行うようにした。
【発明の効果】
【0007】
この発明によれば、検索式分割部と検索式評価部とを備えて、検索式分割部は検索式評価部がリソース上限値内であると評価する簡易形式に分割して、検索処理を行うので、検索不可能な条件でも検索可能にして検索処理ができる効果がある。
【発明を実施するための最良の形態】
【0008】
実施の形態1.
従来方式では検索実行が不可能となる場合でも、検索の実行を可能とする装置、方法を図に基づいて説明する。
なお、本実施の形態における装置が検索の対象とするデータベースは、マルチメディアデータを蓄積した個別DBを複数照合する複合DBである。マルチメディアデータとは、文書データや、画像データ、音声データ、映像データ、その他バイナリデータなどの、電子化されたデータのことである。また複合DBは、個別DBと同じ装置上に構成されていてもよいし、ネットワークで接続された異なる個別DB装置を集合した形態であってもよい。
【0009】
図1は本実施の形態における情報検索装置の構成を示す図である。図において、情報検索装置は、以下の要素で構成される。即ち、検索を依頼するユーザから検索式101の入力を受け付ける検索式入力部102、本発明の重要な要素である、入力された検索式による検索時のリソース消費量を評価する検索式評価部103、同じく重要な要素である、検索式を分割して部分検索式と検索命令リストを出力する検索式分割部104、入力された検索式や、検索式分割部104より出力された検索命令リストに従って、実際の検索処理を実行する検索処理部105、検索結果112を検索依頼したユーザに出力する検索結果出力部106、である。
検索処理部105は、更に以下の要素で構成される。即ち、検索式や検索命令リストに従って検索処理を制御する検索制御部107と、複合DBに関連付けられている1種類以上の個別DB111に対して検索を実行する検索実行部109、検索実行部109で得られた検索結果を中間結果として管理する中間結果管理部110、中間結果間の集計(論理演算)処理を実行する中間結果集計部108、である。
なお、検索実行部109は、個別DBに対する検索機能を内包していてもよいし、別の装置上にある個別DBの検索機能を呼び出して検索結果を得るものであってもよい。
またこれらの検索式評価部等の各部は、その機能を実現するソフトウェアのプログラムで記述されており、図示はされていないが、プロセッサ(CPU)とメモリがあって、これら各部の記述されたプログラムを実行して、検索式評価等の各機能を得ている。
【0010】
ここで言うリソースは、情報検索装置に搭載されている、検索処理部105や検索実行部109が、バッファとして使用する際の容量が問題となるメモリであってもよいし、一時的に使用する他のメモリでもよい。また、一時ファイルを格納するディスク装置でもよい。または他にも、CPU使用率の基となるCPUや、ネットワーク使用率の基となるチャネルでもよい。同様に、異なる装置上にある個別DB検索装置のメモリやディスク装置、CPU、チャネルでもよい。
その他に検索が出来なくなるファクターとして、情報検索装置で設定される検索式の長さが長過ぎる場合や、演算子の数が多過ぎるなど、情報検索装置の諸元も考えられる。また更に、個別DBが全文検索を実行する場合の、検索キーワード数や、ユニークな文字数が多過ぎる場合もある。
【0011】
検索時のリソース消費量の評価では、複合DBに関連づけられている個別のDBに対する検索処理や、結果の集計処理について、実行時のリソース情報を検索式評価部103が保持し、その情報を元に全体の検索実行時のリソース消費量を評価する。
具体的には例えば、個別のDBが文書検索用のDBであった場合は、検索時にディスク装置からメモリ上に読み込まれる索引のサイズを、検索キーワードの文字数から計算しても良い。多くの文書検索では、文書中に出現するキーワードや文字の出現位置の情報を、索引としてDBに保持している。キーワードの文書中での出現頻度によって、該当する出現位置情報のサイズは変化するが、検索式中の検索キーワードの出現位置情報の合計サイズを調べることで、それがメモリの容量を超えるか否かを評価することができる。そのために、出現位置情報のサイズの情報を、出現位置情報とは別に記録しておいてもよいし、直接出現位置情報の記録されたファイルのサイズを調べても良い。また、キーワードや文字の出現頻度と、検索式中の検索キーワード数やキーワードの文字数をパラメータにして、索引サイズ等の必要となるメモリサイズを計算する計算式を予め定義しておいても良い。例えば単純に、(比例定数K×キーワードの出現頻度)を1検索キーワードの出現位置情報のサイズとして、その総和をとる等の計算式が考えられる。いずれの場合も、キーワードの出現頻度や、出現位置情報のサイズは、文書をDBに登録する時点で取得することができる。
【0012】
所定のパーセンテージ、例えば最初の10パーセントを検索してみて、検索に該当する出現頻度を抽出して、それを10倍してオーバフローするかどうかを調べてもよい。または、過去に入力された検索式とその消費リソース量の記録を一定回数分保存しておき、検索時にはそれら検索式によるリソース消費量の統計的情報を利用しても良い。例えば統計情報の中には、検索式毎の検索ヒット件数や、検索実行中のメモリやCPUのリソースの消費量の推移などを含んでも良い。中間結果集計処理の場合では、予想される検索のヒット件数から見積もるようにしてもよい。
また、検索時にリソースを大量に消費する個別のDB111と、そうでない個別のDBが共存している場合は、DB毎の重みを設定してもよい。
また、リソースが検索実行部の諸元であった場合、例えば受理できる検索式の長さの上限が設定されている場合は、文字数やバイト数をカウントするだけでよい。すなわち個別のDBの検索実行部109が1回に受理できる検索式の長さの上限がNバイトと定められている場合、strlen()のような文字列の長さを取得する関数で、検索式101の長さを取得することで、上限Nバイトを超えているか否かを容易に判定することができる。
このように、評価するための上限情報と方式を検索式評価部103が保持しており、その情報を元にリソース消費量を評価する。
【0013】
図2は、本実施の形態における情報検索装置の、検索式分割部104と検索式評価部103による、検索処理の流れを示した動作フロー図である。
この図により本実施の形態における情報検索装置の動作を説明する。情報検索装置は、ステップS201(以後ステップの記述を省略する)で検索式入力部102により入力された所望の情報検索を記述した所定検索式を読み込むと、S202でこれをその所定形式での最簡易形式に分解して、S203で検索式評価部103により、この簡易形式による検索式で検索した時に情報検索装置が使用するリソースの消費量を評価する。この検索式の評価により、検索時のリソース消費量が、情報検索装置で利用可能なリソースの上限値(以降、リソース上限値と呼ぶ)の範囲であった場合(No)は、S204に進む。そして検索式分割部104は簡易形式を合成して、上位の簡易形式とする。そしてS203の評価をして、以後この評価がリソース上限値を超えるまでS204のループを繰返す。
ところがS202の検索式による評価で、検索時のリソース消費量が情報検索装置で利用可能なリソースの上限値を超えていた場合(Yes)は、S205で検索式分割部104により、先のS203でリソース上限値を超える直前の検索式について、検索時のリソース消費量がリソース上限値の範囲内に収まるよう、複数の部分検索式に分割する等、検索式を再構成する。S203’においてこの部分検索式でよいことを確認すると、S206でこの部分検索式を検索命令リストとして出力する。そして検索処理部105により、この検索命令リストに従った検索処理が実行される。最後にこの検索処理によって得られた検索結果を、検索結果出力部106からユーザに対して出力して終了する。
【0014】
検索命令リストとは、ユーザから入力された検索式と等価になるよう、部分検索式による検索の実行や、中間結果の集計処理の実行順を指定するリストである。例を図4に検索式と検索命令リストの一例を示す。いま、検索式401が入力され、検索式の評価の結果、検索時のリソース消費量がリソース上限値を超えていたとする。この検索式401を検索式分割部104で分割した結果として、検索命令リスト402が出力される。図4の例では、検索命令リスト402は、最初に検索実行部で部分検索式(A AND B)を実行し、次に検索実行部で部分検索式(C AND D)を実行し、最後に直前の2回の検索で得られた中間結果の集計処理ORを実施することを指定している。検索命令リスト402のように処理することで、検索式401と同じ検索結果を得ることができる。
単純に行うにはこのように、分割は論理演算の各論理毎に分割すればよい。
また検索結果や中間結果とは、検索式で与えられた検索条件に適合したレコード情報の集合である。レコード情報には、DB中のレコードの識別子や、検索条件に適合したレコードを評価したスコア、DBのカラムに格納されているデータなどを含んでよい。
【0015】
図3は、本実施の形態における情報検索装置の検索処理部105による検索処理の流れを示した動作フロー図である。検索処理部105は、ユーザから入力された検索式や、部分検索式と検索命令リストに従って、検索を処理する。
例えば部分検索式を含む検索命令リストが入力されると、検索制御部107はS301で、検索命令リストから検索の実行命令を1つ、例えば検索(A AND B)を取得する。続いてS302で、取得した命令が部分検索式を実行する内容であれば(検索)に移り、検索実行部109に対して部分検索式による検索の実行命令を発行する。検索実行部109はS303で、後の実施の形態で述べるように、必要に応じて部分検索式から検索を実行するための検索プランを生成する。S304では、複合DBに関連づけられている個別のDB111に対して検索を実行し、検索結果を取得する。取得した検索結果はS305で、検索の中間結果として中間結果管理部110に格納する。
S302で、取得した命令が中間結果の集計の実行であった場合は(集計)に移り、S306で中間結果管理部110から複数の中間結果を取得する。S307で中間結果の集計処理を行い、S308で次の部分検索式に移り、S304またはS306の処理を繰り返す。こうして得られた中間結果を、S309で、最終検索式に基づいて中間結果を集計する。中間結果の集計は、S306で逐次実行してもよい。そして、検索結果出力部106に対して出力する。
【0016】
検索処理部105への入力が、ユーザから入力された検索式であった場合は、S301や、S302をスキップして、直接検索実行部109でS304以降、またはS306を実行してもよい。また、中間結果管理部110を介さずに、直接ステップS309で検索結果出力部106に検索結果を出力してもよい。
また検索実行部109では、S303の検索プラン生成処理ステップで、部分検索式による検索時間や、検索時のメモリ使用量が最小になるよう、部分検索式の最適化を行ってもよい。
検索実行や、中間結果集計の処理では、それ以前の処理の結果によっては、実行する必要がないものもある。そのような場合、実行する必要がない検索命令をスキップしてもよい。例えば、次の検索式が与えられ、それ以降の(01),(02),(04)の3つの部分木に分割されたとする。
「((A AND B) OR (C AND D)) AND (E OR F)」
(01)検索(A AND B)
(02)検索(C AND D)
(03)集計OR(検索1、2の中間結果を集計)
(04)検索(E OR F)
(05)集計AND(検索4、集計3の中間結果を集計)
このとき、例えば、集計(03)の実行結果が偽であった(中間結果が何も無い)場合、検索(04)を実行しなくてよい。
【0017】
図1の検索式入力部102ないし中間結果管理部110の各処理部は、1つのプロセッサで実行されるプログラムであってもよいし、それぞれ専用のプロセッサで実行されるように構成してもよい。
またユーザが入力する検索式は、ユーザが直接キーボードなどの入力装置で入力してもよいし、検索式を記述したファイルを入力し、これを検索式入力部102が読取るようにしてもよい。
入力された検索式101や、検索式入力部102から検索処理部105に伝達する検索式、部分検索式、検索命令リストは、メモリ上の情報としてプロセッサが図示しないバスを通じて伝達してよいし、一時ファイルを介して一括伝達してもよい。また、グラフィカルユーザインターフェースを通してユーザが入力した検索条件を、情報検索装置の入力の形式に変換する処理を含んでもよい。
中間結果管理部110では、メモリ上で中間結果を管理してもよいし、中間結果をディスク装置など外部記憶装置上に一時ファイルとして記憶し、後で利用してもよい。検索実行部109や検索処理部105が出力する検索結果も、メモリ上の情報として伝達してもよいし、ファイルを介して伝達してもよい。
検索結果出力部106は、結果を画面などの出力装置に出力してもよいし、ファイルに出力してもよい。また、検索結果を編集・加工・利用する別の装置にメモリ上の情報として出力してもよい。
【0018】
本実施の形態における情報検索装置は、上記のように、ユーザが入力した検索式の検索時のリソース消費量を評価し、リソース上限値を超えていた場合は検索式を分割して検索を実行するように構成されている。このため従来の方式で、ユーザから入力された検索式により検索時のリソース消費量がリソース上限値を超えるため検索の実行が不可能であった場合でも、検索の実行が可能である。
【0019】
実施の形態2.
先の実施の形態における情報検索装置では、検索式を分割して、検索の処理を分割する装置を説明した。こうすると、検索式の分割数が多いと、検索の初期化処理や中間結果管理部へのデータの入出力処理等により、検索時間が増大することが予想される。言い換えれば、検索式の分割数が少ないほど、全体の検索処理の効率は良くなる。ここでは情報検索装置が、検索式分割部により検索処理を向上する分割を行う方式を説明する。
一般に論理式は、木構造の論理に展開可能である。そこで本実施の形態における検索式の分割方式は、検索式を木構造の論理式とみなして、2分木と呼ばれる木構造に展開する。2分木とは、リーフを除く全てのノードにおける子の数が2以下である木構造である。検索式を2分木に展開したとき、その木のリーフは、1つの検索実行部の検索処理に対応し、内部ノードは中間結果集計部の集計処理に対応する。この2分木の高さをDとする。
【0020】
図5は、本実施の形態における情報検索装置の検索式分割部による検索式分割処理を示す動作フロー図である。
図において、検索式分割部104bは、検索式が入力されると、ステップS501で検索式を2分木に展開する。S502では高さiが1の部分木を構築する。次にS503で、前のステップで構築した部分木に対して、検索式評価部103により検索時のリソース消費量を評価する。S503で部分木による検索時リソース消費量がリソース上限を超えていない場合(No)は、次のS504で高さi+1の部分木を構築する。そしてS503で上限値になるまで木を高くして行く。
そしてS503で部分木による検索時リソース消費量がリソース上限を超える場合(Yes)はS505で、S503で調べてYesになる直前の最も高さが高い部分木による部分検索式を分割して新しい部分検索式を持つ部分木によってもリソースの上限値を超えないかをS503’で確認して、S506で部分検索式と、中間結果集計処理(ルート)を検索命令リストとして出力する。即ちS503とS504の処理を、高さi=1(すなわちリーフのみの部分木)から、最大Dまで繰り返す。そしてS501で展開した2分木の分割が完了したら、S506で検索命令リストを出力して終了する。
【0021】
このようにS501で検索式を2分木に展開したが、検索式を2分木に展開する方法は複数ある。例えば図13の検索式1101は、木1102のようにも、木1103のようにも展開可能である。しかし木1102のように、左(または右)に深い木の場合は、検索式の分割数が多くなる可能性がある。例えば、部分木1104がひとつの部分検索式として分割された場合、リーフC、リーフDは、単独で部分検索式となり、分割効率がよくない。一方で、木1103のように平衡の取れた木(高さが最小の木)の場合、木1102のような問題がない。従って検索式を2分木に展開する場合は、木1103のような、平衡の取れた木に展開する。
【0022】
本実施の形態における検索式分割処理の動作を図6により説明する。その場合の例として図4の検索式401を用いる。
1)検索式601が入力されると、S501で検索式601は2分木602に展開される。ここで、AないしDはリーフで、複合DBに関連づけられた個別のDBに対する検索条件でもある。内部ノードEないしGは、中間結果の集計処理である。この例では中間結果の集計は、ANDまたはORの論理演算としている。ところで例としてリソース上限値を100、AないしD単体の検索時のリソース消費量を30とする。説明を判りやすくするため、中間結果の集計処理はリソースを消費しないものとする。また部分木による検索時のリソース消費量は、リーフ単体での検索時のリソース消費量の和とする。なお、木602の高さは3である。
2)S502で、高さ1の部分木、即ち木A、木B、木C、木Dを構築する。
【0023】
3)S503で、S502で構築した部分木の、検索時のリソース消費量を評価する。評価の結果、いずれも30であり、リソース上限(100)の範囲内である。
4)S504で、高さ2の部分木を構築する。即ち木ABE,木CDEを構築する。
5)S503で、S502で構築した部分木の、検索時のリソース消費量を評価する。評価の結果はいずれも60であり、リソース上限の範囲内である。
6)S504で、高さ3の部分木を構築する。即ち木ABCDEFGを構築する。
7)S503で、S502で構築した部分木の、検索時のリソース消費量を評価する。評価の結果は120であり、リソース上限(100)を超えている。
8)S505で、木ABCDEFG中の、2つの高さ2の部分木に対応した検索式を構築する。これは明らかに評価が60であり、リソース範囲内である。S506でこの高さ2の部分木に対応した検索式の情報と、リーフGの情報を、検索命令リストとして出力する。すなわち、部分検索式(A AND B)、部分検索式(C AND D)、中間結果集計処理ORを、検索命令リスト(図4の検索命令リスト402)とする。
【0024】
本実施の形態における情報検索装置は、上記のように検索式を2分木に展開後、リーフからボトムアップに部分木を長く構築して、リソース消費量がリソース上限値を超えたところで、その直前の最長部分木で分割するように構成しているので、検索式の分割処理において、部分検索式による検索時のリソース消費量がリソース上限の範囲内で最大にできる。その結果、検索式の分割数を少なくできる。
【0025】
実施の形態3.
先の実施の形態と同様目的で、他の動作を行う情報検索装置を説明する。
本実施の形態における情報検索装置の動作を図7のフロー図により説明する。図において、情報検索装置の検索式分割部104cは、検索式が入力されるとステップS701で、検索式を2分木に展開し、さらに2分木の内部ノードを走査して、同じラベルを持つ親子関係にあるノードを結合する。S701の処理により、2分木では内部ノードの子の数が必ず2以下であったものが、内部ノードが2以上の子を持つことになる。この木の高さをDとする。S702以降では、実施の形態2に示した処理の流れと同様に、ボトムアップに部分木を構築する。S702で、高さ1の部分木を構築する。次にS703で、S702で構築した部分木に対して検索式評価部103により検索時のリソース消費量を評価する。S703で部分木による検索時リソース消費量がリソース上限を超えていない場合(No)は、S704で高さi+1の部分木を構築する。このS703とS704を最大Dの高さまで繰返す。
そしてS703で部分木による検索時リソース消費量がリソース上限を超える場合(Yes)は、S705でその直前の部分木による分割を再検討して、各々の部分木による分割が検索時のリソース消費量がリソース上限の範囲で最大となり、つまり分割数が最小となる部分木を構築する。これをS706で、集計処理論理と、分割された高さiの部分木に対応する部分検索式の情報として検索命令リストを出力し、分割を終了する。
【0026】
先の実施の形態2における図5のS504の処理では、高さiの木は、一意に2つの高さi−1の部分木に分割できた。しかし本実施の形態における図7のS705の処理で、高さiの木を高さi−1の木に分割する方法は、何通りも存在する。S704における部分木の分割処理のような、部分木の検索時のリソース消費量をリソース上限の範囲内で最大とする、ノードの組合せ最適化問題は、近似解を多項式時間で得るアルゴリズムが考案されており、高速に処理することが可能である。
【0027】
図8は、本実施の形態における、検索式分割処理の例を示す図である。
いま、検索式801が入力されたとする。このとき、先の実施の形態2に示した、検索式を2分木802に展開してから分割する方式では、2分木802は、部分木ABG、部分木CDH、部分木EFIの3つの部分木に分割される。検索命令リストは以下の5つの処理からなる。
(1)検索(A OR B)(Gをルートとする部分木の処理)
(2)検索(C OR D)(Hをルートとする部分木の処理)
(3)中間結果集計OR (内部ノードJの処理)
(4)検索(E OR F)(Iをルートとする部分木の処理)
(5)中間結果集計OR(内部ノードKの処理)
【0028】
本実施の形態における検索式分割処理の流れは以下の通りである。
11)検索式801が入力されると、S701で検索式801を2分木802に展開する。ここで、AないしEはリーフで、複合DBに関連づけられた個別のDBに対する検索条件である。内部ノードGないしKは、中間結果の集計処理である。実施の形態2と同様に、この例では中間結果の集計は、ANDまたはORの論理演算としている。リソース上限値を100とし、AないしEの検索処理のリソース消費量は、図8に示す通りであるとする。更に、木802で同じラベルを持ち、親子関係にある内部ノードGないしKを結合して、木803が得られる。
12)S702で、高さ1の部分木を構築する。すなわち木A〜木Fである。
13)S703で、S702で構築した部分木の、検索時のリソース消費量を評価する。評価の結果、リソース消費量は30または40で、いずれもリソース上限(100)の範囲内である。
【0029】
14)S704で、高さ2の部分木を構築する。すなわち木ABCDEFKである。
15)S703で、S704で構築した部分木の、検索時のリソース消費量を評価する。評価の結果は200であり、リソース上限を超えている。
16)S705で、この場合に木ABCDEFGは高さ2であり、高さ1にすることは意味がないので、木ABCDEFGを2つ以上の各種の部分木に分割する。ここで例えば、木803のリーフを左から順に選んで部分木に分割した場合、リーフABを含む部分木、リーフCDEを含む部分木、リーフKを含む3つの部分木803に分割できる。または木804のようにリーフの組合せを変えると、最終的に木805のように、部分木ACDGと部分木BEFHの2の部分木と、ルートに分割できる。
17)木803の分割が完了したので、S706で検索命令リストを出力して終了する。
このときの、検索命令リストは以下の3つの処理からなる。
(11)検索(A OR C OR D)(Gをルートとする部分木の処理)
(12)検索(B OR E OR F)(Hをルートとする部分木の処理)
(13)中間結果集計OR(内部ノードKの処理)
【0030】
本実施の形態における情報検索装置は、上記のように、検索式を2分木に展開後、更に同じラベルを持つ親子関係にあるノードを結合し、リーフからボトムアップに部分木を構築し、リソース消費量がリソース上限値を超えたところで、部分木を分割するように構成しているので、検索式の分割処理において、先の実施の形態における方式と比べ、更に分割数を少なくできる。
【0031】
実施の形態4.
特別な形式の検索式について説明する。本実施の形態においては、情報検索装置の検索式分割部104dは、検索式をDNF(Disjunctive Normal Form)形式の木構造に変形する。DNFは、積和標準形とも呼ばれる論理式の形式の一つで、論理変数を論理演算子ANDで結合した項を、論理演算子ORで結合した形の論理式であり、高さ3の木として表現できる。なお任意の論理式をDNF形式に変形可能である。
【0032】
図9は、本実施の形態における情報検索装置の、検索式分割部104dによる検索式分割処理の動作を示すフロー図である。検索式分割部104dは、検索式が入力されるとS901で、検索式をDNF形式の木に変形する。S902以降は、実施の形態3に示した処理の流れと同様に、ボトムアップに部分木を構築する。即ちS902で、高さiの部分木を構築する。次にS903で、S902で構築した部分木に対して検索式評価部103により検索時のリソース消費量を評価する。S903で部分木による検索時リソース消費量がリソース上限を超えていない場合(No)は、S904で高さi+1の部分木を構築する。こうしてS903とS904で高さを順次高くした木を構築して行く。
S903で部分木による検索時リソース消費量がリソース上限を超える場合(Yes)は、S905で高さiの部分木を、各々の部分木を検索時にリソース消費量がリソース上限の範囲で最大となるよう、すなわち分割数が最小となるよう、2つ以上の高さiの部分木に分割する。こうしてS503ないしS505を高さi=1からこの場合は最大3まで繰返して、ルート(中間結果集計処理)の情報と、分割された高さiの部分木に対応する、部分検索式の情報を、S906で検索命令リストとして作成し、出力する。
このように、図7,図9に示す検索式の論理木の変換を行うことで、最適解が見つけやすくなる。
【0033】
図10を用いて本実施の形態における検索式分割処理の動作を説明する。
いま、検索式1001が入力されたとする。このとき、先の実施の形態に示した方式では、検索式を2分木に展開後、更に同じラベルを持つ親子関係にあるノードを結合した木1002に変形する。ここで、AないしEはリーフである。内部ノードJないしNは、中間結果の集計処理である。実施の形態2と同様に、この例では中間結果の集計はANDまたはORの論理演算としている。リソース上限値を100、AないしHの検索処理のリソース消費量は、図8の通りであるとする。またこの例での、中間結果集計処理のリソース消費量を以下のように定める。
AND処理・・・子のリソース消費量の最も大きいものと等しい
OR処理・・・子のリソース消費量の総和と等しい
先の実施の形態における方式では、木1002は、部分木ABCDL、部分木EFJ、部分木GIK、部分木Hの4つの部分木に分割される。このときの検索命令リストは以下の7つの処理からなる。
(21)検索(A AND B AND C AND D)
(22)検索(E OR F)
(23)検索(G OR I)
(24)検索(H)
(25)中間結果集計OR(内部ノードKの処理)
(26)中間結果集計AND(内部ノードMの処理)
(27)中間結果集計OR(内部ノードNの処理)
【0034】
本実施の形態における検索式分割処理の動作は以下の通りとなる。
21)検索式1001が入力されると、S901で検索式1001をDNF形式の木1003に変形する。
22)S902で、高さ1の部分木を構築する。すなわち木Aないし木Hである。
23)S903で、S902で構築した部分木の、検索時のリソース消費量を評価する。評価の結果、いずれもリソース上限(100)の範囲内である。
24)S904で、高さ2の部分木を構築する。すなわち木ABCDL、木EIL、木EGL、木EHL、木FGL、木FHL、木FILである。
25)S903で、S904で構築した部分木の、検索時のリソース消費量を評価する。評価の結果は、木ABCDL、木EIL、木FILが50、木EGL、木FGLが40、木EHL、木FHLが20であり、いずれもリソース上限の範囲内である。
26)再びS904で、高さ3の木を構築する。すなわち、木AないしNである。
27)再びS903で、S904で構築した高さ3の木の、検索時のリソース消費量を評価する。評価の結果、リソース消費量は270であり、リソース上限値を超えている。
28)S905で、木AないしNを2つ以上の部分木に分割する。木1004に示したように、部分木1005、部分木1006、部分木1007の、3つの部分木に分割できる。
29)S903’で、これらの個別の部分木を評価すると、部分木1005と部分木1006でも100となり、リソース上限内である。従って木1003の分割が完了したので、S906で検索命令リストを出力して終了する。
【0035】
このときの、検索命令リストは以下の4つの処理からなる。
(31)検索((A AND B AND C AND D)OR(E AND I))
(32)検索((E AND G)OR(E AND H)OR(F AND G))
(33)検索((F AND H)OR(F AND I))
(34)中間結果集計OR(ルートノードの処理)
こうして実施の形態3と同様に、S905における部分木の分割処理のような、部分木の検索時のリソース消費量をリソース上限の範囲内で最大とするノードの組合せ最適化問題は、近似解を多項式時間で得るアルゴリズムが考案されており、高速に処理することが可能である。
【0036】
本実施の形態における情報検索装置は、上記したように検索式をDNF形式の木に変形後、リーフからボトムアップに部分木を構築し、リソース消費量がリソース上限値を超えたところで、部分木を分割するように構成しているので、検索式の分割処理において、部分検索式による検索時のリソース消費量がリソース上限の範囲内で最大とすることができる。その結果、検索式の分割数を少なくすることができる。
【0037】
本実施の形態の変形として、他の検索式分割部104eによる検索式の分割方式を説明する。即ち検索式をCNF(Conjunctive Normal Form)形式の木構造に変形する。CNFは、和積標準形とも呼ばれる論理式の形式の一つで、論理変数を論理演算子ORで結合した節を、論理演算子ANDで結合した形の論理式であり、この場合は高さ3の木として表現できる。また任意の論理式は、CNFに変形可能である。
【0038】
この検索式分割部104eによる検索式分割処理の動作は、図9のS901の処理を「検索式をCNFに変形する」ものと同等である。
この検索式分割部104eによる情報検索は、検索式をCNF形式の木に変形後、リーフからボトムアップに部分木を構築し、リソース消費量がリソース上限値を超えたところで、部分木を分割するように構成する。
従って検索式の分割処理において、部分検索式による検索時のリソース消費量を上限値内で最大にでき、検索式の分割数を少なくできる。
【0039】
実施の形態5.
先の各実施の形態では、情報検索装置は内部的に部分木を構築し、リソース上限値内で最大リソース消費となる検索式を生成して、検索を実行した。本実施の形態では、情報検索装置が分割した検索式を画面やログファイルに出力する構成とした。
図12は、本実施の形態における情報検索装置の構成例を示す図である。この構成は、先の各実施の形態における情報検索装置に、検索式分割部から出力された部分検索式を画面などの出力装置やログファイル1208などに出力する検索式出力部1205を追加した構成になっている。その他の検索式入力部1202、検索式評価部1203、検索式分割部1204、検索処理部1206、検索結果出力部1207は、先の実施の形態のそれらと同じ要素である。
なお、検索式出力部1205が画面などの出力装置やログファイル1208に出力する情報は、検索式分割部1204から出力された部分検索式や検索命令リスト、検索式を分割したか否かのフラグ情報、検索式の分割方法が複数ある場合はその分割方法などの情報でもよい。また、検索式入力部1202に入力された検索式をそのまま出力してもよい。
【0040】
図11は、本実施の形態における情報検索装置による、検索処理の動作を示した図である。
図に基づいて動作を説明する。S1301において検索式入力部1202で検索式の入力を受け付けると、S1302において検索式評価部1203で入力された検索式による検索時のリソースの消費量を評価する。検索式の評価により、検索時のリソース消費量がリソース上限値内であった場合(No)は、図示では詳細を示していないが、先の各実施の形態で説明したように、部分木の高さを順次高くして部分検索式を作成して、リソース上限内の最高高さの部分木でS1304に進む。即ちS1302の検索式の評価で、検索時のリソース消費量が利用可能な上限値を超える場合(Yes)に、S1303で検索式分割部1204によりリソース消費量が上限値内となるように複数の部分検索式に分割する。
そしてS1304では、検索式を分割した部分検索式や検索命令リストを、画面やログファイル等1208に出力する。S1205では、入力された検索式や、S1303で分割された部分検索式と検索命令リストに従って、検索処理部1206により検索処理が実行される。最後にS1306で、S1305の検索処理によって得られた検索結果を検索結果出力部1207からユーザに対して出力して終了する。
なおS1304の部分検索式の出力処理は、S1303後に実行される動作とすれば、どの段階で実行するようにしてもかまわない。
【0041】
このように本実施の形態の情報検索装置は、検索式分割部で分割された検索式に関する情報を画面表示等で出力するので、ユーザが必要に応じて、検索式の分割状況を参照することができる。
【0042】
なお、上記各実施の形態では、検索式分割部、検索式評価部等の各要素は、専用の機能を持つとして説明した。しかし汎用の計算機を用いて各実施の形態で説明した図2、3、5、7、9等の各図で示される機能を持たせたプログラムにより、同等の動作をさせる方法としてもよい。
このようにしても情報検索方法として同じ優れた効果が得られる。
【0043】
実施の形態6.
以下、図14を元に一般的な検索式分割処理の流れを示す。検索式を論理木に展開後の処理の流れは、図7のS702と同等である。
31)検索式1401が入力されると、検索式1401を論理木1402に展開する。この例では中間結果の集計は、ANDまたはORの論理演算としている。リソース上限値を100とし、AないしNの検索処理のリソース消費量は、図14に示す通りであるとする。また、部分木のリソース消費量は、単純のため、その部分木の根のリソース消費量の総和とする。
32)高さ1の部分木を構築する。すなわち、部分木A〜Nである。この部分木の検索時のリソース消費量を評価すると、全て100未満であり、リソース上限の範囲内である。
33)高さ2の部分木を構築する。すなわち部分木1406,1407,1408である。これらの部分木の検索時のリソース消費量を評価すると、全て100未満であるので、リソース上限の範囲内である。
34)高さ3の部分木を構築する。すなわち部分木1409,1410である。
これらの部分木の検索時リソース消費量を評価すると、部分木1409のリソース消費量は30であり、リソース上限の範囲内である。一方、部分木1410のリソース消費量は170であり、リソース上限を超えて得いる。
35)部分木1410の検索時のリソース消費量が、リソース上限を超えているため、部分木を分割する。最適な分割の例として部分木1412と1413のように分割される。分割後は、分割された部分木の検索式と、高さ3の部分木の根のラベルの情報が、検索命令リストに出力される。このとき検索命令リストは以下のようになる。
(41)検索(部分木1412)
(42)検索(部分木1413)
(43)中間結果集計AND(部分木1412,1413の実行結果の集計)
36)高さ4の部分木を構築する。すなわち部分木1411である。部分木1411の検索時のリソース消費量を評価すると60であり、リソース上限の範囲内である。
37)高さ5の部分木を構築する。すなわちノードTを根とする木1405であるが、既にノードSを根とする部分木は分割済みであり、木1405の検索時のリソース消費量が、リソース上限を超えることは明らかである。このような場合は、単に部分木1411の検索命令、ノードSを根とする部分木の検索命令、根Tのラベルの情報を検索命令リストに出力する。すなわち、検索命令リストは以下のようになる。
(51)検索(部分木1411)
(52)検索(部分木1412)
(53)検索(部分木1413)
(54)中間結果集計AND(部分木1412,1413の実行結果の集計)
(55)中間結果集計OR(1の検索および4の集計の実行結果の集計)
【図面の簡単な説明】
【0044】
【図1】この発明の実施の形態1における情報検索装置の構成を示す図である。
【図2】実施の形態1における情報検索装置による検索処理の動作フロー図である。
【図3】実施の形態1における検索処理部による検索処理の動作フロー図である。
【図4】この発明の実施の形態1及び2における情報検索装置が取扱う検索式の例を示す図である。
【図5】実施の形態2における情報検索装置が行う検索式構築及び分割処理の動作フロー図である。
【図6】実施の形態2における検索式構築及び分割処理の動作を説明する図である。
【図7】この発明の実施の形態3における情報検索装置が行う検索式構築及び分割処理の動作フロー図である。
【図8】実施の形態3における検索式構築及び分割処理の動作を説明する図である。
【図9】この発明の実施の形態4における情報検索装置が行う検索式構築及び分割処理の動作フロー図である。
【図10】実施の形態4における検索式構築及び分割処理の動作を説明する図である。
【図11】この発明の実施の形態5における情報検索装置が行う検索式構築及び分割処理の動作フロー図である。
【図12】実施の形態5における情報検索装置の構成を示す図である。
【図13】実施の形態2で比較対象とした検索式の分割を示す図である。
【図14】実施の形態6における一般的な検索式分割処理の流れを示す図である。
【符号の説明】
【0045】
102 検索式入力部、103 検索式評価部、104,104b,104c,104d,104e 検索式分割部、105 検索処理部、106 検索結果出力部、107 検索制御部、108 中間結果集計部、109 検索実行部、110 中間結果管理部、111 データベース(DB)、1205 検索式出力部、S201 所望の情報検索を記述した検索式読込みステップ、S202 所定形式の最簡易形式への分解ステップ、S203 分解(合成)後の簡易形式による検索時にリソースが上限値を超えるかを評価するステップ、S204 簡易形式の合成ステップ、S205 直前の簡易形式による検索式の再構成ステップ、S206 部分検索式と中間集計処理からなる検索命令リスト出力ステップ、S501 検索式を2分木展開ステップ、S502 高さi=1の部分木構築ステップ、S503 部分木記述による検索時にリソースが上限値を超えるかを評価するステップ、S504 i+1の部分木構築ステップ、S505 直前の部分木を分割した検索式を持つ部分木構築ステップ、S701 検索式を2分木展開して同じラベルを持つ親子ノード結合ステップ、S702 高さi=1の部分木構築ステップ、S703 部分木記述による検索時にリソースが上限値を超えるかを評価するステップ、S704 i+1の部分木構築ステップ、S705 直前の部分木を分割した検索式を持つ部分木構築ステップ、S901 検索式をDNFに変形するステップ、S902 高さi=1の部分木構築ステップ、S903 部分木記述による検索時にリソースが上限値を超えるかを評価するステップ、S904 i+1の部分木構築ステップ、S905 直前の部分木を分割した検索式を持つ部分木構築ステップ。
【技術分野】
【0001】
この発明は、マルチデータベース・システムにおけるデータ検索の容易化、特に複雑な検索条件により多量の資源を使用する検索の容易化に関するものである。
【背景技術】
【0002】
従来、マルチデータベース・システムにおけるデータ検索に関して、検索コスト、つまり検索時間や検索時のメモリ等の資源を少なくしたり、検索意図に添った適切対象に絞り込む、といった検索装置、方法が多数提案されている。
例えば特許文献1の「データベース照会最適化システム」によれば、マルチデータベースシステムのデータ照会に要するコストを、最適化する方式が提案されている。上記特許文献1の方式では、最適化の第1段階として、SQLのようなデータ照会言語から、先ずリソース全体の消費量の最適化を考えて、例えば左に深く分岐した、つまり検索処理回数が多い、照会ツリーを一旦生成する。その後に第2段階として、応答時間の短縮を考えて、左に深い照会ツリーを平衡の取れたツリーに変換する。このとき上記文献では、第2段階の平衡の取れたツリーへの変換方式として、ボトムアップ・アプローチや、トップダウン・アプローチという方式が示されている。
【0003】
ところで、昨今、流通するマルチメディアデータの増加に伴い、データベース(DB)に蓄積されるデータ規模の巨大化、検索対象の多様化が予測される。こうなると、必然的にこれらDB中に登録されたデータの増加、検索処理の負荷が高い検索方式の適用、検索式の複雑化などの要因で、検索時のリソースの消費量が増加する。その場合、従来の検索式の最適化を行う検索装置では、検索式の複雑化により装置で利用可能なリソースの上限値を超えることも起こり得る。
【特許文献1】特開平8−328920号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
従来のデータ検索装置、方法においては、SQLのような検索式を入力として、複数のデータベースで構成される複合データベースから所望の情報を得す場合に、上記特許文献1等のさまざまな検索式の最適化方法が考えられてきた。しかしそれらの検索式の最適化方法は、検索時間や、リソース使用量を最小化することである。従って、検索条件が複雑化してリソース使用量が利用可能な上限値を超えるような場合については言及されていず、従って複雑な検索式または多量のデータベースのために検索が実行不可能となる場合が生じるという課題がある。
【0005】
この発明は上記の課題を解決するためになされたもので、複合データベースの検索において、通常の検索指定に基づけば、リソース消費量が装置で利用可能な上限値を超えて、従来方式では検索実行が不可能となる場合でも、検索の実行を可能とする装置、方法を得ることを目的とする。
また更に、そのままでは検索不可能な条件を検索可能とした上で、その可能な検索処理を高速化する装置、方法を得ることを目的とする。
【課題を解決するための手段】
【0006】
この発明に係る情報検索装置は、データベースから所望の情報を検索する情報検索装置において、
上記所望の情報検索を記述する検索式を読込み、この読込んだ検索式を所定の簡易形式に分割する検索式分割部と、
上記検索式分割部が分割した簡易形式検索式による検索時の必要リソースがシステムで持つリソース上限値内であるかを評価する検索式評価部と、
上記検索式分割部が出力する検索命令リストに従って上記所望の情報検索を行う検索処理部と、を備えて、
上記検索式分割部は、上記検索式評価部がリソース上限値内であると評価する簡易形式に分割して、上記検索処理部は、この簡易形式に基づいて情報検索を行うようにした。
【発明の効果】
【0007】
この発明によれば、検索式分割部と検索式評価部とを備えて、検索式分割部は検索式評価部がリソース上限値内であると評価する簡易形式に分割して、検索処理を行うので、検索不可能な条件でも検索可能にして検索処理ができる効果がある。
【発明を実施するための最良の形態】
【0008】
実施の形態1.
従来方式では検索実行が不可能となる場合でも、検索の実行を可能とする装置、方法を図に基づいて説明する。
なお、本実施の形態における装置が検索の対象とするデータベースは、マルチメディアデータを蓄積した個別DBを複数照合する複合DBである。マルチメディアデータとは、文書データや、画像データ、音声データ、映像データ、その他バイナリデータなどの、電子化されたデータのことである。また複合DBは、個別DBと同じ装置上に構成されていてもよいし、ネットワークで接続された異なる個別DB装置を集合した形態であってもよい。
【0009】
図1は本実施の形態における情報検索装置の構成を示す図である。図において、情報検索装置は、以下の要素で構成される。即ち、検索を依頼するユーザから検索式101の入力を受け付ける検索式入力部102、本発明の重要な要素である、入力された検索式による検索時のリソース消費量を評価する検索式評価部103、同じく重要な要素である、検索式を分割して部分検索式と検索命令リストを出力する検索式分割部104、入力された検索式や、検索式分割部104より出力された検索命令リストに従って、実際の検索処理を実行する検索処理部105、検索結果112を検索依頼したユーザに出力する検索結果出力部106、である。
検索処理部105は、更に以下の要素で構成される。即ち、検索式や検索命令リストに従って検索処理を制御する検索制御部107と、複合DBに関連付けられている1種類以上の個別DB111に対して検索を実行する検索実行部109、検索実行部109で得られた検索結果を中間結果として管理する中間結果管理部110、中間結果間の集計(論理演算)処理を実行する中間結果集計部108、である。
なお、検索実行部109は、個別DBに対する検索機能を内包していてもよいし、別の装置上にある個別DBの検索機能を呼び出して検索結果を得るものであってもよい。
またこれらの検索式評価部等の各部は、その機能を実現するソフトウェアのプログラムで記述されており、図示はされていないが、プロセッサ(CPU)とメモリがあって、これら各部の記述されたプログラムを実行して、検索式評価等の各機能を得ている。
【0010】
ここで言うリソースは、情報検索装置に搭載されている、検索処理部105や検索実行部109が、バッファとして使用する際の容量が問題となるメモリであってもよいし、一時的に使用する他のメモリでもよい。また、一時ファイルを格納するディスク装置でもよい。または他にも、CPU使用率の基となるCPUや、ネットワーク使用率の基となるチャネルでもよい。同様に、異なる装置上にある個別DB検索装置のメモリやディスク装置、CPU、チャネルでもよい。
その他に検索が出来なくなるファクターとして、情報検索装置で設定される検索式の長さが長過ぎる場合や、演算子の数が多過ぎるなど、情報検索装置の諸元も考えられる。また更に、個別DBが全文検索を実行する場合の、検索キーワード数や、ユニークな文字数が多過ぎる場合もある。
【0011】
検索時のリソース消費量の評価では、複合DBに関連づけられている個別のDBに対する検索処理や、結果の集計処理について、実行時のリソース情報を検索式評価部103が保持し、その情報を元に全体の検索実行時のリソース消費量を評価する。
具体的には例えば、個別のDBが文書検索用のDBであった場合は、検索時にディスク装置からメモリ上に読み込まれる索引のサイズを、検索キーワードの文字数から計算しても良い。多くの文書検索では、文書中に出現するキーワードや文字の出現位置の情報を、索引としてDBに保持している。キーワードの文書中での出現頻度によって、該当する出現位置情報のサイズは変化するが、検索式中の検索キーワードの出現位置情報の合計サイズを調べることで、それがメモリの容量を超えるか否かを評価することができる。そのために、出現位置情報のサイズの情報を、出現位置情報とは別に記録しておいてもよいし、直接出現位置情報の記録されたファイルのサイズを調べても良い。また、キーワードや文字の出現頻度と、検索式中の検索キーワード数やキーワードの文字数をパラメータにして、索引サイズ等の必要となるメモリサイズを計算する計算式を予め定義しておいても良い。例えば単純に、(比例定数K×キーワードの出現頻度)を1検索キーワードの出現位置情報のサイズとして、その総和をとる等の計算式が考えられる。いずれの場合も、キーワードの出現頻度や、出現位置情報のサイズは、文書をDBに登録する時点で取得することができる。
【0012】
所定のパーセンテージ、例えば最初の10パーセントを検索してみて、検索に該当する出現頻度を抽出して、それを10倍してオーバフローするかどうかを調べてもよい。または、過去に入力された検索式とその消費リソース量の記録を一定回数分保存しておき、検索時にはそれら検索式によるリソース消費量の統計的情報を利用しても良い。例えば統計情報の中には、検索式毎の検索ヒット件数や、検索実行中のメモリやCPUのリソースの消費量の推移などを含んでも良い。中間結果集計処理の場合では、予想される検索のヒット件数から見積もるようにしてもよい。
また、検索時にリソースを大量に消費する個別のDB111と、そうでない個別のDBが共存している場合は、DB毎の重みを設定してもよい。
また、リソースが検索実行部の諸元であった場合、例えば受理できる検索式の長さの上限が設定されている場合は、文字数やバイト数をカウントするだけでよい。すなわち個別のDBの検索実行部109が1回に受理できる検索式の長さの上限がNバイトと定められている場合、strlen()のような文字列の長さを取得する関数で、検索式101の長さを取得することで、上限Nバイトを超えているか否かを容易に判定することができる。
このように、評価するための上限情報と方式を検索式評価部103が保持しており、その情報を元にリソース消費量を評価する。
【0013】
図2は、本実施の形態における情報検索装置の、検索式分割部104と検索式評価部103による、検索処理の流れを示した動作フロー図である。
この図により本実施の形態における情報検索装置の動作を説明する。情報検索装置は、ステップS201(以後ステップの記述を省略する)で検索式入力部102により入力された所望の情報検索を記述した所定検索式を読み込むと、S202でこれをその所定形式での最簡易形式に分解して、S203で検索式評価部103により、この簡易形式による検索式で検索した時に情報検索装置が使用するリソースの消費量を評価する。この検索式の評価により、検索時のリソース消費量が、情報検索装置で利用可能なリソースの上限値(以降、リソース上限値と呼ぶ)の範囲であった場合(No)は、S204に進む。そして検索式分割部104は簡易形式を合成して、上位の簡易形式とする。そしてS203の評価をして、以後この評価がリソース上限値を超えるまでS204のループを繰返す。
ところがS202の検索式による評価で、検索時のリソース消費量が情報検索装置で利用可能なリソースの上限値を超えていた場合(Yes)は、S205で検索式分割部104により、先のS203でリソース上限値を超える直前の検索式について、検索時のリソース消費量がリソース上限値の範囲内に収まるよう、複数の部分検索式に分割する等、検索式を再構成する。S203’においてこの部分検索式でよいことを確認すると、S206でこの部分検索式を検索命令リストとして出力する。そして検索処理部105により、この検索命令リストに従った検索処理が実行される。最後にこの検索処理によって得られた検索結果を、検索結果出力部106からユーザに対して出力して終了する。
【0014】
検索命令リストとは、ユーザから入力された検索式と等価になるよう、部分検索式による検索の実行や、中間結果の集計処理の実行順を指定するリストである。例を図4に検索式と検索命令リストの一例を示す。いま、検索式401が入力され、検索式の評価の結果、検索時のリソース消費量がリソース上限値を超えていたとする。この検索式401を検索式分割部104で分割した結果として、検索命令リスト402が出力される。図4の例では、検索命令リスト402は、最初に検索実行部で部分検索式(A AND B)を実行し、次に検索実行部で部分検索式(C AND D)を実行し、最後に直前の2回の検索で得られた中間結果の集計処理ORを実施することを指定している。検索命令リスト402のように処理することで、検索式401と同じ検索結果を得ることができる。
単純に行うにはこのように、分割は論理演算の各論理毎に分割すればよい。
また検索結果や中間結果とは、検索式で与えられた検索条件に適合したレコード情報の集合である。レコード情報には、DB中のレコードの識別子や、検索条件に適合したレコードを評価したスコア、DBのカラムに格納されているデータなどを含んでよい。
【0015】
図3は、本実施の形態における情報検索装置の検索処理部105による検索処理の流れを示した動作フロー図である。検索処理部105は、ユーザから入力された検索式や、部分検索式と検索命令リストに従って、検索を処理する。
例えば部分検索式を含む検索命令リストが入力されると、検索制御部107はS301で、検索命令リストから検索の実行命令を1つ、例えば検索(A AND B)を取得する。続いてS302で、取得した命令が部分検索式を実行する内容であれば(検索)に移り、検索実行部109に対して部分検索式による検索の実行命令を発行する。検索実行部109はS303で、後の実施の形態で述べるように、必要に応じて部分検索式から検索を実行するための検索プランを生成する。S304では、複合DBに関連づけられている個別のDB111に対して検索を実行し、検索結果を取得する。取得した検索結果はS305で、検索の中間結果として中間結果管理部110に格納する。
S302で、取得した命令が中間結果の集計の実行であった場合は(集計)に移り、S306で中間結果管理部110から複数の中間結果を取得する。S307で中間結果の集計処理を行い、S308で次の部分検索式に移り、S304またはS306の処理を繰り返す。こうして得られた中間結果を、S309で、最終検索式に基づいて中間結果を集計する。中間結果の集計は、S306で逐次実行してもよい。そして、検索結果出力部106に対して出力する。
【0016】
検索処理部105への入力が、ユーザから入力された検索式であった場合は、S301や、S302をスキップして、直接検索実行部109でS304以降、またはS306を実行してもよい。また、中間結果管理部110を介さずに、直接ステップS309で検索結果出力部106に検索結果を出力してもよい。
また検索実行部109では、S303の検索プラン生成処理ステップで、部分検索式による検索時間や、検索時のメモリ使用量が最小になるよう、部分検索式の最適化を行ってもよい。
検索実行や、中間結果集計の処理では、それ以前の処理の結果によっては、実行する必要がないものもある。そのような場合、実行する必要がない検索命令をスキップしてもよい。例えば、次の検索式が与えられ、それ以降の(01),(02),(04)の3つの部分木に分割されたとする。
「((A AND B) OR (C AND D)) AND (E OR F)」
(01)検索(A AND B)
(02)検索(C AND D)
(03)集計OR(検索1、2の中間結果を集計)
(04)検索(E OR F)
(05)集計AND(検索4、集計3の中間結果を集計)
このとき、例えば、集計(03)の実行結果が偽であった(中間結果が何も無い)場合、検索(04)を実行しなくてよい。
【0017】
図1の検索式入力部102ないし中間結果管理部110の各処理部は、1つのプロセッサで実行されるプログラムであってもよいし、それぞれ専用のプロセッサで実行されるように構成してもよい。
またユーザが入力する検索式は、ユーザが直接キーボードなどの入力装置で入力してもよいし、検索式を記述したファイルを入力し、これを検索式入力部102が読取るようにしてもよい。
入力された検索式101や、検索式入力部102から検索処理部105に伝達する検索式、部分検索式、検索命令リストは、メモリ上の情報としてプロセッサが図示しないバスを通じて伝達してよいし、一時ファイルを介して一括伝達してもよい。また、グラフィカルユーザインターフェースを通してユーザが入力した検索条件を、情報検索装置の入力の形式に変換する処理を含んでもよい。
中間結果管理部110では、メモリ上で中間結果を管理してもよいし、中間結果をディスク装置など外部記憶装置上に一時ファイルとして記憶し、後で利用してもよい。検索実行部109や検索処理部105が出力する検索結果も、メモリ上の情報として伝達してもよいし、ファイルを介して伝達してもよい。
検索結果出力部106は、結果を画面などの出力装置に出力してもよいし、ファイルに出力してもよい。また、検索結果を編集・加工・利用する別の装置にメモリ上の情報として出力してもよい。
【0018】
本実施の形態における情報検索装置は、上記のように、ユーザが入力した検索式の検索時のリソース消費量を評価し、リソース上限値を超えていた場合は検索式を分割して検索を実行するように構成されている。このため従来の方式で、ユーザから入力された検索式により検索時のリソース消費量がリソース上限値を超えるため検索の実行が不可能であった場合でも、検索の実行が可能である。
【0019】
実施の形態2.
先の実施の形態における情報検索装置では、検索式を分割して、検索の処理を分割する装置を説明した。こうすると、検索式の分割数が多いと、検索の初期化処理や中間結果管理部へのデータの入出力処理等により、検索時間が増大することが予想される。言い換えれば、検索式の分割数が少ないほど、全体の検索処理の効率は良くなる。ここでは情報検索装置が、検索式分割部により検索処理を向上する分割を行う方式を説明する。
一般に論理式は、木構造の論理に展開可能である。そこで本実施の形態における検索式の分割方式は、検索式を木構造の論理式とみなして、2分木と呼ばれる木構造に展開する。2分木とは、リーフを除く全てのノードにおける子の数が2以下である木構造である。検索式を2分木に展開したとき、その木のリーフは、1つの検索実行部の検索処理に対応し、内部ノードは中間結果集計部の集計処理に対応する。この2分木の高さをDとする。
【0020】
図5は、本実施の形態における情報検索装置の検索式分割部による検索式分割処理を示す動作フロー図である。
図において、検索式分割部104bは、検索式が入力されると、ステップS501で検索式を2分木に展開する。S502では高さiが1の部分木を構築する。次にS503で、前のステップで構築した部分木に対して、検索式評価部103により検索時のリソース消費量を評価する。S503で部分木による検索時リソース消費量がリソース上限を超えていない場合(No)は、次のS504で高さi+1の部分木を構築する。そしてS503で上限値になるまで木を高くして行く。
そしてS503で部分木による検索時リソース消費量がリソース上限を超える場合(Yes)はS505で、S503で調べてYesになる直前の最も高さが高い部分木による部分検索式を分割して新しい部分検索式を持つ部分木によってもリソースの上限値を超えないかをS503’で確認して、S506で部分検索式と、中間結果集計処理(ルート)を検索命令リストとして出力する。即ちS503とS504の処理を、高さi=1(すなわちリーフのみの部分木)から、最大Dまで繰り返す。そしてS501で展開した2分木の分割が完了したら、S506で検索命令リストを出力して終了する。
【0021】
このようにS501で検索式を2分木に展開したが、検索式を2分木に展開する方法は複数ある。例えば図13の検索式1101は、木1102のようにも、木1103のようにも展開可能である。しかし木1102のように、左(または右)に深い木の場合は、検索式の分割数が多くなる可能性がある。例えば、部分木1104がひとつの部分検索式として分割された場合、リーフC、リーフDは、単独で部分検索式となり、分割効率がよくない。一方で、木1103のように平衡の取れた木(高さが最小の木)の場合、木1102のような問題がない。従って検索式を2分木に展開する場合は、木1103のような、平衡の取れた木に展開する。
【0022】
本実施の形態における検索式分割処理の動作を図6により説明する。その場合の例として図4の検索式401を用いる。
1)検索式601が入力されると、S501で検索式601は2分木602に展開される。ここで、AないしDはリーフで、複合DBに関連づけられた個別のDBに対する検索条件でもある。内部ノードEないしGは、中間結果の集計処理である。この例では中間結果の集計は、ANDまたはORの論理演算としている。ところで例としてリソース上限値を100、AないしD単体の検索時のリソース消費量を30とする。説明を判りやすくするため、中間結果の集計処理はリソースを消費しないものとする。また部分木による検索時のリソース消費量は、リーフ単体での検索時のリソース消費量の和とする。なお、木602の高さは3である。
2)S502で、高さ1の部分木、即ち木A、木B、木C、木Dを構築する。
【0023】
3)S503で、S502で構築した部分木の、検索時のリソース消費量を評価する。評価の結果、いずれも30であり、リソース上限(100)の範囲内である。
4)S504で、高さ2の部分木を構築する。即ち木ABE,木CDEを構築する。
5)S503で、S502で構築した部分木の、検索時のリソース消費量を評価する。評価の結果はいずれも60であり、リソース上限の範囲内である。
6)S504で、高さ3の部分木を構築する。即ち木ABCDEFGを構築する。
7)S503で、S502で構築した部分木の、検索時のリソース消費量を評価する。評価の結果は120であり、リソース上限(100)を超えている。
8)S505で、木ABCDEFG中の、2つの高さ2の部分木に対応した検索式を構築する。これは明らかに評価が60であり、リソース範囲内である。S506でこの高さ2の部分木に対応した検索式の情報と、リーフGの情報を、検索命令リストとして出力する。すなわち、部分検索式(A AND B)、部分検索式(C AND D)、中間結果集計処理ORを、検索命令リスト(図4の検索命令リスト402)とする。
【0024】
本実施の形態における情報検索装置は、上記のように検索式を2分木に展開後、リーフからボトムアップに部分木を長く構築して、リソース消費量がリソース上限値を超えたところで、その直前の最長部分木で分割するように構成しているので、検索式の分割処理において、部分検索式による検索時のリソース消費量がリソース上限の範囲内で最大にできる。その結果、検索式の分割数を少なくできる。
【0025】
実施の形態3.
先の実施の形態と同様目的で、他の動作を行う情報検索装置を説明する。
本実施の形態における情報検索装置の動作を図7のフロー図により説明する。図において、情報検索装置の検索式分割部104cは、検索式が入力されるとステップS701で、検索式を2分木に展開し、さらに2分木の内部ノードを走査して、同じラベルを持つ親子関係にあるノードを結合する。S701の処理により、2分木では内部ノードの子の数が必ず2以下であったものが、内部ノードが2以上の子を持つことになる。この木の高さをDとする。S702以降では、実施の形態2に示した処理の流れと同様に、ボトムアップに部分木を構築する。S702で、高さ1の部分木を構築する。次にS703で、S702で構築した部分木に対して検索式評価部103により検索時のリソース消費量を評価する。S703で部分木による検索時リソース消費量がリソース上限を超えていない場合(No)は、S704で高さi+1の部分木を構築する。このS703とS704を最大Dの高さまで繰返す。
そしてS703で部分木による検索時リソース消費量がリソース上限を超える場合(Yes)は、S705でその直前の部分木による分割を再検討して、各々の部分木による分割が検索時のリソース消費量がリソース上限の範囲で最大となり、つまり分割数が最小となる部分木を構築する。これをS706で、集計処理論理と、分割された高さiの部分木に対応する部分検索式の情報として検索命令リストを出力し、分割を終了する。
【0026】
先の実施の形態2における図5のS504の処理では、高さiの木は、一意に2つの高さi−1の部分木に分割できた。しかし本実施の形態における図7のS705の処理で、高さiの木を高さi−1の木に分割する方法は、何通りも存在する。S704における部分木の分割処理のような、部分木の検索時のリソース消費量をリソース上限の範囲内で最大とする、ノードの組合せ最適化問題は、近似解を多項式時間で得るアルゴリズムが考案されており、高速に処理することが可能である。
【0027】
図8は、本実施の形態における、検索式分割処理の例を示す図である。
いま、検索式801が入力されたとする。このとき、先の実施の形態2に示した、検索式を2分木802に展開してから分割する方式では、2分木802は、部分木ABG、部分木CDH、部分木EFIの3つの部分木に分割される。検索命令リストは以下の5つの処理からなる。
(1)検索(A OR B)(Gをルートとする部分木の処理)
(2)検索(C OR D)(Hをルートとする部分木の処理)
(3)中間結果集計OR (内部ノードJの処理)
(4)検索(E OR F)(Iをルートとする部分木の処理)
(5)中間結果集計OR(内部ノードKの処理)
【0028】
本実施の形態における検索式分割処理の流れは以下の通りである。
11)検索式801が入力されると、S701で検索式801を2分木802に展開する。ここで、AないしEはリーフで、複合DBに関連づけられた個別のDBに対する検索条件である。内部ノードGないしKは、中間結果の集計処理である。実施の形態2と同様に、この例では中間結果の集計は、ANDまたはORの論理演算としている。リソース上限値を100とし、AないしEの検索処理のリソース消費量は、図8に示す通りであるとする。更に、木802で同じラベルを持ち、親子関係にある内部ノードGないしKを結合して、木803が得られる。
12)S702で、高さ1の部分木を構築する。すなわち木A〜木Fである。
13)S703で、S702で構築した部分木の、検索時のリソース消費量を評価する。評価の結果、リソース消費量は30または40で、いずれもリソース上限(100)の範囲内である。
【0029】
14)S704で、高さ2の部分木を構築する。すなわち木ABCDEFKである。
15)S703で、S704で構築した部分木の、検索時のリソース消費量を評価する。評価の結果は200であり、リソース上限を超えている。
16)S705で、この場合に木ABCDEFGは高さ2であり、高さ1にすることは意味がないので、木ABCDEFGを2つ以上の各種の部分木に分割する。ここで例えば、木803のリーフを左から順に選んで部分木に分割した場合、リーフABを含む部分木、リーフCDEを含む部分木、リーフKを含む3つの部分木803に分割できる。または木804のようにリーフの組合せを変えると、最終的に木805のように、部分木ACDGと部分木BEFHの2の部分木と、ルートに分割できる。
17)木803の分割が完了したので、S706で検索命令リストを出力して終了する。
このときの、検索命令リストは以下の3つの処理からなる。
(11)検索(A OR C OR D)(Gをルートとする部分木の処理)
(12)検索(B OR E OR F)(Hをルートとする部分木の処理)
(13)中間結果集計OR(内部ノードKの処理)
【0030】
本実施の形態における情報検索装置は、上記のように、検索式を2分木に展開後、更に同じラベルを持つ親子関係にあるノードを結合し、リーフからボトムアップに部分木を構築し、リソース消費量がリソース上限値を超えたところで、部分木を分割するように構成しているので、検索式の分割処理において、先の実施の形態における方式と比べ、更に分割数を少なくできる。
【0031】
実施の形態4.
特別な形式の検索式について説明する。本実施の形態においては、情報検索装置の検索式分割部104dは、検索式をDNF(Disjunctive Normal Form)形式の木構造に変形する。DNFは、積和標準形とも呼ばれる論理式の形式の一つで、論理変数を論理演算子ANDで結合した項を、論理演算子ORで結合した形の論理式であり、高さ3の木として表現できる。なお任意の論理式をDNF形式に変形可能である。
【0032】
図9は、本実施の形態における情報検索装置の、検索式分割部104dによる検索式分割処理の動作を示すフロー図である。検索式分割部104dは、検索式が入力されるとS901で、検索式をDNF形式の木に変形する。S902以降は、実施の形態3に示した処理の流れと同様に、ボトムアップに部分木を構築する。即ちS902で、高さiの部分木を構築する。次にS903で、S902で構築した部分木に対して検索式評価部103により検索時のリソース消費量を評価する。S903で部分木による検索時リソース消費量がリソース上限を超えていない場合(No)は、S904で高さi+1の部分木を構築する。こうしてS903とS904で高さを順次高くした木を構築して行く。
S903で部分木による検索時リソース消費量がリソース上限を超える場合(Yes)は、S905で高さiの部分木を、各々の部分木を検索時にリソース消費量がリソース上限の範囲で最大となるよう、すなわち分割数が最小となるよう、2つ以上の高さiの部分木に分割する。こうしてS503ないしS505を高さi=1からこの場合は最大3まで繰返して、ルート(中間結果集計処理)の情報と、分割された高さiの部分木に対応する、部分検索式の情報を、S906で検索命令リストとして作成し、出力する。
このように、図7,図9に示す検索式の論理木の変換を行うことで、最適解が見つけやすくなる。
【0033】
図10を用いて本実施の形態における検索式分割処理の動作を説明する。
いま、検索式1001が入力されたとする。このとき、先の実施の形態に示した方式では、検索式を2分木に展開後、更に同じラベルを持つ親子関係にあるノードを結合した木1002に変形する。ここで、AないしEはリーフである。内部ノードJないしNは、中間結果の集計処理である。実施の形態2と同様に、この例では中間結果の集計はANDまたはORの論理演算としている。リソース上限値を100、AないしHの検索処理のリソース消費量は、図8の通りであるとする。またこの例での、中間結果集計処理のリソース消費量を以下のように定める。
AND処理・・・子のリソース消費量の最も大きいものと等しい
OR処理・・・子のリソース消費量の総和と等しい
先の実施の形態における方式では、木1002は、部分木ABCDL、部分木EFJ、部分木GIK、部分木Hの4つの部分木に分割される。このときの検索命令リストは以下の7つの処理からなる。
(21)検索(A AND B AND C AND D)
(22)検索(E OR F)
(23)検索(G OR I)
(24)検索(H)
(25)中間結果集計OR(内部ノードKの処理)
(26)中間結果集計AND(内部ノードMの処理)
(27)中間結果集計OR(内部ノードNの処理)
【0034】
本実施の形態における検索式分割処理の動作は以下の通りとなる。
21)検索式1001が入力されると、S901で検索式1001をDNF形式の木1003に変形する。
22)S902で、高さ1の部分木を構築する。すなわち木Aないし木Hである。
23)S903で、S902で構築した部分木の、検索時のリソース消費量を評価する。評価の結果、いずれもリソース上限(100)の範囲内である。
24)S904で、高さ2の部分木を構築する。すなわち木ABCDL、木EIL、木EGL、木EHL、木FGL、木FHL、木FILである。
25)S903で、S904で構築した部分木の、検索時のリソース消費量を評価する。評価の結果は、木ABCDL、木EIL、木FILが50、木EGL、木FGLが40、木EHL、木FHLが20であり、いずれもリソース上限の範囲内である。
26)再びS904で、高さ3の木を構築する。すなわち、木AないしNである。
27)再びS903で、S904で構築した高さ3の木の、検索時のリソース消費量を評価する。評価の結果、リソース消費量は270であり、リソース上限値を超えている。
28)S905で、木AないしNを2つ以上の部分木に分割する。木1004に示したように、部分木1005、部分木1006、部分木1007の、3つの部分木に分割できる。
29)S903’で、これらの個別の部分木を評価すると、部分木1005と部分木1006でも100となり、リソース上限内である。従って木1003の分割が完了したので、S906で検索命令リストを出力して終了する。
【0035】
このときの、検索命令リストは以下の4つの処理からなる。
(31)検索((A AND B AND C AND D)OR(E AND I))
(32)検索((E AND G)OR(E AND H)OR(F AND G))
(33)検索((F AND H)OR(F AND I))
(34)中間結果集計OR(ルートノードの処理)
こうして実施の形態3と同様に、S905における部分木の分割処理のような、部分木の検索時のリソース消費量をリソース上限の範囲内で最大とするノードの組合せ最適化問題は、近似解を多項式時間で得るアルゴリズムが考案されており、高速に処理することが可能である。
【0036】
本実施の形態における情報検索装置は、上記したように検索式をDNF形式の木に変形後、リーフからボトムアップに部分木を構築し、リソース消費量がリソース上限値を超えたところで、部分木を分割するように構成しているので、検索式の分割処理において、部分検索式による検索時のリソース消費量がリソース上限の範囲内で最大とすることができる。その結果、検索式の分割数を少なくすることができる。
【0037】
本実施の形態の変形として、他の検索式分割部104eによる検索式の分割方式を説明する。即ち検索式をCNF(Conjunctive Normal Form)形式の木構造に変形する。CNFは、和積標準形とも呼ばれる論理式の形式の一つで、論理変数を論理演算子ORで結合した節を、論理演算子ANDで結合した形の論理式であり、この場合は高さ3の木として表現できる。また任意の論理式は、CNFに変形可能である。
【0038】
この検索式分割部104eによる検索式分割処理の動作は、図9のS901の処理を「検索式をCNFに変形する」ものと同等である。
この検索式分割部104eによる情報検索は、検索式をCNF形式の木に変形後、リーフからボトムアップに部分木を構築し、リソース消費量がリソース上限値を超えたところで、部分木を分割するように構成する。
従って検索式の分割処理において、部分検索式による検索時のリソース消費量を上限値内で最大にでき、検索式の分割数を少なくできる。
【0039】
実施の形態5.
先の各実施の形態では、情報検索装置は内部的に部分木を構築し、リソース上限値内で最大リソース消費となる検索式を生成して、検索を実行した。本実施の形態では、情報検索装置が分割した検索式を画面やログファイルに出力する構成とした。
図12は、本実施の形態における情報検索装置の構成例を示す図である。この構成は、先の各実施の形態における情報検索装置に、検索式分割部から出力された部分検索式を画面などの出力装置やログファイル1208などに出力する検索式出力部1205を追加した構成になっている。その他の検索式入力部1202、検索式評価部1203、検索式分割部1204、検索処理部1206、検索結果出力部1207は、先の実施の形態のそれらと同じ要素である。
なお、検索式出力部1205が画面などの出力装置やログファイル1208に出力する情報は、検索式分割部1204から出力された部分検索式や検索命令リスト、検索式を分割したか否かのフラグ情報、検索式の分割方法が複数ある場合はその分割方法などの情報でもよい。また、検索式入力部1202に入力された検索式をそのまま出力してもよい。
【0040】
図11は、本実施の形態における情報検索装置による、検索処理の動作を示した図である。
図に基づいて動作を説明する。S1301において検索式入力部1202で検索式の入力を受け付けると、S1302において検索式評価部1203で入力された検索式による検索時のリソースの消費量を評価する。検索式の評価により、検索時のリソース消費量がリソース上限値内であった場合(No)は、図示では詳細を示していないが、先の各実施の形態で説明したように、部分木の高さを順次高くして部分検索式を作成して、リソース上限内の最高高さの部分木でS1304に進む。即ちS1302の検索式の評価で、検索時のリソース消費量が利用可能な上限値を超える場合(Yes)に、S1303で検索式分割部1204によりリソース消費量が上限値内となるように複数の部分検索式に分割する。
そしてS1304では、検索式を分割した部分検索式や検索命令リストを、画面やログファイル等1208に出力する。S1205では、入力された検索式や、S1303で分割された部分検索式と検索命令リストに従って、検索処理部1206により検索処理が実行される。最後にS1306で、S1305の検索処理によって得られた検索結果を検索結果出力部1207からユーザに対して出力して終了する。
なおS1304の部分検索式の出力処理は、S1303後に実行される動作とすれば、どの段階で実行するようにしてもかまわない。
【0041】
このように本実施の形態の情報検索装置は、検索式分割部で分割された検索式に関する情報を画面表示等で出力するので、ユーザが必要に応じて、検索式の分割状況を参照することができる。
【0042】
なお、上記各実施の形態では、検索式分割部、検索式評価部等の各要素は、専用の機能を持つとして説明した。しかし汎用の計算機を用いて各実施の形態で説明した図2、3、5、7、9等の各図で示される機能を持たせたプログラムにより、同等の動作をさせる方法としてもよい。
このようにしても情報検索方法として同じ優れた効果が得られる。
【0043】
実施の形態6.
以下、図14を元に一般的な検索式分割処理の流れを示す。検索式を論理木に展開後の処理の流れは、図7のS702と同等である。
31)検索式1401が入力されると、検索式1401を論理木1402に展開する。この例では中間結果の集計は、ANDまたはORの論理演算としている。リソース上限値を100とし、AないしNの検索処理のリソース消費量は、図14に示す通りであるとする。また、部分木のリソース消費量は、単純のため、その部分木の根のリソース消費量の総和とする。
32)高さ1の部分木を構築する。すなわち、部分木A〜Nである。この部分木の検索時のリソース消費量を評価すると、全て100未満であり、リソース上限の範囲内である。
33)高さ2の部分木を構築する。すなわち部分木1406,1407,1408である。これらの部分木の検索時のリソース消費量を評価すると、全て100未満であるので、リソース上限の範囲内である。
34)高さ3の部分木を構築する。すなわち部分木1409,1410である。
これらの部分木の検索時リソース消費量を評価すると、部分木1409のリソース消費量は30であり、リソース上限の範囲内である。一方、部分木1410のリソース消費量は170であり、リソース上限を超えて得いる。
35)部分木1410の検索時のリソース消費量が、リソース上限を超えているため、部分木を分割する。最適な分割の例として部分木1412と1413のように分割される。分割後は、分割された部分木の検索式と、高さ3の部分木の根のラベルの情報が、検索命令リストに出力される。このとき検索命令リストは以下のようになる。
(41)検索(部分木1412)
(42)検索(部分木1413)
(43)中間結果集計AND(部分木1412,1413の実行結果の集計)
36)高さ4の部分木を構築する。すなわち部分木1411である。部分木1411の検索時のリソース消費量を評価すると60であり、リソース上限の範囲内である。
37)高さ5の部分木を構築する。すなわちノードTを根とする木1405であるが、既にノードSを根とする部分木は分割済みであり、木1405の検索時のリソース消費量が、リソース上限を超えることは明らかである。このような場合は、単に部分木1411の検索命令、ノードSを根とする部分木の検索命令、根Tのラベルの情報を検索命令リストに出力する。すなわち、検索命令リストは以下のようになる。
(51)検索(部分木1411)
(52)検索(部分木1412)
(53)検索(部分木1413)
(54)中間結果集計AND(部分木1412,1413の実行結果の集計)
(55)中間結果集計OR(1の検索および4の集計の実行結果の集計)
【図面の簡単な説明】
【0044】
【図1】この発明の実施の形態1における情報検索装置の構成を示す図である。
【図2】実施の形態1における情報検索装置による検索処理の動作フロー図である。
【図3】実施の形態1における検索処理部による検索処理の動作フロー図である。
【図4】この発明の実施の形態1及び2における情報検索装置が取扱う検索式の例を示す図である。
【図5】実施の形態2における情報検索装置が行う検索式構築及び分割処理の動作フロー図である。
【図6】実施の形態2における検索式構築及び分割処理の動作を説明する図である。
【図7】この発明の実施の形態3における情報検索装置が行う検索式構築及び分割処理の動作フロー図である。
【図8】実施の形態3における検索式構築及び分割処理の動作を説明する図である。
【図9】この発明の実施の形態4における情報検索装置が行う検索式構築及び分割処理の動作フロー図である。
【図10】実施の形態4における検索式構築及び分割処理の動作を説明する図である。
【図11】この発明の実施の形態5における情報検索装置が行う検索式構築及び分割処理の動作フロー図である。
【図12】実施の形態5における情報検索装置の構成を示す図である。
【図13】実施の形態2で比較対象とした検索式の分割を示す図である。
【図14】実施の形態6における一般的な検索式分割処理の流れを示す図である。
【符号の説明】
【0045】
102 検索式入力部、103 検索式評価部、104,104b,104c,104d,104e 検索式分割部、105 検索処理部、106 検索結果出力部、107 検索制御部、108 中間結果集計部、109 検索実行部、110 中間結果管理部、111 データベース(DB)、1205 検索式出力部、S201 所望の情報検索を記述した検索式読込みステップ、S202 所定形式の最簡易形式への分解ステップ、S203 分解(合成)後の簡易形式による検索時にリソースが上限値を超えるかを評価するステップ、S204 簡易形式の合成ステップ、S205 直前の簡易形式による検索式の再構成ステップ、S206 部分検索式と中間集計処理からなる検索命令リスト出力ステップ、S501 検索式を2分木展開ステップ、S502 高さi=1の部分木構築ステップ、S503 部分木記述による検索時にリソースが上限値を超えるかを評価するステップ、S504 i+1の部分木構築ステップ、S505 直前の部分木を分割した検索式を持つ部分木構築ステップ、S701 検索式を2分木展開して同じラベルを持つ親子ノード結合ステップ、S702 高さi=1の部分木構築ステップ、S703 部分木記述による検索時にリソースが上限値を超えるかを評価するステップ、S704 i+1の部分木構築ステップ、S705 直前の部分木を分割した検索式を持つ部分木構築ステップ、S901 検索式をDNFに変形するステップ、S902 高さi=1の部分木構築ステップ、S903 部分木記述による検索時にリソースが上限値を超えるかを評価するステップ、S904 i+1の部分木構築ステップ、S905 直前の部分木を分割した検索式を持つ部分木構築ステップ。
【特許請求の範囲】
【請求項1】
データベースから所望の情報を検索する情報検索装置において、
上記所望の情報検索を記述する検索式を読込み、該読込んだ検索式を所定の簡易形式に分割する検索式分割部と、
上記検索式分割部が分割した簡易形式検索式による検索時の必要リソースがシステムで持つリソース上限値内であるかを評価する検索式評価部と、
上記検索式分割部が出力する検索命令リストに従って上記所望の情報検索を行う検索処理部と、を備えて、
上記検索式分割部は、上記検索式評価部がリソース上限値内であると評価する評価内簡易形式に分割して、上記検索処理部は、該評価内簡易形式に基づいて情報検索を行うようにしたことを特徴とする情報検索装置。
【請求項2】
検索式分割部は、所定の簡易形式として2分木に展開して、該2分木による検索時に検索式評価部がリソース上限内であると評価する場合は、上記2分木の高さを高くして、該高くした2分木による検索時の上記検索式評価部による上記評価を繰返して、上記リソース上限に近い評価が得られる、高くした2分木を検索命令リストとして出力することを特徴とする請求項1記載の情報検索装置。
【請求項3】
検索式分割部は、2分木に展開する際に、先ず高さ1の部分木を作成するようにしたことを特徴とする請求項2記載の情報検索装置。
【請求項4】
検索式分割部は、2分木に展開する際に、同じラベルを持つ親子ノードを結合して部分木を作成するようにしたことを特徴とする請求項2記載の情報検索装置。
【請求項5】
検索式分割部は、所定の簡易形式として積和形または和積形の論理式で記述して、該論理式で検索時に検索式評価部がリソース上限内であると評価する場合は、上記論理式の結合高さを高くして、該高くした論理式による検索時の上記検索式評価部による上記評価を繰返して、上記リソース上限に近い評価が得られる、高くした論理式を検索命令リストとして出力することを特徴とする請求項1記載の情報検索装置。
【請求項6】
情報検索装置は、検索式分割部が出力する検索命令リストを表示出力する検索式出力部を備えて、上記検索命令リストを表示出力することを特徴とする請求項1記載の情報検索装置。
【請求項7】
データベースから所望の情報を検索するために、
上記所望の情報検索を記述する検索式を読込み、該読込んだ検索式を所定の簡易形式に分割する検索式分割部と、
上記検索式分割部が分割した簡易形式検索式による検索時の必要リソースがシステムで持つリソース上限値内であるかを評価する検索式評価部と、を備えて、
上記検索式分割部は、上記検索式評価部がリソース上限値内であると評価する評価内簡易形式に分割して、データベース検索のための検索式として出力することを特徴とするデータベース検索前処理回路。
【請求項8】
データベースから所望の情報を検索する情報検索方法において、
上記所望の情報検索を記述する検索式を読込み、該読込んだ検索式を所定の簡易形式に分割する検索式分割ステップと、
上記検索式分割ステップにより分割した簡易形式検索式による検索時の必要リソースがシステムで持つリソース上限値内であるかを評価する検索式評価ステップと、
上記検索式分割ステップは、上記検索式評価ステップでリソース上限値内であると評価する最長の長さの簡易形式検索式である最評価内簡易形式になるまで合成を繰返して、
上記検索式分割ステップで得られる上記最評価内簡易形式で記述される検索命令リストに従って上記所望の情報検索を行う検索処理ステップと、を備えたことを特徴とする情報検索方法。
【請求項9】
検索式分割ステップは、所定の簡易形式として2分木に展開して、該2分木による検索時に検索式評価ステップでリソース上限内であると評価された場合は、上記2分木の高さを高くして、該高くした2分木記述による検索時の上記検索式評価ステップによる上記評価を繰返して、上記リソース上限に近い評価が得られる、高くした2分木記述を検索命令リストとして出力することを特徴とする請求項8記載の情報検索方法。
【請求項1】
データベースから所望の情報を検索する情報検索装置において、
上記所望の情報検索を記述する検索式を読込み、該読込んだ検索式を所定の簡易形式に分割する検索式分割部と、
上記検索式分割部が分割した簡易形式検索式による検索時の必要リソースがシステムで持つリソース上限値内であるかを評価する検索式評価部と、
上記検索式分割部が出力する検索命令リストに従って上記所望の情報検索を行う検索処理部と、を備えて、
上記検索式分割部は、上記検索式評価部がリソース上限値内であると評価する評価内簡易形式に分割して、上記検索処理部は、該評価内簡易形式に基づいて情報検索を行うようにしたことを特徴とする情報検索装置。
【請求項2】
検索式分割部は、所定の簡易形式として2分木に展開して、該2分木による検索時に検索式評価部がリソース上限内であると評価する場合は、上記2分木の高さを高くして、該高くした2分木による検索時の上記検索式評価部による上記評価を繰返して、上記リソース上限に近い評価が得られる、高くした2分木を検索命令リストとして出力することを特徴とする請求項1記載の情報検索装置。
【請求項3】
検索式分割部は、2分木に展開する際に、先ず高さ1の部分木を作成するようにしたことを特徴とする請求項2記載の情報検索装置。
【請求項4】
検索式分割部は、2分木に展開する際に、同じラベルを持つ親子ノードを結合して部分木を作成するようにしたことを特徴とする請求項2記載の情報検索装置。
【請求項5】
検索式分割部は、所定の簡易形式として積和形または和積形の論理式で記述して、該論理式で検索時に検索式評価部がリソース上限内であると評価する場合は、上記論理式の結合高さを高くして、該高くした論理式による検索時の上記検索式評価部による上記評価を繰返して、上記リソース上限に近い評価が得られる、高くした論理式を検索命令リストとして出力することを特徴とする請求項1記載の情報検索装置。
【請求項6】
情報検索装置は、検索式分割部が出力する検索命令リストを表示出力する検索式出力部を備えて、上記検索命令リストを表示出力することを特徴とする請求項1記載の情報検索装置。
【請求項7】
データベースから所望の情報を検索するために、
上記所望の情報検索を記述する検索式を読込み、該読込んだ検索式を所定の簡易形式に分割する検索式分割部と、
上記検索式分割部が分割した簡易形式検索式による検索時の必要リソースがシステムで持つリソース上限値内であるかを評価する検索式評価部と、を備えて、
上記検索式分割部は、上記検索式評価部がリソース上限値内であると評価する評価内簡易形式に分割して、データベース検索のための検索式として出力することを特徴とするデータベース検索前処理回路。
【請求項8】
データベースから所望の情報を検索する情報検索方法において、
上記所望の情報検索を記述する検索式を読込み、該読込んだ検索式を所定の簡易形式に分割する検索式分割ステップと、
上記検索式分割ステップにより分割した簡易形式検索式による検索時の必要リソースがシステムで持つリソース上限値内であるかを評価する検索式評価ステップと、
上記検索式分割ステップは、上記検索式評価ステップでリソース上限値内であると評価する最長の長さの簡易形式検索式である最評価内簡易形式になるまで合成を繰返して、
上記検索式分割ステップで得られる上記最評価内簡易形式で記述される検索命令リストに従って上記所望の情報検索を行う検索処理ステップと、を備えたことを特徴とする情報検索方法。
【請求項9】
検索式分割ステップは、所定の簡易形式として2分木に展開して、該2分木による検索時に検索式評価ステップでリソース上限内であると評価された場合は、上記2分木の高さを高くして、該高くした2分木記述による検索時の上記検索式評価ステップによる上記評価を繰返して、上記リソース上限に近い評価が得られる、高くした2分木記述を検索命令リストとして出力することを特徴とする請求項8記載の情報検索方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2006−40081(P2006−40081A)
【公開日】平成18年2月9日(2006.2.9)
【国際特許分類】
【出願番号】特願2004−221035(P2004−221035)
【出願日】平成16年7月29日(2004.7.29)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
【公開日】平成18年2月9日(2006.2.9)
【国際特許分類】
【出願日】平成16年7月29日(2004.7.29)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】
[ Back to top ]