(57)【要約】【課題】多次元データの検索において、検索を高速化する。【解決手段】検索装置１００は、リスト記憶部１２０と検索部１９０とを含む。リスト記憶部１２０は、所定数の属性の各々の属性値を所定の属性順で配置した属性列リスト１２１を記憶する。検索部１９０は、過去の検索属性列と新たな検索属性列との間の属性値の変化をもとに算出された、属性列リスト１２１における過去の検索属性列に対応する属性列の位置と新たな検索属性列に対応する属性列の位置との間の距離をもとに、新たな検索属性列に対応する属性列の位置を特定する。【選択図】      図１
2015130103.tif 000002
【特許請求の範囲】
【請求項１】
所定数の属性の各々の属性値を所定の属性順で配置した属性列のリストを記憶する属性列リスト記憶手段と、
過去の検索属性列と新たな検索属性列との間の属性値の変化をもとに算出された、前記リストにおける前記過去の検索属性列に対応する属性列の位置と前記新たな検索属性列に対応する属性列の位置との間の距離をもとに、前記新たな検索属性列に対応する属性列の位置を特定する検索手段と、
を備えた情報処理装置。
【請求項２】
前記検索手段は、前記過去の検索属性列に対応する属性列の位置に、前記算出された距離を加えることにより、前記新たな検索属性列に対応する属性列の位置を取得する、
請求項１に記載の情報処理装置。
【請求項３】
前記所定数の属性の各々において、とりうる属性値の各々にインデックスが付与され、
前記リストは、前記所定数の属性の各々のとりうる属性値の組み合わせに係る属性列をインデックスの順番に配置したリストであり、
前記検索手段は、前記所定数の属性の各々について算出した、前記過去の検索属性列と前記新たな検索属性列との間の当該属性に係る属性値のインデックスの変化量に、属性列における当該属性の次の属性から末尾の属性までの各々のとりうる属性値の数の積を乗じた値の総和により、前記距離を算出する、
請求項１または２に記載の情報処理装置。
【請求項４】
さらに、前記所定数の属性のいずれかのとりうる属性値に新たな値が追加された場合に、当該新たな値に新たなインデックスを付与し、前記所定数の属性の各々のとりうる属性値の新たな組み合わせに係る属性列を追加することにより、前記リストを更新する、リスト更新手段を含む、
請求項３に記載の情報処理装置。
【請求項５】
前記リスト更新手段は、前記リストが更新された場合に、前記過去の検索属性列の位置を更新する、
請求項４に記載の情報処理装置。
【請求項６】
前記所定数の属性のうちの少なくとも１つのとりうる属性値がワイルドカードを含み、
さらに、前記リストにおけるワイルドカードを含む属性列の位置と当該属性列に合致する属性列の位置との関係を示す、ワイルドカード参照情報を記憶するワイルドカード参照記憶手段を含み、
前記検索手段は、前記ワイルドカード参照情報をもとに、前記新たな検索属性列に対応する属性列の位置に対する、当該属性列が合致するワイルドカードを含む属性列の位置を特定する、
請求項１乃至５のいずれかに記載の情報処理装置。
【請求項７】
さらに、登録属性列に係る情報を、前記リストにおける、当該登録属性列に対応する位置に関連付ける登録手段を含み、
前記検索手段は、前記新たな検索属性列の位置に関連付けられた前記登録属性列に係る情報を出力する、
請求項１乃至６のいずれかに記載の情報処理装置。
【請求項８】
所定数の属性の各々の属性値を所定の属性順で配置した属性列のリストを記憶し、
過去の検索属性列と新たな検索属性列との間の属性値の変化をもとに算出された、前記リストにおける前記過去の検索属性列に対応する属性列の位置と前記新たな検索属性列に対応する属性列の位置との間の距離をもとに、前記新たな検索属性列に対応する属性列の位置を特定する、
検索方法。
【請求項９】
前記新たな検索属性列に対応する属性列の位置を特定する場合、前記過去の検索属性列に対応する属性列の位置に、前記算出された距離を加えることにより、前記新たな検索属性列に対応する属性列の位置を取得する、
請求項８に記載の検索方法。
【請求項１０】
コンピュータに、
所定数の属性の各々の属性値を所定の属性順で配置した属性列のリストを記憶し、
過去の検索属性列と新たな検索属性列との間の属性値の変化をもとに算出された、前記リストにおける前記過去の検索属性列に対応する属性列の位置と前記新たな検索属性列に対応する属性列の位置との間の距離をもとに、前記新たな検索属性列に対応する属性列の位置を特定する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、検索方法、及び、プログラムに関する。
【背景技術】
【０００２】
木構造を用いて属性列を検索するシステムの一例が、非特許文献１に記載されている。
【０００３】
非特許文献１に記載される多次元データ検索装置では、属性の集合である多次元データ（属性列）が用いられる。検索装置は、登録されている属性列群（登録属性列群）の中から、クエリとして入力された属性列（検索属性列）に合致する登録属性列を検索する。
【０００４】
検索装置は、登録属性列群をトライ木で管理する。トライ木では、各階層に属性列の属性が対応づけられ、当該階層に対応する属性の一致判定を行うためのノードが配置される。各ノードは、検索データと比較を行う属性値、及び当該属性値と一致した場合に、次に辿る下層のノードを示すリンクを持つ。さらに、トライ木は、最下層に登録属性列を格納する葉ノードを持つ。検索装置は、検索属性列が入力されると、根ノードから、各ノードの属性値と検索属性列の属性値が一致するかどうかの判定を、葉ノードにたどり着くまで繰り返す。
【０００５】
また、検索装置は、注目属性を用いて一致判定処理を省略（スキップ）する。検索装置は、検索を行うたびに、検索属性列と所定の注目属性に対応する階層で探索したノードとを記憶する。そして、検索装置は、新たな検索属性列が入力されると、過去の検索属性列と新たな検索属性列との間で、先頭からの各属性を比較する。ここで、注目属性より前の属性までの各属性値が同じであれば、新たな検索属性列の先頭から注目属性までを探索するノードは、過去の検索属性列と同一である。従って、この場合、検索装置は、注目属性に対応する階層のノードから新たな検索属性列の探索を開始する。
【０００６】
以上のように、非特許文献１に記載される検索装置では、注目属性までの一致判定処理をスキップすることにより、検索が高速化される。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】小林他、「多属性の照合を実現する拡張トライ木方式の提案と評価」、２０１２年電子情報通信学会通信ソサイエティ大会通信講演論文集２、２０１２年、ｐ．３６５
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、非特許文献１に記載の多次元データ検索装置では、過去の検索データと新たな検索データとの間で、注目属性より前の属性値が変化すると、注目属性までの一致判定処理をスキップできず、検索の高速化の効果が得られない。
【０００９】
本発明の目的は、上述の課題を解決し、多次元データの検索において、検索を高速化できる、検索装置、検索方法、及び、プログラムを提供することである。
【課題を解決するための手段】
【００１０】
本発明の情報処理装置は、所定数の属性の各々の属性値を所定の属性順で配置した属性列のリストを記憶する属性列リスト記憶手段と、過去の検索属性列と新たな検索属性列との間の属性値の変化をもとに算出された、前記リストにおける前記過去の検索属性列に対応する属性列の位置と前記新たな検索属性列に対応する属性列の位置との間の距離をもとに、前記新たな検索属性列に対応する属性列の位置を特定する検索手段と、を備える。
【００１１】
本発明の検索方法は、所定数の属性の各々の属性値を所定の属性順で配置した属性列のリストを記憶し、過去の検索属性列と新たな検索属性列との間の属性値の変化をもとに算出された、前記リストにおける前記過去の検索属性列に対応する属性列の位置と前記新たな検索属性列に対応する属性列の位置との間の距離をもとに、前記新たな検索属性列に対応する属性列の位置を特定する。
【００１２】
本発明のプログラムは、コンピュータに、所定数の属性の各々の属性値を所定の属性順で配置した属性列のリストを記憶し、過去の検索属性列と新たな検索属性列との間の属性値の変化をもとに算出された、前記リストにおける前記過去の検索属性列に対応する属性列の位置と前記新たな検索属性列に対応する属性列の位置との間の距離をもとに、前記新たな検索属性列に対応する属性列の位置を特定する、処理を実行させる。
【発明の効果】
【００１３】
本発明の効果は、多次元データの検索において、検索を高速化できることである。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【図２】本発明の第１の実施の形態における、検索システムの構成を示すブロック図である。
【図３】本発明の第１の実施の形態における、検索装置１００がコンピュータにより実現される場合の構成を示すブロック図である。
【図４】本発明の第１の実施の形態における、属性列の例を示す図である。
【図５】本発明の第１の実施の形態における、属性列の他の例を示す図である。
【図６】本発明の第１の実施の形態における、属性値情報１５１の例を示す図である。
【図７】本発明の第１の実施の形態における、属性列リスト１２１の例を示す図である。
【図８】本発明の第１の実施の形態における、影響値情報１４１の例を示す図である。
【図９】本発明の第１の実施の形態における、検索結果１８１の例を示す図である。
【図１０】本発明の第１の実施の形態における、差分属性列８００の例を示す図である。
【図１１】本発明の第１の実施の形態における、登録処理を示すフローチャートである。
【図１２】本発明の第１の実施の形態における、リスト更新処理を示すフローチャートである。
【図１３】本発明の第１の実施の形態における、登録処理の具体例を示す図である。
【図１４】本発明の第１の実施の形態における、検索処理を示すフローチャートである。
【図１５】本発明の第１の実施の形態における、検索処理の具体例を示す図である。
【図１６】本発明の第２の実施の形態における、登録処理の具体例を示す図である。
【図１７】本発明の第３の実施の形態における、検索システムの構成を示すブロック図である。
【図１８】本発明の第３の実施の形態における、ワイルドカード参照情報１３１の例を示す図である。
【図１９】本発明の第３の実施の形態における、登録処理の具体例を示す図である。
【図２０】本発明の第３の実施の形態における、検索処理の具体例を示す図である。
【発明を実施するための形態】
【００１５】
（第１の実施の形態）
本発明の第１の実施の形態について説明する。
【００１６】
はじめに、本発明の第１の実施の形態における属性列について説明する。
【００１７】
本発明の第１の実施の形態においては、検索システムは、登録されている属性列（登録属性列６００）の中から、入力された属性列（検索属性列７００、または、入力属性列）に合致する登録属性列６００を検索する。
【００１８】
図４、及び、図５は、本発明の第１の実施の形態における、属性列の例を示す図である。
【００１９】
属性列では、所定数の属性の属性値が、所定の属性順（属性インデックス）に従って配置される。属性値は、文字や数値でもよいし、文字や数値のペア、セット、マップでもよい。また、属性列が、当該属性列の識別子等、属性インデックスごとの属性値以外の情報を含んでもよい。
【００２０】
図４の属性列では、属性順を示す属性インデックス「１」、「２」、「３」に、文字「ａ」、「ａ」、「ｅ」が対応づけられている。図５の属性列では、属性インデックス「１」、「２」、「３」に、文字列のペア｛気分；良好｝、｛動作；歩行｝、｛位置；東京｝が対応づけられている。
【００２１】
次に、本発明の第１の実施の形態の構成について説明する。
【００２２】
図２は、本発明の第１の実施の形態における、検索システムの構成を示すブロック図である。
【００２３】
図２を参照すると、本発明の第１の実施の形態における検索システムは、検索装置１００、登録属性列入力装置３００、検索属性列入力装置４００、及び、検索結果出力装置５００を含む。検索装置１００は、本発明の情報処理装置の一実施形態である。
【００２４】
登録属性列入力装置３００は、登録属性列６００を、キーボード等の入力デバイスや、データファイルにより受け付け、検索装置１００に送信する。検索属性列入力装置４００は、検索属性列７００を、キーボード等の入力デバイスや、データファイルにより受け付け、前回の検索属性列７００と新たな検索属性列７００との差分である、差分属性列８００を検索装置１００に送信する。検索装置１００は、差分属性列８００を用いて、新たな検索属性列７００に合致する登録属性列６００を検索する。検索結果出力装置５００は、検索装置１００における検索結果を、ディスプレイ等の出力デバイスや、データファイルにより出力（表示）する。
【００２５】
検索装置１００は、リスト更新部１１０、リスト記憶部１２０、影響値記憶部１４０、属性値記憶部１５０、登録部１６０、検索結果記憶部１８０、及び、検索部１９０を含む。
【００２６】
ここで、属性値記憶部１５０は、属性値情報１５１を記憶する。
【００２７】
属性値情報１５１は、属性列における各属性のとりうる値に付与される値インデックスを示す。
【００２８】
図６は、本発明の第１の実施の形態における、属性値情報１５１の例を示す図である。
【００２９】
属性値情報１５１は、「属性インデックス」、当該属性インデックスの属性のとりうる値を示す「属性値」、及び、当該属性値に付与される値インデックスである「値インデックス」を含む。値インデックスには、属性インデックスごとに、異なる属性値に１から順に異なる値が付与される。
【００３０】
図６の例では、属性インデックス「０」の属性値「ａ」、「ｂ」に対して、値インデックス「０」、「１」がそれぞれ付与されている。また、属性インデックス「１」の属性値「ａ」、「ｄ」に対して、値インデックス「０」、「１」がそれぞれ付与されている。属性インデックス「２」の属性値「ｅ」、「ｆ」に対して、値インデックス「０」、「１」がそれぞれ付与されている。
【００３１】
リスト記憶部１２０は、属性列リスト１２１を記憶する。
【００３２】
属性列リスト１２１は、各属性のとりうる値の全組み合わせに係る属性列を、値インデックスの昇順に並べたリストである。
【００３３】
図７は、本発明の第１の実施の形態における、属性列リスト１２１の例を示す図である。
【００３４】
属性列リスト１２１は、「リストインデックス」、当該リストインデックスに対応する「属性列」、及び、「登録情報」を含む。ここで、リストインデックスは、属性列リスト１２１における各属性列の位置を示す。リストインデックスには、属性列リスト１２１の先頭の属性列から、０から順に値が付与される。属性列は、リストインデックスの位置に対応する属性列を示す。登録情報は、属性列に関して登録された情報を示す。
【００３５】
図７の例では、登録情報として、属性列「ａａｅ」、「ｂｄｆ」に対応する登録属性列６００「ａａｅ」、「ｂｄｆ」が、それぞれ登録されている。なお、登録情報には、登録属性列６００が登録されているかどうかを示すフラグや、登録属性列６００の識別子、登録属性列６００に係る他の情報や処理へのリンクが設定されていてもよい。
【００３６】
影響値記憶部１４０は、影響値情報１４１を記憶する。
【００３７】
影響値情報１４１は、属性列における属性の値が、前回と新たな検索属性列７００間で変化した場合に、属性列リスト１２１における、前回と新たな検索属性列７００間の距離（リストインデックスの差分）への影響の大きさを示す。
【００３８】
図８は、本発明の第１の実施の形態における、影響値情報１４１の例を示す図である。
【００３９】
影響値情報１４１は、「属性インデックス」、及び、当該属性インデックスの属性値の変化の影響の大きさを示す「影響値」を含む。
【００４０】
属性インデックスｉ（０≦ｉ≦Ｎ−１、Ｎは属性列の長さ）の属性の影響値Ｄｉは、例えば、数１式により算出される。
【００４１】
【数１】
2015130103.tif 000003
【００４２】
ここで、ｎＤａｔａ（ｊ）は、属性インデックスｊの属性のとりうる値の数を示す。
【００４３】
図８の例では、前回と新たな検索属性列７００間で属性インデックス「０」、「１」、「２」の属性値が変化した場合に、前回と新たな検索属性列７００間の距離が、それぞれ、「４」、「２」、「１」の倍数で変化することを示している。
【００４４】
リスト更新部１１０は、登録属性列６００に新たな属性値が含まれている場合に、属性値情報１５１、影響値情報１４１、及び、属性列リスト１２１を更新する。ここで、リスト更新部１１０は、属性値情報１５１において、新たな属性値に新たな値インデックスを付与する。また、リスト更新部１１０は、各属性について、数１式により影響値を算出することにより、影響値情報１４１を更新する。そして、リスト更新部１１０は、新たな属性値と他の属性のとりうる値の全組み合わせに係る新たな属性列を、属性列リスト１２１に挿入する。ここで、属性列リスト１２１における、新たな属性列の挿入位置は、数２式により算出される。
【００４５】
【数２】
2015130103.tif 000004
【００４６】
ここで、Ｖ［ｉ］は、属性列の属性インデックスｉの値インデックスを示す。
【００４７】
登録部１６０は、属性列リスト１２１に、登録属性列６００を登録する。ここで、属性列リスト１２１における、登録属性列６００の登録位置は、上述の数２式により算出される。
【００４８】
検索結果記憶部１８０は、検索結果１８１を記憶する。検索結果１８１は、前回の検索における検索結果を示す。
【００４９】
図９は、本発明の第１の実施の形態における、検索結果１８１の例を示す図である。
【００５０】
検索結果１８１は、属性列リスト１２１における、前回の検索属性列７００に対応する属性列のリストインデックスを含む。図９の検索結果１８１は、前回の検索属性列７００に対応する属性列のリストインデックスが「０」であることを示している。
【００５１】
検索部１９０は、差分属性列８００、及び、影響値情報１４１をもとに、属性列リスト１２１における、前回の検索属性列７００と新たな検索属性列７００との間の距離を算出する。そして、検索部１９０は、算出した距離もとに、新たな検索属性列７００に対応する属性列のリストインデックスを取得する。
【００５２】
図１０は、本発明の第１の実施の形態における、差分属性列８００の例を示す図である。
【００５３】
差分属性列８００では、前回の検索属性列７００と新たな検索属性列７００との間で変化した属性の属性インデックスごとに、前回の属性値と新たな属性値を示す。
【００５４】
図１０の差分属性列８００は、属性インデックス「０」の値が「ａ」から「ｂ」に、属性インデックス「２」の属性値が「ｅ」から「ｆ」に変化したことを示す。
【００５５】
検索部１９０は、属性列リスト１２１における、前回の検索属性列７００に対応する属性列と新たな検索属性列７００に対応する属性列との間の距離を、例えば、数３式により算出する。
【００５６】
【数３】
2015130103.tif 000005
【００５７】
ここで、Ｖｐ［ｉ］は、前回の検索属性列７００の属性インデックスｉの値インデックス、Ｖｎ［ｉ］は、新たな検索属性列７００の属性インデックスｉの値インデックスを示す。
【００５８】
そして、検索部１９０は、検索結果１８１により示される、前回の検索属性列７００に対応する属性列のリストインデックスに、算出された距離を加算することにより、新たな検索属性列７００に対応する属性列のリストインデックスを取得する。
【００５９】
さらに、検索部１９０は、属性列リスト１２１における、新たな検索属性列７００に対応する属性列のリストインデックスの位置に設定されている登録情報を取得し、検索結果として検索結果出力装置５００に出力する。
【００６０】
なお、検索装置１００、登録属性列入力装置３００、検索属性列入力装置４００、及び、検索結果出力装置５００は、それぞれ、プログラムに基づく制御によって動作するコンピュータであってもよい。
【００６１】
図３は、本発明の第１の実施の形態における、検索装置１００がコンピュータにより実現される場合の構成を示すブロック図である。この場合、検索装置１００は、コンピュータプログラムを実行するＣＰＵ（Central Processing Unit）１０１、データを記憶する記憶手段（記憶媒体）１０２、他の装置等とデータ通信を行う通信手段１０３、キーボード等の入力手段１０４、及び、ディスプレイ等の出力手段１０５を含む。
【００６２】
ＣＰＵ１０１は、リスト更新部１１０、登録部１６０、及び、検索部１９０の機能を実現するためのコンピュータプログラムを実行する。記憶手段１０２は、リスト記憶部１２０、影響値記憶部１４０、属性値記憶部１５０、及び、検索結果記憶部１８０のデータを記憶する。通信手段１０３は、登録属性列入力装置３００、検索属性列入力装置４００から、それぞれ、登録属性列６００、差分属性列８００を受信する。また、通信手段１０３は検索結果出力装置５００へ、検索結果を送信する。なお、入力手段１０４が、ユーザ等から、登録属性列６００、差分属性列８００を受け付ける、あるいは、出力手段１０５が、ユーザ等へ検索結果を出力してもよい。
【００６３】
次に、本発明の第１の実施の形態の動作について説明する。
【００６４】
はじめに、本発明の第１の実施の形態の登録処理について説明する。
【００６５】
図１１は、本発明の第１の実施の形態における、登録処理を示すフローチャートである。
【００６６】
はじめに、検索装置１００は、登録属性列入力装置３００から登録属性列６００を受信する（ステップＳ１０１）。
【００６７】
リスト更新部１１０は、対象属性インデックスに０を設定する（ステップＳ１０２）。
【００６８】
リスト更新部１１０は、登録属性列６００における対象属性インデックスの属性の値が、属性値情報１５１に設定されているかどうか（新たな属性値かどうか）を判定する（ステップＳ１０３）。
【００６９】
属性値情報１５１に設定されている場合（新たな属性値でない場合）（ステップＳ１０３／Ｙ）、Ｓ１０５の処理へ進む。
【００７０】
属性値情報１５１に設定されていない場合（新たな属性値の場合）（ステップＳ１０３／Ｎ）、リスト更新部１１０は、後述するリスト更新処理を実行する（ステップＳ１０４）。これにより、リスト更新部１１０は、新たな属性値を属性値情報１５１に登録し、影響値情報１４１を更新する。さらに、リスト更新部１１０は、新たな属性値を含む属性列に対応する登録属性列６００が登録可能となるように、属性列リスト１２１を更新する。
【００７１】
リスト更新部１１０は、登録属性列６００の全属性インデックスに対して処理を終了したか判定する（ステップＳ１０５）。
【００７２】
全インデックスに対して処理を終了していない場合（ステップＳ１０５／Ｎ）リスト更新部１１０は、対象属性インデックスをインクリメントし（ステップＳ１０６）、ステップＳ１０３からの処理を繰り返す。
【００７３】
全インデックスに対して処理を終了した場合（ステップＳ１０５／Ｙ）、登録部１６０は、登録属性列６００を登録すべき位置を示すリストインデックスを算出する（ステップＳ１０７）。
【００７４】
登録部１６０は、算出したリストインデックスの位置に、登録属性列６００を登録する（ステップＳ１０８）。
【００７５】
次に、本発明の第１の実施の形態のリスト更新処理について説明する。
【００７６】
図１２は、本発明の第１の実施の形態における、リスト更新処理を示すフローチャートである。
【００７７】
リスト更新部１１０は、属性値情報１５１に、登録属性列６００における対象属性インデックスの属性値（新たな属性値）を追加する（ステップＳ２０１）。ここで、リスト更新部１１０は、属性値情報１５１において、新たな属性値に新たな値インデックスを付与する。
【００７８】
リスト更新部１１０は、影響値情報１４１を更新する（ステップＳ２０２）。ここで、リスト更新部１１０は、各属性について、数１式により影響値を算出する。
【００７９】
リスト更新部１１０は、登録属性列６００における対象属性インデックスの属性値（新たな属性値）と、他の属性インデックスのとりうる属性値との全組み合わせについて、新たな属性列を生成する（ステップＳ２０３）。
【００８０】
リスト更新部１１０は、ステップＳ２０３で生成した新たな属性列のうちの１つを選択する（ステップＳ２０４）。
【００８１】
リスト更新部１１０は、選択した属性列の挿入位置のリストインデックスを算出する（ステップＳ２０５）。ここで、リスト更新部１１０は、数２式により、挿入位置のリストインデックスを算出する。
【００８２】
リスト更新部１１０は、属性列リスト１２１における、算出したリストインデックスの位置に、属性列を挿入する（ステップＳ２０６）。ここで、リスト更新部１１０は、挿入位置以降の各属性列のリストインデックスをインクリメントする。
【００８３】
リスト更新部１１０は、ステップＳ２０３で生成した全ての属性列について、ステップＳ２０４〜Ｓ２０６の処理を繰り返す（ステップＳ２０７）。
【００８４】
次に、本発明の第１の実施の形態の登録処理の具体例を説明する。
【００８５】
図１３は、本発明の第１の実施の形態における、登録処理の具体例を示す図である。ここでは、図１３の初期状態のような、属性値情報１５１、影響値情報１４１、及び、属性列リスト１２１が、それぞれ、属性値記憶部１５０、影響値記憶部１４０、及び、リスト記憶部１２０に記憶されていると仮定する。
【００８６】
ここで、検索装置１００が、図１３のように、登録属性列６００「ｂｄｆ」を受信したと仮定する。この場合、対象属性インデックス「０」の属性値「ｂ」は、属性値情報１５１に設定されていない（新たな属性値である）。リスト更新部１１０は、図１３の状態１のように、属性値情報１５１において、対象属性インデックス「０」に属性値「ｂ」を追加し、値インデックス「１」を付与する。リスト更新部１１０は、影響値情報１４１において、属性インデックス「０」、「１」、「２」の影響値として、それぞれ「１」、「１」、「１」を算出し、設定する。リスト更新部１１０は、対象属性インデックス「０」の属性値「ｂ」を含む新たな属性列「ｂａｅ」を生成する。リスト更新部１１０は、属性列「ｂａｅ」のリストインデックスとして「１」を算出する。リスト更新部１１０は、リストインデックス「１」の位置に属性列「ｂａｅ」を挿入する。
【００８７】
また、対象属性インデックス「１」の属性値「ｄ」は、属性値情報１５１に設定されていない（新たな属性値である）。リスト更新部１１０は、図１３の状態２のように、属性値情報１５１において、対象属性インデックス「１」に属性値「ｄ」を追加し、値インデックス「１」を付与する。リスト更新部１１０は、影響値情報１４１において、属性インデックス「０」、「１」、「２」のそれぞれの影響値として、それぞれ「２」、「１」、「１」を算出し、設定する。リスト更新部１１０は、対象属性インデックス「１」の属性値「ｄ」を含む新たな属性列「ａｄｅ」、「ｂｄｅ」を生成する。リスト更新部１１０は、属性列「ａｄｅ」、「ｂｄｅ」のリストインデックスとして、それぞれ「１」、「３」を算出する。リスト更新部１１０は、リストインデックス「１」、「３」の位置に属性列「ａｄｅ」、「ｂｄｅ」をそれぞれ挿入する。
【００８８】
さらに、対象属性インデックス「２」の属性値「ｆ」は、属性値情報１５１に設定されていない（新たな属性値である）。リスト更新部１１０は、図１３の状態３のように、属性値情報１５１において、対象属性インデックス「２」に属性値「ｆ」を追加し、値インデックス「１」を付与する。リスト更新部１１０は、影響値情報１４１において、属性インデックス「０」、「１」、「２」の影響値として、それぞれ「４」、「２」、「１」を算出し、設定する。リスト更新部１１０は、対象属性インデックス「２」の属性値「ｆ」を含む新たな属性列「ａａｆ」、「ａｄｆ」、「ｂａｆ」、「ｂｄｆ」を生成する。リスト更新部１１０は、属性列「ａａｆ」、「ａｄｆ」、「ｂａｆ」、「ｂｄｆ」のリストインデックスとして、それぞれ「１」、「３」、「５」、「７」を算出する。リスト更新部１１０は、リストインデックス「１」、「３」、「５」、「７」の位置に属性列「ａａｆ」、「ａｄｆ」、「ｂａｆ」、「ｂｄｆ」をそれぞれ挿入する。
【００８９】
次に、登録部１６０は、登録属性列６００「ｂｄｆ」のリストインデックスとして、「７」を算出する。登録部１６０は、図１３の状態３のように、リストインデックス「７」の位置に、登録属性列６００「ｂｄｆ」を登録する。
【００９０】
次に、本発明の第１の実施の形態の検索処理について説明する。
【００９１】
図１４は、本発明の第１の実施の形態における、検索処理を示すフローチャートである。
【００９２】
はじめに、検索装置１００は、検索属性列入力装置４００から差分属性列８００を受信する（ステップＳ３０１）。
【００９３】
検索部１９０は、差分属性列８００と影響値情報１４１とをもとに、前回の検索属性列７００と新たな検索属性列７００との間の距離を算出する（ステップＳ３０２）。ここで、検索部１９０は、数３式により、前回の検索属性列７００と新たな検索属性列７００との間の距離を算出する。
【００９４】
検索部１９０は、検索結果１８１とステップＳ３０２で算出した距離とをもとに、新たな検索属性列７００に対応する属性列のリストインデックスを算出する（ステップＳ３０３）。ここで、検索部１９０は、検索結果１８１により示される、前回の検索属性列７００に対応する属性列のリストインデックスに、算出した距離を加算することにより、新たな検索属性列７００に対応する属性列のリストインデックスを算出する。
【００９５】
検索部１９０は、属性列リスト１２１における、新たな検索属性列７００に対応する属性列のリストインデックスの位置に登録されている登録情報を取得する（ステップＳ３０４）。ここで、例えば、登録情報として登録属性列６００が設定されている場合、新たな検索属性列７００に合致する登録属性列６００が登録されていることを意味する。
【００９６】
検索部１９０は、取得した登録情報を、検索結果として検索結果出力装置５００に出力する（ステップＳ３０５）。
【００９７】
検索部１９０は、新たな検索属性列７００に対応する属性列のリストインデックスで、検索結果１８１を更新する（ステップＳ３０６）。
【００９８】
次に、本発明の第１の実施の形態の検索処理の具体例を説明する。
【００９９】
図１５は、本発明の第１の実施の形態における、検索処理の具体例を示す図である。ここでは、図１５のような、属性値情報１５１、影響値情報１４１、属性列リスト１２１、及び、検索結果１８１が、それぞれ、属性値記憶部１５０、影響値記憶部１４０、リスト記憶部１２０、及び、検索結果記憶部１８０に記憶されていると仮定する。
【０１００】
ここで、前回の検索属性列７００「ａａｅ」、新たな検索属性列７００「ｂｄｆ」に対して、検索装置１００が、図１５のような差分属性列８００を受信したと仮定する。この場合、検索部１９０は、図１５のように、前回の検索属性列７００「ａａｅ」と新たな検索属性列７００「ｂｄｆ」との間の距離として「７」を算出する。新たな検索属性列７００「ｂｄｆ」に対応する属性列のリストインデックスとして「７」を算出する。そして、検索部１９０は、リストインデックス「７」の位置に登録されている登録情報「ｂｄｆ」を取得し、検索結果として出力する。さらに、検索部１９０は、検索結果１８１のリストインデックスを「７」で更新する。
【０１０１】
なお、検索部１９０は、検索結果記憶部１８０に検索結果１８１が記憶されていない場合は、例えば、新たな検索属性列７００と属性列リスト１２１の各属性列とを比較することにより、新たな検索属性列７００に対応する属性列のリストインデックスを特定する。
【０１０２】
以上により、本発明の第１の実施の形態の動作が完了する。
【０１０３】
なお、本発明の第１の実施の形態では、検索装置１００が、検索属性列入力装置４００から差分属性列８００を受信している。しかしながら、検索装置１００は、検索属性列入力装置４００から新たな検索属性列７００を受信し、差分属性列８００を生成してもよい。
【０１０４】
また、本発明の第１の実施の形態では、検索結果記憶部１８０が１つの検索結果１８１を記憶している。しかしながら、検索結果記憶部１８０は、ユーザ識別子ごとに検索結果１８１を記憶し、検索部１９０が、検索属性列入力装置４００から差分属性列８００とともに受信したユーザ識別子に対応する検索結果１８１を用いて、検索を行ってもよい。
【０１０５】
また、本発明の第１の実施の形態では、検索部１９０は、前回の検索属性列７００と新たな検索属性列７００との間の属性値の変化をもとに、前回の検索属性列７００に対応する属性列と新たな検索属性列７００に対応する属性列との間の距離を算出する。しかしながら、検索部１９０は、前回の検索属性列７００の代わりに、前回以前の過去の検索属性列７００を用いてもよい。この場合、検索部１９０は、過去と新たな検索属性列７００間の属性値の変化をもとに、過去と新たな検索属性列７００に対応する属性列間の距離を算出する。そして、検索部１９０は、過去の検索属性列７００に対応する属性列のリストインデックスに、算出した距離を加算することにより、新たな検索属性列７００に対応する属性列のリストインデックスを取得する。
【０１０６】
次に、本発明の第１の実施の形態の特徴的な構成を説明する。図１は、本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【０１０７】
図１を参照すると、検索装置（情報処理装置）１００は、リスト記憶部（属性列リスト記憶手段）１２０と検索部（検索手段）１９０とを含む。リスト記憶部１２０は、所定数の属性の各々の属性値を所定の属性順で配置した属性列リスト１２１を記憶する。検索部１９０は、過去の新たな検索属性列間の属性値の変化をもとに算出された、属性列リスト１２１における過去と新たな検索属性列に対応する属性列間の距離をもとに、新たな検索属性列に対応する属性列の位置を特定する。
【０１０８】
本発明の第１の実施の形態によれば、多次元データの検索において、検索を高速化できる。その理由は、検索部１９０が、過去と新たな検索属性列間の属性値の変化をもとに算出された、属性列リスト１２１における過去と新たな検索属性列に対応する属性列間の距離をもとに、新たな検索属性列に対応する属性列の位置を特定するためである。
【０１０９】
これにより、過去と新たな検索属性列間でどの属性の値が変化しても、新たな検索属性列と登録属性列との間の各属性の値の比較を行うことなく、属性列リスト１２１における新たな検索属性列に対応する属性列の位置を特定し、検索結果を得ることができる。
【０１１０】
（第２の実施の形態）
次に、本発明の第２の実施の形態について説明する。
【０１１１】
本発明の第１の実施の形態では、登録属性列６００の登録に伴って属性列リスト１２１が更新されると、検索結果１８１が示す前回の検索属性列７００に対応する属性列のリストインデックスと属性列リスト１２１との整合がとれなくなる。そのため、正しい検索結果を得るためには、検索を行う前に全ての登録属性列６００の登録を完了する、もしくは、登録属性列６００が入力されるたびに検索結果１８１の初期化を行う必要がある。
【０１１２】
本発明の第２の実施の形態では、属性列リスト１２１の更新とともに、検索結果１８１も更新される。
【０１１３】
本発明の第２の実施の形態の構成は、本発明の第１の実施の形態（図２）と同様となる。
【０１１４】
リスト更新部１１０は、属性列リスト１２１を更新するときに、検索結果１８１を更新する。
【０１１５】
次に、本発明の第２の実施の形態の動作について説明する。
【０１１６】
はじめに、本発明の第２の実施の形態の登録処理について説明する。
【０１１７】
上述のリスト更新処理（図１２）のステップＳ２０６において、リスト更新部１１０は、新たな属性列を属性列リスト１２１に挿入するときに、以下の処理を行う。すなわち、リスト更新部１１０は、新たな属性列の挿入位置のリストインデックスが、検索結果１８１のリストインデックスより小さい場合、検索結果１８１のリストインデックスをインクリメントする。
【０１１８】
次に、本発明の第２の実施の形態の登録処理の具体例を説明する。
【０１１９】
図１６は、本発明の第２の実施の形態における、登録処理の具体例を示す図である。ここでは、図１６の初期状態のような属性値情報１５１、影響値情報１４１、及び、属性列リスト１２１が、それぞれ、属性値記憶部１５０、影響値記憶部１４０、及び、リスト記憶部１２０に記憶されていると仮定する。また、図１６の初期状態のような検索結果１８１が、検索結果記憶部１８０に記憶されていると仮定する。に記憶されていると仮定する。
【０１２０】
ここで、検索装置１００が、図１６のように、登録属性列６００「ｂｈｆ」を受信したと仮定する。この場合、対象属性インデックス「１」の属性値「ｈ」は、属性値情報１５１に設定されていない（新たな属性値である）。リスト更新部１１０は、図１６の状態１のように、属性値情報１５１において、対象属性インデックス「１」に属性値「ｈ」を追加し、値インデックス「２」を付与する。リスト更新部１１０は、影響値情報１４１において、属性インデックス「０」、「１」、「２」の影響値として、それぞれ「６」、「２」、「１」を算出し、設定する。リスト更新部１１０は、対象属性インデックス「１」の属性値「ｈ」を含む新たな属性列「ａｈｅ」、「ａｈｆ」、「ｂｈｅ」、「ｂｈｆ」を生成する。リスト更新部１１０は、属性列「ａｈｅ」のリストインデックスとして「４」を算出する。リスト更新部１１０は、リストインデックス「４」の位置に属性列「ａｈｅ」を挿入するときに、検索結果１８１のリストインデックスを「８」にインクリメントする。さらに、リスト更新部１１０は、属性列「ａｈｆ」のリストインデックスとして「５」を算出する。リスト更新部１１０は、リストインデックス「５」の位置に属性列「ａｈｆ」を挿入するときに、検索結果１８１のリストインデックスを「９」にインクリメントする。
【０１２１】
なお、本発明の第２の実施の形態の検索処理は、本発明の第１の実施の形態（図１４）と同様となる。
【０１２２】
以上により、本発明の第２の実施の形態の動作が完了する。
【０１２３】
本発明の第２の実施の形態によれば、登録属性列６００の登録に伴って属性列リスト１２１が更新されても、正しい検索結果を得ることができる。その理由は、リスト更新部１１０が、属性列リスト１２１を更新するときに、検索結果１８１を更新するためである。
【０１２４】
（第３の実施の形態）
次に、本発明の第３の実施の形態について説明する。
【０１２５】
本発明の第１の実施の形態では、登録属性列６００の属性値にワイルドカードを含む場合に検索を行うことができない。ここで、ワイルドカードは、属性値がどのような値でもマッチする属性値である。本発明の第３の実施の形態では、ワイルドカードの属性値を「＊」により示す。例えば、ある属性列の属性インデックス「１」の属性値が「＊」の場合、他の属性列の属性インデックス「１」の属性値がどのような値でも、当該他の属性列の属性インデックス「１」の属性は、当該属性列の属性インデックス「１」の属性に合致すると判断される。
【０１２６】
本発明の第３の実施の形態では、ワイルドカードの属性値を含む登録属性列６００も、属性列リスト１２１に登録される。そして、ワイルドカード参照情報１３１を用いて、検索属性列７００と合致する、ワイルドカードの属性値を含む登録属性列６００が検索される。
【０１２７】
はじめに、本発明の第３の実施の形態の構成について説明する。
【０１２８】
図１７は、本発明の第３の実施の形態における、検索システムの構成を示すブロック図である。
【０１２９】
図１７を参照すると、本発明の第３の実施の形態における検索装置１００は、本発明の第１の実施の形態における検索装置１００の構成（図２）に加えて、さらに、ワイルドカード参照記憶部１３０を含む。ワイルドカード参照記憶部１３０は、ワイルドカード参照情報１３１を記憶する。
【０１３０】
ワイルドカード参照情報１３１は、属性列リスト１２１におけるある属性列と、当該属性列６００が合致する、ワイルドカードの属性値を含む他の属性列との関係を示す。
【０１３１】
図１８は、本発明の第３の実施の形態における、ワイルドカード参照情報１３１の例を示す図である。
【０１３２】
ワイルドカード参照情報１３１は、「参照元」、及び、「参照先」を含む。ここで、「参照元」、及び、「参照先」はリストインデックスであり、属性列リスト１２１における参照元のリストインデックスの属性列が、参照先のリストインデックスの、ワイルドカードの属性値を含む属性列に合致することを示す。
【０１３３】
図１８の例では、参照元「０」に参照先「４」が対応づけられており、リストインデックス「０」の属性列が、ワイルドカードの属性値を含む、リストインデックス「４」の属性列に合致することを示す。すなわち、リストインデックス「４」に登録されている属性列は、リストインデックス「０」の属性列の属性の少なくとも一部の属性値をワイルドカードで置き換えた属性列である。
【０１３４】
リスト更新部１１０は、登録属性列６００に新たな属性値が含まれている場合に、属性値情報１５１、影響値情報１４１、属性列リスト１２１に加えて、ワイルドカード参照情報１３１も更新する。
【０１３５】
次に、本発明の第３の実施の形態の動作について説明する。
【０１３６】
はじめに、本発明の第３の実施の形態の登録処理について説明する。
【０１３７】
上述のリスト更新処理（図１２）のステップＳ２０６において、リスト更新部１１０は、新たな属性列を属性列リスト１２１に挿入するときに、以下のように、ワイルドカード参照情報１３１を更新する。すなわち、リスト更新部１１０は、属性列リスト１２１に、ワイルドカードの属性値を含む新たな属性列に合致する他の属性列がある場合、当該他の属性列のリストインデックスを参照元、新たな属性列のリストインデックスを参照先に追加する。また、リスト更新部１１０は、属性列リスト１２１に、新たな属性列が合致する、ワイルドカードの属性値を含む他の属性列がある場合、新たな属性列のリストインデックスを参照元、当該他の属性列のリストインデックスを参照先に追加する。
【０１３８】
ここで、リスト更新部１１０は、新たな属性列の各属性インデックスについて、以下の処理により、ワイルドカードの属性値を含む新たな属性列に合致する他の属性列、または、新たな属性列が合致する、ワイルドカードの属性値を含む他の属性列を抽出する。
【０１３９】
すなわち、リスト更新部１１０は、属性列リスト１２１における、新たな属性列の挿入位置のリストインデックスから、属性インデックスに対する影響値分減じたリストインデックスを算出する。ここで、新たな属性列の当該属性インデックスの属性値がワイルドカードの場合は、当該算出したリストインデックスの属性列が、新たな属性列に合致する属性列である。一方、当該算出したリストインデックスの属性列の当該属性インデックスの属性値がワイルドカードの場合は、当該算出したリストインデックスの属性列は、新たな属性列が合致する属性列である。リスト更新部１１０は、このようなリストインデックスの減算、及び、合致判定を、「当該属性インデックスに対する属性値の数−１」回繰り返す。
【０１４０】
次に、本発明の第３の実施の形態の登録処理の具体例を説明する。
【０１４１】
図１９は、本発明の第３の実施の形態における、登録処理の具体例を示す図である。ここでは、図１９の初期状態のような、属性値情報１５１、影響値情報１４１、及び、属性列リスト１２１が、それぞれ、属性値記憶部１５０、影響値記憶部１４０、及び、リスト記憶部１２０に記憶されていると仮定する。
【０１４２】
ここで、検索装置１００が、図１９のように、ワイルドカードの属性値を含む登録属性列６００「ａ＊ｆ」を受信したと仮定する。この場合、対象属性インデックス「１」の属性値「＊」は、属性値情報１５１に設定されていない（新たな属性値である）。リスト更新部１１０は、図１９の状態１のように、属性値情報１５１において、対象属性インデックス「１」に属性値「＊」を追加し、値インデックス「２」を付与する。リスト更新部１１０は、影響値情報１４１において、属性インデックス「０」、「１」、「２」の影響値として、それぞれ「６」、「２」、「１」を算出し、設定する。リスト更新部１１０は、対象属性インデックス「１」の属性値「＊」を含む新たな属性列「ａ＊ｅ」、「ａ＊ｆ」、「ｂ＊ｅ」、「ｂ＊ｆ」を生成する。
【０１４３】
リスト更新部１１０は、属性列「ａ＊ｅ」のリストインデックスとして「４」を算出する。リスト更新部１１０は、リストインデックス「４」の位置に属性列「ａ＊ｅ」を挿入する。リスト更新部１１０は、属性インデックス「１」について、リストインデックスを「２」、「０」の順に減じながら、合致判定を行う。また、リスト更新部１１０は、属性インデックス「２」について、リストインデックスを「３」に減じて、合致判定を行う。この結果、リスト更新部１１０は、リストインデックス「２」、「０」の属性列「ａｄｅ」、「ａａｅ」を、属性列「ａ＊ｅ」に合致する属性列として抽出する。そして、リスト更新部１１０は、図１９の状態２のように、ワイルドカード参照情報１３１に、参照元「０」、「２」に対して、参照先「４」を設定する。
【０１４４】
リスト更新部１１０は、属性列「ａ＊ｆ」、「ｂ＊ｅ」、「ｂ＊ｆ」についても、同様に、図１９の状態２のように、ワイルドカード参照情報１３１に、参照元、及び、参照先を設定する。
【０１４５】
次に、登録部１６０は、登録属性列６００「ａ＊ｆ」のリストインデックスとして「５」を算出する。登録部１６０は、図１９の状態２のように、リストインデックス「５」の位置に、登録属性列６００「ａ＊ｆ」を登録する。
【０１４６】
次に、本発明の第３の実施の形態の検索処理について説明する。
【０１４７】
上述の検索処理（図１４）のステップＳ３０３において、検索部１９０は、新たな検索属性列７００に対応する属性列のリストインデックスを参照元とする参照先を、ワイルドカード参照情報１３１から取得する。さらに、検索部１９０は、取得した参照先を参照元とする参照先を、ワイルドカード参照情報１３１から取得することを繰り返す。これにより、新たな検索属性列７００に合致する、ワイルドカードを含む属性列のリストインデックスが抽出される。
【０１４８】
ステップＳ３０４において、検索部１９０は、新たな検索属性列７００に対するリストインデックス、及び、取得した参照先のリストインデックスの位置に登録されている登録情報を取得する。ここで、例えば、参照先のリストインデックスの位置の登録情報として登録属性列６００が設定されている場合、新たな検索属性列７００に合致する、ワイルドカードを含む登録属性列６００が登録されていることを意味する。
【０１４９】
ステップＳ３０５において、検索部１９０は、取得した登録情報を、検索結果として検索結果出力装置５００に出力する。
【０１５０】
図２０は、本発明の第３の実施の形態における、検索処理の具体例を示す図である。ここでは、図２０のような、属性値情報１５１、影響値情報１４１、属性列リスト１２１、及び、検索結果１８１が、それぞれ、属性値記憶部１５０、影響値記憶部１４０、リスト記憶部１２０、及び、検索結果記憶部１８０に記憶されていると仮定する。また、図２０のような、ワイルドカード参照情報１３１が、ワイルドカード参照記憶部１３０に記憶されていると仮定する。
【０１５１】
ここで、前回の検索属性列７００「ａａｅ」、新たな検索属性列７００「ａｄｆ」に対して、検索装置１００が、図２０のような差分属性列８００を受信したと仮定する。この場合、検索部１９０は、図２０のように、前回の検索属性列７００「ａａｅ」と新たな検索属性列７００「ａｄｆ」との間の距離として「３」を算出する。検索部１９０は、新たな検索属性列７００「ａｄｆ」に対応する属性列のリストインデックスとして「３」を算出する。さらに、検索部１９０は、参照元「３」に対する参照先「５」を取得する。そして、検索部１９０は、参照先「５」に登録されている登録情報「ａ＊ｆ」を出力する。さらに、検索部１９０は、検索結果１８１のリストインデックスを「３」で更新する。
【０１５２】
以上により、本発明の第３の実施の形態の動作が完了する。
【０１５３】
本発明の第３の実施の形態によれば、登録属性列６００の属性値にワイルドカードを含む場合でも、検索を行うことができる。その理由は、検索部１９０が、ワイルドカード参照情報１３１を用いて、属性列リスト１２１における、新たな検索属性列７００と合致する、ワイルドカードを含む属性列の位置を特定するためである。
【０１５４】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１５５】
本発明は、属性列の検索を行う検索装置やデータベースに適用できる。また、本発明は、属性列にユーザの状態情報を用いることにより、リアルタイムなマッチングが必要なコンシェルジュサービスやリアルタイム広告配信等の状況依存サービスに適用できる。
【符号の説明】
【０１５６】
１００    検索装置
１０１    ＣＰＵ
１０２    記憶手段
１０３    通信手段
１０４    入力手段
１０５    出力手段
１１０    リスト更新部
１２０    リスト記憶部
１２１    属性列リスト
１３０    ワイルドカード参照記憶部
１３１    ワイルドカード参照情報
１４０    影響値記憶部
１４１    影響値情報
１５０    属性値記憶部
１５１    属性値情報
１６０    登録部
１８０    検索結果記憶部
１８１    検索結果
１９０    検索部
３００    登録属性列入力装置
４００    検索属性列入力装置
５００    検索結果出力装置
６００    登録属性列
７００    検索属性列
８００    差分属性列
【図１】
2015130103.tif 000006
【図２】
2015130103.tif 000007
【図３】
2015130103.tif 000008
【図４】
2015130103.tif 000009
【図５】
2015130103.tif 000010
【図６】
2015130103.tif 000011
【図７】
2015130103.tif 000012
【図８】
2015130103.tif 000013
【図９】
2015130103.tif 000014
【図１０】
2015130103.tif 000015
【図１１】
2015130103.tif 000016
【図１２】
2015130103.tif 000017
【図１３】
2015130103.tif 000018
【図１４】
2015130103.tif 000019
【図１５】
2015130103.tif 000020
【図１６】
2015130103.tif 000021
【図１７】
2015130103.tif 000022
【図１８】
2015130103.tif 000023
【図１９】
2015130103.tif 000024
【図２０】
2015130103.tif 000025