(57)【要約】      （修正有）【課題】領域検索において属性条件に一致する領域を高速に検索できる装置等を提供する。【解決手段】領域検索装置１は、複数の領域をツリー構造で管理する領域インデックスの各ノードに下位の領域／ノードの属性条件の重複条件を属性条件として設定し、領域検索時の属性の判定条件に、下位の領域／ノードの属性条件から重複条件を除いた条件を設定する属性条件設定部１４、位置情報と属性情報を含む領域の問合せ要求を受け付ける検索受付部１１、属性情報が領域インデックスのノードの属性条件に一致するノードについて位置情報を含む領域を検索するツリー検索部１３、検索した領域の領域データを出力する該当領域返答部１２を備える。【選択図】図６
2014142803.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
複数の領域をツリー構造で管理する領域インデックスの該ツリー構造の各ノードに対して、下位の領域またはノードに設定された属性条件の重複条件を属性条件として設定し、領域検索時の判定条件を該下位の領域またはノードに設定された属性条件から前記重複条件を除いた条件として設定し、
位置情報と属性情報とを含む領域の問い合せ要求を受け付け、
前記属性条件を設定した領域インデックスを用いた領域検索の際に、前記属性情報が前記判定条件に一致するノードであるかを判定し、前記属性情報が前記判定条件に一致するノードについて前記位置情報を含む領域を検索し、
前記検索した領域の情報を出力する、処理を実行する
ことを特徴とする領域検索方法。
【請求項２】
前記コンピュータが、
前記領域インデックスのツリー構造にノード分割または領域追加を行う際に、前記領域検索時の属性の判定において検索対象となる領域数が少なくなる度合いを示す絞り込み効果を算出し、
前記ノード分割または領域追加のそれぞれの場合について絞り込み効果を重み付けた評価を行って、評価が最良の場合のノード分割または領域追加を行って前記領域インデックスのツリー構造を構築する
ことを特徴とする請求項１に記載の領域検索方法。
【請求項３】
コンピュータに、
属性条件が設定された複数の領域をツリー構造で管理する領域インデックスの該ツリー構造の各ノードに対して、下位の領域またはノードに設定された属性条件の重複条件を属性条件として設定し、領域検索時の判定条件を該下位の領域またはノードに設定された属性条件から前記重複条件を除いた条件として設定し、
位置情報と属性情報とを含む領域の問い合せ要求を受け付け、
前記属性条件を設定した領域インデックスを用いた領域検索の際に、前記属性情報が前記判定条件に一致するノードであるかを判定し、前記属性情報が前記判定条件に一致するノードについて前記位置情報を含む領域を検索し、
前記検索した領域の情報を出力する、処理を実行させる
ことを特徴とする領域検索方法。
【請求項４】
複数の領域をツリー構造で管理する領域インデックスの該ツリー構造の各ノードに対して、下位の領域またはノードに設定された属性条件の重複条件を属性条件として設定し、領域検索時の判定条件を該下位の領域またはノードに設定された属性条件から前記重複条件を除いた条件として設定する属性条件設定部と、
前記属性条件を設定した前記領域インデックスを記憶する領域インデックス記憶部と、
位置情報と属性情報とを含む領域の問い合せ要求を受け付ける検索受付部と、
前記属性条件を設定した領域インデックスを用いた領域検索の際に、前記属性情報が前記判定条件に一致するノードであるかを判定し、前記属性情報が前記判定条件に一致するノードについて前記位置情報を含む領域を検索するツリー検索部と、
前記検索した領域の情報を出力する該当領域返答部とを備える
ことを特徴とする領域検索装置。
【請求項５】
前記領域インデックスのツリー構造にノード分割または領域追加を行う際に、前記領域検索時の属性の判定において検索対象となる領域数が少なくなる度合いを示す絞り込み効果を算出する絞り込み効果算出部と、
前記ノード分割または領域追加のそれぞれの場合について絞り込み効果を重み付けた評価を行って、評価が最良の場合のノード分割または領域追加を行って前記領域インデックスのツリー構造を構築する領域インデックス構築部とを備える
ことを特徴とする請求項４に記載の領域検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザの属性および位置情報に応じてサービスを提供するロケーションアウェアサービスに関するものであり、特に、属性条件を含む大量のサービス領域の中から、与えられた属性が条件に一致かつ位置情報を含む領域を高速に検出する技術に関する。
【背景技術】
【０００２】
ＧＰＳ搭載の携帯電話が普及するなど、端末から位置情報を通知できるようになり、端末保持者の位置を利用した様々なサービスが普及している。位置情報を利用したサービスの例としては、ある店舗の周辺（領域）に端末保持者が移動したときに、その人に対して店舗の情報を通知するサービスなどがある。さらに、人の性別や年齢などの属性情報によってサービスの提供対象を絞り込むことで、端末保持者にとって、より有益なサービスを提供することが可能となる。
【０００３】
今後、位置通知が可能な端末やその位置情報を利用するサービスは、ますます普及すると考えられ、端末やサービスの増加に従い位置や属性条件を判定する処理量も増加する。
【０００４】
そのため、これらの端末やサービスが大量に存在する状況において、通知される位置情報がどの領域に含まれるか、端末保持者の属性情報が領域に設定された属性条件に一致するか、を高速に判定することが求められる。
【０００５】
従来、空間内に存在する大量のデータから条件に合致するものを高速に検索するためには、検索条件に合わせたインデックスを作成し、全てのデータを確認せずに必要な情報を取得できるようにするデータ管理方式が知られている。
【０００６】
インデックスを用いたデータ管理方式には、一次元のデータを検索する場合に用いられるＢ−Ｔｒｅｅと呼ばれるツリー構造を利用した方式、多次元データを検索する場合に用いられるＲ−Ｔｒｅｅと呼ばれるツリー構造を利用した方式などがある。
【０００７】
Ｒ−Ｔｒｅｅを利用した方式では、相互に重なり合う矩形領域を持つノードで木構造を作成し、各ノードは子ノードの最小外接矩形、すなわち、子ノードの領域をすべて含む最小の矩形領域とする。範囲検索時には、検索範囲が重なる子ノードに絞って検索を行うことによって検索を高速化する。ここで、矩形領域とは、多次元に対応する超矩形を示し、２次元の場合は長方形、３次元の場合は直方体となる。４次元以上の場合も、次元数に合わせて拡張した領域を意味する。
【０００８】
図１４は、従来のＲ−Ｔｒｅｅを利用したデータ管理方式を説明するための図である。
【０００９】
図１４（Ａ）は、Ｒ−Ｔｒｅｅによって管理するデータの例を示す。各データは、少なくとも、対応する領域を示す領域情報および領域を識別する領域ＩＤが設定される。
【００１０】
図１４（Ｂ）は、管理するデータに対応する矩形領域を示すマップ例である。円形で示す領域ｒ１〜ｒ９は、データに対応する領域を示し、点線の矩形で示す領域は、Ｒ−Ｔｒｅｅのツリー構造の各ノードの領域を示している。
【００１１】
図１４（Ｃ）は、Ｒ−Ｔｒｅｅによるインデックス情報の例を示す。
【００１２】
インデックス情報は、各矩形領域をノードとするツリー構造を有するＲ−Ｔｒｅｅである。インデックス情報のツリー構造のルートノードである矩形領域Ｒ１（以下、ルートノードＲ１）は、ルートノードＲ１の子ノードに相当する中間ノードである矩形領域Ｒ２、Ｒ３の最小外接矩形であり、中間ノードである矩形領域Ｒ２（以下、中間ノードＲ２）は、中間ノードＲ２の子ノードに相当する葉ノードである矩形領域Ｒ４、Ｒ５（以下、葉ノードＲ４、Ｒ５）の最小外接矩形である。また、葉ノードである矩形領域Ｒ４は、内部に持つ領域（オブジェクト）の座標データの最小外接矩形である。
【００１３】
Ｒ−Ｔｒｅｅのインデックス情報を用いて範囲検索をする場合に、ルートノードの矩形領域Ｒ１の２つの子ノードから検索範囲が重なるノードを選択する。重なる部分を持つノードにおいて、再帰的に検索範囲が重なる子ノードを選択し、最終的に葉ノードの中から検索範囲内にある領域の座標データを選択する。検索範囲と重なる全ての葉ノードから、座標データを選択し終えたら、選択した座標データを検索結果として検索を終了する。
【００１４】
上記のような検索を行う場合に、検索に必要な計算量は、検索範囲の重なる非葉ノードの子ノード数の総和に等しい回数の範囲の重なり判定と、同条件の葉ノードの座標データの総和に等しい回数の検索範囲内外判定とが必要となる。
【００１５】
Ｒ−Ｔｒｅｅは、各ノードの持つ子ノード数の上限と下限を所定の値に定め、座標データの追加や削除の際にノードの分割や統合を行うことで全体の木の深さや幅を調節し、検索処理量の最悪値を抑制している。ルートノードだけは、追加または削除を行う際に子ノードの大規模なノード移動を不要にするために、上記所定の下限に関わらず子ノードの下限を２とする。
【００１６】
さらに、ノードの分割を行う際に、上限を超えたノードを二分割して扱うためにデータ追加とノード分割との処理例を説明する。
【００１７】
インデックス情報へのデータ追加では、検索の際と同様に、ルートノードの矩形領域Ｒ１を選択することから始まり、選択するノードが葉ノードになるまで、追加データの座標を含む子ノードを辿る。選択しているノードの複数の子ノードの矩形領域が追加する座標を含む場合に、子ノードの持つ矩形領域が最小のノードを選択する。また、選択しているノードが追加する座標を含む子ノードを持たない場合に、子ノードの１つを選択し、追加する座標を含むように矩形領域を拡大して選択する。この場合に、拡大領域の大きさが最小となる子ノードを選択する。
【００１８】
このようにして、１つの葉ノードを選択した後は、葉ノードに追加するデータ（座標データ）を加える。データの追加によって葉ノードの持つデータ数が上限値を超える場合には、葉ノードを２つに分割する。
【００１９】
ノード分割の方法は、２つの葉ノードの持つ矩形領域の大きさの和が最小になるように行う。例えば、ノード内の原点から最も近いデータと原点から最も遠いデータとをそれぞれ２つの領域に分け、他のデータは２つの領域の内、データ追加による拡大領域が小さくなる方に追加する。追加するデータが双方の領域に含まれる場合には、データ数が少ない領域に加える。
【００２０】
二分割したノードは、親ノードに追加する。分割したノードの追加によって親ノードが持つ子ノード数が上限値を超える場合には、再帰的に領域の和が最小になるように分割していく。ルートノードが持つ子ノード数が上限値を超える時は、ルートノードの上位に新規のルートノードを作成し、二分割した元のルートノードを新規に作成したルートノードの子ノードとする。
【００２１】
ところで、サービス提供条件に領域と属性情報とを用いた従来手法がいくつか知られている。
【００２２】
一つの従来手法として、ユーザの位置情報と属性情報に応じてサービスを提供する際に、サービス利用者の位置情報による領域検索を行い、その検索結果の中からサービス利用者に関する情報を考慮して検索する装置が知られている。
【００２３】
また、別の従来手法として、ユーザの位置情報、所在情報、プロファイル情報の組合せをもとにメッセージ配信を制御する手法が知られている。
【００２４】
また、別の従来手法として、ユーザの位置情報、速度情報、ユーザの属性情報に応じてサービスを提供するシステムが知られている。
【先行技術文献】
【特許文献】
【００２５】
【特許文献１】国際公開ＷＯ２００６／０５９６２９号公報
【特許文献２】特表２００９−５３８０９０号公報
【特許文献３】特開２００６−１３３９０３号公報
【発明の概要】
【発明が解決しようとする課題】
【００２６】
上述するように、位置情報を用いたサービス提供が普及しているが、位置情報を検出する領域数やユーザ数が増加するに従いシステムの処理量が増加するため、処理の高速化が求められている。既存のＲ−Ｔｒｅｅを用いる検索によって、与えられた位置情報を含む領域を高速に検出することが可能であるが、位置情報だけでなくユーザの属性情報（例えば、性別、年齢等）に応じて異なるサービス提供が必要となる場合もある。
【００２７】
しかし、既存のＲ−Ｔｒｅｅによる検索では、属性情報に関する条件が指定された領域情報について考慮されていない。そのため、属性条件を含む領域を検索する場合に、従来では、まずインデックスのデータ構造を用いて検索対象の位置情報を含む領域を検索し、さらに、ユーザの属性情報が検索で得られた領域に指定された属性条件に一致するかの判定を行っている。そのため、位置情報で領域を検索した後に属性条件が一致しないと、先に行った領域検索処理に無駄が生じてしまうことになる。また、位置情報で検索した領域が重複している場合には、属性条件が一致しない領域も検索結果に含めてしまうことになる。
【００２８】
したがって、既存のＲ−Ｔｒｅｅによる領域の検出処理と属性条件の判定処理とを順に実行していると、処理に無駄が発生してしまい、サービス提供が遅延してしまう。
【００２９】
本発明の目的は、ユーザの属性や位置情報に応じたサービス提供において、属性条件と一致かつ位置情報を含む領域の検出を高速化できる処理技術を提供することである。
【課題を解決するための手段】
【００３０】
本発明において開示される領域検索方法は、コンピュータが、１）複数の領域をツリー構造で管理する領域インデックスの該ツリー構造の各ノードに対して、下位の領域またはノードに設定された属性条件の重複条件を属性条件として設定し、領域検索時の判定条件を該下位の領域またはノードに設定された属性条件から前記重複条件を除いた条件として設定し、２）位置情報と属性情報とを含む領域の問い合せ要求を受け付け、３）前記属性条件を設定した領域インデックスを用いた領域検索の際に、前記属性情報が前記判定条件に一致するノードであるかを判定し、前記属性情報が前記判定条件に一致するノードについて前記位置情報を含む領域を検索し、４）前記検索した領域の情報を出力する、処理を実行するものである。
【発明の効果】
【００３１】
開示する領域検索方法によれば、コンピュータが領域インデックスのツリー構造（Ｒ−Ｔｒｅｅ）のノードを辿る際に、領域検索処理をする前に属性条件判定処理による絞り込みが可能となり、無駄な領域の抽出を回避できるため、より高速に領域を検索することができる。
【００３２】
さらに、開示する領域検索方法によれば、属性条件が一致する領域を優先して抽出できるため、より高速に検索結果を得ることができる。
【図面の簡単な説明】
【００３３】
【図１】本発明の一態様として開示する領域検索装置のハードウェア構成例を示す図である。
【図２】一実施態様における領域検出リクエストのデータ構成例を示す図である。
【図３】一実施態様における応答メッセージのデータ構成例を示す図である。
【図４】一実施態様における領域インデックスのデータ構成例を示す図である。
【図５】領域検索装置の第１の実施例における機能ブロックの構成例を示す図である。
【図６】第１の実施例における領域データＤＢの構成例を示す図である。
【図７】第１の実施例におけるツリー検索処理の処理フロー例を示す図である。
【図８】第１の実施例における領域インデックスへの属性条件の設定処理の処理フロー例を示す図である。
【図９】領域検索装置の第２の実施例における機能ブロックの構成例を示す図である。
【図１０】第２の実施例におけるノード分割時の絞り込み効果の計算例を説明するための図である。
【図１１】第２の実施例における領域データ追加時の絞り込み効果の計算例を説明するための図である。
【図１２】第２の実施例における領域インデックスの構築処理の処理フロー例を示す図である。
【図１３】第２の実施例における領域インデックスの構築処理の処理フロー例を示す図である。
【図１４】従来のＲ−Ｔｒｅｅを利用したデータ管理方式を説明するための図である。
【発明を実施するための形態】
【００３４】
以下、本発明の一態様として開示する領域検索方法を実行する領域検索装置について図を用いて説明する。
【００３５】
図１は、開示する領域検索装置１のハードウェア構成例を示す図である。
【００３６】
領域検索装置１は、ＣＰＵ１０１、短期記憶部（ＤＲＡＭ）１０２、長期記憶部（ＨＤＤ）１０３、ネットワークインタフェース１０４、入力装置（キーボード、マウス等）１０５、出力装置（ディスプレイ、プリンタ等）１０６が内部ネットワーク等で接続されたコンピュータとして実施することができる。
【００３７】
領域検索装置１は、インデックス情報によって、与えられた属性条件と位置を含む領域を検索する処理を実行するための実行プログラムおよび処理に必要な情報をファイルとして長期記憶部１０３に記憶し、入力装置１０５から実行プログラムを起動し、起動された実行プログラムが、短期記憶部１０２にロードされ、ネットワークインタフェース１０４で受信した領域問合せ装置（ユーザの端末装置）２からのリクエストをもとに処理を実行する。領域検索装置１は、必要に応じて情報を長期記憶部１０３から短期記憶部１０２に読み出しながら処理を進め、処理結果である検索した領域データをネットワークインタフェース１０４から領域問合せ装置２へ送信する。なお、領域検索装置１は、必要な情報を出力装置１０６へ出力することもできる。
【００３８】
領域検索装置１は、ネットワーク経由で、ユーザが操作する領域問合せ装置（以下、単に「端末」と呼ぶ）２からの領域検出リクエスト３を受信し、Ｒ−Ｔｒｅｅのツリー構造を持つ領域インデックス４をもとに、与えられた属性と属性条件が一致かつ位置を含む領域を検索する。そして、領域検索装置１は、検索した領域に関する領域データ６を含む応答メッセージ７を返信する。
【００３９】
図２は、領域検索装置１が受け付ける領域検出リクエスト３のデータ構成例を示す図である。
【００４０】
領域検出リクエスト３は、端末２が送信する、問合せ元および位置情報を含む領域検出の問合せデータである。
【００４１】
図２（Ａ）に示すデータ構成例では、領域検出リクエスト３は、センサＩＤおよび位置を含む。「センサＩＤ」は、端末２に備えられた位置計測用のセンサの識別情報である。「センサＩＤ」は、センサを持つ端末２の端末ＩＤ、利用するユーザのユーザＩＤやグループＩＤなど他の識別情報で代用することもある。「位置」は、センサが計測した位置情報であり、例えば緯度・経度情報で表現される。
【００４２】
図２（Ｂ）に示すデータ構成例では、領域検出リクエスト３は、センサＩＤ、位置の他、さらに属性を含む。「属性」は、問合せをしたユーザの属性情報であり、例えば、性別、年齢などの情報である。
【００４３】
領域検索装置１は、図２（Ａ）に示す領域検出リクエスト３を受け付ける場合、領域検出リクエスト３に含まれるセンサＩＤ（または、ユーザＩＤ、グループＩＤ）をもとに、自装置または他のサーバから該当するユーザの属性情報を取得する。この場合には、領域検索装置１は、ユーザ毎の属性情報を管理する。なお、ユーザの属性情報は他のサーバに記憶されていてもよい。
【００４４】
または、領域検索装置１は、図２（Ｂ）に示す領域検出リクエスト３を受け付ける場合、領域検出リクエスト３に含まれる「属性」の情報を抽出してユーザの属性情報とすることができる。この場合には、領域検索装置１は、ユーザの属性情報を保持する必要がない。
【００４５】
図３は、領域検索装置１が出力する応答メッセージ（領域検出応答）７のデータ構成例を示す図である。
【００４６】
応答メッセージ７は、領域検索装置１が端末２へ返信する、問合せの位置情報、およびユーザの属性情報と属性条件が一致する領域の領域情報を含む応答データである。
【００４７】
図３に示す応答メッセージ７は、１つまたは複数の領域情報を持つリストを含む。領域情報は、領域検索装置１が管理する領域データ６から抽出された情報として、少なくとも領域の識別情報を含み、領域の領域名、領域の位置・大きさ・形状などの情報を含んでもよい。ここでは、領域を識別する「ＩＤ」と「領域名」のリストを含んでいる。
【００４８】
図４は、領域データ６のデータ構成例を示す図である。
【００４９】
領域データ６は、データ毎に、ＩＤ、データ名、領域情報、属性条件が記録されたデータである。「ＩＤ」は領域データの識別情報、「データ名」は領域データの名称、「領域情報」は領域データに対応する領域の形状、位置や範囲を示す情報、「属性条件」は領域検索における属性の判定条件である。
【００５０】
図５は、領域検索装置１が使用する領域インデックス４のデータ構成例を示す図である。
【００５１】
領域インデックス４は、葉ノード、中間ノード、ルートノード各々に属性条件を持つＲ−Ｔｒｅｅのツリー構造を持つインデックス情報である。
【００５２】
領域インデックス４では、Ｒ−Ｔｒｅｅの各ノードにおいて、それぞれの各子ノード（葉ノードの場合は、内部に持つ領域データ）に設定された属性条件の中で重複する属性条件（以下、「ａｎｄ条件」または「重複条件」と呼ぶ）が設定されている。
【００５３】
図５に示す領域インデックス４において、領域データｒ１、ｒ２、ｒ３、ｒ４、ｒ５、ｒ６、ｒ７、ｒ８、ｒ９に設定された属性条件が、それぞれ「性別＝男性」、「性別＝男性かつ年齢＝２０代」、「性別＝男性」、「性別＝男性かつ年齢＝３０代」、「性別＝男性かつ年齢＝３０代」、「性別＝女性」、「性別＝女性」、「性別＝女性かつ年齢＝３０代」、「年齢＝３０代」であるとする。
【００５４】
葉ノードＲ１００では、内部に持つ領域データｒ１〜ｒ３の属性条件のａｎｄ条件「性別＝男性」が、ノードＲ１０１では、内部に持つ領域データｒ４、ｒ５の属性条件のａｎｄ条件「性別＝男性かつ年齢＝３０代」がそれぞれ属性条件として設定される。葉ノードの親ノードに該当する中間ノードＲ１０では、子ノードＲ１００、Ｒ１０１に設定された属性条件のａｎｄ条件「性別＝男性」が属性条件として設定される。
【００５５】
同様に、葉ノードＲ１１０では、内部に持つ領域データｒ６、ｒ７の属性条件のａｎｄ条件「性別＝女性」が、ノードＲ１１１には、内部に持つ領域データｒ８、ｒ９の属性条件のａｎｄ条件「年齢＝３０代」がそれぞれ属性条件として設定される。中間ノードＲ１１では、子ノードＲ１１０、Ｒ１１１に設定された属性条件のａｎｄ条件がないので、属性条件が設定されない。
【００５６】
さらに、領域インデックス４では、親ノードの属性条件が子ノードの属性条件のａｎｄ条件である場合に、子ノードの属性判定では、元の属性条件からａｎｄ条件を除いた条件を判定条件として用いるように設定される。これにより、親子関係のノードで同じ属性条件を判定することを回避している。
【００５７】
領域検索装置１は、領域インデックス４のＲ−Ｔｒｅｅでの領域検索時に、ノード毎の領域判定前に各ノードに設定された属性条件の判定を行い、属性条件が一致する場合にのみ領域判定を行う。
【００５８】
例えば、領域検出リクエスト３から求めたユーザの属性情報が「性別＝女性」である場合に、領域検索装置１は、図５に示す領域インデックス４の領域検索において、Ｒ−ＴｒｅｅのルートノードＲ１から２つの子ノードを探索する処理で、最初にノードＲ１０、Ｒ１１に設定された属性条件を判定し、属性条件を満たさないノードＲ１０以下の子ノードの探索を行わない。
【００５９】
以下、領域検索装置１のより詳細な実施例を説明する。
【００６０】
〔第１の実施例〕
図６は、領域検索装置１の第１の実施例における機能ブロックの構成例を示す図である。
【００６１】
領域検索装置１は、上記の領域検索を実現するための機能として、検索受付部１１、該当領域返答部１２、ツリー検索部１３、属性条件設定部１４、インデックス構築部１５、通信インタフェース部１６を備える。さらに、領域検索装置１は、データ保管場所として、領域データ記憶部２１および領域インデックス記憶部２２を持つ。
【００６２】
検索受付部１１は、通信インタフェース部１６を介して、端末２から領域検出リクエスト３を受信する。
【００６３】
該当領域返答部１２は、通信インタフェース部１６を介して、受信した領域検出リクエスト３に対する応答メッセージ７を端末２へ送信する。
【００６４】
ツリー検索部１３は、領域インデックス記憶部２２が記憶する領域インデックス４のＲ−Ｔｒｅｅに対して属性条件判定と領域検索とを行い、領域検出リクエスト３で与えられたユーザの属性情報および位置情報を満たす領域の領域データを取得する。
【００６５】
属性条件設定部１４は、領域データ記憶部（領域データＤＢ）２１に記憶された領域データの属性条件をもとに領域インデックス４のＲ−Ｔｒｅｅの各ノードに属性条件を設定する。
【００６６】
領域インデックス構築部１５は、領域データＤＢ２１をもとに領域インデックス４のＲ−Ｔｒｅｅを構築する。
【００６７】
通信インタフェース部１６は、データ通信のインタフェースを行う。
【００６８】
領域データ記憶部２１は、各領域に関する情報である領域データ６を記憶する領域データＤＢである。領域インデックス記憶部２２は、領域インデックス４を記憶する。
【００６９】
領域データ記憶部２１および領域インデックス記憶部２２は、図１に示す長期記憶部１０３および短期記憶部１０２で実施される。領域データ６および領域インデックス４は、長期記憶部１０３に記録され、短期記憶部１０２に読み出して利用される。
【００７０】
次に、領域検索装置１の処理の流れを説明する。
【００７１】
領域検索装置１は、ユーザの属性情報をセンサＩＤに対応付けて管理しているとする。
【００７２】
まず、領域検索装置１の属性条件設定部１４は、領域データ記憶部２１の領域データ６をもとに、領域インデックス４のＲ−Ｔｒｅｅの各葉ノードが内包する領域データ６の属性条件のａｎｄ条件を抽出し、葉ノードの属性条件とする。さらに、属性条件設定部１４は、配下の子ノード設定した属性条件から抽出したａｎｄ条件をその親ノードの属性条件として設定する処理を、親ノードがルートノードとなるまで繰り返す。
【００７３】
さらに、属性条件設定部１４は、自ノードの属性条件のａｎｄ条件が親ノードに設定されているノードの検索時の属性の判定条件として、元の属性条件からａｎｄ条件を除いた条件を設定する。
【００７４】
領域検索装置１の検索受付部１１が、ネットワークに接続する通信インタフェース部１６を介して、端末２から領域検出リクエスト３を受信すると、領域検出リクエスト３のセンサＩＤからユーザの属性情報を特定し、さらに位置情報（緯度経度）を抽出する。
【００７５】
ツリー検索部１３が、得られた属性情報および位置情報をもとに、属性条件がノードに設定された領域インデックス４において属性情報が一致し位置情報を含む領域を検索する。なお、領域検索の詳細は後述する。
【００７６】
該当領域返答部１２が、検索された領域の領域データ６のリストを含む応答メッセージ７を生成し、通信インタフェース部１６を介して端末２へ返信する。
【００７７】
図７は、ツリー検索処理の処理フロー例を示す図である。
【００７８】
領域検索装置１のツリー検索部１３は、領域インデックス４のＲ−Ｔｒｅｅのルートノードを選択する（ステップＳ１１）。ツリー検索部１３は、ルートノードに属性条件が設定されている場合は、得られた属性情報が属性条件に一致するかを判定する（ステップＳ１２）。属性情報が属性条件に一致しない場合は（ステップＳ１２のＮ）、検索を終了し、属性情報が属性条件に一致する場合は（ステップＳ１２のＹ）、ステップＳ１３以降の処理を行う。
【００７９】
ツリー検索部１３は、選択したノードが葉ノードであるかを判定する（ステップＳ１３）。選択したノードが葉ノードでなければ（ステップＳ１３のＮ）、ツリー検索部１３は、さらに、選択したノードの子ノードに属性情報と属性条件が一致するノードがあるか判定する（ステップＳ１４）。
【００８０】
属性情報と属性条件が一致する子ノードがあれば（ステップＳ１４のＹ）、ツリー検索部１３は、属性条件が一致する子ノードの中で、得られた位置情報（検索座標）を含む領域を内部に含むノードがあるかを探索する（ステップＳ１５）。属性条件が一致する子ノードで検索座標を含むノードがあれば（ステップＳ１５のＹ）、その子ノードを選択候補ノードに加えて（ステップＳ１６）、ステップＳ１８の処理へ進む。
【００８１】
ステップＳ１３の処理で、選択したノードが葉ノードであれば（ステップＳ１３のＹ）、ツリー検索部１３は、選択したノード（葉ノード）が内部に持つ領域のうち、属性条件が一致し検索座標を含む領域データ６を検索結果に追加して（ステップＳ１７）、ステップＳ１８の処理へ進む。
【００８２】
全ての選択候補ノードの検索が終了したかを調べ（ステップＳ１８）、検索していない選択候補ノードがあれば（ステップＳ１８のＮ）、ツリー検索部１３は、選択候補ノード内の１つのノードを選択して（ステップＳ１９）、ステップＳ１３〜Ｓ１７の処理を繰り返し、未検索の選択候補ノードがなくなれば（ステップＳ１８のＹ）、処理を終了する。
【００８３】
図８は、領域インデックス４への属性条件の設定処理の処理フロー例を示す図である。
【００８４】
領域検索装置１の属性条件設定部１４は、領域インデックス４のＲ−Ｔｒｅｅから葉ノードを１つ選択し（ステップＳ２１）、選択した葉ノードが持つ各データ領域の属性条件の重複となっている条件（ａｎｄ条件）を抽出し、その葉ノードの属性条件とする（ステップＳ２２）。さらに、属性条件設定部１４は、データ領域の属性条件からステップＳ２１の処理で抽出したａｎｄ条件を除いた残りの条件を領域検索時の判定条件とする（ステップＳ２３）。
【００８５】
領域インデックス４のＲ−Ｔｒｅｅの全ての葉ノードが選択済みでなければ（ステップＳ２４のＮ）、ステップＳ２１の処理へ戻り、全ての葉ノードを選択していれば（ステップＳ２４のＹ）、属性条件設定部１４は、選択した全ての葉ノードについて親ノードとなるノードを全て抽出する（ステップＳ２５）。
【００８６】
属性条件設定部１４は、選択したノード（親ノード）の１つを選択し（ステップＳ２６）、選択したノードの子ノードの属性条件のａｎｄ条件を抽出し、親ノードの属性条件とする（ステップＳ２７）。属性条件設定部１４は、子ノードの属性条件から、ステップＳ２７の処理で親ノードの属性条件としたａｎｄ条件を除いた属性条件を、子ノードの領域検索時の属性条件とする（ステップＳ２８）。
【００８７】
抽出したノード（親ノード）の全てが選択済みでなければ（ステップＳ２９のＮ）、ステップＳ２６の処理へ戻り、全てのノードを選択していれば（ステップＳ２９のＹ）、選択した親ノードがルートノードであるかを判定する（ステップＳ２１０）。選択したノード（親ノード）がルートノードでなければ（ステップＳ２１０のＮ）、ステップＳ２５の処理へ戻り、選択したノードがルートノードであれば（ステップＳ２１０のＹ）、処理を終了する。
【００８８】
〔第２の実施例〕
第２の実施例では、領域検索装置１は、領域インデックス４のＲ−Ｔｒｅｅの構築を属性条件による絞り込み効果を考慮して行う。
【００８９】
第１の実施例において、領域インデックス４のＲ−Ｔｒｅｅに対して属性条件のａｎｄ条件を抽出する場合に、子ノードの属性条件が異なるためにａｎｄ条件を抽出できず、結局、領域データにおいて属性条件の判定を行う場合が生じる。例えば図５に示す領域インデックス４のＲ−Ｔｒｅｅの中間ノードＲ１１では、子ノードＲ１１０、Ｒ１１１の属性条件からａｎｄ条件をとることができず、ａｎｄ条件による属性条件の判定を行えない。
【００９０】
領域検索装置１は、領域インデックス４で可能な限り属性条件の判定を行って、属性条件による検索対象領域の絞り込みの効果を発揮できるようにするために、領域インデックス４のＲ−Ｔｒｅｅの構築時に、属性条件による絞り込み効果を重み付けしてツリー構造を生成できるようにして、領域の絞り込みと属性条件の絞り込みを最適化する。
【００９１】
図９は、領域検索装置１の第２の実施例における機能ブロックの構成例を示す図である。なお、図９に示すブロック構成例において、図６に示す処理部と同じものには同一番号を付与している。
【００９２】
図９に示すように、領域検索装置１の第２の実施例における機能ブロック構成は、第１の実施例の場合とほぼ同じであるが、以下の点が拡張されている。
【００９３】
・  領域検索装置１が、絞り込み効果算出部１７を備える。
【００９４】
絞り込み効果算出部１７は、領域インデックス４の構築処理において、ノード分割または領域データ追加の際に、検索対象となる領域の絞り込み効果を計算する。
【００９５】
・  領域検索装置１の領域インデックス構築部１５は、領域インデックス４のＲ−Ｔｒｅｅを構築する処理で、絞り込み効果算出部１７が計算した絞り込み効果を考慮してノード分割、領域データ追加を行う。
【００９６】
図１０および図１１は、絞り込み効果の計算例を説明するための図である。
【００９７】
領域検索装置１は、一般的なＲ−Ｔｒｅｅと同様に、Ｒ−Ｔｒｅｅの各ノードが持つ子ノード数に制約を設けている。制約は、例えば「子ノード数が２以上かつ３以下である」とする。
【００９８】
絞り込み効果算出部１７は、領域データ６が増加すると、分割するノードに設定される属性条件に基づく絞り込み効果を計算する。
【００９９】
領域インデックス構築部１５は、ツリー構造を再構築時に、ノードの矩形領域の評価（最小面積）において絞り込み効果を重み付けし、領域データ６を追加するノードの決定、上限数を超えたノードの分割を行う。
【０１００】
図１０は、ノード分割時の絞り込み効果の計算例を説明するための図である。
【０１０１】
図１０（Ａ）に示すように、１つのノードＲ１が４つの領域ｒ１、ｒ２、ｒ３、ｒ４を含む状態であり、領域ｒ１、ｒ３の属性条件が「性別＝男性」、領域ｒ２、ｒ４の属性条件が「年齢＝２０代」であるとする。
【０１０２】
したがって、制約により、ノードＲ１を、ノード数が３以下のノードとなるように二分割する必要がある。
【０１０３】
Ｒ−Ｔｒｅｅのノード分割は、分割後のノードの矩形領域の面積が最小となるように分割する。既知の処理で、最小面積となるノード分割では、図１０（Ｂ）に示すように、領域ｒ１、ｒ２を含むノードＲ１０、領域ｒ３、ｒ４を含むノードＲ１１とに二分割されることになる。
【０１０４】
絞り込み効果算出部１７は、ノードが内部に持つ領域データの属性条件の判定により、領域検索時に検索対象領域をどの程度少なくできるかを示す絞り込み効果を計算する。
【０１０５】
絞り込み効果算出部１７は、属性条件が同一の領域データ６の集合を求めて分割候補とする。例えば、図１０（Ｃ）に示すように、属性条件「性別＝男性」の領域ｒ１、ｒ３を含むノードＲ２０、属性条件「年齢＝２０代」の領域ｒ２、領域ｒ４を含むノードＲ２１の組を分割候補とする。
【０１０６】
さらに、絞り込み効果算出部１７は、分割候補の絞り込み効果を計算し、求めた分割候補について、例えば入力値を加算する評価関数ｆ（ｘ）で評価値Ｓｘ（分割後のノードの領域の面積の和）を算出する。その際に、絞り込み効果算出部１７は、属性条件による絞り込み効果を計算し、分割候補による分割後のノードに、１以下の値をとる属性条件による絞り込み効果αｘを重み付けする。
【０１０７】
例えば、図１０（Ｂ）に示すノードＲ１０、Ｒ１１の分割候補について、絞り込み効果算出部１７は、評価式ｆ（ＳＲ１０、ＳＲ１１）により、ＳＲ１０、ＳＲ１１を加算した評価値を計算する。
【０１０８】
さらに、図１０（Ｃ）に示すノードＲ２０、Ｒ２１の分割候補について、絞り込み効果算出部１７は、評価式ｆ（ＳＲ１０×α１、ＳＲ１１×α２）により、ＳＲ１０×α１、ＳＲ１１×α２を加算して評価値を計算する。
【０１０９】
絞り込み効果αｘの計算は、属性の取りうる数や条件数を用いる方法、実際に収集されるユーザデータから属性条件に用いられる属性情報の数を用いる方法などを採用してもよい。
【０１１０】
例えば、属性条件が「性別」の場合に、属性の取りうる数や条件数を用いる方法によれば、属性条件「性別」が“男性”と“女性”の２つの値をとる可能性があるため、属性条件による絞り込み効果は、“男性”および“女性”では１/２となる。したがって、上記の評価式では、α１＝０．５となる。
【０１１１】
また、ユーザデータから属性条件に用いられる属性情報の数を用いる方法の場合には、過去に収集した領域検出リクエストのうち、ユーザの性別が“男性”であるものが８０％、“女性”であるものが２０％であるとすると、属性条件による絞り込み効果は、“男性”が４／５および“女性”が１／５となり、上記の評価式では、α１＝０．８となる。
【０１１２】
領域インデックス構築部１５は、絞り込み効果算出部１７の算出した評価値をもとに、評価が良い分割候補を採用してノードを分割する。上記の例において図１０（Ｃ）の分割候補の評価値が良い場合（領域の面積が最小である場合）は、領域インデックス構築部１５は、図１０（Ｃ）のようにノードを分割する。
【０１１３】
図１１は、データ追加時の絞り込み効果の計算例を説明するための図である。
【０１１４】
図１１（Ａ）に示すように、図１０（Ａ）に示すノードＲ１に領域ｒ５が追加され、領域ｒ５の属性条件が「性別＝男性」であるとする。
【０１１５】
絞り込み効果算出部１７は、各葉ノードに追加する領域データ６（追加データ）を含めて領域を拡張した場合のノードを求めて拡張候補とする。例えば、図１１（Ａ）に示すように、属性条件「性別＝男性」の領域ｒ１、ｒ３を含むノードＲ２０、属性条件「年齢＝２０代」の領域ｒ２、領域ｒ４を含むノードＲ２１のそれぞれに、領域データ（領域ｒ５）を追加して領域を拡張した領域を持つノードを求めて拡張候補とする。
【０１１６】
図１１（Ｂ）は、領域ｒ１、ｒ３を含むノードＲ２０に領域ｒ５を追加して拡張したノードＲ２０’の拡張候補、図１１（Ｃ）は、領域ｒ２、領域ｒ４を含むノードＲ２１に領域ｒ５を追加して拡張したノードＲ２１’の拡張候補を示す。
【０１１７】
絞り込み効果算出部１７は、拡張候補の絞り込み効果αｘを計算し、求めた拡張分割候補について、拡張候補の絞り込み効果αｘで重み付けをした入力値を加算する評価関数ｆ（ｘ）で評価値Ｓｘを算出する。
【０１１８】
図１１（Ｂ）に示す拡張候補の場合は、評価式ｆ（ＳＲ２１×α２、ＳＲ２０’×α１）により、図１１（Ｃ）に示す拡張候補の場合は、評価式ｆ（ＳＲ２１’、ＳＲ２０×α１）により、評価値が求められる。
【０１１９】
領域インデックス構築部１５は、絞り込み効果算出部１７の算出した評価値をもとに、評価が良い拡張候補を採用して領域データを追加する。上記の例において図１１（Ｂ）の拡張候補の評価値が良い場合（領域の面積が最小である場合）は、領域インデックス構築部１５は、図１１（Ｂ）のように領域ｒ５をノードに追加する。
【０１２０】
図１２および図１３は、領域検索装置１の領域インデックスの構築処理の処理フロー例を示す図である。
【０１２１】
領域検索装置１は、領域データ記憶部（領域データＤＢ）２１に領域データが追加される場合に以下の処理を行う。
【０１２２】
領域インデックス構築部１５は、領域インデックス４のＲ−Ｔｒｅｅのルートノードを選択する（ステップＳ４１）。選択したノードが葉ノードでなければ（ステップＳ４２のＮ）、領域インデックス構築部１５は、選択したノードの子ノードに、追加する領域データ６の属性条件および領域を包含するものがあるかを調べる（ステップＳ４３）。
【０１２３】
さらに、追加する領域データ（追加データ）の属性条件および領域を包含する子ノードがあれば（ステップＳ４３のＹ）、領域インデックス構築部１５は、該当する子ノードのうち、ノードの矩形面積が最小のものを選択ノードとし（ステップＳ４４）、ステップＳ４２の処理へ戻る。子ノードに追加データの属性条件および領域を包含するものがなければ（ステップＳ４３のＮ）、絞り込み効果算出部１７が、子ノードに追加データを含めた場合（拡張候補）それぞれについて絞り込み効果で重み付けをした評価を行って、領域インデックス構築部１５は、評価が最良となる子ノードを選択ノードとし（ステップＳ４５）、ステップＳ４２の処理へ戻る。
【０１２４】
選択したノードが葉ノードであれば（ステップＳ４２のＹ）、領域インデックス構築部１５は、選択した葉ノードに領域データを追加する（ステップＳ４６）。そして、選択した葉ノードの持つ領域データ数が上限を超える場合は（ステップＳ４７のＹ）、絞り込み効果算出部１７が、領域データを分割したノードの組（分割候補）それぞれについて分割結果による絞り込み効果で重み付けをした評価を行って、領域インデックス構築部１５は、評価が最良となる分割候補に従って葉ノードの領域データを分割し、分割後の２つの葉ノードを親ノードに追加する（ステップＳ４８）。
【０１２５】
さらに、領域インデックス構築部１５は、分割したノードを追加する親ノードの持つ子ノード数が制約の上限を超えるかを調べる（ステップＳ４９）。親ノードの持つ子ノード数が上限を超える場合は（ステップＳ４９のＹ）、領域インデックス構築部１５は、追加する親ノードがルートノードであるかを調べる（ステップＳ４１０）。追加する親ノードがルートノードでなければ（ステップＳ４１０のＮ）、絞り込み効果算出部１７が、親ノードを分割した場合（分割候補）それぞれについて、絞り込み効果で重み付けをした評価を行って、領域インデックス構築部１５は、分割結果の絞り込み効果が最大となるように親ノードを分割し、その子ノードを分割した親ノードに振り分け、さらに、増加したノードを分割したノードの親ノードに追加して（ステップＳ４１１）、ステップＳ４９の処理へ戻る。
【０１２６】
追加する親ノードがルートノードであれば（ステップＳ４１０のＹ）、絞り込み効果算出部１７が、親ノードを分割した場合それぞれについて分割結果による絞り込み効果で重み付けをした評価を行って、領域インデックス構築部１５は、評価が最良となる分割候補に従って親ノードを分割し、配下の子ノードを分割した親ノードに振り分け、さらに、分割したノードの上に新しいルートノードを作成して（ステップＳ４１２）、処理を終了する。
【０１２７】
選択した葉ノードの持つ領域データ数が上限を超えない場合（ステップＳ４７のＮ）、または、親ノードの持つ子ノード数が上限を超えない場合は（ステップＳ４９のＮ）、処理を終了する。
【０１２８】
なお、図１２および図１３に示す処理が終了すると、属性条件設定部１４が、領域インデックス４のＲ−Ｔｒｅｅの各ノードに属性条件を設定する。
【０１２９】
以上説明したように、開示する領域検索装置１は、Ｒ−Ｔｒｅｅの各ノードに属性条件を設定した領域インデックス４を用いて領域検索を行う際に、ノード毎の領域の判定前に、その領域に設定された属性条件の判定を行い、属性条件が一致する場合にのみ領域の判定を行う。
【０１３０】
上記処理により、領域検索装置１は、領域インデックス４のＲ−Ｔｒｅｅのノードを辿る際に、属性条件による絞り込みが可能となり、無駄な領域の判定処理を回避することができ、処理の高速化が可能となる。
【０１３１】
さらに、領域検索装置１は、領域インデックス４のＲ−Ｔｒｅｅのノードの属性条件として、その子ノードや葉ノードが内部に持つ領域データに設定された属性条件のａｎｄ条件を抽出して親ノードに設定し、領域検索時には、ノードにａｎｄ条件の属性条件が設定されている場合には、その子ノードでは、元の属性条件からａｎｄ条件を除いた属性条件を設定する。
【０１３２】
上記処理により、領域検索装置１は、同じ属性条件の判定を回避することができ、処理のより高速化が可能となる。
【符号の説明】
【０１３３】
１  領域検索装置
１１  検索受付部
１２  該当領域返答部
１３  ツリー検索部
１４  属性条件設定部
１５  領域インデックス構築部
１６  通信インタフェース部
１７  絞り込み効果算出部
２１  領域データ記憶部
２２  領域インデックス記憶部
２  端末装置（領域問い合せ装置）
３  領域検出リクエスト
４  領域インデックス
６  領域データ
７  応答メッセージ
【図１】
2014142803.tif 000003
【図２】
2014142803.tif 000004
【図３】
2014142803.tif 000005
【図４】
2014142803.tif 000006
【図５】
2014142803.tif 000007
【図６】
2014142803.tif 000008
【図７】
2014142803.tif 000009
【図８】
2014142803.tif 000010
【図９】
2014142803.tif 000011
【図１０】
2014142803.tif 000012
【図１１】
2014142803.tif 000013
【図１２】
2014142803.tif 000014
【図１３】
2014142803.tif 000015
【図１４】
2014142803.tif 000016