(57)【要約】【課題】インデックスを用いた検索の検索時間を高速化することができる。【解決手段】検索システム９は、振分サーバ１と複数の検索サーバ２を有する。振分サーバ１は、現在位置を担当領域に含む検索サーバ２へ現在位置に関わる検索要求を振り分ける。検索サーバ２は、自装置が担当する担当領域に前回の検索要求で検索された領域を示す前回領域を含む場合、領域の包含関係をインデックスで指し示すインデックス情報をノードの情報としてツリー構造で表したＲツリーの前回領域に対応する葉ノードからボトムアップに現在位置を含む領域を検索し、担当領域に前回領域を含まない場合、インデックスツリーの担当領域に対応するルートノードからトップダウンに現在位置を含む領域を検索し、検索された結果を示す検索結果を振分サーバ１に出力する。【選択図】図１
2014215839.tif 000002
【特許請求の範囲】
【請求項１】
第１の情報処理装置および複数の第２の情報処理装置を有する検索システムであって、
前記第１の情報処理装置は、
所定の位置を担当領域に含む前記第２の情報処理装置へ前記位置に関わる検索要求を振り分ける振分部を有し、
前記第２の情報処理装置は、
自装置が担当する担当領域に前回の検索要求で検索された領域を示す前回領域を含む場合、領域の包含関係をインデックスで指し示すインデックス情報をノードの情報としてツリー構造で表したインデックスツリーの前記前回領域に対応する葉ノードからボトムアップに前記所定の位置を含む領域を検索し、前記担当領域に前記前回領域を含まない場合、前記インデックスツリーの前記担当領域に対応するルートノードからトップダウンに前記所定の位置を含む領域を検索する検索部と、
前記検索部によって検索された結果を示す検索結果を前記第１の情報処理装置に出力する出力部と、
を有することを特徴とする検索システム。
【請求項２】
前記第１の情報処理装置は、
前記出力部によって出力された検索結果を最初に受け取ると、前記検索要求を振り分けた第２の情報処理装置の数が複数である場合、前記検索結果を出力した装置と異なる第２の情報処理装置に対して前記検索要求の終了を通知する通知部
を有することを特徴とする請求項１に記載の検索システム。
【請求項３】
前記第１の情報処理装置は、
前記インデックスツリーのルートノードより下位の所定の深度にあるノードそれぞれをいずれかの前記第２の情報処理装置が担当するように割り当てる割当部
を有することを特徴とする請求項１または請求項２に記載の検索システム。
【請求項４】
前記割当部は、所定の深度にあるノードの数が前記第２の情報処理装置の数より大きくなるような前記深度を選択し、選択した深度にあるノードそれぞれをいずれかの前記第２の情報処理装置が担当するように割り当てる
ことを特徴とする請求項３に記載の検索システム。
【請求項５】
所定の位置に関わる検索要求を受け取ると、自装置が担当する担当領域に前回の検索要求で検索された領域を示す前回領域を含む場合、領域の包含関係をインデックスで指し示すインデックス情報をノードの情報としてツリー構造で表したインデックスツリーの前記前回領域に対応する葉ノードからボトムアップに前記所定の位置を含む領域を検索し、前記担当領域に前記前回領域を含まない場合、前記インデックスツリーの前記担当領域に対応するルートノードからトップダウンに前記所定の位置を含む領域を検索する検索部と、
前記検索部によって検索された結果を示す検索結果を前記検索要求の要求元に出力する出力部と、
を有することを特徴とする情報処理装置。
【請求項６】
第１の情報処理装置および複数の第２の情報処理装置を有する検索システムが実行する検索方法であって、
前記第１の情報処理装置は、
所定の位置を担当領域に含む前記第２の情報処理装置へ前記位置に関わる検索要求を振り分け、
該振り分けられた前記第２の情報処理装置は、
自装置が担当する担当領域に前回の検索要求で検索された領域を示す前回領域を含む場合、領域の包含関係をインデックスで指し示すインデックス情報をノードの情報としてツリー構造で表したインデックスツリーの前記前回領域に対応する葉ノードからボトムアップに前記所定の位置を含む領域を検索し、前記担当領域に前記前回領域を含まない場合、前記インデックスツリーの前記担当領域に対応するルートノードからトップダウンに前記所定の位置を含む領域を検索し、
該検索する処理によって検索された結果を示す検索結果を前記第１の情報処理装置に出力する
各処理を実行することを特徴とする検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索システムなどに関する。
【背景技術】
【０００２】
従来、大量のデータから条件に合ったデータを高速に検索するために、インデックスを用いたデータ管理が利用される。インデックスを用いたデータ管理方式には、一次元のデータを検索する場合に用いられるＢ−Ｔｒｅｅ（Ｂツリー）を利用した方式や多次元データを検索する場合に用いられるＲ−Ｔｒｅｅ（Ｒツリー）を利用した方式がある。
【０００３】
また、１台のサーバがデータを検索する場合、例えばデータが増加すると、検索負荷が増大する。そこで、サーバの検索負荷を軽減するために、複数のサーバが、検索処理を分散して実行する。かかる場合、複数のサーバは、それぞれのインデックス情報を分担し、必要な情報に合わせて検索処理を実行し、検索負荷を分散する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−８６０６６号公報
【特許文献２】特開２００６−２５２１０２号公報
【特許文献３】特開２００９−１９９１５１号公報
【特許文献４】特開２０１１−１２８８６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、インデックスを用いた従来のデータの検索では、検索時間を要してしまうという問題がある。例えば、複数のサーバがインデックス情報を分担して検索処理を実行する場合に、リクエストを受けたサーバがデータを検索できないと、別のサーバに対してリクエストを送信する。そして、送信されたリクエストを受けた別サーバが後続して検索処理を実行する。そうすると、サーバ間通信で検索時間が増加してしまう。
【０００６】
開示の技術は、インデックスを用いた検索の検索時間を高速化することができることを目的とする。
【課題を解決するための手段】
【０００７】
１つの側面では、検索システムは、第１の情報処理装置および複数の第２の情報処理装置を有する。第１の情報処理装置は、所定の位置を担当領域に含む前記第２の情報処理装置へ前記位置に関わる検索要求を振り分ける振分部を有する。第２の情報処理装置は、自装置が担当する担当領域に前回の検索要求で検索された領域を示す前回領域を含む場合、領域の包含関係をインデックスで指し示すインデックス情報をノードの情報としてツリー構造で表したインデックスツリーの前記前回領域に対応する葉ノードからボトムアップに前記所定の位置を含む領域を検索し、前記担当領域に前記前回領域を含まない場合、前記インデックスツリーの前記担当領域に対応するルートノードからトップダウンに前記所定の位置を含む領域を検索する検索部と、前記検索部によって検索された結果を示す検索結果を前記第１の情報処理装置に出力する出力部と、を有する。
【発明の効果】
【０００８】
本願の開示する検索システムの一つの態様によれば、インデックスを用いた検索の検索時間を高速化することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例に係る検索システムの構成を示す機能ブロック図である。
【図２】図２は、実施例に係る振分サーバの構成を示す機能ブロック図である。
【図３】図３は、領域インデックスＤＢに記憶される情報の例を示す図である。
【図４】図４は、領域インデックスＤＢに記憶されるルートノードの情報の例を示す図である。
【図５】図５は、領域インデックスＤＢに記憶される中間ノードの情報の例を示す図である。
【図６】図６は、領域インデックスＤＢに記憶される葉ノードの情報の例を示す図である。
【図７】図７は、領域データＤＢのデータ構造の一例を示す図である。
【図８】図８は、前回領域ＤＢのデータ構造の一例を示す図である。
【図９】図９は、振分サーバの領域インデックスＤＢに記憶される葉ノードの情報の例を示す図である。
【図１０】図１０は、Ｒツリーの検索サーバへの割り当てについて説明する図である。
【図１１】図１１は、実施例に係る検索サーバの構成を示す機能ブロック図である。
【図１２】図１２は、重複領域キャッシュデータＤＢのデータ構造の一例を示す図である。
【図１３】図１３は、検索状態管理ＤＢのデータ構造の一例を示す図である。
【図１４】図１４は、実施例に係る検索システムの処理を説明する図である。
【図１５】図１５は、領域検索要求の内容の一例を示す図である。
【図１６】図１６は、領域検索応答の内容の一例を示す図である。
【図１７Ａ】図１７Ａは、振分サーバによる振分処理の手順を示すフローチャート（１）である。
【図１７Ｂ】図１７Ｂは、振分サーバによる振分処理の手順を示すフローチャート（２）である。
【図１８Ａ】図１８Ａは、検索サーバによる検索処理の手順を示すフローチャート（１）である。
【図１８Ｂ】図１８Ｂは、検索サーバによる検索処理の手順を示すフローチャート（２）である。
【図１８Ｃ】図１８Ｃは、検索サーバによる検索処理の手順を示すフローチャート（３）である。
【図１９】図１９は、検索サーバによる終了指示受付処理の手順を示すフローチャートである。
【図２０】図２０は、振分サーバによるインデックス割当処理の手順を示すフローチャートである。
【図２１】図２１は、振分サーバによる領域データ追加処理の手順を示す図である。
【図２２】図２２は、領域データの追加指示を受けた検索サーバによる領域データ追加処理の手順を示す図である。
【図２３】図２３は、重複領域への設定依頼を受けた検索サーバによる領域データ追加処理の手順を示す図である。
【図２４Ａ】図２４Ａは、実施例に係る検索処理の具体例を示す図（１）である。
【図２４Ｂ】図２４Ｂは、実施例に係る検索処理の具体例を示す図（２）である。
【図２５】図２５は、検索プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示する検索システム、情報処理装置および検索方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例】
【００１１】
［検索システムの構成］
図１は、実施例に係る検索システムの構成を示す機能ブロック図である。図１に示すように、検索システム９は、振分サーバ１および複数の検索サーバ２を有する。振分サーバ１および複数の検索サーバ２は、ネットワーク３で接続される。
【００１２】
［振分サーバの構成］
振分サーバ１は、通信インタフェース１１と、記憶部１２と、制御部１３とを有する。
【００１３】
通信インタフェース１１は、各端末装置との間で通信を確立して、各端末装置から領域検索要求を受信したり、各端末装置に領域検索応答を送信したりするインタフェースである。ここで、領域検索要求とは、端末装置の位置のような、特定の位置情報がいずれの領域に含まれるかを検索する要求である。位置情報は、例えば端末装置が現在位置する緯度、経度の情報である。そして、領域検索要求は、例えば端末装置の位置情報や端末装置が搭載するセンサーの識別ＩＤを含む内容となる。領域検索応答とは、領域検索要求に対応する応答であり、検索結果を含む内容となる。なお、通信インタフェース１１は、例えば、ＬＡＮやインターネットなどと接続するネットワークインタフェースカードや、無線アンテナを有する無線通信部などである。
【００１４】
記憶部１２は、制御部１３が実行するプログラムなどを記憶するとともに、領域インデックスＤＢ１２１、領域データＤＢ１２２および前回領域ＤＢ１２３を有する。なお、記憶部１２は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置に対応する。
【００１５】
領域インデックスＤＢ１２１は、空間内に存在する大量の領域から条件に合った領域を高速に検索するための索引情報（インデックス）である。例えば、領域インデックスＤＢ１２１は、どの領域がどこにあるのかを示したインデックスをＲツリーで保持する。
【００１６】
ここで、領域インデックスＤＢ１２１に記憶される情報の例を、図３を参照して説明する。図３は、領域インデックスＤＢに記憶される情報の例を示す図である。図３に示すように、領域インデックスＤＢ１２１は、ルートノード、中間ノードおよび葉ノードのいずれかを示す領域データで形成されるＲツリーを記憶する。ルートノードは、Ｒツリーに１つ存在する頂点の領域データである。また、葉ノードは、Ｒツリーの最底辺のノードであり、自らは子ノードを含まず、検索対象となる多次元の領域データを１つ以上持つ。それ以外の木の中間に存在するノードは、中間ノードであり、それぞれ子ノードを１つ以上持つ。
【００１７】
図３の例では、ルートノードがＲ１であり、Ｒ１の子ノード且つ中間ノードがＲ１０、Ｒ１１である。Ｒ１がＲ１０、Ｒ１１の矩形領域を全て含む矩形領域となっている。中間ノードＲ１０の子ノードである葉ノードがＲ１００、Ｒ１０１である。Ｒ１０がＲ１００、Ｒ１０１の矩形領域を全て含む矩形領域となっている。中間ノードＲ１１の子ノードである葉ノードがＲ１１０、Ｒ１１１である。Ｒ１１がＲ１１０、Ｒ１１１の矩形領域を全て含む矩形領域となっている。そして、葉ノードであるＲ１００は、検索対象となる領域データ１、２、３を持っている。葉ノードであるＲ１０１は、検索対象となる領域データ４、５を持っている。葉ノードであるＲ１１０は、検索対象となる領域データ６、７を持っている。葉ノードであるＲ１１１は、検索対象となる領域データ８、９を持っている。なお、領域データ１〜９とは、例えば領域データを識別可能な領域ＩＤ（IDentification）を含むデータとしても良い。
【００１８】
領域インデックスＤＢ１２１は、Ｒツリーの実体としてルート、中間、葉の各ノードの情報を記憶する。図４は、領域インデックスＤＢに記憶されるルートノードの情報の例を示す図である。図４に示すように、領域インデックスＤＢ１２１は、ルートノードＲ１の情報として、「ノード種別、矩形領域、子ノードリスト」を記憶する。「ノード種別」は、ノードがルート、中間、葉のいずれかであるかを示す情報である。「矩形領域」は、子ノードの担当領域を全て含む最小外接矩形の情報である。最小外接矩形とは、子ノードの領域を全て含む最小の矩形領域をいう。「子ノードリスト」は、当該ノードの子ノードへのリンクポインタのリストである。
【００１９】
図４の例では、ルートノードＲ１は、ｘ、ｙの２次元データを管理し、「ｘ１＝３５．５、ｙ１＝１３９．０」が担当領域の最小点であり、「ｘ２＝３５．９、ｙ２＝１３９．５」が担当領域の最大点であることを示す。すなわち、Ｒ１が担当する領域は、両点を頂点として各次元軸に直交した４直線で作られる領域である。また、Ｒ１は、子ノード「Ｒ１０、Ｒ１１」へのポインタのリストを記憶する。
【００２０】
図５は、領域インデックスＤＢに記憶される中間ノードの情報の例を示す図である。図５に示すように、領域インデックスＤＢ１２１は、中間ノードの情報として、「ノード種別、矩形領域、子ノードリスト」を記憶する。ここで記憶される「ノード種別」、「矩形領域」、「子ノードリスト」は、図４と同様であるので詳細な説明は省略する。領域インデックスＤＢ１２１は、Ｒ１０、Ｒ１１について、図５の情報を記憶する。
【００２１】
図５の場合、中間ノードＲ１０は、ｘ、ｙの２次元データを管理し、「ｘ１＝３５．５、ｙ１＝１３９．２」が担当領域の最小点であり、「ｘ２＝３５．７、ｙ２＝１３９．３」が担当領域の最大点であることを示す。すなわち、中間ノードＲ１０が担当する領域は、両点を頂点として各次元軸に直交した４直線で作られる領域である。また、Ｒ１０は、子ノード「Ｒ１００、Ｒ１０１」へのポインタのリストを記憶する。
【００２２】
図６は、領域インデックスＤＢに記憶される葉ノードの情報の例を示す図である。図６に示すように、領域インデックスＤＢ１２１は、葉ノードの情報として、「ノード種別、矩形領域、データリスト」を記憶する。ここで記憶される「ノード種別」、「矩形領域」は、図４と同様であるので詳細な説明は省略する。「データリスト」は、管理する多次元の領域データである。領域インデックスＤＢ１２１は、Ｒ１００、Ｒ１０１、Ｒ１１０、Ｒ１１１について、図６の情報を記憶する。
【００２３】
図６の場合、葉ノードＲ１００は、ｘ、ｙの２次元データを管理し、「ｘ１＝３５．５、ｙ１＝１３９．２」が担当領域の最小点であり、「ｘ２＝３５．６、ｙ２＝１３９．３」が担当領域の最大点であることを示す。すなわち、葉ノードＲ１００が担当する領域は、両点を頂点として各次元軸に直交した４直線で作られる領域である。また、Ｒ１００は、領域データ「Ｄ１、Ｄ２、Ｄ３、Ｄ４」へのポインタのリストを記憶する。領域データへのポインタの一例として、領域データを識別する領域ＩＤが用いられる。各領域データの実体は、後述する領域データＤＢ１２２に格納されている。
【００２４】
図２に戻って、領域データＤＢ１２２は、複数の領域データを管理するとともに、複数の領域データのそれぞれについて、領域データの領域と重複する他の領域の領域データを管理する。
【００２５】
ここで、領域データＤＢ１２２のデータ構造の一例を、図７を参照して説明する。図７は、領域データＤＢのデータ構造の一例を示す図である。図７に示すように、領域データＤＢ１２２は、領域ＩＤ１２２ａ毎に、データ名１２２ｂ、領域情報１２２ｃおよび重複領域１２２ｄを対応付けて記憶する。領域ＩＤ１２２ａは、領域データを一意に識別可能なＩＤを示す。データ名１２２ｂは、領域ＩＤで示される領域データのデータ名を示す。領域情報１２２ｃは、領域ＩＤで示される領域データの実体である具体的な範囲を示す。重複領域１２２ｄは、領域ＩＤで示される領域データと重複する他の領域データの領域ＩＤを示す。例えば、領域ＩＤ１２２ａが「００００１」である場合、データ名１２２ｂとして「Ａ商店Ｘ店舗近辺」、領域情報１２２ｃとして「円領域：緯度３５．４９１、経度１３９．６５０、半径１００ｍ」と記憶している。そして、領域ＩＤ１２２ａが「００００１」である場合の重複領域１２２ｄとして「００００５、０００３４」の２個の領域ＩＤを記憶している。なお、領域データＤＢ１２２は、予め生成されているものとする。
【００２６】
図２に戻って、前回領域ＤＢ１２３は、同じ要求元から再び領域検索要求があった場合、前回、領域検索要求があったときに検索できた領域情報を当該要求元に対応付けて管理する。ここで、前回領域ＤＢ１２３のデータ構造の一例を、図８を参照して説明する。図８は、前回領域ＤＢ１２３のデータ構造の一例を示す図である。図８に示すように、前回領域ＤＢ１２３は、センサーＩＤ１２３ａ毎に、前回検索領域１２３ｂを対応付けて記憶する。センサーＩＤ１２３ａは、領域検索要求の要求元のセンサーの識別ＩＤを示す。前回検索領域１２３ｂは、前回、領域検索要求があったときに検索できた領域情報を示す。例えば前回検索領域１２３ｂには、検索できた場合に検索できた領域の領域ＩＤが記憶され、検索できなかった場合に「未検出」が記憶される。一例として、センサーＩＤ１２３ａが「ＳｅｎｓｏｒＸ」である場合、前回検索領域１２３ｂとして「未検出」と記憶している。また、センサーＩＤ１２３ａが「ＳｅｎｓｏｒＹ」である場合、前回検索領域１２３ｂとして「領域ＩＤ０００３４」と記憶している。
【００２７】
図２に戻って、制御部１３は、インデックス割当部１３１、振分部１３２、および領域データ追加部１３３を有する。制御部１３は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００２８】
インデックス割当部１３１は、Ｒツリーを複数の部分に分割し、分割したそれぞれの部分をそれぞれの検索サーバ２に割り当てる。例えば、インデックス割当部１３１は、領域インデックスＤＢ１２１を用いて、Ｒツリーのルートノードより下位の所定の深度にあるノードを、それぞれの検索サーバ２に１つ以上割り当てる。そして、インデックス割当部１３１は、検索サーバ２に割り当てられたノードを、当該検索サーバ２のルートノードに設定する。さらに、インデックス割当部１３１は、設定したルートノード配下のノードの情報を、割り当てた検索サーバ２の領域インデックスＤＢ２２１にコピーする。すなわち、インデックス割当部１３１は、ルートノードの矩形領域を、当該ルートノードを割り当てた検索サーバ２の担当領域とする。なお、所定の深度として、ノードの数が検索サーバ２の数より大きくなるような数が選択される。
【００２９】
また、インデックス割当部１３１は、検索サーバ２に割り当てられたルートノード配下のノードに付随する領域データを、当該検索サーバ２の領域データＤＢ２２２にコピーする。例えば、インデックス割当部１３１は、領域データＤＢ１２２に記憶された情報のうち、検索サーバ２に割り当てられたルートノード配下の葉ノードに属する領域データの情報を、当該検索サーバ２の領域データＤＢ２２２にコピーする。
【００３０】
また、インデックス割当部１３１は、検索サーバ２が担当する各領域データについて、領域データの領域に重複する重複領域１２２ｄに含まれる領域データのうち検索サーバ２が担当しない領域データを、重複領域キャッシュデータとする。そして、インデックス割当部１３１は、重複領域キャッシュデータを検索サーバ２にコピーする。これは、検索サーバ２が担当しない重複領域の領域データを重複領域キャッシュデータとして当該検索サーバ２に保持させるためである。
【００３１】
また、インデックス割当部１３１は、領域インデックスＤＢ１２１に記憶されたノードの情報のうち、検索サーバ２にルートノードとして割り当てた中間ノードの情報に当該検索サーバ２の宛先を記録する。つまり、インデックス割当部１３１は、検索サーバ２にルートノードとして割り当てたノードを、振分サーバ１の葉ノードとして検索サーバ２のルートノードとリンクさせる。振分サーバ１の葉ノードと検索サーバ２のルートノードとは、同じ情報を有するノードであるからである。
【００３２】
ここで、振分サーバ１の領域インデックスＤＢに記憶される葉ノードの情報について、図９を参照して説明する。図９は、振分サーバの領域インデックスＤＢに記憶される葉ノードの情報の例を示す図である。図９に示すように、領域インデックスＤＢ１２１は、葉ノードの情報として、「ノード種別、矩形領域、検索サーバの宛先」を記憶する。「検索サーバの宛先」は、この葉ノードをルートノードとして割り当てられた検索サーバ２の宛先である。「検索サーバの宛先」は、例えば、検索サーバ２のＵＲＬである。また、ここで記憶される「ノード種別」、「矩形領域」は、図４と同様であるので詳細な説明は省略する。
【００３３】
図９の場合、葉ノードＲ１は、ｘ、ｙの２次元データを管理し、「ｘ１＝３５．５、ｙ１＝１３９．２５」が担当領域の最小点であり、「ｘ２＝３５．６５、ｙ２＝１３９．３０」が担当領域の最大点であることを示す。すなわち、葉ノードＲ１が担当する領域は、両点を頂点として各次元軸に直交した４直線で作られる領域である。また、Ｒ１は、検索サーバの宛先として、検索サーバＡのＵＲＬを記憶する。
【００３４】
また、Ｒツリーの検索サーバ２への割り当てについて、図１０を参照して説明する。図１０は、Ｒツリーの検索サーバへの割り当てについて説明する図である。図１０に示すように、深度が２である場合、インデックス割当部１３１は、Ｒツリーのルートノードより下位の深度２にあるノードを検索サーバ２に割り当てる。そして、インデックス割当部１３１は、検索サーバ２に割り当てられたノードを当該検索サーバ２のルートノードに設定する。インデックス割当部１３１は、検索サーバ２に割り当てられたノードを振分サーバ１の葉ノードに設定する。
【００３５】
ここでは、ノードＲ１が、検索サーバＡのルートノードとして割り当てられているとともに、振分サーバ１の葉ノードとして設定されている。ノードＲ２が、検索サーバＢのルートノードとして割り当てられているとともに、振分サーバ１の葉ノードとして設定されている。ノードＲ３が、検索サーバＣのルートノードとして割り当てられているとともに、振分サーバ１の葉ノードとして設定されている。ノードＲ４が、検索サーバＤのルートノードとして割り当てられているとともに、振分サーバ１の葉ノードとして設定されている。
【００３６】
図２に戻って、振分部１３２は、領域検索要求の現在位置を担当範囲に持つノードを検索する。そして、振分部１３２は、検索できたノードを検索結果に設定する。そして、振分部１３２は、検索結果に葉ノードが存在すれば、存在する葉ノードが担当する検索サーバ２を、領域検索要求を振り分ける振分対象とする。そして、振分部１３２は、振分対象とした検索サーバ２に対して領域検索要求を振り分ける。なお、振分対象が複数あれば、振分部１３２は、複数の振分対象の検索サーバ２に対して領域検索要求を転送する。
【００３７】
また、振分部１３２は、領域検索要求を転送した検索サーバ２の数が複数の場合、検索サーバ２から検索結果を最初に受け取ると、検索結果を出力した検索サーバ２と異なる検索サーバ２に対して領域検索の終了指示を発行する。これにより、振分部１３２は、最初に検索結果がみつかった検索サーバ２以外の領域検索を終了できるので、検索サーバ２並びにシステム全体の負荷を削減できる。
【００３８】
領域データ追加部１３３は、領域データを追加する場合、領域データを追加する検索サーバ２を探索し、探索した検索サーバ２に領域データを追加する旨を指示する。例えば、領域データ追加部１３３は、ルートノードから子ノードに向かって順番にノードを選択し、選択したノードの子ノードに追加領域を含むものがあるか否かを、領域インデックスＤＢ１２１を用いて判定する。そして、領域データ追加部１３３は、選択したノードの子ノードに追加領域を含むものがある場合、一例として、追加領域を包含する子ノードの内、矩形領域の面積が最小のものを選択ノードとする。また、領域データ追加部１３３は、選択したノードの子ノードに追加領域を含むものがない場合、一例として、追加領域を含めると拡大量が最小になる子ノードを選択ノードとする。そして、領域データ追加部１３３は、選択ノードが葉ノードであれば、当該葉ノードを担当する検索サーバ２に、領域データの追加指示をする。これにより、領域データの追加指示がされた検索サーバ２は、自サーバが担当する担当領域の領域データとして領域データＤＢ２２２に追加することになる。
【００３９】
［検索サーバの構成］
図１１は、実施例に係る検索サーバの構成を示す機能ブロック図である。図１１に示すように、検索サーバ２は、通信インタフェース２１と、記憶部２２と、制御部２３とを有する。
【００４０】
通信インタフェース２１は、振分サーバ１との間で通信を確立して、所定のデータを送信したり、受信したりするインタフェースである。例えば、通信インタフェース２１は、振分サーバ１から領域検索要求を受信したり、振分サーバ１に領域検索応答を送信したりする。また、通信インタフェース２１は、他の検索サーバ２との間で通信を確立して、所定のデータを送信したり、受信したりする。
【００４１】
記憶部２２は、制御部２３が実行するプログラムなどを記憶するとともに、領域インデックスＤＢ２２１と領域データＤＢ２２２と重複領域キャッシュデータＤＢ２２３と検索状態管理ＤＢ２２４とを有する。なお、記憶部２２は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
【００４２】
領域インデックスＤＢ２２１は、振分サーバ１によって検索サーバ２毎に割り当てられたルートノード配下のノードの情報を記憶する。すなわち、検索サーバ２は、振分サーバ１によって自サーバに割り当てられたルートノードの矩形領域を、領域検索の担当領域とする。なお、領域インデックスＤＢ２２１のデータ構造は、振分サーバ１の領域インデックスＤＢ１２１と同様であるので、その説明を省略する。
【００４３】
領域データＤＢ２２２は、振分サーバ１によって検索サーバ２毎に割り当てられたルートノード配下の担当するノードに付随する領域データを管理するとともに、領域データについて、領域データの領域と重複する他の領域の領域データを管理する。すなわち、検索サーバ２は、自サーバの担当領域に含まれる領域データの領域に関する情報を管理する。なお、領域データＤＢ２２２は、領域ＩＤ２２２ａ毎に、データ名２２２ｂ、領域情報２２２ｃおよび重複領域２２２ｄを対応付けて記憶する。領域ＩＤ２２２ａ、データ名２２２ｂ、領域情報２２２ｃおよび重複領域２２２ｄは、振分サーバ１の領域データＤＢ１２２の領域ＩＤ１２２ａ、データ名１２２ｂ、領域情報１２２ｃおよび重複領域１２２ｄそれぞれに対応する。
【００４４】
重複領域キャッシュデータＤＢ２２３は、担当する領域データの領域に重複する他の領域の領域データのうち担当しない領域データを重複領域キャッシュデータとして管理する。ここで、重複領域キャッシュデータＤＢ２２３のデータ構造の一例を、図１２を参照して説明する。図１２は、重複領域キャッシュデータＤＢのデータ構造の一例を示す図である。図１２に示すように、重複領域キャッシュデータＤＢ２２３は、領域ＩＤ２２３ａ毎に、データ名２２３ｂおよび領域情報２２３ｃを対応付けて記憶する。領域ＩＤ２２３ａは、領域データを一意に識別可能なＩＤを示す。領域ＩＤ２２３ａは、領域データＤＢ２２２の領域ＩＤ２２２ａに対応する。データ名２２３ｂは、領域ＩＤで示される領域データのデータ名を示す。データ名２２３ｂは、領域データＤＢ２２２のデータ名２２２ｂに対応する。領域情報２２３ｃは、領域ＩＤで示される領域データの実体である具体的な範囲を示す。領域情報２２３ｃは、領域データＤＢ２２２の領域情報２２２ｃに対応する。例えば、領域ＩＤ２２３ａが「０００３４」である場合、データ名２２３ｂとして「レストランＣ周辺」、領域情報２２３ｃとして「円領域：緯度３５．４９２、経度１３９．６５０、半径１００ｍ」と記憶している。
【００４５】
図１１に戻って、検索状態管理ＤＢ２２４は、領域検索要求毎の検索状態を管理する。ここで、検索状態管理ＤＢ２２４のデータ構造の一例を、図１３を参照して説明する。図１３は、検索状態管理ＤＢのデータ構造の一例を示す図である。図１３に示すように、検索状態管理ＤＢ２２４は、リクエストＩＤ２２４ａ毎に、開始時間２２４ｂおよび終了指示２２４ｃを対応付けて記憶する。リクエストＩＤ２２４ａは、領域検索要求を一意に識別可能なＩＤを示す。開始時間２２４ｂは、領域検索要求に対応する領域検索が開始された時間である。終了指示２２４ｃは、振分サーバ１からの領域検索における終了指示の有無を示す。一例として、終了指示があった場合、終了指示があったことを示す「終了指示あり」が設定される。終了指示がない場合、終了指示がないことを示す空白が設定される。例えば、リクエストＩＤ２２４ａが「ｓｅｎｓｏｒＸ−９４」である場合、開始時間２２４ｂとして「１０／１１  １０：０５」、終了指示２２４ｃとして「終了指示あり」と記憶している。
【００４６】
図１１に戻って、制御部２３は、リクエスト受付部２３１、レスポンス転送部２３２、終了指示受付部２３３、判定部２３４、ボトムアップ検索部２３５、トップダウン検索部２３６および領域データ追加部２３７を有する。制御部２３は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００４７】
リクエスト受付部２３１は、振分サーバ１によって振り分けられた領域検索要求（検索リクエスト）を受け付ける。例えば、リクエスト受付部２３１は、振分サーバ１によって送信される領域検索要求を、通信インタフェース２１を介して受け付けると、領域検索要求の中からリクエストＩＤを取り出す。そして、リクエスト受付部２３１は、検索状態管理ＤＢ２２４に、リクエストＩＤ、領域検索を開始する時間および終了指示がないことを示す空白を対応付けて記録する。また、リクエスト受付部２３１は、領域検索要求が同じ要求元から過去にあった場合、前回検索できた領域ＩＤの領域情報を領域検索要求とともに受け付ける。
【００４８】
レスポンス転送部２３２は、検索リクエストに対応する領域検索応答を通信インタフェース１１に転送する。
【００４９】
終了指示受付部２３３は、振分サーバ１によって発行される領域検索の終了指示を受け付ける。例えば、終了指示受付部２３３は、振分サーバ１によって発行される領域検索の終了指示を通信インタフェース２１を介して受け付けると、検索状態管理ＤＢ２２４の、領域検索に対応する終了指示があったことを示す「終了指示あり」に更新する。
【００５０】
判定部２３４は、自サーバが担当する担当領域に、前回領域を含んでいるか否かを判定する。ここでいう「前回領域」とは、前回に領域検索できた領域ＩＤの領域である。例えば、判定部２３４は、領域インデックスＤＢ２２１からルートノードの矩形領域を読み出し、読み出した矩形領域に前回領域が含まれるか否かを判定する。
【００５１】
また、判定部２３４は、自サーバが担当する担当領域に前回領域を含んでいると判定した場合、ボトムアップ検索部２３５に、Ｒツリーの、前回領域に対応する葉ノードからボトムアップに検索させる。これは、担当領域に前回領域を含んでいれば、現在位置が前回領域あるいは前回領域に近い領域に含まれる可能性が高いからである。また、判定部２３４は、自サーバが担当する担当領域に前回領域を含んでいないと判定した場合、トップダウン検索部２３６に、Ｒツリーの、担当領域に対応するルートノードからトップダウンに検索させる。これは、担当領域に前回領域を含んでいなければ、前回領域と現在位置との関係が不明であるからである。
【００５２】
ボトムアップ検索部２３５は、前回領域に対応する葉ノードからボトムアップに、領域検索要求に指定される位置情報（現在位置）を含む領域を検索する。
【００５３】
例えば、ボトムアップ検索部２３５は、領域検索要求の中からリクエストＩＤ、要求元を示すセンサーＩＤおよび位置情報を取り出す。ボトムアップ検索部２３５は、領域検索要求の中から取り出した位置情報が前回領域に含まれるか否かを判定する。そして、ボトムアップ検索部２３５は、取り出した位置情報が前回領域に含まれる場合、当該前回領域の領域データを検索結果に追加する。
【００５４】
また、ボトムアップ検索部２３５は、取り出した位置情報が前回領域に含まれない場合、領域インデックスＤＢ２２１を用いて、前回領域を領域データに持つ葉ノードから当該位置情報を含む領域を検索する。すなわち、ボトムアップ検索部２３５は、葉ノードが持つ領域データの内、位置情報を含む領域データがあれば、検索できた領域データを検索結果に追加する。
【００５５】
また、ボトムアップ検索部２３５は、葉ノードが持つ領域データの内、当該位置情報を含む領域データがなければ、ルートノードへ向けてボトムアップにノードを順番に辿り、位置情報を含むノードを選択する。そして、ボトムアップ検索部２３５は、選択したノードの子ノードに、位置情報を含むものがあるか否かを、領域インデックスＤＢ２２１を用いて判定する。そして、ボトムアップ検索部２３５は、位置情報を含む子ノードを選択候補ノードとして追加する。そして、ボトムアップ検索部２３５は、選択候補ノードとして追加されたノードを１つずつ選択し、選択したノードが葉ノードであれば、葉ノードにある領域データの内、位置情報を含む領域データがあるか否かを、領域インデックスＤＢ２２１を用いて判定する。そして、ボトムアップ検索部２３５は、位置情報を含む領域データが１つでもあれば、いずれか１つの領域データを検索結果に追加する。
【００５６】
また、ボトムアップ検索部２３５は、領域データＤＢ２２２に記憶された重複領域２２２ｄに基づいて、検索結果に追加された領域データに対応する重複領域の中から位置情報を含む重複領域を検索する。一例として、ボトムアップ検索部２３５は、重複領域２２２ｄに設定された領域ＩＤが領域データＤＢ２２２の領域ＩＤ２２２ａに存在すれば、領域データＤＢ２２２の領域情報２２２ｃを用いて位置情報を含む重複領域であるかを検索すれば良い。一方、ボトムアップ検索部２３５は、重複領域２２２ｄに設定された領域ＩＤが領域データＤＢ２２２の領域ＩＤ２２２ａに存在しなければ、重複領域キャッシュデータＤＢ２２３の領域情報２２３ｃを用いて位置情報を含む重複領域であるかを検索すれば良い。そして、ボトムアップ検索部２３５は、検索できた重複領域の領域データを検索結果に追加する。
【００５７】
そして、ボトムアップ検索部２３５は、検索リクエストに対応する領域検索応答として検索結果をレスポンス転送部２３２に出力する。なお、ボトムアップ検索部２３５は、領域検索中に、振分サーバ１から検索終了の指示があった場合、検索を終了する。例えば、ボトムアップ検索部２３５は、検索処理のうち所定の処理の後に、検索状態管理ＤＢ２２４に記憶された、領域検索要求に対応する終了指示２２４ｃを参照し、終了指示があったか否かを確認すれば良い。
【００５８】
トップダウン検索部２３６は、ルートノードからトップダウンに、領域検索要求に指定される位置情報を含む領域を検索する。
【００５９】
例えば、トップダウン検索部２３６は、領域検索要求の中からリクエストＩＤ、要求元を示すセンサーＩＤおよび位置情報を取り出す。トップダウン検索部２３６は、ルートノードから子ノードへトップダウンに辿り順番にノードを選択し、選択したノードの子ノードに、取り出した位置情報を含むものがあるか否かを、領域インデックスＤＢ２２１を用いて判定する。
【００６０】
また、トップダウン検索部２３６は、取り出した位置情報を含む子ノードを選択候補ノードとして追加する。そして、トップダウン検索部２３６は、選択候補ノードとして追加されたノードを１つずつ選択し、選択したノードが葉ノードであれば、葉ノードにある領域データの内、取り出した位置情報を含むものがあるか否かを、領域インデックスＤＢ２２１を用いて判定する。そして、トップダウン検索部２３６は、領域データに対応する領域情報２２２ｃに、取り出した位置情報を含むものが１つでもあれば、いずれか１つの領域情報２２２ｃの領域データを検索結果に追加する。なお、トップダウン検索部２３６は、位置情報を含む領域情報が複数ある場合には、重複領域の数が最も小さい領域情報を選択することが望ましい。これは、さらに、トップダウン検索部２３６が、選択した領域情報の重複領域から位置情報を含む領域を検索することとなるので、検索対象となる重複領域の数を減らすためである。
【００６１】
また、トップダウン検索部２３６は、領域データＤＢ２２２に記憶された重複領域２２２ｄに基づいて、検索結果に追加された領域データに対応する重複領域の中から位置情報を含む重複領域を検索する。一例として、トップダウン検索部２３６は、重複領域２２２ｄに設定された領域ＩＤが領域データＤＢ２２２の領域ＩＤ２２２ａに存在すれば、領域データＤＢ２２２の領域情報２２２ｃを用いて位置情報を含む重複領域であるかを検索すれば良い。一方、トップダウン検索部２３６は、重複領域２２２ｄに設定された領域ＩＤが領域データＤＢ２２２の領域ＩＤ２２２ａに存在しなければ、重複領域キャッシュデータＤＢ２２３の領域情報２２３ｃを用いて位置情報を含む重複領域であるかを検索すれば良い。そして、トップダウン検索部２３６は、検索できた重複領域の領域データを検索結果に追加する。
【００６２】
そして、トップダウン検索部２３６は、検索リクエストに対応する領域検索応答として検索結果をレスポンス転送部２３２に出力する。なお、トップダウン検索部２３６は、領域検索中に、振分サーバ１から検索終了の指示があった場合、検索を終了する。例えば、トップダウン検索部２３６は、検索処理のうち所定の処理の後に、検索状態管理ＤＢ２２４に記憶された、領域検索要求に対応する終了指示２２４ｃを参照し、終了指示があったか否かを確認すれば良い。
【００６３】
領域データ追加部２３７は、領域データの追加指示があった場合、追加指示があった領域データを領域データＤＢ２２２に追加する。また、領域データ追加部２３７は、追加指示があった領域データについて、領域データＤＢ２２２の重複領域を設定する。例えば、領域データ追加部２３７は、ルートノードから子ノードに向かって順番にノードを選択し、選択したノードの子ノードに、追加領域と重なるものがあるか否かを、領域インデックスＤＢ２２１を用いて判定する。
【００６４】
また、領域データ追加部２３７は、追加領域と重なる子ノードを選択候補ノードとして追加する。そして、領域データ追加部２３７は、選択候補ノードとして追加されたノードを１つずつ選択し、選択したノードが葉ノードであれば、葉ノードにある領域データの内、追加領域と重複する部分がある領域データを重複領域として選択する。そして、領域データ追加部２３７は、重複領域として選択された領域データを、領域データＤＢ２２２の追加領域に対応する重複領域２２２ｄに追加する。さらに、領域データ追加部２３７は、追加領域を、重複領域として選択された領域データに対応する重複領域２２２ｄに追加する。
【００６５】
また、領域データ追加部２３７は、他の検索サーバ２に対して、追加指示があった領域データの重複領域への設定依頼をする。これは、追加指示があった領域データが、他の検索サーバ２によって担当される領域データと重複する場合があるからである。かかる場合に、他の検索サーバ２は、領域データＤＢ２２２の重複領域について、自身が担当する領域データであって設定依頼があった領域データと重複する領域データの重複領域に、設定依頼があった領域データの領域ＩＤを追加する。そして、領域データ追加部２３７は、他の検索サーバ２から、追加指示があった領域データと重複する領域データを受け取り、重複領域キャッシュデータＤＢ２２３に追加する。
【００６６】
［検索システムの処理の説明］
次に、実施例に係る検索システム９の処理を、図１４を参照して説明する。図１４は、実施例に係る検索システムの処理を説明する図である。なお、図１４では、振分サーバ１は、深度２にあるノードｂ、ｃをルートノードとしてそれぞれ検索サーバＡ、Ｂに割り当てている。検索サーバＡは、ルートノードｂの配下を担当領域とする。ノードｃの矩形領域は、領域ＩＤ１、２、３の領域を含んでいる。ノードｄの矩形領域は、領域ＩＤ４、５の領域を含んでいる。検索サーバＢは、ルートノードｅの配下を担当領域とする。ノードｆの矩形領域は、領域ＩＤ６、７の領域を含んでいる。ノードｇの矩形領域は、領域ＩＤ８、９の領域を含んでいる。そして、領域ＩＤ１と領域ＩＤ２の領域は、互いに重複していることを示している。領域ＩＤ５と領域ＩＤ９の領域は、担当の検索サーバが異なるが、互いに重複していることを示している。
【００６７】
このような状況の下、今回の領域検索要求の現在位置がルートノードｂ配下の葉ノードの矩形領域の範囲内であって、ルートノードｅ配下の葉ノードの矩形領域の範囲内であったとする。すると、振分サーバ１は、現在位置が範囲内であった葉ノードを担当する検索サーバＡ、Ｂに対して領域検索要求を振り分ける。
【００６８】
ここで、前回領域の領域ＩＤが「９」であったとする。すると、領域検索要求を振り分けられた検索サーバＡは、担当領域に前回領域を含まないので、ルートノードｂからのトップダウンで、現在位置を含む領域を検索する。また、領域検索要求を振り分けられた検索サーバＢは、担当領域に前回領域を含むので、前回領域に対応する葉ノードｇからボトムアップで、現在位置を含む領域を検索する。
【００６９】
そして、振分サーバ１は、最も早く戻ってきた応答を元に領域検索応答を行う。これにより、検索システム９では、振分サーバ１が、検索サーバ２に対して順番に領域検索を行う場合と比較して、検索サーバ２間を跨ぐ無駄なバックトラックがなくなることで、検索サーバ２および振分サーバ１間の通信コストを削減できる。この結果、検索システム９は、領域検索の検索時間を高速化できる。
【００７０】
［領域検索要求のデータの一例］
次に、振分部１３２が通信インタフェース１１を介して受け付ける領域検索要求の内容について、図１５を参照して説明する。図１５は、領域検索要求の内容の一例を示す図である。図１５に示すように、領域検索要求には、領域検索要求を識別するリクエストＩＤと、センサーを識別するセンサーＩＤと、緯度および経度とを含む。緯度および経度は、位置情報（現在位置）の一例である。図１５の例では、リクエストＩＤとして「ＳｅｎｓｏｒＸ−９４」、センサーＩＤとして「ＳｅｎｓｏｒＸ」、緯度として「３５．４１３４」、経度として「１３９．６２５２」と設定している。なお、領域検索要求には、センサーＩＤを含むものとしたが、これに限定されず、領域検索を要求する端末装置の装置ＩＤであっても良いし、領域検索を要求する携帯電話の携帯電話番号であっても良い。
【００７１】
［領域検索応答のデータの一例］
次に、振分部１３２が通信インタフェース１１を介して出力する領域検索応答の内容について、図１６を参照して説明する。図１６は、領域検索応答の内容の一例を示す図である。図１６に示すように、領域検索応答は、領域検索の結果を示す領域情報のリストであり、領域情報に対応する領域ＩＤと領域名とを含む。図１６の例では、領域ＩＤとして「００００１」、領域名として「Ａ商店Ｘ店舗周辺」と設定している。また、領域ＩＤとして「０００３４」、領域名として「レストランＣ周辺」と設定している。なお、領域情報のリストには、領域ＩＤと領域名とを含むものとしたが、これに限定されず、領域の位置、大きさや形状などを含むものとしても良い。
【００７２】
［振分サーバによる振分処理の手順］
次に、実施例に係る振分サーバ１による振分処理の手順について、図１７Ａ、図１７Ｂを参照して説明する。図１７Ａ、図１７Ｂは、振分サーバによる振分処理の手順を示すフローチャートである。なお、図１７Ａ、１７Ｂの例では、領域検索要求（検索リクエスト）に含まれる位置情報を現在位置として説明する。
【００７３】
まず、検索リクエストを受信した振分部１３２は、領域インデックスＤＢ１２１に基づいて、ルートノードを選択する（ステップＳ１１）。そして、振分部１３２は、選択した選択ノードの子ノードの中から、リクエストの現在位置を担当範囲に持つノードを検索する（ステップＳ１２）。
【００７４】
そして、振分部１３２は、検索結果に葉ノードを含むか否かを判定する（ステップＳ１３）。検索結果に葉ノードを含まないと判定した場合（ステップＳ１３；Ｎｏ）、振分部１３２は、ステップＳ１５に移行する。一方、検索結果に葉ノードを含むと判定した場合（ステップＳ１３；Ｙｅｓ）、振分部１３２は、検索結果の全ての葉ノードがそれぞれ含む検索サーバ２のＵＲＬを、振分対象リストに追加する（ステップＳ１４）。そして、振分部１３２は、ステップＳ１５に移行する。
【００７５】
ステップＳ１５では、振分部１３２は、検索結果の中間ノードを選択候補ノードに追加する（ステップＳ１５）。そして、振分部１３２は、全ての選択候補ノードの検索を終えたか否かを判定する（ステップＳ１６）。全ての選択候補ノードの検索を終えていないと判定した場合（ステップＳ１６；Ｎｏ）、振分部１３２は、選択候補ノード内の１つの未検索ノードを選択し（ステップＳ１７）、ステップＳ１２に移行する。
【００７６】
一方、全ての選択候補ノードの検索を終えたと判定した場合（ステップＳ１６；Ｙｅｓ）、振分部１３２は、振分対象サーバリストを用いて、振分対象サーバの数が０であるか否かを判定する（ステップＳ１８）。振分対象サーバの数が０であると判定した場合（ステップＳ１８；Ｙｅｓ）、振分部１３２は、リクエストを振り分ける対象の検索サーバ２がないので、領域検索要求のリクエスト元に空の検索結果を返し（ステップＳ１８Ａ）、処理を終了する。
【００７７】
振分対象サーバの数が０でないと判定した場合（ステップＳ１８；Ｎｏ）、振分部１３２は、振分対象サーバリストに含まれる検索サーバ２のＵＲＬにリクエストを転送する（ステップＳ１９）。そして、振分部１３２は、リクエストのＩＤと振分対象サーバリストを返答待ちリストに追加する（ステップＳ２０）。そして、振分部１３２は、処理を終了する。
【００７８】
その後、リクエストを振り分けたいずれかの検索サーバ２から検索結果を受信した振分部１３２は、検索元のリクエストのＩＤが返答待ちリストにあるか否かを判定する（ステップＳ２１）。検索元のリクエストのＩＤが返答待ちリストにないと判定した場合（ステップＳ２１；Ｎｏ）、振分部１３２は、処理を終了する。
【００７９】
検索元のリクエストのＩＤが返答待ちリストにあると判定した場合（ステップＳ２１；Ｙｅｓ）、振分部１３２は、検索結果を領域検索応答として領域検索要求のリクエスト元へ返答する（ステップＳ２２）。
【００８０】
そして、振分部１３２は、返答待ちリストを用いて、リクエスト（ＩＤ）に対応する振分対象サーバに対して、検索の終了指示を発行する（ステップＳ２３）。そして、振分部１３２は、リクエストのＩＤを返答待ちリストから削除し（ステップＳ２４）、処理を終了する。
【００８１】
［検索サーバによる検索処理の手順］
次に、実施例に係る検索サーバ２による検索処理の手順について、図１８Ａ〜図１８Ｃを参照して説明する。図１８Ａ〜図１８Ｃは、検索サーバによる検索処理の手順を示すフローチャートである。なお、図１８Ａ〜図１８Ｃの例では、領域検索要求（検索リクエスト）に含まれる位置情報を検索座標として説明する。
【００８２】
まず、振分サーバ１から領域検索要求を受け付けたリクエスト受付部２３１は、検索状態管理ＤＢ２２４に、領域検索要求に含まれるリクエストＩＤおよび領域検索の開始時間を対応付けて追加する（ステップＳ３０）。なお、リクエスト受付部２３１は、振分サーバ１から、領域検索要求の内容を受信するとともに、リクエストのセンサーＩＤに対応する前回領域（前回データ）があれば当該前回データの領域ＩＤを受信する。
【００８３】
続いて、判定部２３４は、リクエストのセンサーＩＤの前回データが担当領域に含まれるか否かを判定する（ステップＳ３１）。例えば、判定部２３４は、領域データＤＢ２２２の領域ＩＤ２２２ａに、前回データの領域ＩＤが記憶されているか否かを判定する。リクエストのセンサーＩＤの前回データが担当領域に含まれないと判定した場合（ステップＳ３１；Ｎｏ）、判定部２３４は、ルートノードからトップダウンに検索すべく、ステップＳ５１に移行する。
【００８４】
一方、リクエストのセンサーＩＤの前回データが担当領域に含まれると判定した場合（ステップＳ３１；Ｙｅｓ）、判定部２３４は、前回データに対応する葉ノードからボトムアップに検索すべく、ステップＳ３２に移行する。ステップＳ３２では、ボトムアップ検索部２３５は、検索座標が前回データ内にあるか否かを判定する（ステップＳ３２）。検索座標が前回データ内にある場合（ステップＳ３２；Ｙｅｓ）、ボトムアップ検索部２３５は、前回データを該当データとして検索結果に追加する（ステップＳ３３）。
【００８５】
続いて、ボトムアップ検索部２３５は、領域データＤＢ２２２の重複領域２２２ｄに基づいて、検索結果に追加した領域データの重複領域から未判定のものを読み出し、読み出した重複領域を１つ選択する（ステップＳ３４）。そして、ボトムアップ検索部２３５は、選択した重複領域が検索座標を含むか否かを判定する（ステップＳ３５）。例えば、ボトムアップ検索部２３５は、選択した重複領域の領域ＩＤが領域データＤＢ２２２のいずれかの領域ＩＤ２２２ａと一致すれば、一致した領域ＩＤ２２２ａの領域情報２２２ｃを用いて検索座標を含むか否かを判定する。また、ボトムアップ検索部２３５は、選択した重複領域の領域ＩＤが領域データＤＢ２２２のいずれの領域ＩＤ２２２ａとも一致しなければ、重複領域キャッシュデータＤＢ２２３を用いて判定する。すなわち、ボトムアップ検索部２３５は、選択した重複領域の領域ＩＤと一致する、重複領域キャッシュデータＤＢ２２３の領域ＩＤ２２３ａの領域情報２２２ｃを用いて検索座標を含むか否かを判定する。
【００８６】
選択した重複領域が検索座標を含むと判定した場合（ステップＳ３５；Ｙｅｓ）、ボトムアップ検索部２３５は、含むと判定した重複領域の領域ＩＤを検索結果に追加し（ステップＳ３６）、ステップＳ３７に移行する。一方、選択した重複領域が検索座標を含まないと判定した場合（ステップＳ３５；Ｎｏ）、ボトムアップ検索部２３５は、全重複領域の判定を終えたか否かを判定する（ステップＳ３７）。
【００８７】
全重複領域の判定を終えていない場合（ステップＳ３７；Ｎｏ）、ボトムアップ検索部２３５は、終了指示を確認する（ステップＳ３７Ａ）。例えば、ボトムアップ検索部２３５は、検索状態管理ＤＢ２２４に記憶された該当リクエストＩＤに対応する終了指示２２４ｃを参照し、終了指示を確認する。終了指示がされていない場合、ボトムアップ検索部２３５は、次の重複領域を判定すべく、ステップＳ３４に移行する。終了指示がされている場合、ボトムアップ検索部２３５は、既に別の検索サーバ２で検索結果がみつかったと判断し、検索処理を終了すべく、ステップＳ４５に移行する。
【００８８】
一方、ボトムアップ検索部２３５は、全重複領域の判定を終えた場合（ステップＳ３７；Ｙｅｓ）、作成された検索結果を振分サーバ１へ返答する（ステップＳ３８）。そして、ボトムアップ検索部２３５は、ステップＳ４５に移行する。
【００８９】
ステップＳ３２では、検索座標が前回データ内にない場合（ステップＳ３２；Ｎｏ）、ボトムアップ検索部２３５は、ノードをボトムアップに辿る検索処理に移行すべく、ステップＳ４０に移行する。
【００９０】
ステップＳ４０では、ボトムアップ検索部２３５が、領域インデックスＤＢ２２１に基づいて、前回データを領域データとしてデータリストに持つ葉ノードまたは親ノードを選択する（ステップＳ４０）。そして、ボトムアップ検索部２３５は、選択した選択ノードが検索座標を含むか否かを、領域インデックスＤＢ２２１を用いて判定する（ステップＳ４１）。選択ノードが検索座標を含むと判定した場合（ステップＳ４１；Ｙｅｓ）、ボトムアップ検索部２３５は、さらにノードを選択ノードからトップダウンに辿る検索処理に移行すべく、ステップＳ７１に移行する。
【００９１】
一方、選択ノードが検索座標を含まないと判定した場合（ステップＳ４１；Ｎｏ）、ボトムアップ検索部２３５は、選択ノードがルートノードであるか否かを、領域インデックスＤＢ２２１を用いて判定する（ステップＳ４２）。選択ノードがルートノードでなければ（ステップＳ４２；Ｎｏ）ボトムアップ検索部２３５は、終了指示を確認する（ステップＳ４２Ａ）。例えば、ボトムアップ検索部２３５は、検索状態管理ＤＢ２２４に記憶された該当リクエストＩＤに対応する終了指示２２４ｃを参照し、終了指示を確認する。終了指示がされていない場合、ボトムアップ検索部２３５は、親ノードを検索すべく、ステップＳ４０に移行する。終了指示がされている場合、ボトムアップ検索部２３５は、既に別の検索サーバ２で検索結果がみつかったと判断し、検索処理を終了すべく、ステップＳ４５に移行する。
【００９２】
一方、選択ノードがルートノードであれば（ステップＳ４２；Ｙｅｓ）、ボトムアップ検索部２３５は、検索結果無しとして振分サーバ１へ返答する（ステップＳ４３）。そして、ボトムアップ検索部２３５は、ステップＳ４５に移行する。ステップＳ４５では、ボトムアップ検索部２３５は、検索状態管理ＤＢ２３４からリクエストＩＤに対応するレコードを削除し（ステップＳ４５）、検索処理を終了する。
【００９３】
［前回データが担当領域に含まれていない場合の検索処理の手順］
次に、図１８ＡのステップＳ３１に示した前回データが担当領域に含まれていない場合の検索処理の手順について、図１８Ｂを参照して説明する。
【００９４】
判定部２３４によってリクエストのセンサーＩＤの前回データが担当領域に含まれないと判定された場合、トップダウン検索部２３６は、領域インデックスＤＢ２２１に基づいて、ルートノードを選択する（ステップＳ５１）。そして、トップダウン検索部２３６は、選択した選択ノードが葉ノードであるか否かを判定する（ステップＳ５２）。
【００９５】
選択ノードが葉ノードでないと判定した場合（ステップＳ５２；Ｎｏ）、トップダウン検索部２３６は、選択ノードの子ノードに検索座標を含むものがあるか否かを、領域インデックスＤＢ２２１を用いて判定する（ステップＳ５３）。一例として、トップダウン検索部２３６は、領域インデックスＤＢ２２１に基づいて、選択ノードの子ノードリストを読み出し、読み出した子ノードリストに含まれるそれぞれの子ノードの矩形領域を読み出す。そして、トップダウン検索部２３６は、読み出したそれぞれの子ノードの矩形領域に、検索座標を含むものがあるか否かを判定する。
【００９６】
選択ノードの子ノードに検索座標を含むものがあると判定した場合（ステップＳ５３；Ｙｅｓ）、トップダウン検索部２３６は、検索座標を含む子ノードを選択候補ノードに追加し（ステップＳ５４）、ステップＳ５５に移行する。一方、選択ノードの子ノードに検索座標を含むものがないと判定した場合（ステップＳ５３；Ｎｏ）、トップダウン検索部２３６は、ステップＳ５５に移行する。
【００９７】
続いて、トップダウン検索部２３６は、全ての選択候補ノードの検索を終えたか否かを判定する（ステップＳ５５）。全ての選択候補ノードの検索を終えていないと判定した場合（ステップＳ５５；Ｎｏ）、トップダウン検索部２３６は、終了指示を確認する（ステップＳ５５Ａ）。終了指示がされていない場合、トップダウン検索部２３６は、次の未検索ノードを選択すべく、ステップＳ５６に移行する。終了指示がされている場合、トップダウン検索部２３６は、既に別の検索サーバ２で検索結果がみつかったと判断し、検索処理を終了すべく、ステップＳ６５に移行する。なお、終了指示の確認方法は、ボトムアップ検索部２３５の場合と同様であるので、その説明を省略する。
【００９８】
ステップＳ５６では、トップダウン検索部２３６は、選択候補ノード内の１つの未検索ノードを選択し（ステップＳ５６）、ステップＳ５２に移行する。
【００９９】
ステップＳ５２では、選択ノードが葉ノードであると判定した場合（ステップＳ５２；Ｙｅｓ）、トップダウン検索部２３６は、選択した葉ノードが持つ領域データの内、検索座標を含むものがあるか否かを判定する（ステップＳ５７）。一例として、トップダウン検索部２３６は、領域インデックスＤＢ２２１に基づいて、葉ノードであるノードのデータリストを読み出し、読み出したデータリストに含まれる領域データへのポインタ、例えば領域ＩＤを取り出す。そして、トップダウン検索部２３６は、領域データＤＢ２２２に基づいて、取り出した領域ＩＤに対応する領域情報２２２ｃに検索座標を含むものがあるか否かを判定する。
【０１００】
選択した葉ノードが持つ領域データの内、検索座標を含むものがないと判定した場合（ステップＳ５７；Ｎｏ）、トップダウン検索部２３６は、次の選択候補ノードを検索すべく、ステップＳ５５に移行する。
【０１０１】
一方、選択した葉ノードが持つ領域データの内、検索座標を含むものがあると判定した場合（ステップＳ５７；Ｙｅｓ）、トップダウン検索部２３６は、終了指示を確認する（ステップＳ５７Ａ）。終了指示がされていない場合、トップダウン検索部２３６は、次の処理に進むべく、ステップＳ５８に移行する。終了指示がされている場合、トップダウン検索部２３６は、既に別の検索サーバ２で検索結果がみつかったと判断し、検索処理を終了すべく、ステップＳ６５に移行する。
【０１０２】
ステップＳ５８では、トップダウン検索部２３６は、該当領域データの内、重複領域の数が最小の領域データを検索結果に追加する（ステップＳ５８）。一例として、トップダウン検索部２３６は、領域データＤＢ２２２に記憶された重複領域２２２ｄに基づいて、重複領域の数が最小の領域データ（領域ＩＤ）を検索結果に追加する。
【０１０３】
続いて、トップダウン検索部２３６は、領域データＤＢ２２２の重複領域２２２ｄに基づいて、検索結果に追加した領域データの重複領域から未判定のものを読み出し、読み出した重複領域を１つ選択する（ステップＳ５９）。そして、トップダウン検索部２３６は、選択した重複領域が検索座標を含むか否かを判定する（ステップＳ６０）。例えば、トップダウン検索部２３６は、選択した重複領域の領域ＩＤが領域データＤＢ２２２のいずれかの領域ＩＤ２２２ａと一致すれば、一致した領域ＩＤ２２２ａの領域情報２２２ｃを用いて検索座標を含むか否かを判定する。また、トップダウン検索部２３６は、選択した重複領域の領域ＩＤが領域データＤＢ２２２のいずれの領域ＩＤ２２２ａとも一致しなければ、重複領域キャッシュデータＤＢ２２３を用いて判定する。すなわち、トップダウン検索部２３６は、選択した重複領域の領域ＩＤと一致する、重複領域キャッシュデータＤＢ２２３の領域ＩＤ２２３ａの領域情報２２２ｃを用いて検索座標を含むか否かを判定する。
【０１０４】
選択した重複領域が検索座標を含むと判定した場合（ステップＳ６０；Ｙｅｓ）、トップダウン検索部２３６は、含むと判定した重複領域の領域ＩＤを検索結果に追加し（ステップＳ６１）、ステップＳ６２に移行する。
【０１０５】
一方、選択した重複領域が検索座標を含まないと判定した場合（ステップＳ６０；Ｎｏ）、トップダウン検索部２３６は、全重複領域の判定を終えたか否かを判定する（ステップＳ６２）。全重複領域の判定を終えていない場合（ステップＳ６２；Ｎｏ）、トップダウン検索部２３６は、次の重複領域を判定すべく、ステップＳ５９に移行する。一方、トップダウン検索部２３６は、全重複領域の判定を終えた場合（ステップＳ６２；Ｙｅｓ）、作成した検索結果を振分サーバ１へ返答する（ステップＳ６３）。そして、トップダウン検索部２３６は、ステップＳ６５に移行する。
【０１０６】
また、トップダウン検索部２３６が全ての選択候補ノードの検索を終えると（ステップＳ５５；Ｙｅｓ）、検索結果無しとして振分サーバ１へ返答する（ステップＳ６４）。そして、トップダウン検索部２３６は、ステップＳ６５に移行する。ステップＳ６５では、トップダウン検索部２３６は、検索状態管理ＤＢ２２４からリクエストＩＤに対応するレコードを削除し（ステップＳ６５）、検索処理を終了する。
【０１０７】
［選択ノードが検索座標を含む場合の検索処理の手順］
次に、図１８ＡのステップＳ４１に示した選択ノードが検索座標を含む場合の検索処理の手順について、図１８Ｃを参照して説明する。
【０１０８】
ボトムアップ検索部２３５は、検索座標を含む選択ノードが葉ノードであるか否かを、領域インデックスＤＢ２２１を用いて判定する（ステップＳ７１）。
【０１０９】
選択ノードが葉ノードでないと判定した場合（ステップＳ７１；Ｎｏ）、ボトムアップ検索部２３５は、選択ノードの子ノードに検索座標を含むものがあるか否かを、領域インデックスＤＢ２２１を用いて判定する（ステップＳ７２）。一例として、ボトムアップ検索部２３５は、領域インデックスＤＢ２２１に基づいて、選択ノードの子ノードリストを読み出し、読み出した子ノードリストに含まれるそれぞれの子ノードの矩形領域を読み出す。そして、ボトムアップ検索部２３５は、読み出したそれぞれの子ノードの矩形領域に、検索座標を含むものがあるか否かを判定する。
【０１１０】
選択ノードの子ノードに検索座標を含むものがあると判定した場合（ステップＳ７２；Ｙｅｓ）、ボトムアップ検索部２３５は、検索座標を含む子ノードを選択候補ノードに追加し（ステップＳ７３）、ステップＳ７４に移行する。一方、選択ノードの子ノードに検索座標を含むものがないと判定した場合（ステップＳ７２；Ｎｏ）、ボトムアップ検索部２３５は、ステップＳ７４に移行する。
【０１１１】
続いて、ボトムアップ検索部２３５は、全ての選択候補ノードの検索を終えたか否かを判定する（ステップＳ７４）。全ての選択候補ノードの検索を終えていないと判定した場合（ステップＳ７４；Ｎｏ）、ボトムアップ検索部２３５は、選択候補ノード内の１つの未検索ノードを選択し（ステップＳ７５）、ステップＳ７１に移行する。
【０１１２】
ステップＳ７１では、選択ノードが葉ノードであると判定した場合（ステップＳ７１；Ｙｅｓ）、ボトムアップ検索部２３５は、選択した葉ノードが持つ領域データの内、検索座標を含むものがあるか否かを判定する（ステップＳ７６）。一例として、ボトムアップ検索部２３５は、領域インデックスＤＢ２２１に基づいて、葉ノードであるノードのデータリストを読み出し、読み出したデータリストに含まれる領域データへのポインタ、例えば領域ＩＤを取り出す。そして、ボトムアップ検索部２３５は、領域データＤＢ２２２に基づいて、取り出した領域ＩＤに対応する領域情報２２２ｃに検索座標を含むものがあるか否かを判定する。
【０１１３】
選択した葉ノードが持つ領域データの内、検索座標を含むものがないと判定した場合（ステップＳ７６；Ｎｏ）、ボトムアップ検索部２３５は、次の選択候補ノードを検索すべく、ステップＳ７４に移行する。
【０１１４】
一方、選択した葉ノードが持つ領域データの内、検索座標を含むものがあると判定した場合（ステップＳ７６；Ｙｅｓ）、ボトムアップ検索部２３５は、該当領域データの内の１つを該当データとして検索結果に追加する（ステップＳ７７）。そして、ボトムアップ検索部２３５は、ステップＳ３４に移行する。なお、ボトムアップ検索部２３５は、該当領域データの内の１つとして、重複領域の数が最小の領域データを検索結果に追加しても良い。
【０１１５】
ステップＳ７４では、全ての選択候補ノードの検索を終えたと判定した場合（ステップＳ７４；Ｙｅｓ）、ボトムアップ検索部２３５は、選択ノードに検索座標を含むものがないので、さらに親ノードから検索すべく、ステップＳ４０に移行する。
【０１１６】
［検索サーバによる終了指示受付処理の手順］
次に、実施例に係る検索サーバ２による終了指示受付処理の手順について、図１９を参照して説明する。図１９は、検索サーバによる終了指示受付処理の手順を示すフローチャートである。
【０１１７】
終了指示受付部２３３は、振分サーバ１から終了指示を受け付けると、終了指示に対応するリクエストの、検索状態管理ＤＢ２２４の終了指示２２４ｃを「終了指示あり」に更新する（ステップＳ８１）。そして、終了指示受付部２３３は、処理を終了する。
【０１１８】
［振分サーバによるインデックス割当処理の手順］
次に、実施例に係る振分サーバ１によるインデックス割当処理の手順について、図２０を参照して説明する。図２０は、振分サーバによるインデックス割当処理の手順を示すフローチャートである。
【０１１９】
まず、インデックス割当部１３１は、インデックス割当指示を受信する。このとき、インデックス割当部１３１は、Ｒツリーのインデックスを検索サーバ２へ割り当てる際の深度（ここでは、割り当て深度という）と、Ｒツリーのインデックスを割り当てる対象である検索サーバ２の宛先リストとを受け取る。すると、インデックス割当部１３１は、領域インデックスＤＢ１２１を用いて、割り当て深度にあるノードを抽出し、割り当てノードリストを作成する（ステップＳ９１）。
【０１２０】
そして、インデックス割当部１３１は、割り当てノードリストの先頭のノードに宛先リスト内の先頭の検索サーバ２を割り当てる（ステップＳ９２）。そして、インデックス割当部１３１は、割り当てられたノードの子ノード以下のインデックスの内容を、割り当てた検索サーバ２の領域インデックスＤＢ２２１にコピーする（ステップＳ９３）。そして、インデックス割当部１３１は、割り当てたノードを、コピー先の検索サーバ２のルートノードにする（ステップＳ９４）。
【０１２１】
続いて、インデックス割当部１３１は、ルートノード配下のノードに付随する領域データを、割り当てた検索サーバ２の領域データＤＢ２２２にコピーする（ステップＳ９４Ａ）。そして、インデックス割当部１３１は、コピー先にコピーした領域データの重複領域に設定されたデータ（領域ＩＤ）の和集合を作成する（ステップＳ９５）。
【０１２２】
そして、インデックス割当部１３１は、作成した和集合から、インデックスと共にコピー済みの領域データに該当するデータ（領域ＩＤ）を削除する（ステップＳ９６）。この結果、和集合には、コピー先にコピーされた領域データの重複領域のうち他の検索サーバ２が担当する領域データの領域が残ることになる。
【０１２３】
そして、インデックス割当部１３１は、残った重複領域の領域データを、領域データＤＢ１２２からコピーして、重複領域キャッシュデータとする（ステップＳ９７）。すなわち、インデックス割当部１３１は、割り当てた検索サーバ２の重複領域キャッシュデータＤＢ２２３にコピーする。
【０１２４】
そして、インデックス割当部１３１は、検索サーバ２を割り当てたノード（ルートノードとしたノード）の情報に、割り当てた検索サーバ２の宛先（ＵＲＬ）を記録する（ステップＳ９８）。そして、インデックス割当部１３１は、検索サーバ２を割り当てたノードを、割り当てノードリストから削除する（ステップＳ９９）。
【０１２５】
さらに、インデックス割当部１３１は、宛先リストの先頭の検索サーバ２を宛先リストの最後に移動する（ステップＳ１００）。そして、インデックス割当部１３１は、割り当てノードリストにノードが残っているか否かを判定する（ステップＳ１０１）。割り当てノードリストにノードが残っていると判定した場合（ステップＳ１０１；Ｙｅｓ）、インデックス割当部１３１は、次のノードに検索サーバ２を割り当てるべく、ステップＳ９２に移行する。
【０１２６】
一方、割り当てノードリストにノードが残っていないと判定した場合（ステップＳ１０１；Ｎｏ）、インデックス割当部１３１は、インデックス割当処理を終了する。
【０１２７】
［振分サーバによる領域データ追加処理の手順］
次に、実施例に係る振分サーバ１による領域データ追加処理の手順について、図２１を参照して説明する。図２１は、振分サーバによる領域データ追加処理の手順を示すフローチャートである。領域データ追加部１３３は、追加領域の領域データを受け取ったとする。領域データには、領域ＩＤ、データ名および領域情報が含まれる。
【０１２８】
まず、領域データ追加部１３３は、領域インデックスＤＢ１２１に基づいて、ルートノードを選択する（ステップＳ１１１）。そして、領域データ追加部１３３は、選択した選択ノードが葉ノードであるか否かを判定する（ステップＳ１１２）。
【０１２９】
選択ノードが葉ノードでないと判定した場合（ステップＳ１１２；Ｎｏ）、領域データ追加部１３３は、領域インデックスＤＢ１２１に基づいて、選択ノードの子ノードに追加領域を包含するものがあるか否かを判定する（ステップＳ１１３）。一例として、領域データ追加部１３３は、領域インデックスＤＢ１２１に基づいて、選択ノードの子ノードリストを読み出し、読み出した子ノードリストに含まれるそれぞれの子ノードの矩形領域を読み出す。そして、領域データ追加部１３３は、読み出したそれぞれの子ノードの矩形領域に、追加領域を包含する矩形領域があるか否かを判定する。
【０１３０】
追加領域を包含するものがあると判定した場合（ステップＳ１１３；Ｙｅｓ）、領域データ追加部１３３は、追加領域を包含する子ノードの内、矩形領域の面積が最小のものを選択ノードとする（ステップＳ１１４）。そして、領域データ追加部１３３は、ステップＳ１１２に移行する。
【０１３１】
一方、追加領域を包含するものがないと判定した場合（ステップＳ１１３；Ｎｏ）、領域データ追加部１３３は、追加領域を含めると拡大量が最小になる子ノードを選択ノードとする（ステップＳ１１５）。そして、領域データ追加部１３３は、ステップＳ１１２に移行する。
【０１３２】
ステップＳ１１２では、選択ノードが葉ノードであると判定した場合（ステップＳ１１２；Ｙｅｓ）、領域データ追加部１３３は、葉ノードに対応する検索サーバ２に、追加領域の領域データの追加指示を送信する（ステップＳ１１６）。
【０１３３】
［検索サーバによる領域データ追加処理の手順］
次に、検索サーバ２による領域データ追加処理の手順について、図２２および図２３を参照して説明する。図２２は、領域データの追加指示を受けた検索サーバによる領域データ追加処理の手順を示す図である。図２３は、重複領域への設定依頼を受けた検索サーバによる領域データ追加処理の手順を示す図である。なお、図２２では、検索サーバ２が、振分サーバ１から追加領域の領域データの追加指示を受け付けたものとする。このとき、検索サーバ２は、領域データには、領域ＩＤ、データ名および領域情報が含まれている。
【０１３４】
図２２に示すように、追加領域の領域データの追加指示を受け付けた領域データ追加部２３７は、振分サーバ１に、全ての検索サーバ２の宛先を問い合わせ、問い合わせた宛先を受信する（ステップＳ１２０）。そして、領域データ追加部２３７は、他の全ての検索サーバ２に、追加の領域データを重複領域へ設定するように依頼する（ステップＳ１２１）。これは、追加指示があった領域データが、他の検索サーバ２によって担当された領域データと重複する場合があるからである。そして、領域データ追加部２３７は、追加の領域データを領域データＤＢ２２２に追加する（ステップＳ１２２）。
【０１３５】
続いて、領域データ追加部２３７は、領域インデックスＤＢ２２１に基づいて、ルートノードを選択する（ステップＳ１２３）。そして、領域データ追加部２３７は、選択した選択ノードが葉ノードであるか否かを判定する（ステップＳ１２４）。
【０１３６】
選択ノードが葉ノードであると判定した場合（ステップＳ１２４；Ｙｅｓ）、領域データ追加部２３７は、選択ノードにある領域データの内、追加領域と重なる領域データの領域を重複領域として選択する（ステップＳ１２５）。一例として、領域データ追加部２３７は、領域インデックスＤＢ２２１に基づいて、選択ノードのデータリストを読み出し、読み出したデータリストに含まれる領域データへのポインタ、例えば領域ＩＤを取り出す。そして、領域データ追加部２３７は、領域データＤＢ２２２に基づいて、取り出した領域ＩＤの内、追加領域と重なる部分がある領域ＩＤを重複領域として選択する。そして、領域データ追加部２３７は、ステップＳ１２８に移行する。
【０１３７】
一方、選択ノードが葉ノードでないと判定した場合（ステップＳ１２４；Ｎｏ）、領域データ追加部２３７は、領域インデックスＤＢ２２１に基づいて、選択ノードの子ノードに追加領域と重なるものがあるか否かを判定する（ステップＳ１２６）。選択ノードの子ノードに追加領域と重なるものがあると判定した場合（ステップＳ１２６；Ｙｅｓ）、領域データ追加部２３７は、重なった子ノードを選択候補ノードに加え（ステップＳ１２７）、ステップＳ１２８に移行する。また、選択ノードの子ノードに追加領域と重なるものがないと判定した場合（ステップＳ１２６；Ｎｏ）、領域データ追加部２３７は、ステップＳ１２８に移行する。
【０１３８】
続いて、領域データ追加部２３７は、全ての選択候補ノードの検索を終えたか否かを判定する（ステップＳ１２８）。全ての選択候補ノードの検索を終えていないと判定した場合（ステップＳ１２８；Ｎｏ）、領域データ追加部２３７は、選択候補ノード内の１つの未検索ノードを選択し（ステップＳ１２９）、ステップＳ１２４に移行する。
【０１３９】
一方、全ての選択候補ノードの検索を終えたと判定した場合（ステップＳ１２８；Ｙｅｓ）、領域データ追加部２３７は、選択済みの重複領域を追加領域の重複領域に追加する（ステップＳ１３０）。一例として、領域データ追加部２３７は、重複領域として選択した領域データを、領域データＤＢ２２２の追加領域に対応する重複領域２２２ｄに追加する。
【０１４０】
続いて、領域データ追加部２３７は、追加領域を各選択済みの重複領域に重複領域として追加する（ステップＳ１３１）。一例として、領域データ追加部２３７は、追加領域を、領域データＤＢ２２２の重複領域として選択した各領域データに対応する重複領域２２２ｄに追加する。
【０１４１】
さらに、領域データ追加部２３７は、追加データの重複領域への設定に関する返答を、他の全ての検索サーバ２から待ち受ける（ステップＳ１３２）。そして、領域データ追加部２３７は、他の検索サーバ２から返答を受信すると、返答に含まれる領域データを重複領域キャッシュに保存する（ステップＳ１３３）。すなわち、領域データ追加部２３７は、他の検索サーバ２から、追加指示があった領域データに重複する領域データを受け取り、重複領域キャッシュデータＤＢ２２３に追加する。
【０１４２】
そして、領域データ追加部２３７は、返答に含まれる領域データの領域ＩＤを追加の領域データの重複領域２２２ｄとして追加する（ステップＳ１３４）。そして、領域データ追加部２３７は、領域データの追加指示を受けた検索サーバ２による領域データ追加処理を終了する。
【０１４３】
図２３に示すように、追加の領域データを重複領域へ設定するように依頼された検索サーバ２の領域データ追加部２３７は、領域インデックスＤＢ２２１に基づいて、ルートノードを選択する（ステップＳ１４１）。そして、領域データ追加部２３７は、選択した選択ノードが葉ノードであるか否かを判定する（ステップＳ１４２）。
【０１４４】
選択ノードが葉ノードであると判定した場合（ステップＳ１４２；Ｙｅｓ）、領域データ追加部２３７は、選択ノードにある領域データの内、追加領域と重なる領域データの領域を重複領域として選択する（ステップＳ１４３）。そして、領域データ追加部２３７は、ステップＳ１４６に移行する。
【０１４５】
一方、選択ノードが葉ノードでないと判定した場合（ステップＳ１４２；Ｎｏ）、領域データ追加部２３７は、領域インデックスＤＢ２２１に基づいて、選択ノードの子ノードに追加領域と重なるものがあるか否かを判定する（ステップＳ１４４）。選択ノードの子ノードに追加領域と重なるものがあると判定した場合（ステップＳ１４４；Ｙｅｓ）、領域データ追加部２３７は、重なった子ノードを選択候補ノードに加え（ステップＳ１４５）、ステップＳ１４６に移行する。また、選択ノードの子ノードに追加領域と重なるものがないと判定した場合（ステップＳ１４４；Ｎｏ）、領域データ追加部２３７は、ステップＳ１４６に移行する。
【０１４６】
続いて、領域データ追加部２３７は、全ての選択候補ノードの検索を終えたか否かを判定する（ステップＳ１４６）。全ての選択候補ノードの検索を終えていないと判定した場合（ステップＳ１４６；Ｎｏ）、領域データ追加部２３７は、選択候補ノード内の１つの未検索ノードを選択し（ステップＳ１４７）、ステップＳ１４２に移行する。
【０１４７】
一方、全ての選択候補ノードの検索を終えたと判定した場合（ステップＳ１４６；Ｙｅｓ）、領域データ追加部２３７は、追加領域を各選択済みの重複領域に重複領域として追加する（ステップＳ１４８）。一例として、領域データ追加部２３７は、追加領域を、領域データＤＢ２２２の重複領域として選択した各領域データに対応する重複領域２２２ｄに追加する。
【０１４８】
そして、領域データ追加部２３７は、重複領域が１つ以上見つかったか否かを判定する（ステップＳ１４８Ａ）。重複領域が１つも見つからなかった場合（ステップＳ１４８Ａ；Ｎｏ）、領域データ追加部２３７は、そのまま領域データ追加処理を終了する。一方、重複領域が１つでも見つかった場合（ステップＳ１４８Ａ；Ｙｅｓ）、領域データ追加部２３７は、追加領域の領域データを重複領域キャッシュデータＤＢ２２３に追加する（ステップＳ１４９）。そして、領域データ追加部２３７は、追加領域に重複する重複領域の領域データを依頼元の検索サーバ２へ返答する（ステップＳ１５０）。そして、領域データ追加部２３７は、追加の領域データを重複領域へ設定するように依頼された検索サーバ２による領域データ追加処理を終了する。
【０１４９】
［検索処理の具体例］
次に、検索処理の具体例を、図２４Ａおよび図２４Ｂを参照して説明する。図２４Ａおよび図２４Ｂは、実施例に係る検索処理の具体例を示す図である。なお、図２４Ａ、図２４Ｂでは、検索サーバＡ、ＢのそれぞれのＲツリーが表わされている。検索サーバＡは、領域ＩＤが１、２、３、４、５である領域を担当している。検索サーバＢは、領域ＩＤが６、７、８、９である領域を担当している。
【０１５０】
図２４Ａに示すように、領域検索要求を送信する端末装置が、領域ＩＤが８である前回領域から所定の領域に移動したとする。すなわち、領域検索要求を送信する端末装置の現在位置は、検索されることになる領域ＩＤが４である領域内であるとする。すると、振分サーバ１は、領域検索要求の現在位置を担当範囲に持つノードを検索し、ノードが担当する検索サーバ２を振分対象とする。ここでは、振分サーバ１は、現在位置を担当範囲（矩形領域）に含むノードｂを検索し、ノードｂが担当する検索サーバＡを振分対象とする。
【０１５１】
検索サーバＡは、自サーバが担当する担当領域に、前回領域を含んでいるか否かを判定する。ここでは、検索サーバＡは、Ｒツリーに、前回領域の領域ＩＤである８を含んでいないので、前回領域を含んでいないと判定する。すると、検索サーバＡは、ルートノードｂからトップダウンに、現在位置を含む領域を検索する。ここでは、検索サーバＡは、ルートノードｂからノードｄを辿って、現在位置を含む領域の領域ＩＤ４を検索する。
【０１５２】
これにより、端末装置が担当領域を跨ぐように移動する場合であっても、端末装置の現在位置に関係する検索サーバＡが領域を検索するので、領域を検索する際のサーバ間での通信コストを削減できる。つまり、仮に、前回領域を担当する検索サーバＢが先行して前回領域からボトムアップに検索し、その後、検索サーバＡがトップダウンに検索するとする。そうすると、検索サーバＢおよび振分サーバ１間、振分サーバ１および検索サーバＡ間での無駄なバックトラックが発生するので、サーバ間での通信コストがかかってしまう。したがって、検索システム９は、サーバ間での通信コストを削減でき、ひいては、領域検索の検索時間を高速化することができる。
【０１５３】
ここで、端末装置が担当領域を跨ぐように移動する場合であっても、担当領域が重複する領域に移動する場合がある。かかる場合について説明する。図２４Ｂでは、領域ＩＤ９の領域と領域ＩＤ５の領域とは、互いに重複しているとする。そして、領域ＩＤ９の領域は、検索サーバＡが担当する領域であり、領域ＩＤ５の領域は、検索サーバＢが担当する領域である。
【０１５４】
図２４Ｂに示すように、領域検索要求を送信する端末装置が、領域ＩＤが８である前回領域から検索サーバＡ、Ｂの重複領域に移動したとする。すなわち、領域検索要求を送信する端末装置の現在位置は、検索されることになる領域ＩＤが９、５である領域内であるとする。すると、振分サーバ１は、領域検索要求の現在位置を担当範囲に持つノードを検索し、ノードが担当する検索サーバ２を振分対象とする。ここでは、振分サーバ１は、現在位置を担当範囲（矩形領域）に含むノードｂ、ｅを検索し、ノードｂ、ｅが担当する検索サーバＡ、Ｂを振分対象とする。
【０１５５】
検索サーバＡは、自サーバが担当する担当領域に、前回領域を含んでいるか否かを判定する。ここでは、検索サーバＡは、Ｒツリーに、前回領域の領域ＩＤである８を含んでいないので、前回領域を含んでいないと判定する。すると、検索サーバＡは、ルートノードｂからトップダウンに、現在位置を含む領域を検索する。ここでは、検索サーバＡは、ルートノードｂからノードｄを辿って、現在位置を含む領域の領域ＩＤ５を検索する。さらに、検索サーバＡは、領域ＩＤ５の領域と重複する、領域ＩＤ９の領域も現在位置を含むので、領域ＩＤ５、９を検索結果とする領域検索応答を振分サーバ１に送信することが可能となる。
【０１５６】
一方、検索サーバＢは、自サーバが担当する担当領域に、前回領域を含んでいるか否かを判定する。ここでは、検索サーバＢは、Ｒツリーに、前回領域の領域ＩＤである８を含んでいるので、前回領域を含んでいると判定する。すると、検索サーバＢは、前回領域に対応する葉ノードｇからボトムアップに、現在位置を含む領域を検索する。ここでは、検索サーバＢは、前回領域（領域ＩＤ８の領域）に現在位置が含まれないので、前回領域の親ノードｇを辿って、現在位置を含む領域の領域ＩＤ９を検索する。さらに、検索サーバＡは、領域ＩＤ９の領域と重複する、領域ＩＤ５の領域も現在位置を含むので、領域ＩＤ９，５を検索結果とする領域検索応答を振分サーバ１に送信することが可能となる。
【０１５７】
これにより、端末装置が、担当領域が重複する領域に移動する場合であっても、端末装置の現在位置に関係する検索サーバＡ、Ｂが検索することとなるので、サーバ間での通信コストを削減できる。この結果、検索システム９は、領域検索の検索時間を高速化することができる。特に、前回領域を担当する検索サーバＢは、前回領域からボトムアップで検索するので、高速に検索することが可能となる。また、端末装置の現在位置に関係する検索サーバＡ、Ｂが並行して検索を行うので、振分サーバ１は、早い方の検索結果を端末装置に応答することができ、応答時間を高速化できる。
【０１５８】
［実施例の効果］
上記実施例によれば、検索システム９は、振分サーバ１および検索サーバ２を有する。振分サーバ１は、現在位置を担当領域に含む検索サーバ２へ現在位置に関わる領域検索要求を振り分ける。そして、検索サーバ２は、自サーバが担当する担当領域に前回の領域検索要求で検索された領域を示す前回領域を含む場合、Ｒツリーの前回領域に対応する葉ノードからボトムアップに検索する。検索サーバ２は、自サーバが担当する担当領域に前回領域を含まない場合、Ｒツリーのルートノードからトップダウンに検索する。そして、検索サーバ２は、検索された結果を示す検索結果を振分サーバ１に出力する。かかる構成によれば、振分サーバ１は、現在位置を用いて領域検索要求を振り分ける検索サーバ２を選択する。そして、選択された各検索サーバ２は、ボトムアップの検索、トップダウンの検索を使い分けながら、並行して検索処理を行うので、検索時間を高速化することができる。すなわち、各検索サーバ２が、順番に検索処理を行う場合と比較して、サーバ間での通信コストを削減でき、ひいては、検索時間を高速化することができる。
【０１５９】
また、上記実施例によれば、振分サーバ１は、検索結果を受け取ると、領域検索要求を振り分けた検索サーバ２の数が複数である場合、検索結果を出力した検索サーバ２と異なる検索サーバ２に対して領域検索の終了を通知する。かかる構成によれば、振分サーバ１は、検索結果を出力した検索サーバ２以外に領域検索の終了を通知することで、領域検索を中止させることができるので、検索サーバ２の負荷を削減できる。
【０１６０】
また、上記実施例によれば、振分サーバ１は、Ｒツリーのルートノードより下位の所定の深度にあるノードそれぞれをいずれかの検索サーバ２が担当するように割り当てる。かかる構成によれば、振分サーバ１は、検索サーバ２が複数存在する場合、各検索サーバ２に所定の深度にある異なるノードを担当させるので、各検索サーバ２の負荷を分散させることができる。
【０１６１】
また、上記実施例によれば、振分サーバ１は、所定の深度にあるノードの数が検索サーバ２の数より大きくなるような深度を選択し、選択した深度にあるノードそれぞれをいずれかの検索サーバ２が担当するように割り当てる。かかる構成によれば、振分サーバ１は、検索サーバ２が複数存在する場合、複数の検索サーバ２それぞれに、選択した深度にあるノードを担当させることができるので、複数の検索サーバ２を効率的に活用できる。
【０１６２】
また、上記実施例によれば、検索サーバ２は、現在位置を含む領域を検索できた場合、領域データＤＢ２２２を用いて、検索できた領域の重複領域の中から現在位置を含む領域を検索する。かかる構成によれば、検索サーバ２は、現在位置を含む領域を１個検索できれば、検索できた領域の重複領域の中から該位置を含む領域を検索すれば良いので、該位置を含む領域検索を効率的に行うことができる。この結果、検索サーバ２は、該位置を含む領域検索の検索時間を高速化できる。
【０１６３】
なお、前回領域ＤＢ１２３は、センサーＩＤ１２３ａと前回検索領域１２３ｂとを対応付けるものとして説明した。しかしながら、前回領域ＤＢ１２３は、センサーＩＤ１２３ａを、例えば、領域検索を要求する端末装置の装置ＩＤに代えても良いし、領域検索を要求する携帯電話の携帯電話番号に代えても良い。すなわち、センサーＩＤ１２３ａに相当するＩＤは、ユースケース毎に変えることができる。
【０１６４】
また、ボトムアップ検索部２３５およびトップダウン検索部２３６は、図１８Ａおよび図１８Ｂで示したように、検索処理のうち所定の処理の後に、振分サーバ１から終了指示があったか否かを確認するようにした。しかしながら、ボトムアップ検索部２３５およびトップダウン検索部２３６は、図１８Ａおよび図１８Ｂで示した例に限らず、終了指示確認をいれる箇所を増減させても良い。
【０１６５】
［プログラムなど］
なお、振分サーバ１は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記したインデックス割当部１３１、振分部１３２、領域データ追加部１３３などの各機能を搭載することによって実現することができる。検索サーバ２は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した判定部２３４、ボトムアップ検索部２３５、トップダウン検索部２３６などの各機能を搭載することによって実現することができる。
【０１６６】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、判定部２３４およびボトムアップ検索部２３５、判定部２３４およびトップダウン検索部２３６をそれぞれ１個の部として統合しても良い。一方、ボトムアップ検索部２３５を、担当領域から位置情報を含む領域を検索する第１の検索部と担当領域から検索できた領域と重複する領域から位置情報を含む領域を検索する第２の検索部とに分散しても良い。同様に、トップダウン検索部２３６を、担当領域から位置情報を含む領域を検索する第１の検索部と担当領域から検索できた領域と重複する領域から位置情報を含む領域を検索する第２の検索部とに分散しても良い。また、領域データＤＢ２２２や重複領域キャッシュデータＤＢ２２３などの記憶部を検索サーバ２の外部装置としてネットワーク経由で接続するようにしても良い。
【０１６７】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１１に示した検索サーバ２と同様の機能を実現する検索プログラムを実行するコンピュータの一例を説明する。図２５は、検索プログラムを実行するコンピュータの一例を示す図である。
【０１６８】
図２５に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３を有する。また、コンピュータ２００は、記憶媒体からプログラムなどを読取る読み取り装置２０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７を有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【０１６９】
ハードディスク装置２０７は、検索プログラム２０７ａなどのプログラムを記憶する。ＣＰＵ２０１は、例えばプログラム２０７ａを読み出して、ＲＡＭ２０６に展開する。検索プログラム２０７は、検索プロセス２０６ａとして機能する。例えば、検索プロセス２０６ａは、判定部２３４、ボトムアップ検索部２３５およびトップダウン検索部２３６に対応する。
【０１７０】
なお、検索プログラム２０７ａについては、必ずしも最初からハードディスク装置２０７に記憶させておかなくてもよい。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００がこれらから検索プログラム２０７ａを読み出して実行するようにしても良い。
【０１７１】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１７２】
（付記１）第１の情報処理装置および複数の第２の情報処理装置を有する検索システムであって、
前記第１の情報処理装置は、
所定の位置を担当領域に含む前記第２の情報処理装置へ前記位置に関わる検索要求を振り分ける振分部を有し、
前記第２の情報処理装置は、
自装置が担当する担当領域に前回の検索要求で検索された領域を示す前回領域を含む場合、領域の包含関係をインデックスで指し示すインデックス情報をノードの情報としてツリー構造で表したインデックスツリーの前記前回領域に対応する葉ノードからボトムアップに前記所定の位置を含む領域を検索し、前記担当領域に前記前回領域を含まない場合、前記インデックスツリーの前記担当領域に対応するルートノードからトップダウンに前記所定の位置を含む領域を検索する検索部と、
前記検索部によって検索された結果を示す検索結果を前記第１の情報処理装置に出力する出力部と、
を有することを特徴とする検索システム。
【０１７３】
（付記２）前記第１の情報処理装置は、
前記出力部によって出力された検索結果を最初に受け取ると、前記検索要求を振り分けた第２の情報処理装置の数が複数である場合、前記検索結果を出力した装置と異なる第２の情報処理装置に対して前記検索要求の終了を通知する通知部
を有することを特徴とする付記１に記載の検索システム。
【０１７４】
（付記３）前記第１の情報処理装置は、
前記インデックスツリーのルートノードより下位の所定の深度にあるノードそれぞれをいずれかの前記第２の情報処理装置が担当するように割り当てる割当部
を有することを特徴とする付記１または付記２に記載の検索システム。
【０１７５】
（付記４）前記割当部は、所定の深度にあるノードの数が前記第２の情報処理装置の数より大きくなるような前記深度を選択し、選択した深度にあるノードそれぞれをいずれかの前記第２の情報処理装置が担当するように割り当てる
ことを特徴とする付記３に記載の検索システム。
【０１７６】
（付記５）前記第２の情報処理装置は、
前記領域毎に各領域と重複する重複領域の情報を記憶する記憶部を有し、
前記検索部は、前記位置を含む領域を検索できた場合、前記記憶部に記憶された情報に基づいて、検索できた領域の重複領域の中から前記位置を含む領域を検索する
ことを特徴とする付記１から付記４のいずれか１つに記載の検索システム。
【０１７７】
（付記６）所定の位置に関わる検索要求を受け取ると、自装置が担当する担当領域に前回の検索要求で検索された領域を示す前回領域を含む場合、領域の包含関係をインデックスで指し示すインデックス情報をノードの情報としてツリー構造で表したインデックスツリーの前記前回領域に対応する葉ノードからボトムアップに前記所定の位置を含む領域を検索し、前記担当領域に前記前回領域を含まない場合、前記インデックスツリーの前記担当領域に対応するルートノードからトップダウンに前記所定の位置を含む領域を検索する検索部と、
前記検索部によって検索された結果を示す検索結果を前記検索要求の要求元に出力する出力部と、
を有することを特徴とする情報処理装置。
【０１７８】
（付記７）第１の情報処理装置および複数の第２の情報処理装置を有する検索システムが実行する検索方法であって、
前記第１の情報処理装置は、
所定の位置を担当領域に含む前記第２の情報処理装置へ前記位置に関わる検索要求を振り分け、
該振り分けられた前記第２の情報処理装置は、
自装置が担当する担当領域に前回の検索要求で検索された領域を示す前回領域を含む場合、領域の包含関係をインデックスで指し示すインデックス情報をノードの情報としてツリー構造で表したインデックスツリーの前記前回領域に対応する葉ノードからボトムアップに前記所定の位置を含む領域を検索し、前記担当領域に前記前回領域を含まない場合、前記インデックスツリーの前記担当領域に対応するルートノードからトップダウンに前記所定の位置を含む領域を検索し、
該検索する処理によって検索された結果を示す検索結果を前記第１の情報処理装置に出力する
各処理を実行することを特徴とする検索方法。
【符号の説明】
【０１７９】
１  振分サーバ
２  検索サーバ
３  ネットワーク
１１，２１  通信インタフェース
１２，２２  記憶部
１３，２３  制御部
１２１，２２１  領域インデックスＤＢ
１２２，２２２  領域データＤＢ
１２３  前回領域ＤＢ
１３１  インデックス割当部
１３２  振分部
１３３，２３７  領域データ追加部
２２３  重複領域キャッシュデータＤＢ
２２４  検索状態管理ＤＢ
２３１  リクエスト受付部
２３２  レスポンス転送部
２３３  終了指示受付部
２３４  判定部
２３５  ボトムアップ検索部
２３６  トップダウン検索部
【図１】
2014215839.tif 000003
【図２】
2014215839.tif 000004
【図３】
2014215839.tif 000005
【図４】
2014215839.tif 000006
【図５】
2014215839.tif 000007
【図６】
2014215839.tif 000008
【図７】
2014215839.tif 000009
【図８】
2014215839.tif 000010
【図９】
2014215839.tif 000011
【図１０】
2014215839.tif 000012
【図１１】
2014215839.tif 000013
【図１２】
2014215839.tif 000014
【図１３】
2014215839.tif 000015
【図１４】
2014215839.tif 000016
【図１５】
2014215839.tif 000017
【図１６】
2014215839.tif 000018
【図１７Ａ】
2014215839.tif 000019
【図１７Ｂ】
2014215839.tif 000020
【図１８Ａ】
2014215839.tif 000021
【図１８Ｂ】
2014215839.tif 000022
【図１８Ｃ】
2014215839.tif 000023
【図１９】
2014215839.tif 000024
【図２０】
2014215839.tif 000025
【図２１】
2014215839.tif 000026
【図２２】
2014215839.tif 000027
【図２３】
2014215839.tif 000028
【図２４Ａ】
2014215839.tif 000029
【図２４Ｂ】
2014215839.tif 000030
【図２５】
2014215839.tif 000031