JP6273892B2 - データ検索装置、プログラム、及びデータ検索システム - Google Patents

データ検索装置、プログラム、及びデータ検索システム Download PDF

Info

Publication number
JP6273892B2
JP6273892B2 JP2014031530A JP2014031530A JP6273892B2 JP 6273892 B2 JP6273892 B2 JP 6273892B2 JP 2014031530 A JP2014031530 A JP 2014031530A JP 2014031530 A JP2014031530 A JP 2014031530A JP 6273892 B2 JP6273892 B2 JP 6273892B2
Authority
JP
Japan
Prior art keywords
data
vector data
index
data storage
storage means
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014031530A
Other languages
English (en)
Other versions
JP2015156179A (ja
Inventor
平岡 卓也
卓也 平岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2014031530A priority Critical patent/JP6273892B2/ja
Publication of JP2015156179A publication Critical patent/JP2015156179A/ja
Application granted granted Critical
Publication of JP6273892B2 publication Critical patent/JP6273892B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データ検索装置、プログラム、及びデータ検索システムに関する。
従来より、kd木と呼ばれるデータ構造が知られている。kd木は、k次元ユークリッド空間にある点を分類する空間分割データ構造であり、多次元ベクトルにおける最近傍検索(最近傍探索)などの用途に利用できることが知られている。このようなkd木による最近傍検索を用いたデータ検索装置において、効率よく検索を行うためには、kd木を平衡木(バランス木)にする必要があることが知られている。
また、利用者からみた登録・削除処理のレスポンス時間を短くした転置ファイルを用いた全文検索装置が従来より知られている(例えば特許文献1参照)。
しかしながら、kd木による最近傍検索を用いたデータ検索装置においては、データの追加や削除が行われるたびに、平衡木を維持するためにkd木を再構成する必要があった。したがって、データ数が多い場合、kd木の再構成に時間が掛かり、この間、ユーザ待ち時間が発生するという問題がある。
一方、転置ファイルを用いた全文検索装置においては、kd木を用いていないため探索アルゴリズムが異なり、上記問題を解決することはできない。
本発明の一実施形態は、上記の点に鑑みてなされたものであり、データの追加・削除がある場合においても効率的に指定されたデータを検索することができるデータ検索装置、プログラム、及びデータ検索システムを提供することを目的とする。
上記目的を達成するため、本発明の一実施形態は、指定されたベクトルデータと最も近い値のベクトルデータを複数のベクトルデータから検索するデータ検索装置において、ベクトルデータと該ベクトルデータを一意に識別する識別子との組を記憶するベクトルデータ記憶手段と、前記ベクトルデータ記憶手段に追加するベクトルデータを記憶する第1の追加データ記憶手段と、前記ベクトルデータ記憶手段から削除するベクトルデータの識別子を記憶する第1の削除データ記憶手段と、前記ベクトルデータ記憶手段に記憶されているベクトルデータから第1の索引を作成し、前記第1の追加データ記憶手段に記憶されているベクトルデータから第2の索引を作成する索引作成手段と、前記第1の追加データ記憶手段に記憶されているベクトルデータのデータ数が所定の値以上になった場合、前記ベクトルデータ記憶手段、前記第1の追加データ記憶手段、及び前記第1の削除データ記憶手段を更新するマージ手段と、前記第1の索引と前記第2の索引とから、前記指定されたベクトルデータと最も近い値のベクトルデータを検索する検索手段と、を有し、前記索引作成手段は、前記マージ手段により更新が行われた場合、前記ベクトルデータ記憶手段に記憶されているベクトルデータから前記第1の索引を再作成し、前記第2の索引を削除する、ことを特徴とする。
本発明の一実施形態によれば、データの追加・削除がある場合においても効率的に指定されたデータを検索することができる。
第一の実施形態に係るデータ検索システムの一例の構成図である。 第一の実施形態に係るコンピュータの一例のハードウェア構成図である。 第一の実施形態に係るデータ検索装置の一例のソフトウェア構成図である。 多次元ベクトルデータの一例の構成図である。 追加用ベクトルデータの一例の構成図である。 削除データの識別子の一例の構成図である。 kd木索引の一例を説明するための図である。 第一の実施形態に係るkd木索引作成処理の一例のフローチャートである。 第一の実施形態に係るデータ追加処理の一例のフローチャートである。 第一の実施形態に係るkd木索引へのデータ挿入処理の一例のフローチャートである。 第一の実施形態に係るデータ削除処理の一例のフローチャートである。 第一の実施形態に係るデータ検索処理の一例のフローチャートである。 第一の実施形態に係る最近傍検索処理の一例のフローチャートである。 第一の実施形態に係るマージ処理の一例のフローチャートである。 第二の実施形態に係るデータ追加処理の一例のフローチャートである。 第三の実施形態に係るデータ検索装置の一例のソフトウェア構成図である。 第三の実施形態に係るマージ処理の一例のフローチャートである。 第四の実施形態に係るデータ検索装置の一例のソフトウェア構成図である。
次に、本発明の実施の形態について、詳細に説明する。
[第一の実施形態]
<システム構成>
図1は、第一の実施形態に係るデータ検索システムの一例の構成図である。図1のデータ検索システム1は、データ検索装置10と、端末装置20とがネットワークN1に有線や無線で接続されている。
データ検索装置10は、記憶領域に記憶されている複数のデータ(多次元ベクトルデータ)から、指定されたデータに最も近い値のデータを検索する装置である。また、データ検索装置10は、端末装置20から要求(リクエスト)に対して応答(レスポンス)できる。したがって、データ検索装置10は、端末装置20から検索要求とデータを受け取り、受け取ったデータに最も近い値のデータを端末装置20に送信することができる。また、データ検索装置10は、端末装置20などからの要求により、記憶領域に記憶されているデータの追加や削除を行うことができる。
端末装置20は、データ検索装置10にアクセス可能である。端末装置20は、データ検索装置10に対して、データを指定して検索要求を行うことができる。また、端末装置20は、データ検索装置10に対してデータの追加要求や削除要求を行うことができる。
なお、図1において、端末装置20は2台以上ある構成であってもよい。また、端末装置20がない構成であってもよい。すなわち、データ検索装置10は、例えばスタンドアロンであってもよい。
<ハードウェア構成>
第一の実施形態に係るデータ検索装置10及び端末装置20は、例えば図2に示すようなハードウェア構成のコンピュータ等により実現される。図2は、第一の実施形態に係るコンピュータの一例のハードウェア構成図である。
図2に示すコンピュータ100は、入力装置101、表示装置102、外部I/F103、RAM(Random Access Memory)104、ROM(Read Only Memory)105、CPU(Central Processing Unit)106、通信I/F107、HDD(Hard Disk Drive)108を有し、それぞれバスB1で相互に接続されている。
入力装置101は、キーボードやマウス、タッチパネルなどを含み、コンピュータ100に各操作信号を入力するのに用いられる。表示装置102は、LCD(Liquid Crystal Display)やCRT(Cathode Ray Tube)などを含み、コンピュータ100による処理結果を表示する。なお、入力装置101及び/又は表示装置102がない構成であってもよい。
外部I/F103は、外部装置とのインタフェースである。外部装置には、記録媒体103aなどがある。記憶媒体103aには、実施形態を実現するプログラムを格納することができる。コンピュータ100は外部I/F103を介して、記録媒体103aの読み取り及び/又は書き込みを行うことができる。
記録媒体103aにはUSBメモリ(Universal Serial Bus memory)、SDメモリカード(SD Memory card)、DVD(Digital Versatile Disk)、CD(Compact Disk)、フレキシブルディスクなどの記録媒体を用いることができる。
RAM104は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。ROM105は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。ROM105には、コンピュータ100の起動時に実行されるBIOS(Basic Input/Output System)、OS(Operating System)設定、及びネットワーク設定などのプログラムやデータが格納されている。
CPU106は、ROM105やHDD108などの記憶装置からプログラムやデータをRAM104上に読み出し、処理を実行することで、コンピュータ100全体の制御や機能を実現する演算装置である。
通信I/F107は、ネットワークに接続するインタフェースである。これにより、コンピュータ100は通信I/F107を介してデータ通信を行うことができる。なお、通信I/F107による通信は有線通信であっても無線通信であってもよい。
HDD108は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、例えば、コンピュータ100全体を制御する基本ソフトウェアであるOSや、OS上において各種機能を提供するアプリケーションソフトウェアなどがある。HDD108は格納しているプログラムやデータを所定のファイルシステム及び/又はDB(Data Base)により管理している。
第一の実施形態に係るデータ検索装置10及び端末装置20は、例えば上記のハードウェア構成のコンピュータ100上でプログラムを実行することにより、後述するような各種処理を実現できる。
<ソフトウェア構成>
《データ検索装置》
データ検索装置10は、例えば図3に示すような機能ブロックにより表すことができる。図3は、第一の実施形態に係るデータ検索装置の一例のソフトウェア構成図である。
データ検索装置10は、検索処理部11、追加処理部12、削除処理部13、索引作成部14、マージ部15、索引記憶部16、ベクトルデータ記憶部17、追加データ記憶部18、削除データ記憶部19を有している。
検索処理部11は、データの検索要求があった場合、索引記憶部16に記憶されているkd木索引(メイン)161とkd木索引(サブ)162に基づいて、端末装置20などから指定された多次元ベクトルデータと最も近い値の多次元ベクトルデータを検索する。
追加処理部12は、データの追加要求があった場合、端末装置20などから指定された多次元ベクトルデータを追加データ記憶部18に追加する。また、追加処理部12は、kd木索引(サブ)162に対して、追加した多次元ベクトルデータのノード(又はリーフ)を挿入してkd木索引(サブ)162を再作成する。
削除処理部13は、データの削除要求があった場合、削除データ記憶部19に削除対象の多次元ベクトルデータの識別子を追加する。また、このとき、削除処理部13は、削除対象の多次元ベクトルデータが追加データ記憶部18に記憶されている場合、該当の多次元ベクトルデータを削除する。なお、識別子とは、後述するように、多次元ベクトルデータを一意に識別するための情報である。
索引作成部14は、ベクトルデータ記憶部17に記憶されている多次元ベクトルデータからkd木索引(メイン)161を作成する。また、索引作成部14は、追加データ記憶部18に記憶されている多次元ベクトルデータからkd木索引(サブ)162を作成する。
マージ部15は、追加データ記憶部18及び削除データ記憶部19の内容をベクトルデータ記憶部17に反映させる。また、このとき、マージ部15は、kd木索引(メイン)161の再作成を索引作成部14に依頼するとともに、kd木索引(サブ)162の削除を行う。
索引記憶部16は、kd木索引(メイン)161及びkd木索引(サブ)162を記憶する。kd木索引(メイン)161及びkd木索引(サブ)162の構成については後述する。なお、索引記憶部16は、RAM104などの主記憶装置で実現することができる。
ベクトルデータ記憶部17は、多次元ベクトルデータを記憶する。多次元ベクトルデータの構成については後述する。追加データ記憶部18は、端末装置20などから追加された多次元ベクトルデータ(追加用ベクトルデータ)を記憶する。削除データ記憶部19は、削除対象の多次元ベクトルデータの識別子(削除データの識別子)を記憶する。なお、ベクトルデータ記憶部17、追加データ記憶部18、削除データ記憶部19は、例えばHDD108又はデータ検索装置10とネットワークを介して接続された記憶装置などにより実現することができる。
《多次元ベクトルデータ》
ベクトルデータ記憶部17に記憶されている多次元ベクトルデータ1000は、例えば図4に示すような構成を有している。図4は、多次元ベクトルデータの一例の構成図である。多次元ベクトルデータ1000は、識別子、データ値などを有している。識別子は、各多次元ベクトルデータを一意に識別する情報である。データ値は、多次元ベクトルデータのデータ情報である。本実施形態では、一例として、多次元ベクトルデータのデータ値は、10個の値の組(10次元)であるとするが、これに限られない。すなわち、多次元ベクトルデータの次元は11次元以上であってもよいし、10次元未満であってもよい。
《追加用ベクトルデータ》
追加データ記憶部18に記憶されている追加用ベクトルデータ2000は、例えば図5に示すような構成を有している。図5は、追加用ベクトルデータの一例の構成図である。追加用ベクトルデータ2000は、識別子、データ値などを有している。すなわち、追加用ベクトルデータ2000は、多次元ベクトルデータ1000と同様の構成を有している。ただし、追加用ベクトルデータ2000の識別子の値は、多次元ベクトルデータ1000の識別子の値と重複しない値である。
《削除のデータ》
削除データ記憶部19に記憶されている削除データの識別子3000及び削除データの識別子4000は、例えば図6に示すような構成を有している。図6は、削除データの識別子の一例の構成図である。図6に示すように、削除データ記憶部19は、kd木索引(メイン)161の削除データの識別子(すなわち、ベクトルデータ記憶部17に記憶されているベクトルデータの識別子)とkd木索引(サブ)162の削除データの識別子(すなわち、追加データ記憶部18に記憶されているベクトルデータの識別子)を別に管理して記憶している。
図6(a)は、kd木索引(メイン)161の削除データの識別子3000である。削除データの識別子3000は、ベクトルデータ記憶部17から削除するベクトルデータの識別子を有している。図(b)は、kd木索引(サブ)162の削除データの識別子4000である。削除データの識別子4000は、追加データ記憶部18から削除されたベクトルデータの識別子を有している。
《kd木索引》
kd木索引(メイン)161及びkd木索引(サブ)162は、例えば図7に示すような構成を有している。図7は、kd木索引の一例を説明するための図である。
kd木索引は、分岐次元、識別子、データ値、左ノードへのリンク、右ノードへのリンクなどを有している。kd木索引は、ルート(根)ノードからリーフ(葉)までの二分木となっている。
識別子及びデータ値については、上述した図4の多次元ベクトルデータ1000及び図5の追加用ベクトルデータ2000と同様であるため説明を省略する。
分岐次元は、そのノードで分岐時に利用した次元である。例えば、図7に示すルートノードの分岐次元は「2」である。したがって、各多次元ベクトルデータについて2次元のデータ値に着目し、ルートノードの2次元のデータ値(すなわち「32.03」)より小さいデータ値の多次元ベクトルデータが右ノード以下に存在し、それ以外の多次元ベクトルデータが左ノードに存在するように分割している。なお、後述するように、多次元ベクトルデータの分岐次元は、各多次元ベクトルデータの各次元について分散を算出することで決定する。
左ノードへのリンク及び右ノードへのリンクは、次のノード(又はリーフ)へのリンク情報である。リンク情報には例えば識別子を用いればよい。なお、リーフは、分岐次元の値、左ノードへのリンク、及び右ノードへのリンクは存在しない、末端のノードのことである。
<処理の詳細>
次に、第一の実施形態に係るデータ検索システム1の処理の詳細について説明する。
《kd木索引作成処理》
まず、kd木索引(メイン)161を作成する処理について説明する。図8は、第一の実施形態に係るkd木索引作成処理の一例のフローチャートである。
ステップS11において、索引作成部14は、ベクトルデータ記憶部17に記憶されている多次元ベクトルデータをすべて取得する。ただし、ステップS11は、kd木索引作成処理が始めに処理される場合にのみ行う。換言すれば、ステップS11は、後述するステップS16及びステップS17においてkd木索引作成処理が再帰的に呼び出された場合には実行されない。
ステップS12において、索引作成部14は、ステップS11で取得した多次元ベクトルデータ(又は、再帰的にkd木索引作成処理が呼び出された場合には、右ノードの集合又は左ノードの集合の多次元ベクトルデータ)が2以上であるか否かを判定する。2以上である場合、ステップS13に進み、2以上でない場合、ステップS18に進む。
ステップS13において、索引作成部14は、各多次元ベクトルデータの各次元について、分散の値を算出する。そして、索引作成部14は、分散の値が最も大きい次元を求める。なお、後述するように、ここで求めた次元が図7で説明した分岐次元である。
例えば、ステップS14で取得したすべての多次元ベクトルデータの1次元の各データ値について分散を算出する。次に、同様に2次元の各データ値について分散を算出する。以降、これをすべての次元について繰り返して各次元の分散を算出する。そして、算出した各分散について、最も分散が大きい次元を決定する。
ステップS14において、索引作成部14は、各多次元ベクトルデータについてステップS13で求めた次元に着目し、多次元ベクトルデータをソートする。なお、ソートは昇順又は降順のどちらでもよい。
ステップS15において、索引作成部14は、ソートした各多次元ベクトルデータについて中央値を持つ多次元ベクトルデータを特定する。すなわち、各多次元ベクトルデータにおいて、ステップS13で求めた次元のデータ値について中央値を持つ多次元ベクトルデータを特定する。そして、この特定した多次元ベクトルデータをkd木索引(メイン)161のノードとして、ステップS13で求めた次元を分岐次元として付加する。つまり、kd木索引作成処理が始めに実行された場合、この特定した多次元ベクトルデータはkd木索引(メイン)161のルートノードとなる。なお、中央値を持つ多次元ベクトルデータが2以上存在する場合、いずれか1つの多次元ベクトルデータを選択すればよい。
そして、ステップS13で求めた次元のデータ値について、この中央値より小さいデータ値を持つ多次元ベクトルデータを右ノードの集合、中央値より大きいデータ値を持つ多次元ベクトルデータを左ノードの集合として、2つの集合に分割する。なお、中央値と同じ値を持つ多次元ベクトルデータは右ノードの集合又は左ノードの集合のいずれか1つを選択すればよい(このことは、以降で説明する処理においても同様である)。
ステップS16において、索引作成部14は、右ノードの集合に対して、kd木索引作成処理を行う。すなわち、索引作成部14は、右ノードの集合に対して、kd木索引作成処理を再帰的に実行する。そして、再帰的に実行されたkd木索引作成処理でノード(又はリーフ)とした多次元ベクトルデータの識別子をステップS15で特定した多次元ベクトルデータ(すなわち、親ノードの多次元ベクトルデータ)の右ノードへのリンクとして付加する。
ステップS17において、索引作成部14は、ステップS16と同様に、左ノードの集合に対して、kd木索引作成処理を行う。また、索引作成部14は、ステップS16と同様に、親ノードの多次元ベクトルデータの左ノードへのリンクを付加する。
ステップS18において、索引作成部14は、多次元ベクトルデータがある場合、その多次元ベクトルデータをリーフ(又は、ベクトルデータ記憶部17のデータ数が1つである場合はルートノード)とする。
以上により、第一の実施形態におけるデータ検索装置10は、ベクトルデータ記憶部17からkd木索引(メイン)161を作成することができる。また、上記のkd木索引作成処理において、分散が最も大きい次元を分岐次元として選択することで、kd木索引(メイン)161を平衡木となるように構成することができる(データ数によっては平衡木にならない場合もあるが、平衡木に近い二分木を構成することができる)。したがって、後述する最近傍検索処理において、効率よく最近傍の多次元ベクトルデータを検索することができる。なお、上記のkd木索引作成処理において、入力する多次元ベクトルデータを追加データ記憶部18から取得することで、kd木索引(サブ)162を作成することができる。
《データ追加処理》
次に、端末装置20などからデータの追加要求が行われ、多次元ベクトルデータがデータ検索装置10に追加される場合の処理について説明する。図9は、第一の実施形態に係るデータ追加処理の一例のフローチャートである。
ステップS21において、追加処理部12は、追加データ記憶部18に端末装置20などから指定された多次元ベクトルデータを追加する。なお、このとき、追加処理部12は、追加した多次元ベクトルデータに識別子を付加する。
ステップS22において、追加処理部12は、kd木索引(サブ)162にステップS21で追加した多次元ベクトルデータのノードを挿入する。ステップS22におけるkd木索引へのデータ挿入処理の詳細は後述する。
ステップS23において、追加処理部12は、追加データ記憶部18のデータ数が所定の閾値に達していた場合、マージ処理を起動させる。ステップS23におけるマージ処理の詳細については後述する。なお、所定の閾値は、例えばデータ検索システム1の管理者などが値を変更することができる。
以上により、第一の実施形態におけるデータ検索装置10は、端末装置20などからの要求により多次元ベクトルデータを追加、及び追加したデータのノードをkd木索引(サブ)162に追加(挿入)することができる。また、データ検索装置10は、追加データ記憶部18のデータ数が所定の閾値に達した場合、追加データ記憶部18の内容をベクトルデータ記憶部17へ追加し、kd木索引(サブ)162の内容をkd木索引(メイン)161に挿入する処理を行うマージ処理を起動させる。したがって、第一の実施形態におけるデータ検索システム1は、端末装置20などからデータ検索装置10に対してデータの追加要求を行った場合のユーザ待ち時間(レスポンスタイム)を短くすることができる。
《kd木索引へのデータ挿入処理》
次に、図9のステップS22の処理の詳細について説明する。図10は、第一の実施形態に係るkd木索引へのデータ挿入処理の一例のフローチャートである。
ステップS31において、追加処理部12は、追加した多次元ベクトルデータとkd木索引(サブ)162の各ノードの分岐次元の値を比較しながら、リーフまで辿る。
すなわち、追加処理部12は、まず、kd木索引(サブ)162のルートノードの分岐次元のデータ値と追加した多次元ベクトルデータの同じ次元のデータ値を比較する。そして、追加した多次元ベクトルデータのデータ値の方が小さい場合、追加処理部12は、右ノードへのリンクに指定されているノードについて、同様に多次元ベクトルデータとこのノード分岐次元の値を比較する。一方、追加した多次元ベクトルデータのデータ値の方が大きい場合、左ノードへのリンクに指定されているノードについて、同様に多次元ベクトルデータとこのノード分岐次元の値を比較する。以降、追加処理部12は、kd木索引(サブ)162のリーフに辿りつくまでこれを繰り返す。
ステップS32において、追加処理部12は、ステップS31で辿りついたリーフの各次元のデータ値と、追加した多次元ベクトルデータの対応する各次元のデータ値を比較する。そして、追加処理部12は、差が最も大きな次元を分岐次元とする。換言すれば、各次元について、このリーフと追加した多次元ベクトルデータの分散が最も大きい次元を分岐次元とする。
ステップS33において、追加処理部12は、リーフと追加した多次元ベクトルデータの分岐次元のデータ値を比較し、多次元ベクトルデータのデータ値の方が小さい場合、追加した多次元ベクトルデータをこのリーフの右ノードとする。一方、多次元ベクトルデータのデータ値の方が大きい場合、追加した多次元ベクトルデータのデータをこのリーフの左ノードとする。なお、このとき、追加処理部12は、このリーフに分岐次元と、右ノードへのリンク又は左ノードへのリンクの情報を付加する。
以上により、第一の実施形態におけるデータ検索装置10は、端末装置20などから追加された多次元ベクトルデータに基づいて、kd木索引(サブ)162に、この追加された多次元ベクトルデータのノードを挿入することができる。
《データ削除処理》
次に、端末装置20などからデータの削除要求が行われた場合の処理について説明する。図11は、第一の実施形態に係るデータ削除処理の一例のフローチャートである。
ステップS41において、削除処理部13は、端末装置20などからデータの削除要求が行われたデータについて、kd索引(サブ)162のデータか否かを判定する。換言すると、削除処理部13は、削除要求が、追加データ記憶部18に記憶されているベクトルデータに対して行われたものか、ベクトルデータ記憶部17に記憶されているベクトルデータに対して行われたものかを判定する。データの削除要求が行われたデータが、kd索引(サブ)162のデータである場合、ステップS42に進み、kd索引(サブ)162のデータでない場合(kd索引(メイン)161のデータである場合)、ステップS44に進む。なお、端末装置20などからの削除要求には、削除対象の多次元ベクトルデータの識別子に関する情報が含まれている。
ステップS42において、削除処理部13は、追加データ記憶部18から削除要求に係るデータを削除する。
ステップS43において、削除処理部13は、削除データ記憶部19のkd木索引(サブ)の削除データの識別子に削除要求に含まれる識別子を追加する。
ステップS44において、削除処理部13は、削除データ記憶部19のkd木索引(メイン)の削除データの識別子に削除要求に含まれる識別子を追加する。このように、削除要求に係るデータがベクトルデータ記憶部17のデータである場合、後述するマージ処理が実行されるまでベクトルデータ記憶部17から該当の多次元ベクトルデータは削除しない。
以上により、第一の実施形態に係るデータ検索装置10は、削除要求に係るデータが追加データ記憶部18のデータである場合、削除要求に含まれる識別子を削除データ記憶部19に追加し、該当の多次元ベクトルデータを追加データ記憶部18から削除する。一方、削除要求に係るデータがベクトルデータ記憶部17のデータである場合は、ベクトルデータ記憶部17からはまだデータを削除せずに、削除要求に含まれる識別子を削除データ記憶部19に追加する。これにより、第一の実施形態におけるデータ検索システム1は、端末装置20などからデータ検索装置10に対してデータの削除要求を行った場合のユーザ待ち時間(レスポンスタイム)を短くすることができる。
《データ検索処理》
次に、端末装置20などからデータを指定して検索要求が行われた場合について、データ検索装置10でこの指定されたデータに最も近い値のデータを検索する処理について説明する。図12は、第一の実施形態に係るデータ検索処理の一例のフローチャートである。
ステップS51において、検索処理部11は、削除データ記憶部19から削除データの識別子の一覧を取得する。これは、後述する最近傍検索処理で使用するためである。
ステップS52において、検索処理部11は、kd木索引(メイン)161を用いて、指定されたデータ(多次元ベクトルデータ)の最近傍のデータを検索する。このステップS52における最近傍検索処理の詳細については後述する。
ステップS53において、検索処理部11は、kd木索引(サブ)162を用いて、指定されたデータの最近傍のデータを検索する。このステップS53における最近傍検索処理の詳細については後述する。
ステップS54において、検索処理部11は、ステップS52から得られた最近傍のデータとステップS53から得られた最近傍のデータを比較し、指定されたデータとより近いデータを選択する。そして、検索処理部11は、選択したデータを検索要求を行った端末装置20などに送信する。
以上により、第一の実施形態におけるデータ検索装置10は、端末装置20などからデータを指定して検索要求が行われた場合、この指定されたデータと最も近い値のデータを検索して、返信することができる。したがって、例えば端末装置20から画像データを指定した検索要求が行われた場合、データ検索装置10は、この画像データに最も近い値の画像データ(類似画像データ)を検索して、返信することができる。
《最近傍検索処理》
次に、図12のステップS52及びステップS53における最近傍検索処理について説明する。図13は、第一の実施形態に係る最近傍検索処理の一例のフローチャートである。図13は、kd木索引を用いた一般的な最近傍検索処理に対して、ノードのデータが削除されたか否かを判定する処理を追加したものである。なお、図13において、端末装置20などから指定されたデータをクエリと表すこととする。また、図13において、kd木索引(メイン)161とkd木索引(サブ)162を区別せずに、単に、kd木索引と表すこととする。また、検索処理部11は、kd木索引のルートノードから最近傍検索処理を開始する。換言すると、検索処理部11は、最初に、ルートノードをカレントノードとして最近傍検索処理を開始する。なお、カレントノードとは、kd木索引のノードのうち、現在着目しているノードをいう。
ステップS61において、検索処理部11は、kd木索引のノード(カレントノード)の左のノード及び右のノードが存在しているか否かを判定する。換言すれば、検索処理部11は、カレントノードがリーフか否かを判定する。左右のノードが存在しない場合、ステップS77に進み、左右いずれかのノードが存在している場合、ステップS62に進む。
なお、最初に最近傍検索処理を実行した場合、ルートノードから開始されるため、ベクトルデータ記憶部17(又は追加データ記憶部18)のデータ数が2以上の場合、左右いずれかのノードが存在する。
ステップS62において、検索処理部11は、カレントノードの分岐次元におけるデータ値とクエリの対応する次元のデータ値を比較する。クエリのデータ値の方が小さいか又は左ノードが存在していない場合、ステップS63に進み、クエリのデータ値の方が大きく、かつ、左ノードが存在している場合、ステップS66に進む。
ステップS63において、検索処理部11は、右ノード(右側の子ノード)をカレントノードとした最近傍検索処理を行う。すなわち、検索処理部11は、再帰的に最近傍検索処理を行う。なお、カレントノードがリーフに辿りつくまで、上記のステップS61〜S63、後述するステップS66の処理が再帰的に繰り返し実行される。
ステップS64において、検索処理部11は、クエリを中心とし、ステップS63の処理結果として取得した距離を半径とする円(超球)にカレントノードのデータ(多次元ベクトルデータ)が含まれるか否かを判定する。カレントノードのデータが含まれる場合、クエリとさらに近い値のデータがカレントノード又は左ノード以下の集合に含まれる可能性があるため、ステップS65に進む。一方、カレントノードのデータが含まれない場合、クエリとさらに近い値のデータは左ノード以下の集合には含まれないため、ステップS72に進む。なお、2つの多次元ベクトルデータ間の距離は、例えばユークリッド距離を用いればよい。
ステップS65において、検索処理部11は、左ノード(左側の子ノード)をカレントノードとした最近傍検索処理を再帰的に行う。
ステップS66において、ステップS63と同様に、検索処理部11は、左ノードをカレントノードとした最近傍検索処理を再帰的に行う。
ステップS67において、ステップS64と同様に、検索処理部11は、クエリを中心とし、ステップS66の処理結果として取得した距離を半径とする円(超球)にカレントノードのデータ(多次元ベクトルデータ)が含まれるか否かを判定する。カレントノードのデータが含まれる場合、クエリとさらに近い値のデータがカレントノード又は右ノード以下の集合に含まれる可能性があるため、ステップS68に進む。一方、カレントノードのデータが含まれない場合、クエリとさらに近い値のデータは右ノード以下の集合には含まれないため、ステップS72に進む。
ステップS68において、ステップS65と同様に、検索処理部11は、右ノードをカレントノードとした最近傍検索処理を再帰的に行う。
ステップS69において、検索処理部11は、クエリと右ノードとの距離、クエリと左ノードとの距離いずれか小さい(距離として近い)かを判定する。右ノードとの距離が近い場合、ステップS70に進み、左ノードとの距離が近い場合、ステップS71に進む。
ステップS70において、検索処理部11は、右ノードのデータを取得する。
ステップS71において、検索処理部11は、左ノードのデータを取得する。
ステップS72において、検索処理部11は、カレントノードのデータが削除データか否かを判断する。すなわち、検索処理部11は、図12のステップS51で取得した削除データの識別子の一覧に、カレントノードのデータの識別子が含まれているか否かを判定する。削除データである場合、ステップS76に進み、削除データでない場合、ステップS73に進む。
ステップS73において、検索処理部11は、カレントノードのデータとクエリとの距離を求める。
ステップS74において、検索処理部11は、ステップS73で求めた距離と、ステップS70又はステップS71で取得した右ノード又は左ノードのデータとクエリとの距離を比較する。カレントノードのデータとクエリとの距離の方が近い場合、ステップS75に進み、右ノード又は左ノードのデータとクエリとの距離の方が近い場合、ステップS76に進む。
ステップS75において、検索処理部11は、カレントノードのデータとステップS73で求めた距離とを最近傍検索処理の呼び出し元に返す。
ステップS76において、検索処理部11は、右ノードのデータ又は左ノードのデータと、このデータとクエリとの距離とを最近傍検索処理の呼び出し元に返す。
ステップS77において、ステップS72と同様に、検索処理部11は、カレントノードのデータが削除データか否かを判断する。
ステップS78において、検索処理部11は、カレントノードのデータが削除データである場合、このデータとクエリとの距離を無限大と設定する。
ステップS79において、検索処理部11は、カレントノードのデータとクエリとの距離を求める。
ステップS80において、検索処理部11は、カレントノードのデータと、このデータとクエリとの距離を最近傍検索処理の呼び出し元に返す。
以上により、第一の実施形態におけるデータ検索装置10は、kd木索引を用いて端末装置20などから指定されたデータ(クエリ)に最も近い値のデータを検索することができる。
《マージ処理》
次に、追加データ記憶部18や削除データ記憶部19の内容をベクトルデータ記憶部17に反映し、kd木索引(メイン)161を再作成するマージ処理について説明する。図14は、第一の実施形態に係るマージ処理の一例のフローチャートである。なお、マージ処理は、例えば追加データ記憶部18のデータ数が所定の閾値に達していた場合などに、追加処理部12などから起動される。マージ処理が起動される場合としては、他に例えば所定の時間(例えば端末装置20からのアクセスが少ない夜間など)に行うようにしてもよいし、所定の期間(例えば1週間など)が経過したら行うようにしてもよい。
ステップS91において、マージ部15は、削除データ記憶部19から削除データの識別子の一覧を取得する。このとき取得する削除データの識別子は、kd木索引(メイン)の削除データの識別子だけでよい。
ステップS92において、マージ部15は、ステップS91で取得した削除データの識別子について、対応する識別子の多次元ベクトルデータをベクトルデータ記憶部17から削除する。
ステップS93において、マージ部15は、追加データ記憶部18に記憶されている追加用ベクトルデータをベクトルデータ記憶部17に追加する。
ステップS94において、マージ部15は、索引作成部14に処理を依頼し、索引作成部14は、ベクトルデータ記憶部17からkd木索引(メイン)161を作成する。なお、kd木索引(メイン)161を作成するための処理は、kd木索引作成処理と同様である。
ステップS95において、マージ部15は、古いkd木索引(メイン)161と、kd木索引(サブ)162を削除する。なお、マージ部15は、追加データ記憶部18及び削除データ記憶部19の内容も削除(クリア)する。
以上により、第一の実施形態におけるデータ検索装置10は、所定のタイミングでマージ処理を行うことにより、追加データ記憶部18及び削除データ記憶部19の内容をベクトルデータ記憶部17に反映(更新)することができる。また、第一の実施形態におけるデータ検索装置10は、反映後のベクトルデータ記憶部17からkd木索引(メイン)161を再作成する。これにより、端末装置20などがデータの追加や削除を行う度にkd木索引の再作成をしないので、ユーザ待ち時間が軽減される。
[第二の実施形態]
次に、第二の実施形態に係るデータ検索システム1について説明する。第二の実施形態に係るデータ検索システム1のデータ検索装置10は、端末装置20などから追加されたデータが所定数を超えた場合、kd索引(サブ)1624を再作成する。
なお、第二の実施形態に係るデータ検索システム1は、システム構成、ハードウェア構成、ソフトウェア構成が第一の実施形態に係るデータ検索システム1と同様であるため、システム構成、ハードウェア構成、ソフトウェア構成についての説明を省略する。
<処理の詳細>
図15は、第二の実施形態に係るデータ追加処理の一例のフローチャートである。なお、データ追加処理以外の各種処理は、第一の実施形態における対応する各種処理と同様であるため説明を省略する。
ステップS101の処理は、図9のステップS21の処理と同様であるため、説明を省略する。ステップS102において、追加処理部12は、kd木索引(サブ)162に挿入したノード(データ)の累計数が所定の閾値に達しているか否か判定する。累計数が所定の閾値に達している場合、ステップS104に進み、累計数が所定の閾値に達していない場合、ステップS103に進む。
ステップS103において、追加処理部12は、累計数を1増やして、kd索引(サブ)162にステップS101で追加した多次元ベクトルデータのノードを挿入する。
ステップS104において、追加処理部12は、追加データ記憶部18からkd索引(サブ)162を再作成し、累計数を0にする。ステップS105の処理は、図9のステップS23の処理と同様であるため、説明を省略する。
以上により、第二の実施形態におけるデータ検索装置10は、kd木索引(サブ)162へのノード挿入数の累計数(すなわち、追加データ記憶部18へのデータ追加数)が所定の閾値を超えた場合、kd木索引(サブ)162を再作成する。これにより、kd木索引(サブ)162がなるべく平衡二分木となるようにし、データの追加に伴うデータ検索処理の効率の低下を防止することができる。
[第三の実施形態]
次に、第三の実施形態に係るデータ検索システム1について説明する。第三の実施形態に係るデータ検索システム1のデータ検索装置10は、追加データ記憶部及び削除データ記憶部をそれぞれ2つ有している。これにより、例えばマージ処理中などにおいても端末装置20などからデータの追加・削除を行うことができる。
なお、第三の実施形態に係るデータ検索システム1は、システム構成及びハードウェア構成が第一の実施形態に係るデータ検索システム1と同様であるため、システム構成及びハードウェア構成についての説明を省略する。
<ソフトウェア構成>
第三の実施形態に係るデータ検索装置10は、例えば図16に示すような機能ブロックにより表すことができる。図16は、第三の実施形態に係るデータ検索装置の一例のソフトウェア構成図である。
第三の実施形態に係るデータ検索装置10は、検索処理部11、追加処理部12、削除処理部13、索引作成部14、マージ部15、ベクトルデータ記憶部17を有している。これらの各部は、第一の実施形態に係るデータ検索装置10の対応する各部と同様のため説明を省略する。ただし、第三の実施形態における検索処理部11は、kd木索引(メイン)161、kd木索引(サブ)162に加えて、後述するkd木索引(サブ2)163も用いて最近傍検索処理を行う。そして、kd木索引(メイン)161、kd木索引(サブ)162、kd木索引(サブ2)163のそれぞれの最近傍検索処理の結果のうち、最もクエリに近い値のデータを検索要求元に返す。
第三の実施形態に係るデータ検索装置10は、索引記憶部16を有している。索引記憶部16は、kd木索引(メイン)161、kd木索引(サブ)162、kd木索引(サブ2)163を記憶している。これらのうち、kd木索引(メイン)161及びkd木索引(サブ)162は、第一の実施形態に係るデータ検索装置10の対応する各部と同様のため説明を省略する。
また、第三の実施形態に係るデータ検索装置10は、第1追加データ記憶部20、第1削除データ記憶部21、第2追加データ記憶部22、第2削除データ記憶部23を有している。
第1追加データ記憶部20及び第1削除データ記憶部21は、それぞれ、第一の実施形態に係るデータ検索装置10の追加データ記憶部18及び削除データ記憶部19と同様であるため説明を省略する。
第2追加データ記憶部22は、データ検索装置10においてマージ処理が実行されているときに端末装置20などからデータの追加要求があった場合に、追加データを記憶する。
第2削除データ記憶部23は、データ検索装置10においてマージ処理が実行されているときに端末装置20などからデータの削除要求があった場合に、削除データの識別子を記憶する。
kd木索引(サブ2)163は、第2追加データ記憶部22から作成されたkd木索引である。kd木索引(サブ2)163の構成は、kd木索引(メイン)161及びkd木索引(サブ)162の構成と同様である。
<処理の詳細>
図17は、第三の実施形態に係るマージ処理の一例のフローチャートである。なお、特に言及したものを除き、マージ処理以外の各種処理は、第一の実施形態における対応する各種処理と同様であるため説明を省略する。
ステップS111において、マージ部15は、第2追加データ記憶部22及び第2削除データ記憶部23をそれぞれマージ処理実行中のデータ追加及びデータ削除用の記憶領域とする。ステップS112〜S116の処理は、それぞれ図14のステップS91〜S95の処理と同様であるため、説明を省略する。なお、例えば第2追加データ記憶部22に記憶されたベクトルデータは、第2追加データ記憶部22のデータ数が所定の閾値に達した場合などにベクトルデータ記憶部17に追加するようにすればよい。第2削除データ記憶部23についても同様である。
以上により、第三の実施形態に係るデータ検索システム1のデータ検索装置10は、マージ処理の実行中であっても端末装置20からデータの追加及びデータの削除を行うことができる。
[第四の実施形態]
次に、第四の実施形態に係るデータ検索システム1について説明する。第四の実施形態に係るデータ検索システム1のデータ検索装置10は、kd木索引を記憶するダンプ記憶部を有している。
なお、第四の実施形態に係るデータ検索システム1は、システム構成及びハードウェア構成が第一の実施形態に係るデータ検索システム1と同様であるため、システム構成、及びハードウェア構成についての説明を省略する。
<ソフトウェア構成>
第四の実施形態に係るデータ検索装置10は、例えば図18に示すような機能ブロックにより表すことができる。図18は、第四の実施形態に係るデータ検索装置の一例のソフトウェア構成図である。第四の実施形態に係るデータ検索装置10は、第三の実施形態に係るデータ検索装置10が有する機能ブロックに加えて、ロード・アンロード部24及びダンプ記憶部25を有する。したがって、この2つ以外の各部については、説明を省略する。
ロード・アンロード部24は、索引作成部14によるkd木索引(メイン)161の作成後に、kd木索引(メイン)161をダンプ記憶部25にメモリダンプする。また、ロード・アンロード部24は、データ検索装置10の起動直後に、ダンプ記憶部25からkd木索引(メイン)のメモリダンプを取得する。
ダンプ記憶部25は、ロード・アンロード部24がメモリダンプしたkd木索引(メイン)161を記憶する。ダンプ記憶部25は、例えばHDD108又はデータ検索装置10とネットワークを介して接続された記憶装置などにより実現することができる。
以上により、第四の実施形態に係るデータ検索システム1のデータ検索装置10は、kd木索引(メイン)161をHDD108などの二次記憶装置上に格納することができる。これにより、例えばデータ検索装置10が再起動された場合などに、ダンプ記憶部25からkd木索引(メイン)161を読み出すことで、kd木索引(メイン)161を再作成する必要がなくなり、速やかにデータ検索を行うことができる。
<まとめ>
以上の第一の実施形態に係るデータ検索装置10では、追加データ用の追加データ記憶部18と、削除データ用の削除データ記憶部19を有しており、また、追加データ記憶部18からkd木索引(サブ)162を作成している。これにより、データ検索装置10に対してデータの追加要求やデータの削除要求がある都度、kd木索引(メイン)161を再作成する必要がない。したがって、例えば端末装置20などからデータ検索装置10に対してデータの追加要求やデータの削除要求を行った場合、データの追加処理・削除処理のレスポンスタイムを短くすることができる。
また、第二の実施形態に係るデータ検索装置10では、kd木索引(サブ)162に対するノードの挿入(追加)の累積数をカウントし、累積数が所定値に達した場合、kd木索引(サブ)162の再作成を行う。これにより、kd木索引(サブ)162をなるべく平衡木に保つことができる。したがって、データ検索装置10に対してデータの追加が頻繁に行われることによるデータ検索処理の効率低下を防止することができる。
また、第三の実施形態に係るデータ検索装置10では、マージ処理実行中にデータ追加・削除が行われた場合に、これらのデータを格納する第2追加データ記憶部22と第2削除データ記憶部23を有する。これにより、マージ処理実行中であっても、データ検索装置10に対してデータの追加要求・削除要求を行うことができる。
さらに、第四の実施形態に係るデータ検索装置10では、kd木索引をメモリダンプして格納するためのダンプ記憶部25を有する。これにより、通常、主記憶装置上に記憶されるkd木索引を二次記憶装置上に記憶することができる。したがって、データ検索装置10を再起動した場合などにおいても、kd木索引をダンプ記憶部25から取得することにより、kd木索引を作成する必要がない。よって、データ検索装置10の再起動後においても、ユーザは速やかにデータ検索を行うことができる。
なお、ベクトルデータ記憶部17は、ベクトルデータ記憶手段の一例である。追加データ記憶部18及び第1追加データ記憶部20は、第1の追加データ記憶手段の一例である。削除データ記憶部19及び第1削除データ記憶部21は、第1の削除データ記憶手段の一例である。第2追加データ記憶部22は、第2の追加データ記憶手段の一例である。第2削除データ記憶部23は、第2の削除データ記憶手段の一例である。kd木索引(メイン)161は、第1の索引の一例である。kd木索引(サブ)162は、第2の索引の一例である。kd木索引(サブ2)は、第3の索引の一例である。索引作成部14は、索引作成手段の一例である。マージ部15は、マージ手段の一例である。検索処理部11は、検索手段の一例である。追加処理部12は、データ追加手段の一例である。削除処理部13は、削除データ追加手段の一例である。ダンプ記憶部25は、索引記憶手段の一例である。ロード・アンロード部24は、索引取得手段の一例である。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
1 データ検索システム
10 データ検索装置
11 検索処理部
12 追加処理部
13 削除処理部
14 索引作成部
15 マージ部
16 索引記憶部
17 ベクトルデータ記憶部
18 追加データ記憶部
19 削除データ記憶部
20 端末装置
161 kd木索引(メイン)
162 kd木索引(サブ)
特許第4219125号公報

Claims (12)

  1. 指定されたベクトルデータと最も近い値のベクトルデータを複数のベクトルデータから検索するデータ検索装置において、
    ベクトルデータと該ベクトルデータを一意に識別する識別子との組を記憶するベクトルデータ記憶手段と、
    前記ベクトルデータ記憶手段に追加するベクトルデータを記憶する第1の追加データ記憶手段と、
    前記ベクトルデータ記憶手段から削除するベクトルデータの識別子を記憶する第1の削除データ記憶手段と、
    前記ベクトルデータ記憶手段に記憶されているベクトルデータから第1の索引を作成し、前記第1の追加データ記憶手段に記憶されているベクトルデータから第2の索引を作成する索引作成手段と、
    前記第1の追加データ記憶手段に記憶されているベクトルデータのデータ数が所定の値以上になった場合、前記ベクトルデータ記憶手段、前記第1の追加データ記憶手段、及び前記第1の削除データ記憶手段を更新するマージ手段と、
    前記第1の索引と前記第2の索引とから、前記指定されたベクトルデータと最も近い値のベクトルデータを検索する検索手段と、
    を有し、
    前記索引作成手段は、前記マージ手段により更新が行われた場合、前記ベクトルデータ記憶手段に記憶されているベクトルデータから前記第1の索引を再作成し、前記第2の索引を削除する、データ検索装置。
  2. 前記第1の追加データ記憶手段にベクトルデータを追加するデータ追加手段を有し、
    前記索引作成手段は、
    前記データ追加手段により前記第1の追加データ記憶手段にベクトルデータが追加された場合、前記第1の追加データ記憶手段に記憶されているベクトルデータから第2の索引を作成又は再作成する、請求項1記載のデータ検索装置。
  3. 前記索引作成手段は、
    前記データ追加手段により前記第1の追加データ記憶手段にベクトルデータが所定のデータ数以上追加された場合、前記第1の追加データ記憶手段に記憶されているベクトルデータから第2の索引を再作成する、請求項2記載のデータ検索装置。
  4. 前記ベクトルデータ記憶手段に追加するベクトルデータを記憶する第2の追加データ記憶手段を有し、
    前記データ追加手段は、前記マージ手段による更新中である場合、前記第2の追加データ記憶手段にベクトルデータを追加する、請求項2又は3記載のデータ検索装置。
  5. 前記第1の削除データ記憶手段に削除するベクトルデータの識別子を追加する削除データ追加手段を有し、
    前記削除データ追加手段は、
    追加された識別子に対応するベクトルデータが前記第1の追加データ記憶手段に記憶されているベクトルデータである場合、前記追加された識別子に対応するベクトルデータを前記第1の追加データ記憶手段から削除する、請求項1ないし4いずれか1項に記載のデータ検索装置。
  6. 前記ベクトルデータ記憶手段から削除するベクトルデータの識別子を記憶する第2の削除データ記憶手段を有し、
    前記削除データ追加手段は、前記マージ手段による更新中である場合、前記第2の削除データ記憶手段に削除するベクトルデータの識別子を追加する、請求項5記載のデータ検索装置。
  7. 前記第1の索引及び前記第2の索引は、kd木構造であり、
    前記検索手段は、
    前記第1の索引に基づいて、前記ベクトルデータ記憶手段に記憶されているベクトルデータのうち、前記指定されたベクトルデータと最も距離が小さい第1のベクトルデータを特定し、
    前記第2の索引に基づいて、前記第1の追加データ記憶手段に記憶されているベクトルデータのうち、前記指定されたベクトルデータと最も距離が小さい第2のベクトルデータを特定し、
    前記第1のベクトルデータと前記指定されたベクトルデータとの第1の距離と、前記第2のベクトルデータと前記指定されたベクトルデータとの第2の距離とを比較することにより、前記指定されたベクトルデータと最も近い値のベクトルデータを検索する、請求項1ないし6のいずれか1項に記載のデータ検索装置。
  8. 前記検索手段は、
    前記ベクトルデータ記憶手段に記憶されているベクトルデータのうち、該ベクトルデータの識別子が前記第1の削除データ記憶手段に記憶されている場合、前記ベクトルデータと前記指定されたベクトルデータとの距離を無限大とする、請求項7記載のデータ検索装置。
  9. 索引作成手段は、さらに、第2の追加データ記憶手段に記憶されているベクトルデータから第3の索引を作成し、
    前記検索手段は、前記第1の索引と前記第2の索引と前記第3の索引とから、前記指定されたベクトルデータと最も近い値のベクトルデータを検索する、請求項8記載のデータ検索装置。
  10. 前記第1の索引を記憶する索引記憶手段と、
    前記索引記憶手段から前記第1の索引を取得する索引取得手段を有し、
    前記索引取得手段は、前記データ検索装置の起動時に、前記索引記憶手段から前記第1の索引を取得する、請求項1ないし9いずれか1項に記載のデータ検索装置。
  11. 指定されたベクトルデータと最も近い値のベクトルデータを複数のベクトルデータから検索するコンピュータを、
    ベクトルデータと該ベクトルデータを一意に識別する識別子との組を記憶するベクトルデータ記憶手段に記憶されているベクトルデータから第1の索引を作成し、前記ベクトルデータ記憶手段に追加するベクトルデータを記憶する追加データ記憶手段に記憶されているベクトルデータから第2の索引を作成する索引作成手段、
    前記追加データ記憶手段に記憶されているベクトルデータのデータ数が所定の値以上になった場合、前記ベクトルデータ記憶手段、前記追加データ記憶手段、及び前記ベクトルデータ記憶手段から削除するベクトルデータの識別子を記憶する削除データ記憶手段を更新するマージ手段、
    前記第1の索引と前記第2の索引とから、前記指定されたベクトルデータと最も近い値のベクトルデータを検索する検索手段、
    として機能させ、
    前記索引作成手段は、前記マージ手段により更新が行われた場合、前記ベクトルデータ記憶手段に記憶されているベクトルデータから前記第1の索引を再作成し、前記第2の索引を削除する、プログラム。
  12. 1台以上の端末装置と、該端末装置から指定されたベクトルデータと最も近い値のベクトルデータを複数のベクトルデータから検索するデータ検索装置とを有するデータ検索システムにおいて、
    ベクトルデータと該ベクトルデータを一意に識別する識別子との組を記憶するベクトルデータ記憶手段と、
    前記ベクトルデータ記憶手段に追加するベクトルデータを記憶する追加データ記憶手段と、
    前記ベクトルデータ記憶手段から削除するベクトルデータの識別子を記憶する削除データ記憶手段と、
    前記ベクトルデータ記憶手段に記憶されているベクトルデータから第1の索引を作成し、前記追加データ記憶手段に記憶されているベクトルデータから第2の索引を作成する索引作成手段と、
    前記追加データ記憶手段に記憶されているベクトルデータのデータ数が所定の値以上になった場合、前記ベクトルデータ記憶手段、前記追加データ記憶手段、及び前記削除データ記憶手段を更新するマージ手段と、
    前記第1の索引と前記第2の索引とから、前記指定されたベクトルデータと最も近い値のベクトルデータを検索する検索手段と、
    を有し、
    前記索引作成手段は、前記マージ手段により更新が行われた場合、前記ベクトルデータ記憶手段に記憶されているベクトルデータから前記第1の索引を再作成し、前記第2の索引を削除する、データ検索システム。
JP2014031530A 2014-02-21 2014-02-21 データ検索装置、プログラム、及びデータ検索システム Active JP6273892B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014031530A JP6273892B2 (ja) 2014-02-21 2014-02-21 データ検索装置、プログラム、及びデータ検索システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014031530A JP6273892B2 (ja) 2014-02-21 2014-02-21 データ検索装置、プログラム、及びデータ検索システム

Publications (2)

Publication Number Publication Date
JP2015156179A JP2015156179A (ja) 2015-08-27
JP6273892B2 true JP6273892B2 (ja) 2018-02-07

Family

ID=54775443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014031530A Active JP6273892B2 (ja) 2014-02-21 2014-02-21 データ検索装置、プログラム、及びデータ検索システム

Country Status (1)

Country Link
JP (1) JP6273892B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10176630B2 (en) * 2016-12-06 2019-01-08 Biosense Webster (Israel) Ltd. Updating an electroanatomical map

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003330943A (ja) * 2002-05-17 2003-11-21 Fujitsu Ltd 多次元インデクス生成装置、多次元インデクス生成方法、近似情報作成装置、近似情報作成方法、及び検索装置
JP4498409B2 (ja) * 2007-12-28 2010-07-07 株式会社エスグランツ データベースのインデックスキー更新方法及びプログラム
JP5014399B2 (ja) * 2009-10-20 2012-08-29 ヤフー株式会社 検索データ管理装置
US20110153677A1 (en) * 2009-12-18 2011-06-23 Electronics And Telecommunications Research Institute Apparatus and method for managing index information of high-dimensional data
WO2012070144A1 (ja) * 2010-11-26 2012-05-31 株式会社日立製作所 データベースの管理方法、データベース管理装置及び記憶媒体
JP5906810B2 (ja) * 2012-02-29 2016-04-20 株式会社リコー 全文検索装置、プログラム及び記録媒体
WO2013145129A1 (ja) * 2012-03-27 2013-10-03 富士通株式会社 データベース管理方法、プログラム、および情報処理装置

Also Published As

Publication number Publication date
JP2015156179A (ja) 2015-08-27

Similar Documents

Publication Publication Date Title
KR101972645B1 (ko) 클러스터링 저장 방법 및 장치
US10606865B2 (en) Database scale-out
US10783115B2 (en) Dividing a dataset into sub-datasets having a subset of values of an attribute of the dataset
US20100169326A1 (en) Method, apparatus and computer program product for providing analysis and visualization of content items association
CN109522271B (zh) 一种b+树节点的批量插入和删除方法及装置
TW200825800A (en) Dynamic fragment mapping
CN110888837B (zh) 对象存储小文件归并方法及装置
WO2020057272A1 (zh) 一种索引数据存储及检索方法、装置及存储介质
CN105989015B (zh) 一种数据库扩容方法和装置以及访问数据库的方法和装置
CN110168532A (zh) 数据更新方法和存储装置
KR20140038441A (ko) 압축 매치 열거 기법
JP2017194753A (ja) 符号化プログラム、符号化方法、符号化装置、検索プログラム、検索方法および検索装置
CN113297432B (zh) 用于分区拆分与合并的方法、处理器可读介质和系统
US20190243811A1 (en) Generation method, generation device, and computer-readable recording medium
JP6273892B2 (ja) データ検索装置、プログラム、及びデータ検索システム
US7814079B2 (en) Apparatus and method for managing file
US11200205B2 (en) Displaying an alert and options when deleting a file that is associated with a sequence of files
KR102354343B1 (ko) 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치
EP3995972A1 (en) Metadata processing method and apparatus, and computer-readable storage medium
KR20220099745A (ko) 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치
JP2010191903A (ja) 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム
US10372917B1 (en) Uniquely-represented B-trees
JP2020161089A (ja) 情報処理装置、情報処理方法、およびプログラム
Pintér et al. Comparison of Source Code Storage Methods
JP7130019B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171121

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171225

R151 Written notification of patent or utility model registration

Ref document number: 6273892

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151