(57)【特許請求の範囲】
【請求項１】
コンピュータに、
複数の検索条件それぞれについて、検索条件に含まれるパスについては、一致するパスが記憶部に既に記憶されているか否かに応じて、該パスと新たな識別情報とを関連付けた新しいエントリを生成するか否か制御し、
前記検索条件に含まれる、値と演算子との組については、前記値と演算子と参照先のパスに対応する識別情報との組が、前記記憶部に既に記憶されているか否かに応じて、前記値と演算子と参照先のパスに対応する識別情報との組と新たな識別情報とを関連付けた新しいエントリを生成するか否か制御し、
前記複数の検索条件それぞれに含まれる条件式の評価に用いる論理式を、前記記憶部に記憶されたエントリに対応する識別情報を用いて生成する、
処理を実行させることを特徴とする検索制御プログラム。
【請求項２】
前記一致するパスが記憶部に既に記憶されている場合には、前記パスと新たな識別情報と関連付けた新しいエントリを生成せず、
前記値と演算子と参照先のパスに対応する識別情報との組が前記記憶部に既に記憶されている場合は、前記値と演算子と参照先のパスに対応する識別情報との組と新たな識別情報とを関連付けた新しいエントリを生成しない、
ことを特徴とする請求項１に記載の検索制御プログラム。
【請求項３】
前記複数の検索条件それぞれについて、前記エントリに対応する識別情報の組が、前記論理式の識別情報と関連付けられて前記記憶部に記憶されているかを判定し、
判定の結果、前記エントリに対応する識別情報の組合せが前記論理式の識別情報と関連付けられて前記記憶部に記憶されていない場合、記憶されていない前記値と演算子と参照先のパスに対応する識別情報との組を新たな論理式の識別情報と関連付けて前記記憶部に記憶し、
前記複数の検索条件それぞれの評価に用いる論理式を、前記記憶部に記憶された論理式の識別情報を用いて生成する、
ことを特徴とする請求項１又は２に記載の検索制御プログラム。
【請求項４】
コンピュータが、
複数の検索条件それぞれについて、検索条件に含まれるパスについては、一致するパスが記憶部に既に記憶されているか否かに応じて、該パスと新たな識別情報とを関連付けた新しいエントリを生成するか否か制御し、
前記検索条件に含まれる、値と演算子との組については、前記値と演算子と参照先のパスに対応する識別情報との組が、前記記憶部に既に記憶されているか否かに応じて、前記値と演算子と参照先のパスに対応する識別情報との組と新たな識別情報とを関連付けた新しいエントリを生成するか否か制御し、
前記複数の検索条件それぞれに含まれる条件式の評価に用いる論理式を、前記記憶部に記憶されたエントリに対応する識別情報を用いて生成する、
ことを特徴とする検索制御方法。
【請求項５】
検索条件に含まれる情報を記憶する記憶部と、
複数の検索条件それぞれについて、検索条件に含まれるパスについては、一致するパスが記憶部に既に記憶されているか否かに応じて、該パスと新たな識別情報とを関連付けた新しいエントリを生成するか否か制御し、前記検索条件に含まれる、値と演算子との組については、前記値と演算子と参照先のパスに対応する識別情報との組が、前記記憶部に既に記憶されているか否かに応じて、前記値と演算子と参照先のパスに対応する識別情報との組と新たな識別情報とを関連付けた新しいエントリを生成するか否か制御する判定部と、
前記複数の検索条件それぞれに含まれる条件式の評価に用いる論理式を、前記記憶部に記憶されたエントリに対応する識別情報を用いて生成する生成部とを備えた、
ことを特徴とする検索サーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索制御プログラム、検索制御方法および検索サーバ装置に関する。
【背景技術】
【０００２】
従来の検索システムにおいては、複数のクライアントが接続され、入力される検索要求が多数の条件式から構成される長い検索式を多く含み、またそうした検索式が常時多重に実行されるような大規模検索システムが存在する。こうしたシステムでは、検索対象データに対し検索要求に対応する処理を行なっている間、システムは他の処理を行なうことができない。そのため、クライアントから検索要求を入力しても、検索システムが検索を実行中の場合は、当該処理が終了するまで入力した検索要求の処理が待たされる場合があった。
【０００３】
一方、検索システムに対し異なるクライアントから入力され、検索システムに同時処理される検索式は、同一の条件式が含まれることが多い。しかし、従来の検索システムは、このように同じ検索要求が複数入力された場合、同じ検索処理を反復するという無駄な処理を行なっているので、重複した条件式を含む条件式の総数に比例して検索時間が掛かるので処理が遅くなる。ここで、条件式が重複するのは異なる検索式に同一の条件式が存在するような場合だけでなく、同一の検索式中に同一の条件式が複数存在するような場合も含んでいる。
【０００４】
式（１−１）〜式（１−３）は、複数の検索式の例を示したものである。ここでA,  B,  C1,  C2,  C3,  D1,  D2,  D3,  E1,  E2,  E3は、それぞれ条件式を表わしている。
【０００５】
検索式１＝(A  and  B  and  C1)  OR  (A  and  B  and  C2)  OR  (A  and  B  and  C3)    （１−１）
【０００６】
検索式２＝(A  and  B  and  D1)  OR  (A  and  B  and  D2)  OR  (A  and  B  and  D3)    （１−２）
【０００７】
検索式３＝(A  and  B  and  E1)  OR  (A  and  B  and  E2)  OR  (A  and  B  and  E3)    （１−３）
【０００８】
式（１−１）〜式（１−３）には、同じ条件式A,  Bが存在していると同時に、式（１−１）中にも条件式A,  Bは、３回ずつ出現している。
【０００９】
こうした条件式が重複する問題に対し、入力された複数の検索式をまとめて処理する、相乗り検索方式が提案されている。相乗り検索とは検索式の多重処理性能を高めるＭＩＳＤ（Multiple  Instruction  stream,  Single  Data  stream）アーキテクチャの一つで、一定時間内に受け付けた複数の検索式をマージして検索することで、マージされた複数の検索処理におけるデータ照合時間が１となるので、処理効率を高めることができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００２−２２２１９４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
従来の検索システムでは、類似したデータセットの中から特定のレコードを抽出する場合、その抽出条件が複雑に記述されるため、検索条件が非常に複雑化することが多い。上記相乗り検索方式による検索システムは、一定時間内に受け付けた複数の検索式に含まれる同一の条件式のデータ照合をマージして検索することで複数の検索処理におけるデータ照合時間を１とすることができ、処理効率を高めている。
【００１２】
しかしながら、相乗り検索方式による検索システムでは、検索式をマージしても各検索式の構成要素である条件式の総数は変わらないため、条件式の評価時間はマージ前後で同じである。すなわち、同一の条件式に対し、データ照合時間は効率化されるが、条件式の評価時間は効率化できない場合がある。
【００１３】
一つの側面では、同一の条件式を統合することで、条件式の評価時間を短縮することができる検索制御プログラム、検索制御方法および検索サーバ装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
第１の案では、検索制御プログラムは、コンピュータに、複数の検索条件それぞれについて、検索条件に含まれるパスについては、一致するパスが記憶部に既に記憶されているか否かに応じて、該パスと新たな識別情報とを関連付けた新しいエントリを生成するか否か制御し、前記検索条件に含まれる、値と演算子との組については、前記値と演算子と参照先のパスに対応する識別情報との組が、前記記憶部に既に記憶されているか否かに応じて、前記組と新たな識別情報とを関連付けた新しいエントリを生成するか否か制御し、前記複数の検索条件それぞれに含まれる条件式の評価に用いる論理式を、前記記憶部に記憶されたエントリに対応する識別情報を用いて生成する。
【発明の効果】
【００１５】
一つの側面では、同一の条件式を統合することで、条件式の評価時間を短縮することができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、本発明による検索システムの構成図を示す図である。
【図２】図２は、検索サーバの処理の全体の流れを示すフローチャートである。
【図３】図３は、検索条件の統合処理を示すフローチャートである。
【図４】図４は、検索処理のフローチャートである。
【図５Ａ】図５Ａは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｂ】図５Ｂは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｃ】図５Ｃは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｄ】図５Ｄは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｅ】図５Ｅは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｆ】図５Ｆは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｇ】図５Ｇは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｈ】図５Ｈは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｉ】図５Ｉは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｊ】図５Ｊは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｋ】図５Ｋは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図５Ｌ】図５Ｌは、実施例によるキーワード変数テーブルと論理テーブルへの登録例を示す図である。
【図６】図６は、従来技術によるキーワード変数テーブルと論理テーブルへの登録例でを示す図ある。
【図７】図７は、実施例による検索、従来の検索による多重検索の処理時間を示すグラフである。
【図８】図８は、検索制御プログラムを実行するコンピュータの構成の一例を示す図である。
【発明を実施するための形態】
【００１７】
以下に、本発明に係る検索制御プログラム、検索制御方法および検索サーバ装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１８】
［装置構成］
本実施例に係る検索サーバ２０について説明する。検索サーバ２０は、複数の検索要求に対し、検索結果をそれぞれ出力する装置である。検索サーバ２０は、例えば、パーソナルコンピュータやサーバコンピュータなどのコンピュータである。検索サーバ２０は、複数の検索要求に含まれる同一の条件式をマージしてから検索することで、処理効率を高めている。
【００１９】
図１は、実施例１に係る検索サーバ２０の機能的な構成の一例を示す図である。図１に示すように、検索サーバ２０は、検索要求受付部２１と、検索結果送信部２２と、制御部２３と、記憶部２４とを有する。なお、検索サーバ２０は、上記の機器以外の他の機器を有してもよい。
【００２０】
検索要求受付部２１は、検索要求の入力を受け付ける。図１では、複数のクライアント１０ａ〜１０ｃから不図示のネットワークを介して複数の検索要求をそれぞれ受信している。入力された検索要求は、不図示のバッファなどに一旦格納されたのちに、制御部２３に送られる。検索要求は、例えば、式（１−１）〜式（１−３）に示したような検索式を含んでいるが、検索式以外にも検索要求元の端末の識別情報や、検索要求を発信したユーザの識別情報や、検索要求が入力された日時情報などの関連情報を含めることができる。また、図１ではクライアントから検索要求が入力される構成を示したが、これに限定されるものではなく、キーボード、マウス、マイクなど各種入力装置を検索要求受付部２１に接続しても良い。
【００２１】
検索結果送信部２２は、上記検索要求に対する検索結果を制御部２３から得て、検索要求元に送信する。図１では、検索要求を発信したクライアントを分別して、検索要求のあったクライアントに検索結果を送信しているが、これに限定されるものではなく、検索結果を管理者やデータベースなど指定されたユーザや装置にも送信してもよい。
【００２２】
制御部２３は、検索サーバ２０を制御するデバイスである。制御部２３としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部２３は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部２３は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部２３は、判定部３０と、生成部３１と、検索部３２とを有する。
【００２３】
判定部３０は、各種の判定を行う。例えば、判定部３０は、検索要求受付部２１に入力された検索要求に含まれる検索式を解析し、含まれている条件式および論理式に関する情報が記憶部２４に格納されているかを判定する。生成部３１は記憶部２４に登録されている情報に基づいて、入力された検索要求に含まれる検索式を評価するための論理式を生成する。さらに、検索部３２は生成部３１が生成した論理式に基づいて検索要求に含まれる検索式を評価して、検索結果送信部２２に評価した結果を出力する。
【００２４】
記憶部２４は、各種のデータを記憶する記憶デバイスである。例えば、記憶部２４は、ハードディスク、ＳＳＤ（Solid  State  Drive）、光ディスクなどの記憶装置である。なお、記憶部２４は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）などのデータを書き換え可能な半導体メモリであってもよい。
【００２５】
記憶部２４は、制御部２３で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。例えば、記憶部２４は、後述する各種の処理を実行するプログラムを含む各種のプログラムを記憶する。さらに、記憶部２４は、制御部２３で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部２４は、キーワード変数テーブル４０と、論理テーブル４１とを記憶する。
【００２６】
キーワード変数テーブル４０は、検索サーバ２０に入力された検索要求に含まれる条件式を構成するデータを記憶したテーブルである。論理テーブル４１は、入力された検索要求に含まれる検索式および条件式に対応する論理式を示すデータを記憶したテーブルである。例えば、式（１−１）では、条件式A,  B,  C1,  C2,  C3自体が論理式である。さらに、３つの条件式の論理積である(A  and  B  and  C1),  (A  and  B  and  C2),  (A  and  B  and  C3)も、それぞれ論理式であり、式（１−１）の右辺全体も論理式であり、それぞれの論理式が論理テーブル４１に登録されることになる。
【００２７】
キーワード変数テーブル４０または論理テーブル４１へデータを登録する場合は、予め判定部３０が同じデータがそれぞれのテーブルに既に格納されていないかを判定する。判定部３０が、格納されていないと判定した場合にキーワード変数テーブル４０または論理テーブル４１へそのデータを登録し、格納されていると判定された場合は登録を行わない。したがって、キーワード変数テーブル４０および論理テーブル４１は重複したデータを有さないことになる。
【００２８】
［処理の流れ］
実施例１に係る検索サーバ２０の動作について説明する。図２は、本実施例に関わる検索サーバ２０による処理の全体の流れを示すフローチャートである。まず、検索サーバ２０はクライアント１０ａ〜１０ｃから入力された検索式を含む検索要求を検索要求受付部２１で受信する（Ｓ１０）。受信した検索式はバッファに格納され（Ｓ１１）、その時点で制御部２３は、検索部３２が検索処理を行っているかを判定する（Ｓ１２）。
【００２９】
検索を行っている最中の場合は（Ｓ１２肯定）は、Ｓ１０に戻り、検索を行っていない場合は（Ｓ１２否定）、バッファに格納された検索式に対し判定部３０で検索条件の統合処理を行う（Ｓ１３）。統合処理の終了後、生成部３１は記憶部２４に登録されている情報に基づいて、入力された検索要求に含まれる検索式を評価するための論理式を生成し、検索部３２は生成した論理式に基づいて検索要求に含まれる検索式を評価する（Ｓ１４）。検索式を評価した結果は、検索結果送信部２２が検索要求元のクライアント１０ａ〜１０ｃに送信して（Ｓ１５）、処理を終了する。なお、検索式を格納するバッファはＳ１３の統合処理の終了後、次の検索式を受信するまでの間に記憶を消去される。（また、キーワード変数テーブル４０および論理テーブル４１は、Ｓ１４の検索処理の終了後、次の検索式を受信するまでの間に内容を消去される。）
【００３０】
図３は、本実施例に関わる検索サーバ２０による処理のうち、図２のＳ１３に示した検索条件の統合処理の流れを示すフローチャートである。まず、バッファに格納された検索式から統合処理をまだ適用していない検索式を１つ選択する（Ｓ２０）。以下、本実施例では、ＸＭＬ文書等の構造を持つデータを対象に、インデックス技術を用いたデータの検索を行うことを想定し、検索式の例として以下では、式（２−１）、式（２−２）を用いて説明を行う。
【００３１】
Ｑ１：/root/A/A001=1  AND  /root/B/B001=”book”  AND  /root/C/C001=1    （２−１）
【００３２】
Ｑ２：/root/A/A001=1  AND  /root/B/B001=”book”  OR  /root/C/C001=3    （２−２）
【００３３】
ここで、式（２−１）の検索式Ｑ１中で、「/root/A/A001=1」、「/root/B/B001=”book”」、「/root/C/C001=1」が、式（２−２）の検索式Ｑ２中で、「/root/A/A001=1」、「/root/B/B001=”book”」、「/root/C/C001=3」がそれぞれ条件式を表わしている。
【００３４】
図３に戻り、今Ｓ２０でＱ１が選択されたとする。次に、判定部３０は選択された検索式から、未処理の条件式を選択する（Ｓ２１）。インデックス技術を用いたデータの検索では条件式は、左辺と右辺を比較演算子で結合した構成をとっている。いまＳ２１で、「/root/A/A001=1」が選択されたとすると、「/root/A/A001」が左辺、「1」が右辺、「=」が比較演算子ということになる。特にＸＭＬ文書等の構造を持つデータを対象に検索を行う場合には、条件式の左辺はパス、右辺が値を表わす。そして、左辺のパスが指し示すデータの照合をまず行う。そして、右辺の値を照合し、左辺と右辺の照合された結果が比較演算子の示す関係性を満たしているかを評価する。
【００３５】
Ｓ２１で選択した条件式に対し、判定部３０は構文解析などを行って、左辺（パス）を取得する（Ｓ２２）。判定部３０は、取得した左辺（パス）がキーワード変数テーブル４０に既に格納されていないかを判定し、格納されていないと判定した場合にキーワード変数テーブル４０に左辺（パス）を識別情報と関連付けて登録する（Ｓ２３）。ここで識別情報は、キーワード変数テーブル４０に登録されたデータ毎に一意的に付与される情報である。
【００３６】
続けて判定部３０は条件式から比較演算子を取得し（Ｓ２４）、さらに右辺（値）を取得する（Ｓ２５）。判定部３０は、取得したパスと取得した比較演算子が同一の取得した右辺（値）がキーワード変数テーブル４０に既に格納されていないかを判定し、格納されていないと判定した場合にキーワード変数テーブル４０に右辺（値）を識別情報と関連付けた新しいエントリを生成し登録する（Ｓ２６）。
【００３７】
さらに判定部３０は選択した条件式と同一の論理式が論理テーブル４１に既に格納されていないかを、条件式の左辺および右辺に対応する識別情報に基づいて判定し、格納されていないと判定した場合に論理テーブル４１に条件式を対応する識別情報の組み合わせと関連付けた新しいエントリを生成し登録して条件式の処理を終了する（Ｓ２７）。
【００３８】
次に、選択された検索式に含まれるすべての条件式が処理されたかを判定し（Ｓ２８）、すべての条件式が処理されていないと判定された場合は（Ｓ２８否定）、Ｓ２１に戻って新たな条件式を選択された検索式から選ぶ。すべての条件式が処理されていると判定された場合は（Ｓ２８肯定）、Ｓ２９に進んでバッファに格納された検索式がすべて処理されたかを判定し、すべての検索式が処理されていないと判定された場合は（Ｓ２９否定）、Ｓ２０に戻ってバッファに格納された検索式から未選択の新たな検索式を選択する。すべての検索式が処理されていると判定された場合は（Ｓ２９肯定）、処理を終了する。
【００３９】
検索条件の統合処理によりキーワード変数テーブル４０に登録されたキーワードは、パスのＡ論理式の集合(カラマ)とキーワードのＡ論理式の集合(シグマなど)に分類されるが、検索は、パスのＡ論理式の集合から照合を行うパス解析を実施した後に、該当するパスが照合された場合にキーワードのＡ論理式情報を用いて照合・評価を実施される。
【００４０】
図４は、本実施例に関わる検索サーバ２０による処理のうち、図２のＳ１４に示した検索処理の流れを示すフローチャートである。まず、制御部２３は検索対象とするレコードを選択する（Ｓ３０）。なお、本実施例では、構造を持つデータを対象にデータの検索を行うことを想定しているが、データの格納場所は特に示していない。検索対象とするデータを図１の記憶部２４に格納させても良いが、検索サーバ２０とネットワーク接続した外部記憶装置に格納させても良く、データの格納場所は、これに限定されるものではない。
【００４１】
図４に戻り、Ｓ３０で検索対象レコードを選択した後に、生成部３１がキーワード変数テーブル４０および論理テーブル４１に基づき条件式に相当する論理式を生成する（以下ではＡ論理式と呼ぶ）。検索部３２は、生成したＡ論理式に基づき、レコードに対しデータ照合を行い目的のパスを探索してタグ照合を行う（Ｓ３１）。ここで評価対象となるＡ論理式の右辺の「値」が数値であるか否かを判定し（Ｓ３２）、数値である場合は（Ｓ３２肯定）、数値データを取得し（Ｓ３３）、条件式の比較演算子に基づく大小比較を行って評価し（Ｓ３４）、選択したレコードの検索を終える（Ｓ３６）。
【００４２】
一方、評価対象となるＡ論理式の右辺の「値」が数値でない場合は（Ｓ３２否定）、「値は」文字列であり、オートマトンにより照合して（Ｓ３５）、選択したレコードの検索を終える（Ｓ３６）。なお、オートマトンはＡＣ法（Aho-Corasick  algorithm）やＢＭ法（Boyer-Moore  String  Search  Algorithm）などの文字列照合アルゴリズムに基づいて構築できる。
【００４３】
Ｓ３６で選択したレコードの検索を終えた後、生成部３１は論理テーブル４１に基づき検索式に相当する論理式を生成し（以下ではＺ論理式と呼ぶ）、検索部３２は、選択したレコードを生成したＡ論理式で評価した結果に基づき、検索式に対応する生成したＺ論理式を評価することによって、検索要求を評価する（Ｓ３７）。そして、すべてのレコードが検索されたかを判定し（Ｓ３８）、すべて検索されていないと判定された場合は（Ｓ３８否定）、Ｓ３０に戻って、検索されていないレコードを選択する。すべて検索されたと判定された場合は（Ｓ３８肯定）、検索処理を終了する。
【００４４】
図５Ａ〜図５Ｋは、本実施例に関わる検索サーバ２０による処理のうち、図３に示した検索条件の統合処理を、式（２−１）、式（２−２）の示すＱ１、Ｑ２を、キーワード変数テーブル４０および論理テーブル４１に登録する場合を例に、図３のフローチャートに対応付けて説明する図である。それぞれのテーブルでは処理の参照あるいは追加した部分がハッチングで示されている。
【００４５】
まず、図５Ａでは、まず検索式Ｑ１を選択し（Ｓ２０）、Ｑ１から一番左の条件式「/root/A/A001=1」が選択され（Ｓ２１）、選択した条件式のパス「/root/A/A001」が取得される（Ｓ２２）。最初、キーワード変数テーブル４０は空なので、取得されたパスはキーワード変数テーブル４０に格納されていないと判定され、キーワード変数テーブル４０にパス「/root/A/A001」が、論理番号Ａ１と関連付けて登録される（Ｓ２３）。ここで、図５の論理番号は、キーワード変数テーブル４０に登録されたデータ毎に一意的に付与される識別情報である。以下では、キーワード変数テーブル４０に登録される「パス」および「値」を「キーワード」と総称する。
【００４６】
次に図５Ｂでは、条件式「/root/A/A001=1」から比較演算子「=」を取得し（Ｓ２４）、さらに値「1」を取得する（Ｓ２５）。取得した「1」と比較演算子「=」の組合せでＡ１をパスとする登録はキーワード変数テーブル４０に格納されていないと判定され、キーワード変数テーブル４０に値「1」を比較演算子「=」およびパスの論理番号Ａ１と共に、論理番号Ａ２と関連付けて登録される（Ｓ２６）。
【００４７】
次に図５Ｃでは、条件式「/root/A/A001=1」の右辺、左辺に対応する論理番号の組（Ａ１．Ａ２）が論理テーブル４１に既に格納されていないかを判定し、格納されていないと判定した場合に論理テーブル４１に論理番号の組（Ａ１．Ａ２）が論理式番号Ｚ１と関連付けて登録される（Ｓ２７）。ここで、図５の論理式番号は、論理テーブル４１に登録されたデータ毎に一意的に付与される識別情報である。
【００４８】
Ｑ１の条件式はまだ全部処理されていないので（Ｓ２８否定）、Ｓ２１で、次に「/root/B/B001=”book”」が選択される。そして、「/root/A/A001=1」と同様の手順で、キーワード変数テーブル４０にパス「/root/B/B001」が、論理番号Ａ３と関連付けて登録される（Ｓ２３）。また、キーワード変数テーブル４０に値「”book”」を比較演算子「=」およびパスの論理番号Ａ３と共に、論理番号Ａ４と関連付けて登録され（Ｓ２６）、論理テーブル４１に論理番号の組（Ａ３．Ａ４）が論理式番号Ｚ２と関連付けて登録される（Ｓ２７）。ここで、論理式テーブルの論理式番号Ｚ２に対応して登録されたＡ３．Ａ４の組のうちＡ４がカッコつきになっているのは、Ａ４のキーワードが引用符を含むことを示すものである。
【００４９】
Ｑ１の条件式はまだ全部処理されていないので（Ｓ２８否定）、Ｓ２１で、次に「/root/C/C001=1」が選択される。そして、「/root/A/A001=1」と同様の手順で、キーワード変数テーブル４０にパス「/root/C/C001」が、論理番号Ａ５と関連付けて登録される（Ｓ２３）。また、キーワード変数テーブル４０に値「1」を比較演算子「=」およびパスの論理番号Ａ５と共に、論理番号Ａ６と関連付けて登録され（Ｓ２６）、論理テーブル４１に論理番号の組（Ａ５．Ａ６）が論理式番号Ｚ３と関連付けて登録される（Ｓ２７）。以上の処理で、キーワード変数テーブル４０および論理テーブル４１の登録内容は図５Ｄに示すようになる。
【００５０】
以上で、Ｑ１の条件式は全部処理され（Ｓ２８肯定）、Ｑ１全体が論理式として登録される。Ｑ１の論理式は、条件式に関連付けられた論理式番号Ｚ１とＺ２とＺ３との論理積で表されるが、その内容の論理式は論理テーブル４１に格納されていないと判定されるので、図５Ｅのように論理式番号の組（Ｚ１．Ｚ２．Ｚ３）が論理式番号Ｚ４と関連付けて登録される。ここで、論理式テーブルの論理式Ｚ１．Ｚ２．Ｚ３での論理式間のピリオドは論理演算子ＡＮＤを示している。
【００５１】
次に、Ｓ２０で、未処理の検索式としてＱ２が選択され、図５Ｆでは、Ｑ２から一番左の条件式「/root/A/A001=1」が選択され（Ｓ２１）、選択した条件式のパス「/root/A/A001」が取得される（Ｓ２２）。取得されたパスはキーワード変数テーブル４０に既に格納されていると判定され、キーワード変数テーブル４０に登録されない。
【００５２】
そして、図５Ｇでは、Ｑ２の条件式「/root/A/A001=1」から比較演算子「=」を取得し（Ｓ２４）、さらに値「1」を取得する（Ｓ２５）。取得した「1」と比較演算子「=」の組合せでＡ１をパスとする登録はキーワード変数テーブル４０に格納されていると判定されるので、キーワード変数テーブル４０に値「1」は登録されない。
【００５３】
さらに、図５Ｈでは、Ｑ２の条件式「/root/A/A001=1」の右辺、左辺に対応する論理番号の組（Ａ１．Ａ２）が論理テーブル４１に既に格納されていると判定されるので、論理テーブル４１に登録は行われない。
【００５４】
同様に、図５Ｉでは、Ｑ２の条件式「/root/B/B001=”book”」のパス、値が取得されるがキーワード変数テーブル４０に格納されていると判定されるので登録は行われない。
【００５５】
さて、図５Ｊでは、Ｑ２の条件式「/root/C/C001=3」のパス、値が取得される。パス「/root/C/C001」はキーワード変数テーブル４０に格納されていると判定されるので登録は行われない。しかし、取得した値「3」と比較演算子「=」の組合せでＡ５をパスとする登録はキーワード変数テーブル４０に格納されていないと判定されるので、キーワード変数テーブル４０に値「3」を比較演算子「=」およびパスの論理番号Ａ５と共に、論理番号Ａ７と関連付けて登録される（Ｓ２６）。
【００５６】
そして、図５Ｋでは、Ｑ２の条件式「/root/C/C001=3」の右辺、左辺に対応する論理番号の組（Ａ５．Ａ７）は、論理テーブル４１に格納されていないと判定されるので、論理テーブル４１に論理番号の組（Ａ５．Ａ７）が論理式番号Ｚ５と関連付けて登録される（Ｓ２７）。
【００５７】
以上で、Ｑ２の条件式は全部処理され（Ｓ２８肯定）、Ｑ２全体の論理式は、条件式に関連付けられた論理式番号Ｚ１とＺ２とＺ５による論理式で表されるが、その内容の論理式は論理テーブル４１に格納されていないと判定されるので、図５Ｌのように論理式番号の組（Ｚ１．Ｚ２，Ｚ５）が論理式番号Ｚ６と関連付けて登録される。以上の処理ですべての検索式Ｑ１、Ｑ２の処理が終了する（Ｓ２９肯定）。なお、Ｚ５に対し、論理式テーブル４１の論理式Ｚ２とＺ５との間は、両者の論理関係が論理演算子ＯＲであることを示す、カンマになっている。
【００５８】
図６は従来技術による、キーワード変数テーブル５０と論理テーブル５１への登録例である。具体的には、本願に対する先行技術として挙げた相乗り検索方式による検索システムがＱ１、Ｑ２に対して登録したキーワード変数テーブル５０、論理テーブル５１を示している。相乗り検索方式では、同一のパスはマージされており、キーワードが同一のパスの登録は、Ａ１、Ａ３、Ａ５で重複した登録は無い。しかし、例えばＡ２とＡ７、Ａ４とＡ８は「値」、比較演算子、「パス」が同一である重複した登録になっている。さらに、Ａ２とＡ７が同一であればＺ１とＺ５も同一と、Ａ４とＡ８が同一であれば、Ｚ２とＺ６も同一であるので重複した登録になっている。
【００５９】
すなわち、図６のキーワード変数テーブル５０では、パスのＡ論理式の集合(カラマ)の重複は抑えられているので、検索の際には、パスのＡ論理式の集合から照合を行うパス解析の処理は軽減する。しかし、キーワードのＡ論理式の集合(シグマなど)には重複があるので、キーワードのＡ論理式情報を用いて照合・評価が重複して実施されることになる。
【００６０】
しかし、図６の従来技術によるキーワード変数テーブル５０へのキーワードの登録が論理番号Ａ１〜Ａ９の９つであるのに対し、図５Ｋのキーワード変数テーブル４０へのキーワードの登録は論理番号Ａ１〜Ａ７の７つに抑えられる。また、図６の従来技術による論理テーブル５１への論理式の登録が論理式番号Ｚ１〜Ｚ８の８つであるのに対し、図５Ｋの論理テーブル４１の論理式の登録は論理番号Ｚ１〜Ｚ６の６つに抑えられる。したがって、キーワードのＡ論理式の集合には重複がなくなるので、キーワードのＡ論理式情報を用いた照合・評価が効率的に実施されることになる。
【００６１】
また、従来技術である相乗り検索方式では条件式の左辺であるパスのＡ論理式に対して、例えば論理番号Ａ１のパス「/root/A/A001」に対して、「root」を1、「A」を2、「A001」を3のように要素名をＩＤとして管理し、パスを「1-  2-  3」のように、パスをＩＤの階層構造で表現して、パスの階層構造として同一かどうかの比較をおこなっていた。
【００６２】
これに対し、本実施例では条件式の右辺であるキーワードのＡ論理式を、以下のように要素を結合してから、それをキーとしてハッシュして容易に比較できる。例えばＡ２の場合には、値「1」とそのパス「A1」と比較演算子「=」とを結合したものをキーとしてハッシュ変換した結果同士を比較することにより、キーワードのＡ論理式を重複なしに登録して、キーワードのＡ論理式情報を用いた照合・評価が効率的に実施されることになる。
【００６３】
図７は、さまざまな多重度を有する複数の検索式を自動生成し、従来の検索方式と、本実施例の方法で複数の検索式を一括して処理した場合の処理時間を計測した結果を示すものである。図７の例では、縦軸に検索処理時間が示され、横軸に複数の検索式の多重度が示されている。ここで、多重度とは検索式に含まれるすべてのキーワードについて検索式中に出現する回数を平均したものである。
【００６４】
図７の例では、白抜き四角（original）のプロットが従来の検索方式を、黒四角（prototype）のプロットが本実施例の検索方式を示している。さらに、それぞれの検索方式のプロットに対し多項式近似した線が書き加えられている。図７から、シミュレーション上では本実施例の検索方式は従来の検索方式に比べ１．３倍の高速化が実現されていることがわかる。
【００６５】
［効果］
上述してきたように、本実施例に係る検索サーバ２０は、従来のキーワード変数テーブルと異なり、検索式を解析する過程で、条件式の右辺の「値」に対して、左辺の「パス」と両者の比較演算子の関係から同一判定を行うことで、同一検索式内に同一の条件式が複数存在するような場合、キーワード変数テーブルに重複した登録を行わないようにして、検索式から作成されるキーワード変数テーブルサイズを削減することができる。キーワード変数テーブルを小さくすることで、テーブルの評価コストを下げ、検索アプリケーション応答時間を短縮することができる。
【００６６】
また、本実施例に係る検索サーバ２０は、従来のキーワード変数テーブルと異なり、検索式を解析する過程で、条件式の右辺の「値」に対して、左辺の「パス」と両者の比較演算子の関係から同一判定を行うことで、同時処理する複数の検索式間で同一の条件式が複数存在するような場合でも、キーワード変数テーブルに重複した登録を行わないようにして、検索式から作成されるキーワード変数テーブルサイズを削減することができる。キーワード変数テーブルを小さくすることで、テーブルの評価コストを下げ、検索アプリケーション応答時間を短縮することができる。
【００６７】
さらに、本実施例に係る検索サーバ２０は、検索式を解析する過程で、条件式の右辺の「値」に対して、左辺の「パス」と両者の比較演算子の関係から同一判定を行うと共に、条件式の左辺の「パス」に対して同一判定を行うので、複数の検索式内に同一の条件式が複数存在するような場合、キーワード変数テーブルに重複した登録を行わないようにして、検索式から作成されるキーワード変数テーブルサイズを削減することができる。キーワード変数テーブルを小さくすることで、テーブルの評価コストを下げ、検索アプリケーション応答時間を短縮することができる。
【００６８】
さらに、本実施例に係る検索サーバ２０は、検索式を解析する過程で、条件式の右辺の「値」に対して、左辺の「パス」と両者の比較演算子の関係から同一判定を行ってから識別情報と関連付けて登録すると共に、条件式の左辺の「パス」に対して同一判定を行ってから識別情報と関連付けて登録することができる。条件式の左辺と右辺の識別情報の組合せに基づいて論理式テーブルに登録することができるので、同一の識別情報の組合せによる重複した登録を行わないようにして、検索式に同一の条件式が複数存在するような場合、検索式から作成される論理式テーブルサイズを削減することができる。論理式テーブルを小さくすることで、テーブルの評価コストを下げ、検索アプリケーション応答時間を短縮することができる。
【００６９】
本実施例に係る検索サーバ２０は、検索式の多重度が高くなればなるほど、条件式の重複が起こる確率が高くなるため、検索アプリケーション応答時間の短縮幅も大きくなり、より効率的な検索ができる。
【実施例２】
【００７０】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【００７１】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、検索要求受付部２１、検索結果送信部２２、制御部２３および記憶部２４の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７２】
［検索制御プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図８は、検索制御プログラムを実行するコンピュータの構成の一例を示す図である。
【００７３】
図８に示すように、コンピュータ１００は、ＣＰＵ（Central  Processing  Unit）１１０、ＨＤＤ（Hard  Disk  Drive）１２０、ＲＡＭ（Random  Access  Memory）１４０を有する。これら１００〜１４０の各部は、バス２００を介して接続される。
【００７４】
ＨＤＤ１２０には上記の検索要求受付部２１、検索結果送信部２２、制御部２３および記憶部２４と同様の機能を発揮する検索制御プログラムが予め記憶される。なお、検索制御プログラムについては、適宜分離しても良い。
【００７５】
また、ＨＤＤ１２０は、各種情報を記憶する。例えば、ＨＤＤ１２０は、検索に用いるデータとしてキーワード変数テーブル４０、論理式テーブル４１とを記憶する。
【００７６】
そして、ＣＰＵ１１０が、検索制御プログラム１２０ａをＨＤＤ１２０から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、検索制御プログラムは、検索要求受付部２１、検索結果送信部２２、制御部２３および記憶部２４と同様の動作を実行する。
【００７７】
なお、上記した検索制御プログラム１２０ａは、必ずしも最初からＨＤＤ１２０に記憶させることを要しない。
【００７８】
例えば、コンピュータ１００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ１００がこれらからプログラムを読み出して実行するようにしてもよい。
【００７９】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ１００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００８０】
１０ａ〜１０ｃ  クライアント
２０  検索サーバ
２１  検索要求受付部
２２  検索結果送信部
２３  制御部
２４  記憶部
３０  判定部
３１  生成部
３２  検索部
４０  キーワード変数テーブル
４１  論理テーブル
【図１】
0006631139.tif 000002
【図２】
0006631139.tif 000003
【図３】
0006631139.tif 000004
【図４】
0006631139.tif 000005
【図５Ａ】
0006631139.tif 000006
【図５Ｂ】
0006631139.tif 000007
【図５Ｃ】
0006631139.tif 000008
【図５Ｄ】
0006631139.tif 000009
【図５Ｅ】
0006631139.tif 000010
【図５Ｆ】
0006631139.tif 000011
【図５Ｇ】
0006631139.tif 000012
【図５Ｈ】
0006631139.tif 000013
【図５Ｉ】
0006631139.tif 000014
【図５Ｊ】
0006631139.tif 000015
【図５Ｋ】
0006631139.tif 000016
【図５Ｌ】
0006631139.tif 000017
【図６】
0006631139.tif 000018
【図７】
0006631139.tif 000019
【図８】
0006631139.tif 000020