JP5526985B2 - Search program, search device, and search method - Google Patents
Search program, search device, and search method Download PDFInfo
- Publication number
- JP5526985B2 JP5526985B2 JP2010104013A JP2010104013A JP5526985B2 JP 5526985 B2 JP5526985 B2 JP 5526985B2 JP 2010104013 A JP2010104013 A JP 2010104013A JP 2010104013 A JP2010104013 A JP 2010104013A JP 5526985 B2 JP5526985 B2 JP 5526985B2
- Authority
- JP
- Japan
- Prior art keywords
- bloom filter
- transposed
- search
- data
- bit
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 92
- 230000008569 process Effects 0.000 claims description 62
- 230000006870 function Effects 0.000 claims description 43
- 230000017105 transposition Effects 0.000 claims description 42
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000007726 management method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 238000001914 filtration Methods 0.000 description 12
- 230000003287 optical effect Effects 0.000 description 8
- 238000003491 array Methods 0.000 description 7
- 238000013479 data entry Methods 0.000 description 7
- 230000004913 activation Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012015 optical character recognition Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、ブルームフィルタを用いてデータを検索する検索プログラム、検索装置、および検索方法に関する。 The present invention relates to a search program, a search device, and a search method for searching for data using a Bloom filter.
従来、大規模なデータを木構造で管理する場合、B木(Btree)と呼ばれるデータ構造での管理が比較的多く行われていた。B木は、単純な2分木に比べて、一つのブロックに複数のデータエントリを格納するので、データエントリの追加があっても木構造の形の変化が波及する範囲を狭くできるという利点がある。このため、B木はハードディスクなどのディスク向けのデータ管理方法として利用されることが多い。 Conventionally, when large-scale data is managed in a tree structure, a relatively large amount of data is managed in a data structure called a B-tree. Compared to a simple binary tree, the B-tree stores a plurality of data entries in one block, and therefore has an advantage that the range in which the change in the shape of the tree structure spreads can be narrowed even if data entries are added. is there. For this reason, the B-tree is often used as a data management method for a disk such as a hard disk.
しかしながら、ディスク上において木構造で管理されたデータを検索する場合、複数のデータブロックを実際に読み込む必要がある。また、一般に、ディスクに対するI/O(input/output)は、メモリアクセスに比べると遅いことから、ディスク上でのデータ検索には手間と時間を要するおそれがある。 However, when retrieving data managed in a tree structure on the disk, it is necessary to actually read a plurality of data blocks. In general, I / O (input / output) for a disk is slower than memory access, and thus searching for data on the disk may take time and effort.
このため、最近では、ディスクI/Oによる検索の遅延を避けるためには、メモリ中に木構造をもつなどの対応も考えられている。しかるに、B木では、データエントリ数が多くなると、それに応じて必要なメモリ量が増えてしまうおそれがある。このため、木構造のうち最も良く読みこまれる部分のみをメモリ中に格納する方法(キャッシュ)を利用する方法も考えられている。 For this reason, recently, in order to avoid a search delay due to disk I / O, a countermeasure such as having a tree structure in the memory has been considered. However, in the B-tree, when the number of data entries increases, there is a possibility that the required memory amount increases accordingly. For this reason, a method using a method (cache) in which only the most read portion of the tree structure is stored in the memory is also considered.
これに対し、最近では、ブルームフィルタ(Bloom Filter)と呼ばれるデータ構造も知られてきている。ブルームフィルタは、あるエントリが既存の集合に属するかどうかを効率的に調べる方法である。また、電子交換機のダイヤルパルス処理で、ダイヤルパルスにパルス速度ビットと偶数/奇数ビットの2つを設けておき、そのビットを取り込む群処理も開示されている。 On the other hand, a data structure called a Bloom filter has recently been known. The Bloom filter is a method for efficiently checking whether an entry belongs to an existing set. In addition, there is also disclosed a group process in which two pulse speed bits and even / odd bits are provided in the dial pulse in the dial pulse process of the electronic exchange, and the bits are fetched.
上述したように、B木は多量のデータを扱うことができるため、キャッシュを適切に実装すれば、ディスクI/Oを減らすことは可能である。しかしながら、その回数はある一定以上減らすことはできない。また、データエントリの追加により木構造が変化すると、木構造管理のためのI/Oが必要になることもある。また、ブルームフィルタは、データエントリの存在だけがわかるものであるため、そのままではデータ管理に使うことはできない。 As described above, since the B-tree can handle a large amount of data, it is possible to reduce disk I / O if a cache is appropriately mounted. However, the number of times cannot be reduced beyond a certain level. Further, when the tree structure changes due to the addition of the data entry, I / O for managing the tree structure may be required. In addition, the Bloom filter can only be used for data management because it knows only the existence of a data entry.
本発明は、上述した従来技術による問題点を解消するため、ブルームフィルタを用いたときのデータ検索の高速化を図ることができる検索プログラム、検索装置、および検索方法を提供することを目的とする。 An object of the present invention is to provide a search program, a search device, and a search method capable of speeding up data search when a Bloom filter is used in order to solve the above-described problems caused by the prior art. .
上述した課題を解決し、目的を達成するため、データブロックごとに登録済のデータ群を含むデータブロック集合と、所定数のデータブロック内での陰性を示すビットがm個配列されたブルームフィルタが前記所定数のデータブロック単位でn個配列されたブルームフィルタ列と、にアクセス可能な場合に、前記ブルームフィルタ列の転置要求を受け付け、転置要求が受け付けられた場合、前記ブルームフィルタ列を、前記各ブルームフィルタ内のビット列を同一位置のビットどうしでまとめたnビットの転置ブルームフィルタがm個配列された転置ブルームフィルタ列に転置し、転置された転置ブルームフィルタ列を用いて、前記データブロック集合内でのデータの有無を判定することを要件とする。 In order to solve the above-mentioned problems and achieve the object, a data block set including a registered data group for each data block and a Bloom filter in which m bits indicating negative in a predetermined number of data blocks are arranged When the n number of Bloom filter columns arranged in units of the predetermined number of data blocks can be accessed, a transposition request for the Bloom filter column is accepted, and when a transposition request is accepted, the Bloom filter sequence is The data block set is transposed to a transposed Bloom filter sequence in which n-bit transposed Bloom filters in which bit sequences in each Bloom filter are collected by bits at the same position are arranged, and the transposed Bloom filter sequence is used. It is a requirement to determine the presence or absence of data in the network.
本発明にかかる検索プログラム、検索装置、および検索方法によれば、ブルームフィルタを用いたときのデータ検索の高速化を図ることができることという効果を奏する。 According to the search program, the search device, and the search method according to the present invention, it is possible to increase the speed of data search when using the Bloom filter.
以下に添付図面を参照して、本発明にかかる検索プログラム、検索装置、および検索方法の実施の形態を詳細に説明する。まず、本実施の形態にかかる管理装置の構成例について説明する。 Embodiments of a search program, a search device, and a search method according to the present invention will be described below in detail with reference to the accompanying drawings. First, a configuration example of the management apparatus according to the present embodiment will be described.
<管理装置のハードウェア構成例>
図1は、実施の形態にかかる管理装置のハードウェア構成例を示すブロック図である。図1において、検索装置は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、磁気ディスクドライブ104と、磁気ディスク105と、光ディスクドライブ106と、光ディスク107と、ディスプレイ108と、I/F(Interface)109と、キーボード110と、マウス111と、スキャナ112と、プリンタ113と、を備えている。また、各構成部はバス100によってそれぞれ接続されている。
<Hardware configuration example of management device>
FIG. 1 is a block diagram of a hardware configuration example of the management apparatus according to the embodiment. In FIG. 1, the search device includes a CPU (Central Processing Unit) 101, a ROM (Read Only Memory) 102, a RAM (Random Access Memory) 103, a
ここで、CPU101は、管理装置の全体の制御を司る。ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPU101のワークエリアとして使用される。磁気ディスクドライブ104は、CPU101の制御にしたがって磁気ディスク105に対するデータのリード/ライトを制御する。磁気ディスク105は、磁気ディスクドライブ104の制御で書き込まれたデータを記憶する。
Here, the
光ディスクドライブ106は、CPU101の制御にしたがって光ディスク107に対するデータのリード/ライトを制御する。光ディスク107は、光ディスクドライブ106の制御で書き込まれたデータを記憶したり、光ディスク107に記憶されたデータをコンピュータに読み取らせたりする。
The
ディスプレイ108は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ108は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
The
インターフェース(以下、「I/F」と略する。)109は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク114に接続され、このネットワーク114を介して他の装置に接続される。そして、I/F109は、ネットワーク114と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F109には、たとえばモデムやLANアダプタなどを採用することができる。
An interface (hereinafter abbreviated as “I / F”) 109 is connected to a
キーボード110は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス111は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
The
スキャナ112は、画像を光学的に読み取り、管理装置内に画像データを取り込む。なお、スキャナ112は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ113は、画像データや文書データを印刷する。プリンタ113には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
The
<管理装置の機能的構成例>
図2は、本実施の形態にかかる管理装置の構成例を示すブロック図である。管理装置200は、データブロック集合dbと、ハッシュテーブル群HTsと、階層型ブルームフィルタBFと、階層型転置ブルームフィルタtBFと、登録処理部201と、検索処理部202と、を備えている。
<Functional configuration example of management device>
FIG. 2 is a block diagram illustrating a configuration example of the management apparatus according to the present embodiment. The
データブロック集合dbは、複数のデータブロックを有しており、各データブロックは、登録されたデータを保持している。なお、個々のデータブロックをdb#と表記する。#は数字であり、ブロック番号を示す。ブロック番号#は、そのデータブロックdb#のビット位置に対応する。 The data block set db has a plurality of data blocks, and each data block holds registered data. Each data block is represented as db #. # Is a number indicating the block number. The block number # corresponds to the bit position of the data block db #.
ハッシュテーブル群HTsは、データブロック集合db内の各データブロックdb#に対応するハッシュテーブルの集合である。なお、個々のハッシュテーブルをHT#と表記する。#は数字であり、データブロックdb#のブロック番号と一致する。ハッシュテーブルHT#は、データをある特定のハッシュ関数に与えたときのハッシュ値と、ハッシュ値の生成元となるデータ(データそのものでもデータへのポインタでもよい)を関連付けたテーブルである。 The hash table group HTs is a set of hash tables corresponding to each data block db # in the data block set db. Each hash table is represented as HT #. # Is a number and matches the block number of the data block db #. The hash table HT # is a table in which a hash value when data is given to a specific hash function is associated with data that is a generation source of the hash value (data itself or a pointer to the data).
図3は、ハッシュテーブル群HTsの一例を示す説明図である。図3では、ハッシュ関数としてSHA−1を用いている。なお、どのハッシュ関数を用いるかはあらかじめ設定しておけばよい。 FIG. 3 is an explanatory diagram showing an example of the hash table group HTs. In FIG. 3, SHA-1 is used as the hash function. In addition, what hash function is used may be set in advance.
図2に戻って、階層型ブルームフィルタBFは、ブルームフィルタを階層構造にしたインデックス情報である。階層型ブルームフィルタBFについては後述する。ブルームフィルタとは、所定数のデータブロック内での擬陽性(疑陽性、偽陽性ともいう)/陰性を示すビットが複数配列されたインデックス情報である。ブルームフィルタのビットがONのときは擬陽性を示し、OFFのときは陰性を示す。なお、ビットの値が1をONとし、0をOFFとしてもよく、逆に、ビットの値が0をONとし、1をOFFとしてもよい。本実施の形態では、ビットの値が1をONとし、0をOFFとする。 Returning to FIG. 2, the hierarchical Bloom filter BF is index information in which the Bloom filter has a hierarchical structure. The hierarchical Bloom filter BF will be described later. The Bloom filter is index information in which a plurality of bits indicating false positives (also called false positives or false positives) / negatives in a predetermined number of data blocks are arranged. When the Bloom filter bit is ON, it indicates false positive, and when it is OFF, it indicates negative. The bit value may be set to 1 and 0 may be set to OFF. Conversely, the bit value may be set to 0 and 1 may be set to OFF. In this embodiment, the bit value is set to 1 and 0 is set to OFF.
階層型転置ブルームフィルタtBFは、階層型ブルームフィルタBFを転置したインデックス情報である。階層型転置ブルームフィルタtBFは、検索処理部202により生成される。階層型転置ブルーフィルタtBFの詳細は後述する。
The hierarchical transposed Bloom filter tBF is index information obtained by transposing the hierarchical Bloom filter BF. The hierarchical transposed Bloom filter tBF is generated by the
データブロック集合db、ハッシュテーブル群HTs、および階層型ブルームフィルタBFは、図1に示したROM102、RAM103、磁気ディスク105などの記憶装置に記憶される。また、図2では、データブロック集合db、ハッシュテーブル群HTs、および階層型ブルームフィルタBFは、管理装置200内に記憶させているが、管理装置200外の外部装置に記憶させてもよい。この場合、管理装置200は、ネットワークを介して外部装置から読み出したり、外部装置に書き込んだりする。
The data block set db, the hash table group HTs, and the hierarchical Bloom filter BF are stored in a storage device such as the
登録処理部201は、データブロック集合dbに登録したいデータがエントリされると、データブロック集合dbの空き領域に登録する。データの登録の際には、ハッシュ関数によりハッシュ値を求め、登録先のデータブロックdb#に対応するハッシュテーブルHT#に、データ(またはそのポインタ)とハッシュ値とを追加する。また、登録先のデータブロックdb#にデータが新規に登録されたことを階層型ブルームフィルタBFに学習させるため、登録処理部201は、階層型ブルームフィルタBFを更新する。
When the data to be registered is entered in the data block set db, the
検索処理部202は、検索対象データが入力されると、階層型ブルームフィルタBFを参照して、検索対象データが存在するであろうデータブロックdb#を特定する。検索対象データが存在するであろうデータブロックdb#が特定されなかった場合は、いずれのデータブロックdb#にも検索対象データは存在しない(陰性)。逆に、検索対象データが存在するであろうデータブロックdb#が特定された場合でも、特定されたデータブロックdb#には、必ずしも検索対象データが存在するとは限らない(擬陽性)。
When the search target data is input, the
なお、擬陽性が陽性になるか陰性になるかは、検索処理部202により最終的に特定されたデータブロックdb#に対応するハッシュテーブルHT#での検索結果に依存する。たとえば、検索処理部202により最終的に特定されたデータブロックdb#に対応するハッシュテーブルHT#において、検索対象データのハッシュ値がヒットすれば陽性、ヒットしなければ陰性となる。
Whether the false positive becomes positive or negative depends on the search result in the hash table HT # corresponding to the data block db # finally specified by the
なお、上述した登録処理部201および検索処理部202は、具体的には、たとえば、図1に示したROM102、RAM103、磁気ディスク105、光ディスク107などの記憶装置に記憶されたプログラムをCPU101に実行させることにより、その機能を実現する。
Specifically, the above-described
<階層型ブルームフィルタBF>
図4は、階層型ブルームフィルタBFの一例を示す説明図である。階層型ブルームフィルタBFは、h段×sビット幅のメモリ領域で構成されている。sビット幅は、データブロック集合dbのビット幅に対応する。また、各段のビット長sは最上段である第h段の分割数dに基づいて分割される。分割された各々はブルームフィルタであり、各段においてブルームフィルタ列を構成する。分割数dは基本的には2以上の整数であるが、最上段である第h段を単一のブルームフィルタとする場合は、d=1としてもよい。
<Hierarchical Bloom Filter BF>
FIG. 4 is an explanatory diagram showing an example of the hierarchical Bloom filter BF. The hierarchical Bloom filter BF is configured by a memory area of h stages × s bits width. The s bit width corresponds to the bit width of the data block set db. The bit length s of each stage is divided based on the division number d of the h-th stage that is the uppermost stage. Each of the divided parts is a Bloom filter and forms a Bloom filter row in each stage. The number of divisions d is basically an integer of 2 or more, but d = 1 may be used when the h-th stage as the uppermost stage is a single Bloom filter.
任意の段をpとすると、第p段のブルームフィルタ列BF(p)を構成するブルームフィルタbf(p)のビット幅mは、m=s/d[h-(p-1)]となる。図4では、d=2としている。また、第p段のブルームフィルタ列BF(p)のブルームフィルタbf(p)の配列数nは、n=d[h-(p-1)]となる。 When an arbitrary stage is p, the bit width m of the Bloom filter bf (p) constituting the p-th Bloom filter row BF (p) is m = s / d [h− (p−1)]. . In FIG. 4, d = 2. The number n of arrangement of the Bloom filters bf (p) in the p-th Bloom filter row BF (p) is n = d [h− (p−1)] .
したがって、階層型ブルームフィルタBFでは、段が下がる(hが小さくなる)につれ、第p段のブルームフィルタ列BF(p)のブルームフィルタbf(p)の配列数が増加する。なお、最下段(第1段)のブルームフィルタ列Bf(1)のブルームフィルタbf(1)の配列個数は、データブロックdb#の個数と同一とする。 Therefore, in the hierarchical Bloom filter BF, the number of arrangements of the Bloom filters bf (p) in the p-th Bloom filter row BF (p) increases as the level decreases (h decreases). Note that the number of arrangement of the bloom filters bf (1) in the lowermost (first) Bloom filter row Bf (1) is the same as the number of data blocks db #.
これにより、第1段までたどり着いたときにビットしたブルームフィルタbf(1)とデータブロックdb#とが一対一対応することになる。また、階層型ブルームフィルタBFの段数hは基本的には複数段であるが、1段(h=1)としてもよい。ただし、この場合は、d≠1とする。 As a result, the Bloom filter bf (1) bitted when reaching the first level has a one-to-one correspondence with the data block db #. The number of stages h of the hierarchical Bloom filter BF is basically a plurality of stages, but may be one stage (h = 1). However, in this case, d ≠ 1.
<階層型ブルームフィルタBFの学習処理例>
図5は、登録処理部201による階層型ブルームフィルタBFの学習処理例を示す説明図である。図5では、説明上、全ビット幅s=4096ビット、段数h=3段、第h段での分割数d=2とする。
<Example of learning process of hierarchical Bloom filter BF>
FIG. 5 is an explanatory diagram showing an example of learning processing of the hierarchical Bloom filter BF by the
したがって、最下段である第1段のブルームフィルタ列BF(1)は、8(=d[h-(p-1)]=23)分割されてブルームフィルタbf(1−1)〜bf(1−8)により構成される。また、第2段のブルームフィルタ列BF(2)は、4(=d[h-(p-1)]=22)分割されてブルームフィルタbf(2−1)〜bf(2−4)により構成される。また、最上段である第3段のブルームフィルタ列BF(3)は、2(=d[h-(p-1)]=21)分割されてブルームフィルタbf(3−1)〜bf(3−2)により構成される。 Accordingly, the first-stage Bloom filter row BF (1), which is the lowermost stage, is divided into 8 (= d [h- (p-1)] = 2 3 ) and Bloom filters bf (1-1) to bf ( 1-8). The second-stage Bloom filter row BF (2) is divided into 4 (= d [h- (p-1)] = 2 2 ) to obtain Bloom filters bf (2-1) to bf (2-4). Consists of. The third-stage Bloom filter row BF (3), which is the uppermost stage, is divided into 2 (= d [h- (p-1)] = 2 1 ) and Bloom filters bf (3-1) to bf ( 3-2).
また、登録される対象データDが与えられるハッシュ関数の種類数kをk=3とする。ここでは、ハッシュ関数H1(),H2(),H3()を用いることとする。また、ハッシュテーブルの登録対象となるハッシュ関数をH1()とする。 Further, the number k of hash functions to which the registered target data D is given is set to k = 3. Here, the hash functions H1 (), H2 (), and H3 () are used. A hash function to be registered in the hash table is H1 ().
まず、データブロック集合dbのうちデータブロックdb3に対象データDが登録されたものとする。対象データDを各ハッシュ関数H1(),H2(),H3()に与えたときのハッシュ値は、例として以下の値とする。
H1(D)=1234567
H2(D)=3984012
H3(D)=9803323
First, it is assumed that the target data D is registered in the data block db3 in the data block set db. As an example, the hash values when the target data D is given to the hash functions H1 (), H2 (), and H3 () are as follows.
H1 (D) = 1234567
H2 (D) = 3984012
H3 (D) = 9803323
また、階層型ブルームフィルタBFの学習処理では、更新対象となるブルームフィルタ内の特定のビットをONにするが、その特定のビットがすでにONになっている場合はそのままとする。 In the learning process of the hierarchical Bloom filter BF, a specific bit in the Bloom filter to be updated is turned on, but if the specific bit is already turned on, it is left as it is.
ここで、登録処理部201は、登録先のデータブロックdb3のブロック番号3のハッシュテーブルHT3に対するハッシュテーブルエントリE3を作成する。そして、登録処理部201は、作成されたハッシュテーブルエントリE3を、ハッシュテーブルHT3に追加登録する。
Here, the
つぎに、登録処理部201は、更新対象となるブルームフィルタを、第1段のブルームフィルタ列BF(1)の中から特定する。最下段では、登録先のデータブロックdb3のブロック番号3と同一配列番号であるブルームフィルタbf(1−3)が対応する。したがって、ブルームフィルタbf(1−3)を更新対象とする。ブルームフィルタbf(1−3)は512ビットのビット列である。
Next, the
また、登録処理部201は、各ハッシュ値を、第1段のブルームフィルタbf(1)のビット幅である512で割り算し、余り値を算出する。ハッシュ値H1(D)の余り値は「135」、ハッシュ値H2(D)の余り値は「140」、ハッシュ値H3(D)の余り値は「59」になったものとする。
Also, the
つぎに、登録処理部201は、更新対象のブルームフィルタにおいて余り値に対応する位置のビットをONにする。なお、余り値が0の場合は、更新対象のブルームフィルタの末尾ビットをONにする。図5の例では、ブルームフィルタbf(1−3)は、512ビット有するため、余り値「135」については、先頭から135番目のビットをONにする。同様に、余り値「140」については、先頭から140番目のビットをONにする。余り値「59」については、先頭から59番目のビットをONにする。これにより、第1段での学習処理を終了する。
Next, the
つぎに、第2段の学習処理に移る。登録処理部201は、更新対象となるブルームフィルタを、第2段のブルームフィルタ列BF(2)の中から特定する。具体的には、第1段での更新対象のブルームフィルタbf(1−3)のビット位置を包含するブルームフィルタを、第2段のブルームフィルタ列BF(2)の中から特定する。本例では、ブルームフィルタbf(2−2)となる。より具体的には、前段の第1段での更新対象のブルームフィルタbf(1−3)の配列番号3を、分割数d(=2)で割り算し、端数を切り上げることで、更新対象の配列番号は2となる。したがって、ブルームフィルタbf(2−2)が特定される。
Next, the learning process of the second stage is started. The
そして、登録処理部201は、各ハッシュ値を、第2段のブルームフィルタbf(2)のビット幅である1024で割り算し、余り値を算出する。ハッシュ値H1(D)の余り値は「647」、ハッシュ値H2(D)の余り値は「652」、ハッシュ値H3(D)の余り値は「571」になったものとする。
Then, the
つぎに、登録処理部201は、更新対象のブルームフィルタにおいて余り値に対応する位置のビットをONにする。なお、余り値が0の場合は、更新対象のブルームフィルタの末尾ビットをONにする。図5の例では、ブルームフィルタbf(2−2)は、1024ビット有するため、余り値「647」については、先頭から647番目のビットをONにする。同様に、余り値「652」については、先頭から652番目のビットをONにする。余り値「571」については、先頭から571番目のビットをONにする。これにより、第2段での学習処理を終了する。
Next, the
つぎに、最上段である第3段の学習処理に移る。登録処理部201は、更新対象となるブルームフィルタを、第3段のブルームフィルタ列BF(3)の中から特定する。具体的には、第2段での更新対象のブルームフィルタbf(2−2)のビット位置を包含するブルームフィルタを、第3段のブルームフィルタ列BF(3)の中から特定する。本例では、ブルームフィルタbf(3−1)となる。より具体的には、前段の第2段での更新対象のブルームフィルタbf(2−2)の配列番号2を、分割数d(=2)で割り算することで、更新対象の配列番号は1となる。したがって、ブルームフィルタbf(3−1)が特定される。
Next, the process moves to the third-stage learning process, which is the uppermost stage. The
そして、登録処理部201は、各ハッシュ値を、第3段のブルームフィルタbf(3)のビット幅である2048で割り算し、余り値を算出する。ハッシュ値H1(D)の余り値は「1671」、ハッシュ値H2(D)の余り値は「652」、ハッシュ値H3(D)の余り値は「1595」になったものとする。
Then, the
つぎに、登録処理部201は、更新対象のブルームフィルタにおいて余り値に対応する位置のビットをONにする。なお、余り値が0の場合は、更新対象のブルームフィルタの末尾ビットをONにする。図5の例では、ブルームフィルタbf(3−1)は、2048ビット有するため、余り値「1671」については、先頭から1671番目のビットをONにする。同様に、余り値「652」については、先頭から652番目のビットをONにする。余り値「1595」については、先頭から1595番目のビットをONにする。これにより、第3段での学習処理を終了する。
Next, the
このような手順により、登録処理部201は、階層型ブルームフィルタBFにデータエントリを学習させることとなる。
With this procedure, the
<階層型ブルームフィルタBFを用いた検索処理例>
図6は検索処理部202による階層型ブルームフィルタBFの検索処理例を示す説明図である。図6では、図5と同一の階層型ブルームフィルタBFを用いて説明する。なお、図6では、図5で登録された対象データDを検索対象データとして検索する例について説明する。
<Example of search processing using hierarchical Bloom filter BF>
FIG. 6 is an explanatory diagram showing an example of search processing of the hierarchical Bloom filter BF by the
図5に示した学習処理では、最下段の第1段から処理したが、検索処理では最上段(図6の場合は第3段)から処理をおこなう。まず、検索処理部202は、対象データDについての3個のハッシュ値を、第3段の各ブルームフィルタbf(3)のビット幅2048で割り算したときの余り値「1671」、「652」、「1595」を求める。
In the learning process shown in FIG. 5, processing is performed from the first stage at the bottom, but in the search process, processing is performed from the top (the third stage in the case of FIG. 6). First, the
つぎに、検索処理部202は、フィルタリング対象となるブルームフィルタを第3段のブルームフィルタ列BF(3)から特定する。第3段は最上段であるため、無条件で第3段のすべてのブルームフィルタbf(3−1),bf(3−2)が特定される。
Next, the
そして、検索処理部202は、フィルタリング対象に特定されたブルームフィルタ群の中から、算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタを特定する。第3段の場合、ブルームフィルタbf(3−1),bf(3−2)はいずれも、算出した余り値に対応する位置のビットがすべてONになっているものとする。これにより、第3段でのフィルタリング処理を終了する。
Then, the
つぎに、第2段のフィルタリング処理に移る。検索処理部202は、対象データDについての3個のハッシュ値を、第2段の各ブルームフィルタbf(2)のビット幅1024で割り算したときの余り値「647」、「652」、「571」を求める。
Next, the process proceeds to the second-stage filtering process. The
つぎに、検索処理部202は、フィルタリング対象となるブルームフィルタを第2段のブルームフィルタ列BF(2)から特定する。最上段を除く残余の段の場合、1つ上の段において、算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタbf(p+1)を探し、そのブルームフィルタbf(p+1)のビット位置に包含されるブルームフィルタbf(p)をフィルタリング対象とする。
Next, the
第2段の場合、第3段で算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタbf(3−1),bf(3−2)のビット位置に包含されるブルームフィルタbf(2−1)〜bf(2−4)をフィルタリング対象とする。 In the case of the second stage, the blooms included in the bit positions of the Bloom filters bf (3-1) and bf (3-2) in which all the bits at the positions corresponding to the remainder values calculated in the third stage are ON. Filters bf (2-1) to bf (2-4) are targeted for filtering.
そして、検索処理部202は、フィルタリング対象に特定されたブルームフィルタ群の中から、算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタを特定する。第2段の場合、ブルームフィルタbf(2−2),bf(2−3)は、算出した余り値に対応する位置のビットがすべてONになっているものとする。一方、ブルームフィルタbf(2−1),bf(2−4)については、算出した余り値に対応する位置のビットのいずれかがOFFであるものとする。
Then, the
したがって、ブルームフィルタbf(2−1),bf(2−4)のビット位置に包含される下位の段のブルームフィルタbf(1−1),bf(1−2),bf(1−7),bf(1−8)は、フィルタリング対象外となり、対象データDの存在するデータブロックdb#は、ブルームフィルタbf(2−2),bf(2−3)のビット位置に包含されるデータブロックdb#に絞り込まれる。これにより、第2段でのフィルタリング処理を終了する。 Therefore, the lower-stage Bloom filters bf (1-1), bf (1-2), bf (1-7) included in the bit positions of the Bloom filters bf (2-1) and bf (2-4). , Bf (1-8) are excluded from filtering, and the data block db # in which the target data D exists is a data block included in the bit positions of the Bloom filters bf (2-2), bf (2-3). It is narrowed down to db #. Thereby, the filtering process in the second stage is completed.
つぎに、最下段である第1段のフィルタリング処理に移る。検索処理部202は、対象データDについての3個のハッシュ値を、第1段の各ブルームフィルタbf(1)のビット幅512で割り算したときの余り値「135」、「140」、「59」を求める。
Next, the process proceeds to the first-stage filtering process which is the lowest stage. The
つぎに、検索処理部202は、フィルタリング対象となるブルームフィルタを第1段のブルームフィルタ列BF(1)から特定する。第1段の場合、第2段で算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタbf(2−2),bf(2−3)のビット位置に包含されるブルームフィルタbf(1−3)〜bf(1−6)をフィルタリング対象とする。
Next, the
そして、検索処理部202は、フィルタリング対象に特定されたブルームフィルタ群の中から、算出した余り値に対応する位置のビットがすべてONになっているブルームフィルタを特定する。第1段の場合、ブルームフィルタbf(1−3),bf(1−6)は、算出した余り値に対応する位置のビットがすべてONになっているものとする。一方、ブルームフィルタbf(1−4),bf(1−5)については、算出した余り値に対応する位置のビットのいずれかがOFFであるものとする。
Then, the
最下段では、これ以上、下位の段が存在しないため、ブルームフィルタbf(1−3),bf(1−6)に擬陽性がある。検索処理部202は、特定されたブルームフィルタbf(1−3)の配列番号「3」に対応するハッシュテーブルHT3に、ハッシュ値H1(D)が登録されているかを判定する。ハッシュテーブルHT3では、エントリE3が登録されているため、ハッシュテーブルHT3に対応するデータブロックdb3の中に対象データDが登録されていることが判明する。
At the bottom level, there are no further lower levels, so the Bloom filters bf (1-3) and bf (1-6) have false positives. The
一方、検索処理部202は、特定されたブルームフィルタbf(1−6)の配列番号「6」に対応するハッシュテーブルHT6に、ハッシュ値H1(D)が登録されているかも判定する。ハッシュテーブルHT6では、ハッシュ値H1(D)=1234567が登録されていないため、ハッシュテーブルHT6に対応するデータブロックdb6の中に対象データDが登録されていないことが判明する。これにより、検索処理を終了する。
On the other hand, the
このような手順により、検索処理部202は、階層型ブルームフィルタBFを利用して対象データDが存在するデータブロックを特定することができる。
By such a procedure, the
次に、ブルームフィルタの擬陽性による影響について説明する。 Next, the influence of the false positive of the Bloom filter will be described.
ブルームフィルタの擬陽性の発生確率FPRは、ビット長がmのブルームフィルタがh段ある場合、データ登録数N(N<m)、ハッシュ関数の個数をk個とすると、ブルームフィルタの性質より、次式(2)のように表すことができる。 The Bloom filter false-positive occurrence probability FPR is as follows when the number of data registrations is N (N <m) and the number of hash functions is k when there are h Bloom filters with a bit length of m. It can be expressed as equation (2).
FPR={1−(1−1/m)kN}k≒{1−e(-kN/m))}k …(1) FPR = {1- (1-1 / m ) kN} k ≒ {1-e (-kN / m))} k ... (1)
この場合、k,m,Nを変更することにより、擬陽性の発生確率FPRを非常に小さくすることができる。すなわち、本実施形態では、k,m,Nの設定次第で、擬陽性の発生確率FPRを1よりも非常に小さい値(ほぼ0)に設定することができるようになる。したがって、図5の例では、ブルームフィルタbf(1−6)が選ばれることはほとんどありえない。 In this case, by changing k, m, and N, the false positive occurrence probability FPR can be made very small. That is, in the present embodiment, the false positive occurrence probability FPR can be set to a value (substantially 0) that is much smaller than 1 depending on the setting of k, m, and N. Therefore, in the example of FIG. 5, the Bloom filter bf (1-6) is almost never selected.
また、本実施形態では、データブロック数Ndbはdhであるため、高さ段数hは、次式(2)にて表すことができる。 In the present embodiment, since the data block number Ndb is d h , the height step number h can be expressed by the following equation (2).
h=log(Ndb)/log(d)+1 …(2) h = log (Ndb) / log (d) +1 (2)
上記式(2)は、log(Ndb)/log(d)が割り切れる場合を前提にしたが、そうでない場合、段によりdの値を他の段とは変えることで、hを決定することができる。 The above formula (2) is based on the assumption that log (Ndb) / log (d) is divisible, but if not, h can be determined by changing the value of d from other stages depending on the stage. it can.
また、上述した検索処理では、ハッシュ値の数(k回(定数))だけ照合を行う必要があり、検索における1段あたりのフィルタリング対象の数は多くてもd個である。したがって、検索によるメモリアクセス回数MAは、最大でも次式(3)で表される程度である。 Further, in the above-described search process, it is necessary to perform collation as many times as the number of hash values (k times (constant)), and the number of filtering targets per search is at most d. Therefore, the memory access count MA by search is at most about the level expressed by the following equation (3).
MA=k×d×log(Ndb)/log(d) …(3) MA = k * d * log (Ndb) / log (d) (3)
すなわち、段数h(=メモリ量)は、分割数dを増やすことにより小さくすることができ、その一方で、検索回数は分割数dの増加とともに大きくなるというトレードオフの関係にある。したがって、この関係を考慮することで、適切なメモリの運用が可能となる。 That is, the number of stages h (= memory amount) can be reduced by increasing the number of divisions d, while the number of searches is in a trade-off relationship that increases as the number of divisions d increases. Therefore, by considering this relationship, an appropriate memory operation can be performed.
<階層型転置ブルームフィルタ>
つぎに、階層型転置ブルームフィルタについて説明する。上述した説明では、階層型ブルームフィルタBFの登録処理や検索処理について説明したが、検索速度をより高速化させるため、階層型ブルームフィルタBFを転置させる。
<Hierarchical transposed Bloom filter>
Next, the hierarchical transposed Bloom filter will be described. In the above description, the registration process and the search process of the hierarchical Bloom filter BF have been described. However, the hierarchical Bloom filter BF is transposed in order to increase the search speed.
図7は、階層型ブルームフィルタBF内の第p段のブルームフィルタ列bf(p)の転置例を示す説明図である。(A)は、ブルームフィルタ列BF(p)を示している。ここでは、ブルームフィルタ列BF(p)は、例として、4分割されたブルームフィルタbf(p−1)〜bf(p−4)を示している。すなわち、ブルームフィルタ列BF(p)は、10ビット×4フィルタ数のビット列である。転置する場合は、4ビット×10フィルタ数のビット列となる。 FIG. 7 is an explanatory diagram showing a transposition example of the p-th Bloom filter row bf (p) in the hierarchical Bloom filter BF. (A) shows the Bloom filter row BF (p). Here, the Bloom filter row BF (p) shows Bloom filters bf (p−1) to bf (p−4) divided into four as an example. That is, the Bloom filter string BF (p) is a bit string of 10 bits × 4 filters. In the case of transposition, the bit string is 4 bits × 10 filters.
(B)は、ブルームフィルタ列BF(p)の転置を示している。転置する場合、各ブルームフィルタbf(p−1)〜bf(p−4)の同一位置のビットを集めて、同一位置ごとに集められたビット列を、ビット位置順に配列させる。 (B) shows transposition of the Bloom filter row BF (p). When transposing, the bits at the same position of each of the Bloom filters bf (p-1) to bf (p-4) are collected, and the bit strings collected at the same positions are arranged in the order of the bit positions.
具体的には、各ブルームフィルタbf(p−1)〜bf(p−4)の各先頭ビットを配列番号順にまとめてビット列{0110}とする。左から先頭ビット「0」がブルームフィルタbf(p−1)の先頭ビット、2番目のビット「1」がブルームフィルタbf(p−2)の先頭ビット、3番目のビット「1」がブルームフィルタbf(p−3)の先頭ビット、末尾ビット「0」がブルームフィルタbf(p−4)の先頭ビットである。 Specifically, the first bits of each of the Bloom filters bf (p-1) to bf (p-4) are grouped in the order of the array number to form a bit string {0110}. From the left, the first bit “0” is the first bit of the Bloom filter bf (p−1), the second bit “1” is the first bit of the Bloom filter bf (p−2), and the third bit “1” is the Bloom filter The leading bit and trailing bit “0” of bf (p−3) are the leading bit of the Bloom filter bf (p−4).
このビット列{0110}を、転置ブルームフィルタtbf(p−1)と称す。2番目〜末尾のビット位置についても同様にまとめることで、転置ブルームフィルタtbf(p−1)〜tbf(p−10)を得る。転置ブルームフィルタtbf(p−1)〜tbf(p−10)がビット位置順に配列されたインデックス情報を、転置ブルームフィルタ列tBF(p)と称す。転置ブルームフィルタ列tBF(p)をすべての段で生成することで、階層型転置ブルームフィルタtBFとなる。 This bit string {0110} is referred to as a transposed Bloom filter tbf (p−1). The transposed Bloom filters tbf (p-1) to tbf (p-10) are obtained by collecting the second to last bit positions in the same manner. The index information in which the transposed Bloom filters tbf (p-1) to tbf (p-10) are arranged in the order of bit positions is referred to as a transposed Bloom filter row tBF (p). By generating the transposed Bloom filter row tBF (p) at all stages, the hierarchical transposed Bloom filter tBF is obtained.
(C)は、ブルームフィルタ列BF(p)と転置ブルームフィルタ列tBF(p)との検索比較例を示している。ここでは、2種類のハッシュ関数により対象データDのハッシュ値を2つ求め、ブルームフィルタ列BF(p)を構成するブルームフィルタbf(p)のビット幅10で割り算した余り値を、「4」および「8」とする。
(C) shows a search comparison example between the Bloom filter row BF (p) and the transposed Bloom filter row tBF (p). Here, two hash values of the target data D are obtained by two types of hash functions, and a remainder value obtained by dividing by the
ブルームフィルタ列BF(p)で検索する場合、余り値「4」および「8」となるビット位置「4」および「8」がすべてONになっているブルームフィルタbf(p)をブルームフィルタ列BF(p)から探す。この場合、ブルームフィルタbf(p−2)が該当する。 When searching with the Bloom filter column BF (p), the Bloom filter bf (p) in which the bit positions “4” and “8” having the remainder values “4” and “8” are all ON is selected as the Bloom filter column BF. Search from (p). In this case, the Bloom filter bf (p-2) is applicable.
一方、転置ブルームフィルタ列tBF(p)を用いる場合、ブルームフィルタ列BF(p)のように、ビット位置「4」および「8」がすべてONになっているブルームフィルタbf(p)を検索せず、余り値「4」および「8」と同一配列番号の転置ブルームフィルタtbf(p−4),tbf(p−8)を抽出する。そして、抽出された転置ブルームフィルタtbf(p−4),tbf(p−8)をAND演算することで、ともにONになっているビット位置「2」を特定する。 On the other hand, when the transposed Bloom filter row tBF (p) is used, the Bloom filter bf (p) in which the bit positions “4” and “8” are all ON, such as the Bloom filter row BF (p), is searched. First, transposed Bloom filters tbf (p-4) and tbf (p-8) having the same sequence numbers as the remainder values “4” and “8” are extracted. Then, an AND operation is performed on the extracted transposed Bloom filters tbf (p−4) and tbf (p−8) to identify the bit position “2” that is both ON.
ブルームフィルタ列BF(p)の場合は、4個のブルームフィルタbf(p−1)〜bf(p−4)内の4ビット目と8ビット目を参照するため、8(=4×2)のメモリアクセスが必要となる。一方、転置ブルームフィルタ列tBF(p)は、転置前のブルームフィルタbf(p−1)〜bf(p−4)のビット位置ごとに折りたたまれたインデックス情報である。したがって、転置ブルームフィルタtbf(p−4),tbf(p−8)を抽出するという2回のメモリアクセスとそのAND演算により判定することが可能となる。したがって、メモリアクセス頻度が低減され、検索速度が高速化することとなる。 In the case of the Bloom filter string BF (p), since the fourth and eighth bits in the four Bloom filters bf (p-1) to bf (p-4) are referred to, 8 (= 4 × 2) Memory access is required. On the other hand, the transposed Bloom filter row tBF (p) is index information folded for each bit position of the Bloom filters bf (p-1) to bf (p-4) before transposition. Therefore, it is possible to make a determination by two memory accesses of extracting the transposed Bloom filters tbf (p-4) and tbf (p-8) and their AND operation. Therefore, the memory access frequency is reduced, and the search speed is increased.
<階層型転置ブルームフィルタを用いた検索処理例>
図8は検索処理部202による階層型転置ブルームフィルタの検索処理例を示す説明図である。図8では、説明上、全ビット幅s=64ビット、段数h=3段、第h段での分割数d=2とする。
<Example of search processing using hierarchical transposed Bloom filter>
FIG. 8 is an explanatory diagram showing a search process example of the hierarchical transposed Bloom filter by the
最下段である第1段のブルームフィルタ列BF(1)を構成するブルームフィルタのビット幅は、8(=s/dh=64/23)ビットであるため、最下段である第1段の転置ブルームフィルタ列tBF(1)は、8(=s/dh=64/23)個の転置ブルームフィルタtbf(1−1)〜tbf(1−8)により構成される。 Since the bit width of the Bloom filter constituting the first-stage Bloom filter column BF (1) which is the lowest stage is 8 (= s / d h = 64/2 3 ) bits, the first stage which is the lowest stage The transposed Bloom filter row tBF (1) includes 8 (= s / d h = 64/2 3 ) transposed Bloom filters tbf (1-1) to tbf (1-8).
また、第2段の転置ブルームフィルタ列tBF(2)を構成するブルームフィルタのビット幅は、16(=s/dh=64/22)ビットであるため、第2段の転置ブルームフィルタ列tBF(2)は、16(=s/dh=64/22)個の転置ブルームフィルタtbf(2−1)〜tbf(2−16)により構成される。 Further, since the bit width of the Bloom filter constituting the second-stage transposed Bloom filter string tBF (2) is 16 (= s / d h = 64/2 2 ) bits, the second-stage transposed Bloom filter string tBF (2) is composed of 16 (= s / d h = 64/2 2 ) transposed Bloom filters tbf (2-1) to tbf (2-16).
また、最上段である第3段のブルームフィルタ列BF(3)を構成するブルームフィルタのビット幅は、32(=s/dh=64/21)ビットであるため、最上段である第3段の転置ブルームフィルタ列tBF(3)は、32(=s/dh=64/21)個の転置ブルームフィルタtbf(3−1)〜tbf(3−32)により構成される。 The bit width of the Bloom filter constituting the third-stage Bloom filter column BF (3), which is the uppermost stage, is 32 (= s / d h = 64/2 1 ) bits, so The three-stage transposed Bloom filter row tBF (3) includes 32 (= s / d h = 64/2 1 ) transposed Bloom filters tbf (3-1) to tbf (3-32).
なお、図8では、説明上、比較のため、転置ブルームフィルタ列tBF(1)〜tBF(3)とともに、転置前のブルームフィルタ列BF(1)〜BF(3)を併記しておく。 In FIG. 8, for the purpose of explanation, the transposed Bloom filter rows tBF (1) to tBF (3) and the pre-transposed Bloom filter rows BF (1) to BF (3) are also shown for comparison.
まず、検索処理部202は、検索対象データDxについてのハッシュ関数H1()〜H3()での3個のハッシュ値を、第3段の転置ブルームフィルタ数32で割り算したときの余り値「2」、「19」、「27」を求める。
First, the
つぎに、検索処理部202は、フィルタリング対象となる転置ブルームフィルタを第3段の転置ブルームフィルタ列tBF(3)から特定する。具体的には、余り値と同一ビット位置(余り値が0の場合は末尾位置)となる転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)を特定する。そして、特定された転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)の各ビット列{10},{11},{10}のAND演算をおこなう。そのAND結果は、{10}となる。
Next, the
検索処理部202は、AND結果に「1」が含まれていない場合は、データブロック集合dbには検索対象データDxが存在しないと判定する。一方、AND結果に「1」が含まれている場合、検索対象データDxを登録したかもしれないため、1つ下の段に移る。
When “1” is not included in the AND result, the
第2段においても、まず、検索処理部202は、検索対象データDxについての3個のハッシュ値を、第2段の転置ブルームフィルタ数16で割り算したときの余り値「8」、「11」、「13」を求める。
Also in the second stage, first, the
つぎに、検索処理部202は、フィルタリング対象となる転置ブルームフィルタを第2段の転置ブルームフィルタ列tBF(2)から特定する。具体的には、余り値と同一ビット位置(余り値が0の場合は末尾位置)となる転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)を特定する。そして、特定された転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)の各ビット列{0110},{0100},{0110}のAND演算をおこなう。そのAND結果は、{0100}となる。
Next, the
検索処理部202は、AND結果に「1」が含まれていない場合は、データブロック集合dbには検索対象データDxが存在しないと判定する。一方、AND結果に「1」が含まれている場合、検索対象データDxを登録したかもしれないため、1つ下の段に移る。
When “1” is not included in the AND result, the
最下段である第1段においても、まず、検索処理部202は、検索対象データDxについての3個のハッシュ値を、第1段の転置ブルームフィルタ数8で割り算したときの余り値「2」、「5」、「7」を求める。
Even in the first level, which is the lowest level, first, the
つぎに、検索処理部202は、フィルタリング対象となる転置ブルームフィルタを第1段の転置ブルームフィルタ列tBF(1)から特定する。具体的には、余り値と同一ビット位置(余り値が0の場合は末尾位置)となる転置ブルームフィルタtbf(1−2),tbf(1−5),tbf(1−7)を特定する。そして、特定された転置ブルームフィルタtbf(1−2),tbf(1−5),tbf(1−7)の各ビット列{00110110},{10011010},{00110111}のAND演算をおこなう。そのAND結果は、{00010010}となる。
Next, the
これ以上下の段は存在しないため、擬陽性により、AND結果{00010010}が「1」のビット位置4,7に対応するデータブロックdb4,db7に検索対象データDxが存在する可能性がある。 Since there is no lower stage, there is a possibility that the search target data Dx exists in the data blocks db4 and db7 corresponding to the bit positions 4 and 7 whose AND result {00010010} is “1” due to false positive.
この場合、ハッシュテーブルHT4,HT7に対しハッシュ関数H1()でのハッシュ値をキーにして検索することで、データブロックdb4がヒットし、データブロックdb7はヒットしなかったものとする。これにより、検索対象データDxは、データブロックdb4に登録されていることが判明する。これにより、検索処理を終了する。 In this case, it is assumed that the data block db4 is hit and the data block db7 is not hit by searching the hash tables HT4 and HT7 using the hash value of the hash function H1 () as a key. Thereby, it is found that the search target data Dx is registered in the data block db4. Thereby, the search process is terminated.
このような手順により、検索処理部202は、階層型転置ブルームフィルタを利用することで、階層型ブルームフィルタBFに比べてもより高速に対象データを検索することができる。
By such a procedure, the
<検索処理部202の詳細な機能的構成>
つぎに、検索処理部202の詳細な機能的構成例について説明する。
<Detailed Functional Configuration of
Next, a detailed functional configuration example of the
図9は、検索処理部202の機能的構成例を示すブロック図である。検索処理部202は、受付部901と、転置部902と、変換部903と、第1の特定部904と、第2の特定部905と、判断部906と、判定部907と、抽出部908と、出力部909とを備えている。
FIG. 9 is a block diagram illustrating a functional configuration example of the
受付部901は、ブルームフィルタ列BF(p)の転置要求を受け付ける機能を有する。たとえば、階層型ブルームフィルタBFから階層型転置ブルームフィルタtBFへの転置要求を受け付ける。
The receiving
ここで、転置要求とは、ブルームフィルタ列BF(p)を転置ブルームフィルタ列tBF(p)に転置させるリクエストである。たとえば、管理装置200が起動して起動が完了した旨の起動完了通知を転置要求とする。これにより、管理装置200が起動することで、階層型ブルームフィルタBFが階層型転置ブルームフィルタtBFに転置される。このように起動時に一括して、階層型転置ブルームフィルタtBFに転置しておけば、シャットダウンするまでは常時転置ブルームフィルタtBFを利用することができる。
Here, the transposition request is a request for transposing the Bloom filter string BF (p) to the transposed Bloom filter string tBF (p). For example, the activation completion notification that the
また、データブロック集合dbに対する検索要求を転置要求としてもよい。これにより、検索処理部202は、検索要求があるまでは待機しておき、検索要求があると、階層型ブルームフィルタBFのうち検索処理部202で用いられるブルームフィルタ列BF(p)を転置させることとなる。これにより、検索頻度が高くなるにつれ、転置ブルームフィルタ列tBF(p)が増加する。したがって、検索に必要なブルームフィルタ列BF(p)から徐々に転置させるため、シャットダウンまでに利用されなかったブルームフィルタ列の無駄な転置処理を低減することができる。
The search request for the data block set db may be a transposition request. Thereby, the
転置部902は、受付部901によって転置要求が受け付けられた場合、ブルームフィルタ列BF(p)を、転置ブルームフィルタ列tBF(p)に転置する機能を有する。具体的には、転置部902では、ブルームフィルタ列BF(p)を、図7に示したような手法により、転置ブルームフィルタ列tBF(p)に転置する。
The
たとえば、ブルームフィルタ列BF(p)は、n(=d[h-(p-1)])個のブルームフィルタbf(p−1)〜bf(p−n)が配列されたインデックス情報である。また、各ブルームフィルタbf(p−1)〜bf(p−n)のビット幅は、m(=s/n)ビットである。 For example, the Bloom filter row BF (p) is index information in which n (= d [h− (p−1)] ) Bloom filters bf (p−1) to bf (pn) are arranged. . The bit width of each of the Bloom filters bf (p−1) to bf (p−n) is m (= s / n) bits.
ブルームフィルタ列BF(p)を図7にしたがって転置すると、転置ブルームフィルタ列tBF(p)は、m(=s/n)個の転置ブルームフィルタtbf(p−1)〜tbf(p−m)が配列されたインデックス情報となる。各転置ブルームフィルタtbf(p−1)〜tbf(p−m)のビット幅は、n(=d[h-(p-1)])ビットとなる。このように転置により、配列数とビット幅が入れ替わる。 When the Bloom filter row BF (p) is transposed according to FIG. 7, the transposed Bloom filter row tBF (p) has m (= s / n) transposed Bloom filters tbf (p−1) to tbf (p−m). Becomes the index information arranged. The bit width of each transposed Bloom filter tbf (p-1) to tbf (pm) is n (= d [h- (p-1)] ) bits. In this way, the number of arrays and the bit width are interchanged by transposition.
変換部903は、複数種類(種類数k)のハッシュ関数に基づいて、ハッシュ関数ごとに、検索対象データを、転置ブルームフィルタの配列位置をあらわす位置情報に変換する機能を有する。具体的には、たとえば、k個の異なるハッシュ関数H1()〜Hk()に検索対象データを与えることで、k個のハッシュ値が得られる。
The
図5に示したブルームフィルタ列BF(p)へのエントリでは、ブルームフィルタ列BF(p)を構成するブルームフィルタのビット幅m(=s/n)でハッシュ値を除算し、その余り値に対応するビット位置をONにしていた。 In the entry to the Bloom filter column BF (p) shown in FIG. 5, the hash value is divided by the bit width m (= s / n) of the Bloom filter constituting the Bloom filter column BF (p), and the remainder is obtained. The corresponding bit position was set to ON.
このため、変換部903では、k個のハッシュ値が得られると、転置ブルームフィルタ列tBF(p)を構成する転置ブルームフィルタの配列数m(=s/n)でハッシュ値を除算し、その余り値を算出する。このk個の余り値が、転置ブルームフィルタの配列位置をあらわす位置情報である。なお、算出された余り値が0の場合の位置情報は、mとする。
Therefore, when k hash values are obtained, the
第1の特定部904は、転置ブルームフィルタ列tBF(p)の中から、変換部903によって変換された位置情報に対応する転置ブルームフィルタを位置情報ごとに特定する機能を有する。具体的には、変換部903から得られた位置情報と配列番号が一致する転置ブルームフィルタを転置ブルームフィルタ列tBF(p)の中から特定する。
The first specifying
図8に示した例では、第3段の転置ブルームフィルタ列tBF(3)では、余り値(位置情報)が「2」、「19」、「27」であるため、配列番号が「2」、「19」、「27」である転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)を特定する。 In the example illustrated in FIG. 8, in the third-stage transposed Bloom filter row tBF (3), the remainder values (position information) are “2”, “19”, and “27”, so the array element number is “2”. , “19”, “27” are specified as transposed Bloom filters tbf (3-2), tbf (3-19), tbf (3-27).
第2の特定部905は、第1の特定部904によって特定された複数の転置ブルームフィルタtbf(p)に共通する位置情報に対応するブルームフィルタbf(p)を、ブルームフィルタ列BF(p)の中から特定する機能を有する。具体的には、第1の特定部904によって特定された複数の転置ブルームフィルタtbf(p)のビット列をAND演算する。このAND演算によって「1」が出現したビットの位置が、転置前のブルームフィルタ列BF(p)でエントリ時にONになったであろうビットを有するブルームフィルタである。
The second specifying
図8に示した例では、第3段において転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)をAND演算すると、AND結果では先頭のビット位置が「1」となる。したがって、転置前のブルームフィルタ列BF(3)のうちブルームフィルタbf(3−1)のいずれかのビットが、検索対象データのエントリ時にONになった可能性があることがわかる。 In the example shown in FIG. 8, when the transposed Bloom filters tbf (3-2), tbf (3-19), and tbf (3-27) are ANDed in the third stage, the leading bit position in the AND result is “1”. " Therefore, it can be seen that any bit of the Bloom filter bf (3-1) in the Bloom filter row BF (3) before transposition may have been turned ON at the time of entry of search target data.
このように、第1の特定部904および第2の特定部905により、転置ブルームフィルタ列tBF(p)へのアクセス回数が転置前のブルームフィルタ列BF(p)よりも減少する。したがって、転置ブルームフィルタtbf(p)の段数pが増加すればするほど、転置前のブルームフィルタ列BF(p)よりもアクセス回数が格段に抑えられ、検索速度の高速化を実現することができる。
As described above, the first specifying
判断部906は、第2の特定部905によって特定されたブルームフィルタを配列要素とするブルームフィルタ列が存在するか否かを判断する機能を有する。具体的には、転置ブルームフィルタ列tBF(p)の1つ下の段の転置ブルームフィルタ列が存在するか否かを判断するだけでよい。より具体的には、p=1であるか否かをみるだけでよい。
The
1つ下の段の転置ブルームフィルタ列が存在する場合(p≠1)は、第1の特定部904により、1つ下の段の転置ブルームフィルタ列をあらたに転置ブルームフィルタ列tBF(p)とする。一方、1つ下の段の転置ブルームフィルタ列が存在しない場合(p=1)、転置ブルームフィルタ列tBF(p)は、最下段である第1段の転置ブルームフィルタ列tBF(1)となる。
When the transposed Bloom filter row of the next lower stage exists (p ≠ 1), the first specifying
判定部907は、判断部906によって存在しないと判断された場合、データブロック集合dbのうち、第2の特定部905によって特定されたブルームフィルタbf(p)に対応するデータブロックdb#内での検索対象データの有無を判定する機能を有する。p=1の場合、第2の特定部905によって特定されたブルームフィルタbf(1)はデータブロックと一対一対応するため、第2の特定部905でのAND結果で「1」になったビットの位置をブロック番号#とするデータブロックdb#を判定対象とする。判定部907では、判定対象のデータブロックdb#は擬陽性であるため、陽性であるか陰性であるかを判定することとなる。
If the
そして、判定対象のデータブロックdb#のハッシュテーブルHT#を参照して、検索対象データの擬陽性/陰性を判定する。この場合、階層型ブルームフィルタBFを用いた検索処理と同様、特定のハッシュ関数(たとえば、H1())による検索対象データのハッシュ値をキーにして、ハッシュテーブルHT#からデータ(またはそのポインタ)の有無を判定する。存在しない場合は、擬陽性によりヒットミスしたこととなる。 Then, with reference to the hash table HT # of the determination target data block db #, false positive / negative of the search target data is determined. In this case, similarly to the search process using the hierarchical Bloom filter BF, data (or a pointer thereof) from the hash table HT # using a hash value of search target data by a specific hash function (for example, H1 ()) as a key. The presence or absence of is determined. If it does not exist, it means that a miss has occurred due to a false positive.
抽出部908は、判定部907によって陽性であると判定された場合、判定対象のデータブロックdb#から検索対象データを抽出する機能を有する。具体的には、たとえば、判定対象のデータブロックに対応するハッシュテーブルHT#によりデータの格納位置が判明するため、抽出部908は、その格納位置から検索対象データや検索対象データに関連するデータを抽出する。
The
たとえば、検索対象データそのものを判定対象のデータブロックdb#から抽出する。抽出できた場合は、検索対象データが登録されていることが判明する。また、検索対象データがファイル番号である場合は、ファイル番号に関連するファイルデータを抽出する。また、検索対象データが辞書や用語の見出し語である場合は、見出し語の用語解説データを抽出する。 For example, the search target data itself is extracted from the determination target data block db #. If it can be extracted, it is found that the search target data is registered. If the search target data is a file number, file data related to the file number is extracted. In addition, when the search target data is a dictionary or a term headword, the term explanation data of the headword is extracted.
出力部909は、判定部907による判定結果や抽出部908によって抽出されたデータを出力する。たとえば、検索対象データの陽性または陰性といった判定結果や、陽性である場合の抽出データを出力する。出力形式としては、ディスプレイ108への表示、音声出力、印刷出力、他の装置への送信などがある。
The
<登録処理部201による階層型ブルームフィルタBFの学習処理手順>
図10は、登録処理部201による階層型ブルームフィルタBFの学習処理手順を示すフローチャートである。まず、登録処理部201は、登録したいデータ(対象データD)があるか否かを判断する(ステップS1001)。対象データDがある場合(ステップS1001:Yes)、登録処理部201は、段数pをp=1に設定し(ステップS1002)、p>h(hは階層型ブルームフィルタBFの最上段)であるか否かを判断する(ステップS1003)。p>hでない場合(ステップS1003:No)、登録処理部201は、k種類のハッシュ関数を用いて、対象データのk個のハッシュ値を算出する(ステップS1004)。そして、k個のハッシュ値をブルームフィルタ列BF(p)のビット幅で除算して、k個の余り値を算出する(ステップS1005)。
<Learning Processing Procedure of Hierarchical Bloom Filter BF by
FIG. 10 is a flowchart showing the learning processing procedure of the hierarchical Bloom filter BF by the
つぎに、登録処理部201は、p段目のブルームフィルタ列BF(p)の中から登録先のブルームフィルタbf(p)rを特定する(ステップS1006)。p=1の場合は、保存先のデータブロックdb#のブロック番号#に対応するブルームフィルタbf(1−#)を登録先のブルームフィルタbf(p)rとする。
Next, the
具体的には、図5に示したように、対象データDをデータブロックdb3に登録する場合は、データブロックdb3のブロック番号3と同一配列番号である第1段のブルームフィルタbf(1−3)を登録先のブルームフィルタbf(1)rとする。
Specifically, as shown in FIG. 5, when registering the target data D in the data block db3, the first-stage Bloom filter bf (1-3) having the same array number as the
p≠1の場合は、p段目のブルームフィルタ列BF(p)の中から、(p−1)段目の登録先のブルームフィルタbf(p−1)rのビット位置に対応するブルームフィルタbf(p)をあらたな登録先のブルームフィルタbf(p)rとする。 If p ≠ 1, the Bloom filter corresponding to the bit position of the (p−1) -th registered Bloom filter bf (p−1) r from the p-th Bloom filter string BF (p) Let bf (p) be the newly registered Bloom filter bf (p) r.
具体的には、図5に示したように、P=2とすると、2段目のブルームフィルタ列BF(2)の中から、1段目の登録先のブルームフィルタbf(1)rであるブルームフィルタbf(1−3)のビット位置を包含するブルームフィルタbf(2−2)をあらたな登録先のブルームフィルタbf(2)rとする。 Specifically, as shown in FIG. 5, when P = 2, the Bloom filter bf (1) r of the first registration destination is selected from the second-stage Bloom filter row BF (2). The Bloom filter bf (2-2) including the bit position of the Bloom filter bf (1-3) is set as a new registration destination Bloom filter bf (2) r.
そして、登録先のブルームフィルタbf(p)rに、ステップS1005で算出されたk個の余り値をエントリする(ステップS1007)。すなわち、余り値と同一ビット位置のビットをONにする。余り値が0の場合は、末尾ビットをONにする。そして、段数pをインクリメントして(ステップS1008)、ステップS1003に戻る。 Then, the k remainder values calculated in step S1005 are entered in the registered Bloom filter bf (p) r (step S1007). That is, the bit at the same bit position as the remainder value is turned ON. When the remainder value is 0, the tail bit is turned ON. Then, the stage number p is incremented (step S1008), and the process returns to step S1003.
ステップS1003において、p>hである場合(ステップS1003:Yes)、対象データのハッシュテーブルエントリを追加する(ステップS1009)。具体的には、たとえば、図4に示したように、ハッシュテーブルエントリE3をハッシュテーブルHT3に追加登録する。 If p> h in step S1003 (step S1003: Yes), a hash table entry of the target data is added (step S1009). Specifically, for example, as shown in FIG. 4, the hash table entry E3 is additionally registered in the hash table HT3.
そして、ステップS1001に戻る。ステップS1001において、対象データDがない場合(ステップS1001:No)、登録処理部201による階層型ブルームフィルタBFの学習処理を終了する。このような処理手順により、階層型ブルームフィルタBFが構築されることとなる。
Then, the process returns to step S1001. In step S1001, if there is no target data D (step S1001: No), the learning process of the hierarchical Bloom filter BF by the
<検索処理部202による検索処理手順>
図11および図12は、検索処理部202による検索処理手順を示すフローチャートである。なお、検索処理部202により利用されるブルームフィルタは、すでに一括転置済みの階層型転置ブルームフィルタtBFでもよく、階層型ブルームフィルタBFでもよい。階層型ブルームフィルタBFを用いる場合は、未転置のブルームフィルタが特定される都度転置処理をおこなう。
<Search Processing Procedure by
FIG. 11 and FIG. 12 are flowcharts showing a search processing procedure by the
すなわち、検索しながら階層型転置ブルームフィルタtBFを構築していく。図11および図12では、検索しながら階層型転置ブルームフィルタtBFを構築していく場合の修理手順について説明する。なお、一括転置済みの場合は、転置済みか否かの判断(ステップS1104)と転置処理(ステップS1105)を省略するだけでよい。 That is, the hierarchical transposed Bloom filter tBF is constructed while searching. 11 and 12, the repair procedure when the hierarchical transposed Bloom filter tBF is constructed while searching will be described. In addition, when batch transposition has been completed, it is only necessary to omit the determination of whether transposition has been performed (step S1104) and the transposition processing (step S1105).
まず、図11において、検索処理部202は、受付部901により、検索対象データDxを待ち受け(ステップS1101:No)、検索対象データDxが受け付けられた場合(ステップS1101:Yes)、検索処理部202は、変換部903により、検索対象データDxをk種類のハッシュ関数に与えてk個のハッシュ値を算出する(ステップS1102)。
First, in FIG. 11, the
そして、検索処理部202は、p=h、すなわち、段数pを最大段数hに設定し(ステップS1103)、p段目のブルームフィルタ列BF(p)が転置済みであるか否かを判断する(ステップS1104)。転置済みである場合(ステップS1104:Yes)、ステップS1106に移行する。一方、未転置である場合(ステップS1104:No)、検索処理部202は、転置部902により、p段目のブルームフィルタ列BF(p)を転置して(ステップS1105)、ステップS1106に移行する。
Then, the
ステップS1106では、検索処理部202は、変換部903により、k個のハッシュ値を転置ブルームフィルタの配列数で除算して、k個の余り値を算出する(ステップS1106)。そして、検索処理部202は、第1の特定部904により、p段目の転置ブルームフィルタ列tBF(p)から、k個の余り値に対応するk個の転置ブルームフィルタtbf(p)rを特定する(ステップS1107)。
In step S1106, the
そして、検索処理部202は、第2の特定部905により、k個の転置ブルームフィルタtbf(p)rをAND演算し(ステップS1108)、図12のステップS1201に移行する。
Then, the
図12において、検索処理部202は、第2の特定部905により、AND結果の先頭ビットを対象ビットに設定し(ステップS1201)、対象ビットがONであるか否かを判断する(ステップS1202)。ONでない場合、検索処理部202は、判定部907により、対象ビットがシフト可能か否かを判断する(ステップS1203)。具体的には、対象ビットが末尾ビットであるか否かを判断する。
In FIG. 12, the
シフト可能である場合(ステップS1203:Yes)、検索処理部202は、対象ビットを1ビット末尾方向へシフトし(ステップS1204)、ステップS1202に戻る。一方、ステップS1203においてシフト可能でない場合(ステップS1203:No)、検索処理部202は、判定部907により、検索結果(陰性)と判定し、出力部909から出力する(ステップS1205)。これにより、検索結果が陰性である場合の処理手順を終了する。
When the shift is possible (step S1203: Yes), the
一方、ステップS1202において、対象ビットがONであった場合(ステップS1202:Yes)、検索処理部202は、判断部906により、現在の段数pがp=1であるか否かを判断する(ステップS1206)。p=1でない場合(ステップS1206:No)、pをデクリメントして(ステップS1207)、ステップS1104に戻る。
On the other hand, if the target bit is ON in step S1202 (step S1202: Yes), the
一方、p=1である場合(ステップS1206:Yes)、検索処理部202は、判定部907により、対象ビットのビット位置に対応するハッシュテーブルを検索する(ステップS1208)。そして、検索対象データDxが存在するか否かを判断する(ステップS1209)。
On the other hand, if p = 1 (step S1206: Yes), the
検索対象データが存在しない場合(ステップS1209:No)、ステップS1203に戻り、対象ビットがシフト可能か否かを判断することとなる。一方、検索対象データが存在する場合(ステップS1209:Yes)、検索処理部202は、検索結果(陽性)を出力する(ステップS1210)。検索処理部202は、必要に応じて抽出部908により関連するデータを抽出して検索結果として出力する。これにより、検索結果が陰性である場合の処理手順を終了する。
When the search target data does not exist (step S1209: No), the process returns to step S1203 to determine whether the target bit can be shifted. On the other hand, when search target data exists (step S1209: Yes), the
以上説明したように、本実施の形態によれば、ブルームフィルタ列BF(p)を転置して転置ブルームフィルタ列tBF(p)とすることで、メモリアクセスが低減され、検索速度が高速化するという効果を奏する。特に、階層型転置ブルームフィルタtBFとすることで、段ごとのメモリアクセスが低減されるため、より高速に検索をおこなうことができる。 As described above, according to the present embodiment, transposing the Bloom filter string BF (p) to the transposed Bloom filter string tBF (p) reduces the memory access and increases the search speed. There is an effect. In particular, by using the hierarchical transposed Bloom filter tBF, memory access at each stage is reduced, so that a search can be performed at a higher speed.
また、起動完了通知を転置要求とすることで、管理装置200が起動すると、階層型ブルームフィルタBFが階層型転置ブルームフィルタtBFに転置される。このように起動時に一括して、階層型転置ブルームフィルタtBFに転置しておけば、シャットダウンするまでは常時階層型転置ブルームフィルタtBFを利用することができる。
Moreover, when the
また、データブロック集合dbに対する検索要求を転置要求とすることで、検索要求があると、階層型ブルームフィルタBFのうち検索処理部202で用いられるブルームフィルタ列BF(p)を転置させることとなる。これにより、検索頻度が高くなるにつれ、転置ブルームフィルタ列tBF(p)が増加する。したがって、検索に必要なブルームフィルタ列BF(p)から徐々に転置させるため、シャットダウンまでに利用されなかったブルームフィルタ列の無駄な転置処理を低減することができる。
Also, by making the search request for the data block set db a transposition request, when there is a search request, the Bloom filter string BF (p) used in the
また、階層型ブルームフィルタBFから転置された階層型転置ブルームフィルタtBFの場合、最下段になるまでは、AND結果のONの有無だけで擬陽性であるか陰性であるかを判断し、AND結果に1つでもONのビットがあれば、擬陽性と判断して、1つ下の段に移行する。このように、AND結果を利用することで、陰性か否かを容易に判断でき、検索対象データが存在しないことを早期に特定することができる。 Further, in the case of the hierarchical transposed Bloom filter tBF transposed from the hierarchical Bloom filter BF, until the bottom level is reached, whether the AND result is ON or not is determined whether it is false positive or negative, and the AND result is If there is even one ON bit, it is determined as a false positive and the process proceeds to the next lower stage. Thus, by using the AND result, it can be easily determined whether or not the result is negative, and it can be identified early that the search target data does not exist.
また、階層型転置ブルームフィルタtBFだけをメモリに保持しておけば検索が可能であるため、階層型ブルームフィルタBFを保持しておく必要なない。これにより、省メモリ化を図ることができる。 In addition, since it is possible to search if only the hierarchical transposed Bloom filter tBF is held in the memory, it is not necessary to hold the hierarchical Bloom filter BF. Thereby, memory saving can be achieved.
<階層型転置ブルームフィルタtBFの学習処理例>
図13は、登録処理部201による階層型転置ブルームフィルタtBFの学習処理例を示す説明図である。ここでは、図8に示した階層型転置ブルームフィルタtBFを例にあげて説明する。また、図8では、検索対象データDxを検索してヒットさせた例について説明したが、図13では、検索対象データDx(図13では、対象データDxとする)がデータブロック集合dbにまだ登録されていないものとして説明する。
<Example of learning process of hierarchical transposed Bloom filter tBF>
FIG. 13 is an explanatory diagram illustrating a learning process example of the hierarchical transposed Bloom filter tBF by the
また、登録される対象データDが与えられるハッシュ関数の種類数kをk=3とする。ここでは、ハッシュ関数H1(),H2(),H3()を用いることとする。また、ハッシュテーブルの登録対象となるハッシュ関数をH1()とする。 Further, the number k of hash functions to which the registered target data D is given is set to k = 3. Here, the hash functions H1 (), H2 (), and H3 () are used. A hash function to be registered in the hash table is H1 ().
まず、データブロック集合dbのうちデータブロックdb4に対象データDxが登録されたものとする。対象データDxを各ハッシュ関数H1(),H2(),H3()に与えたときのハッシュ値は、例として以下の値とする。
H1(Dx)=x1
H2(Dx)=x2
H3(Dx)=x3
First, it is assumed that the target data Dx is registered in the data block db4 in the data block set db. As an example, the hash value when the target data Dx is given to each hash function H1 (), H2 (), H3 () is as follows.
H1 (Dx) = x1
H2 (Dx) = x2
H3 (Dx) = x3
また、階層型転置ブルームフィルタtBFの学習処理では、更新対象となる転置ブルームフィルタtbf(p)内の特定のビットをONにするが、その特定のビットがすでにONになっている場合はそのままとする。 Further, in the learning process of the hierarchical transposed Bloom filter tBF, a specific bit in the transposed Bloom filter tbf (p) to be updated is turned ON, but if the specific bit is already ON, it is left as it is. To do.
ここで、登録処理部201は、登録先のデータブロックdb4のブロック番号4のハッシュテーブルHT4に対するハッシュテーブルエントリE4を作成する。そして、登録処理部201は、作成されたハッシュテーブルエントリE4を、ハッシュテーブルHT4に追加登録する。
Here, the
そして、第1段の学習処理に移る。登録処理部201は、更新対象となる転置ブルームフィルタtbf(1)を、第1段の転置ブルームフィルタ列tBF(1)の中から特定する。具体的には、登録処理部201は、各ハッシュ値x1〜x3を、第1段の転置ブルームフィルタ列tBF(1)の配列個数である8で割り算し、余り値を算出する。ハッシュ値x1の余り値は「2」、ハッシュ値x2の余り値は「5」、ハッシュ値x3の余り値は「7」になったものとする。したがって、第1段での更新対象となる転置ブルームフィルタtbf(1)は、転置ブルームフィルタtbf(1−2),tbf(1−5),tbf(1−7)となる。
Then, the process proceeds to the first stage learning process. The
また、最下段では、登録先のデータブロックdb4のブロック番号4に対応するビット位置を更新対象ビットとする。したがって、更新対象となる転置ブルームフィルタの先頭から4ビット目のビットをONにする。これにより、第1段の転置ブルームフィルタ列tBF(1)の学習処理を終了する。
In the lowest level, the bit position corresponding to the
つぎに、第2段の学習処理に移る。登録処理部201は、更新対象となる転置ブルームフィルタtbf(2)を、第2段の転置ブルームフィルタ列tBF(2)の中から特定する。具体的には、登録処理部201は、各ハッシュ値x1〜x3を、第2段の転置ブルームフィルタ列tBF(2)の配列個数である16で割り算し、余り値を算出する。ハッシュ値x1の余り値は「8」、ハッシュ値x2の余り値は「11」、ハッシュ値x3の余り値は「13」になったものとする。したがって、第2段での更新対象となる転置ブルームフィルタtbf(2)は、転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)となる。
Next, the learning process of the second stage is started. The
つぎに、転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)内のどのビット位置のビットをONにするかについて説明する。転置前の階層型ブルームフィルタBFでは、分割数をdとして、各ブルームフィルタ列BF(p)をn(=d[h-(p-1)])個に分割した。そして、これにより、各ブルームフィルタ列BF(p)のビット幅は、m(=s/n)ビットになった。 Next, the bit position of the bit in the transposed Bloom filter tbf (2-8), tbf (2-11), tbf (2-13) will be described. In the hierarchical Bloom filter BF before transposition, the number of divisions is d, and each Bloom filter row BF (p) is divided into n (= d [h− (p−1)] ). As a result, the bit width of each Bloom filter column BF (p) is m (= s / n) bits.
このため、階層型ブルームフィルタBFの学習処理では、第(p−1)段での更新対象のブルームフィルタbf((p−1)−#)のビット位置を包含するブルームフィルタbf(p)を、第p段のブルームフィルタ列BF(p)の中から特定していた。 For this reason, in the learning process of the hierarchical Bloom filter BF, the Bloom filter bf (p) including the bit position of the Bloom filter bf ((p-1)-#) to be updated in the (p-1) -th stage is used. The p-th Bloom filter row BF (p) is specified.
たとえば、図5の例では、第2段において、前段の第1段での更新対象のブルームフィルタbf(1−3)の配列番号3を、分割数d(=2)で割り算し、端数を切り上げることで、更新対象の配列番号は2となる。したがって、ブルームフィルタbf(2−2)が特定される。
For example, in the example of FIG. 5, in the second stage, the
これに対し、階層型転置ブルームフィルタtBFでは、配列個数nとビット幅mが入れ替わっているため、第(p−1)段の更新対象のブルームフィルタbf((p−1)−#)の配列番号#ではなく、第(p−1)段での更新対象ビット位置を分割数dで割り算し、端数を切り上げる。 On the other hand, in the hierarchical transposed Bloom filter tBF, the array number n and the bit width m are interchanged, so the array of Bloom filters bf ((p-1)-#) to be updated in the (p-1) stage. Instead of the number #, the bit position to be updated at the (p−1) -th stage is divided by the division number d, and the fraction is rounded up.
第2段の場合、第1段での更新対象ビットは、先頭から4ビット目のビットであり、転置ブルームフィルタtbf(1−2),tbf(1−5),tbf(1−7)の4ビット目がONにされた。したがって、第2段の更新対象ビットは、d=2であるため、先頭から4/d=2ビット目のビットを更新対象ビットとする。本例では、転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)の先頭から2ビット目のビットをONにすることになる。これにより、第2段の転置ブルームフィルタ列tBF(2)の学習処理を終了する。 In the case of the second stage, the update target bit in the first stage is the fourth bit from the head, and the transposed Bloom filters tbf (1-2), tbf (1-5), tbf (1-7) The 4th bit was turned ON. Therefore, since the update target bit in the second stage is d = 2, the bit of 4 / d = 2 bit from the head is set as the update target bit. In this example, the second bit from the beginning of the transposed Bloom filters tbf (2-8), tbf (2-11), and tbf (2-13) is turned ON. Thereby, the learning process of the second-stage transposed Bloom filter row tBF (2) is completed.
つぎに、第3段の学習処理に移る。登録処理部201は、更新対象となる転置ブルームフィルタtbf(3)を、第3段の転置ブルームフィルタ列tBF(3)の中から特定する。具体的には、登録処理部201は、各ハッシュ値x1〜x3を、第3段の転置ブルームフィルタ列tBF(3)の配列個数である32で割り算し、余り値を算出する。ハッシュ値x1の余り値は「2」、ハッシュ値x2の余り値は「19」、ハッシュ値x3の余り値は「27」になったものとする。したがって、第3段での更新対象となる転置ブルームフィルタtbf(3)は、転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)となる。
Next, the process moves to the third stage learning process. The
つぎに、転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)内の更新対象ビットを決める。第2段と同様、第(p−1)段の更新対象のブルームフィルタbf((p−1)−#)の配列番号#ではなく、第(p−1)段での更新対象ビット位置を分割数dで割り算し、端数を切り上げる。 Next, the update target bits in the transposed Bloom filters tbf (3-2), tbf (3-19), and tbf (3-27) are determined. Similar to the second stage, not the array number # of the Bloom filter bf ((p-1)-#) to be updated in the (p-1) stage, but the bit position to be updated in the (p-1) stage. Divide by the division number d and round up the fraction.
第3段の場合、前段である第2段での更新対象ビットは、先頭から2ビット目のビットであり、転置ブルームフィルタtbf(2−8),tbf(2−11),tbf(2−13)の2ビット目がONにされた。したがって、第3段の更新対象ビットは、d=2であるため、先頭から2/d=1ビット目のビットを更新対象ビットとする。本例では、転置ブルームフィルタtbf(3−2),tbf(3−19),tbf(3−27)の先頭ビットをONにすることになる。これにより、第3段の転置ブルームフィルタ列tBF(3)の学習処理を終了する。 In the case of the third stage, the update target bit in the second stage, which is the previous stage, is the second bit from the beginning, and is a transposed Bloom filter tbf (2-8), tbf (2-11), tbf (2- The second bit of 13) was turned ON. Accordingly, since the update target bit in the third stage is d = 2, the bit of 2 / d = 1 bit from the head is set as the update target bit. In this example, the first bit of the transposed Bloom filter tbf (3-2), tbf (3-19), tbf (3-27) is turned ON. Thereby, the learning process of the third-stage transposed Bloom filter row tBF (3) is completed.
<登録処理部201による階層型転置ブルームフィルタtBFの学習処理手順>
図14は、登録処理部201による階層型ブルームフィルタBFの学習処理手順を示すフローチャートである。まず、登録処理部201は、登録したいデータ(対象データDx)があるか否かを判断する(ステップS1401)。対象データDxがある場合(ステップS1401:Yes)、登録処理部201は、段数pをp=1に設定し(ステップS1402)、p>h(hは階層型転置ブルームフィルタtBFの最上段)であるか否かを判断する(ステップS1403)。p>hでない場合(ステップS1403:No)、登録処理部201は、k種類のハッシュ関数を用いて、対象データDxのk個のハッシュ値を算出する(ステップS1404)。
<Learning Processing Procedure of Hierarchical Transposed Bloom Filter tBF by
FIG. 14 is a flowchart showing the learning processing procedure of the hierarchical Bloom filter BF by the
つぎに、登録処理部201は、k個のハッシュ値を第p段の転置ブルームフィルタtBF(p)の配列個数で除算して、k個の余り値を算出する(ステップS1405)。そして、登録処理部201は、k個の余り値と同一配列番号のk個の転置ブルームフィルタtbf(p)rを特定する(ステップS1406)。
Next, the
このあと、p=1であるか否かを判断し(ステップS1407)、p=1である場合(ステップS1407:Yes)、登録処理部201は、特定されたk個の転置ブルームフィルタtbf(p)rに、対象データDxの所属データブロックdb#のブロック番号#をエントリする(ステップS1408)。すなわち、対象データDxの所属データブロックdb#のブロック番号#を更新対象ビット位置#に設定し、特定されたk個の転置ブルームフィルタtbf(p)rの更新対象ビット位置#のビットをONにする。そして、ステップS1410に移行する。
Thereafter, it is determined whether or not p = 1 (step S1407). If p = 1 (step S1407: Yes), the
一方、ステップS1407において、p≠1である場合(ステップS1407:No)、特定されたk個の転置ブルームフィルタtbf(p)rに、対象データDxの第(p−1)段での更新対象ビット位置を分割数dで除算した商(端数切り上げ)をエントリする(ステップS1409)。すなわち、対象データDxの第(p−1)段での更新対象ビット位置を分割数dで除算した商(端数切り上げ)を更新対象ビット位置に設定し、特定されたk個の転置ブルームフィルタtbf(p)rの更新対象ビット位置のビットをONにする。そして、ステップS1410に移行する。 On the other hand, if p ≠ 1 in step S1407 (step S1407: No), the k-th transposed Bloom filter tbf (p) r is updated in the (p−1) th stage of the target data Dx. A quotient (rounded up) obtained by dividing the bit position by the division number d is entered (step S1409). That is, the quotient (rounded up) obtained by dividing the update target bit position in the (p−1) -th stage of the target data Dx by the division number d is set as the update target bit position, and the identified k transposed Bloom filters tbf (P) The bit at the update target bit position of r is turned ON. Then, control goes to a step S1410.
ステップS1410において、登録処理部201は、段数pをインクリメントし(ステップS1410)、ステップS1403に戻る。これにより、最下段から最上段まで更新対象ビットをONにすることができる。
In step S1410, the
一方、ステップS1403において、p>hである場合(ステップS1403:Yes)、登録処理部201は、対象データのハッシュテーブルエントリを追加して(ステップS1411)、ステップS1401に戻る。対象データDxがない場合(ステップS1401:No)、登録処理部201による階層型転置ブルームフィルタtBFの学習処理を終了する。
On the other hand, in step S1403, when p> h (step S1403: Yes), the
このような手順により、登録処理部201は、階層型転置ブルームフィルタtBFにデータエントリを学習させることとなる。すなわち、転置後にデータが登録される場合も、階層型転置ブルームフィルタtBFから階層型ブルームフィルタBFに戻す必要がなく、転置後の階層型転置ブルームフィルタtBFのまま学習させることができる。したがって、転置前に戻すといった無駄な処理がなくなり、検索効率の向上も図ることができる。
By such a procedure, the
なお、本実施の形態で説明した検索方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検索プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検索プログラムは、インターネット等のネットワークを介して配布してもよい。 Note that the search method described in this embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation. The search program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer. The search program may be distributed via a network such as the Internet.
200 管理装置
201 登録処理部
202 検索処理部
901 受付部
902 転置部
903 変換部
904 第1の特定部
905 第2の特定部
906 判断部
907 判定部
908 抽出部
909 出力部
BF 階層型ブルームフィルタ
db データブロック集合
HTs ハッシュテーブル群
tBF 階層型転置ブルームフィルタ
200
Claims (8)
前記ブルームフィルタ列の転置要求を受け付ける受付工程と、
前記受付工程によって転置要求が受け付けられた場合、前記ブルームフィルタ列を、前記各ブルームフィルタ内のビット列を同一位置のビットどうしでまとめたnビットの転置ブルームフィルタがm個配列された転置ブルームフィルタ列に転置して記憶装置に保存する転置工程と、
複数種類のハッシュ関数に基づいて、前記ハッシュ関数ごとに、検索対象データを、前記転置ブルームフィルタの配列位置をあらわす位置情報に変換する変換工程と、
前記転置ブルームフィルタ列の中から、前記変換工程によって変換された位置情報に対応する転置ブルームフィルタを前記位置情報ごとに特定する第1の特定工程と、
前記第1の特定工程によって特定された複数の転置ブルームフィルタに共通する位置情報に基づいて、前記データブロック集合内での前記検索対象データの有無を判定する判定工程と、
を実行させることを特徴とする検索プログラム。 A data block set including a registered data group for each data block and n Bloom filters in which m bits indicating negative in a predetermined number of data blocks are arranged in units of the predetermined number of data blocks On the computer with access to the Bloom Filter column,
An accepting step for accepting a transposition request for the Bloom filter row;
When a transposition request is accepted by the accepting step, a transposed Bloom filter sequence in which m n-bit transposed Bloom filters are arranged in which the Bloom filter sequence is a group of bit sequences in each Bloom filter are arranged at the same position. A transposition step of transposing to a storage device,
Based on a plurality of types of hash functions, for each hash function, a conversion step of converting search target data into position information representing an array position of the transposed Bloom filter;
From the transposed Bloom filter row, a first identifying step that identifies, for each positional information, a transposed Bloom filter corresponding to the positional information converted by the converting step;
A determination step of determining presence / absence of the search target data in the data block set based on position information common to a plurality of transposed Bloom filters specified by the first specification step;
A search program characterized in that is executed.
前記コンピュータの起動完了通知を、前記ブルームフィルタ列の転置要求として受け付けることを特徴とする請求項1に記載の検索プログラム。 The reception process includes
The search program according to claim 1, wherein the computer startup completion notification is received as a transposition request for the Bloom filter row.
前記データブロック集合に対する検索要求を、前記ブルームフィルタ列の転置要求として受け付けることを特徴とする請求項1に記載の検索プログラム。 The reception process includes
The search program according to claim 1, wherein a search request for the data block set is accepted as a transposition request for the Bloom filter string.
前記第2の特定工程によって特定されたブルームフィルタを配列要素とするブルームフィルタ列が存在するか否かを判断する判断工程と、を前記コンピュータに実行させ、
前記判定工程は、
前記判断工程によって存在しないと判断された場合、前記データブロック集合のうち、前記第2の特定工程によって特定されたブルームフィルタに対応するデータブロック内での前記検索対象データの有無を判定することを特徴とする請求項1〜3のいずれか一つに記載の検索プログラム。 Bloom filter corresponding to the position information common to a plurality of transposed Bloom filter identified by the previous SL first specific step, a second specifying step of specifying from the Bloom filter row,
Causing the computer to execute a determination step of determining whether or not there is a Bloom filter row having the Bloom filter specified by the second specification step as an array element,
The determination step includes
If it is determined that the data does not exist in the determination step, determining whether or not the search target data is present in the data block corresponding to the Bloom filter specified in the second specific step in the data block set. The search program according to any one of claims 1 to 3, characterized in that:
複数種類のハッシュ関数に基づいて、前記ハッシュ関数ごとに、検索対象データを、前記転置ブルームフィルタの配列位置をあらわす位置情報に変換する変換工程と、
前記転置ブルームフィルタ列の中から、前記変換工程によって変換された位置情報に対応する転置ブルームフィルタを前記位置情報ごとに特定する第1の特定工程と、
前記第1の特定工程によって特定された複数の転置ブルームフィルタに共通する位置情報に対応するブルームフィルタを、前記ブルームフィルタ列の中から特定する第2の特定工程と、
前記第2の特定工程によって特定されたブルームフィルタを配列要素とするブルームフィルタ列が存在するか否かを判断する判断工程と、
前記判断工程によって存在しないと判断された場合、前記データブロック集合のうち、前記第2の特定工程によって特定されたブルームフィルタに対応するデータブロック内での前記検索対象データの有無を判定する判定工程と、
をコンピュータに実行させることを特徴とする検索プログラム。 A data block set including a registered data group for each data block and a bit string in n Bloom filters in which m bits indicating negative in a predetermined number of data blocks are arranged together by bits at the same position A computer having access to a transposed Bloom filter array in which m n-bit transposed Bloom filters are arranged;
Based on a plurality of types of hash functions, for each hash function, a conversion step of converting search target data into position information representing an array position of the transposed Bloom filter;
From the transposed Bloom filter row, a first identifying step that identifies, for each positional information, a transposed Bloom filter corresponding to the positional information converted by the converting step;
A second specifying step of specifying a Bloom filter corresponding to position information common to a plurality of transposed Bloom filters specified by the first specifying step from the Bloom filter row;
A determination step of determining whether there is a Bloom filter row having the Bloom filter specified by the second specification step as an array element;
A determination step of determining whether or not the search target data exists in the data block corresponding to the Bloom filter specified by the second specific step in the data block set when it is determined that the data does not exist by the determination step. When,
A search program characterized by causing a computer to execute.
前記判断工程によって存在すると判断された場合、前記第2の特定工程によって特定されたブルームフィルタを配列要素とするブルームフィルタ列を特定対象ブルームフィルタ列とし、前記特定対象ブルームフィルタ列から転置された転置ブルームフィルタ列を特定対象転置ブルームフィルタ列とすることにより、前記特定対象転置ブルームフィルタ列の中から、前記変換工程によって変換された位置情報に対応する特定対象転置ブルームフィルタを前記位置情報ごとに特定し、
前記第2の特定工程は、
前記第1の特定工程によって特定された複数の特定対象転置ブルームフィルタに共通する位置情報に対応するブルームフィルタを、前記特定対象ブルームフィルタ列の中から特定することを特徴とする請求項4または5に記載の検索プログラム。 The first specific step includes
If it is determined by the determination step that the bloom filter column having the Bloom filter specified by the second specific step as an array element is set as the specific Bloom filter column, the transposition transposed from the specific Bloom filter column By specifying a Bloom filter string as a specific target transposed Bloom filter string, a specific target transposed Bloom filter corresponding to the positional information converted by the conversion step is specified for each positional information from the specific target transposed Bloom filter string And
The second specific step includes
The Bloom filter corresponding to the positional information common to the plurality of specific target transposed Bloom filters specified by the first specifying step is specified from the specific target Bloom filter row. Search program described in.
前記ブルームフィルタ列の転置要求を受け付ける受付手段と、
前記受付手段によって転置要求が受け付けられた場合、前記ブルームフィルタ列を、前記各ブルームフィルタ内のビット列を同一位置のビットどうしでまとめたnビットの転置ブルームフィルタがm個配列された転置ブルームフィルタ列に転置して記憶装置に保存する転置手段と、
複数種類のハッシュ関数に基づいて、前記ハッシュ関数ごとに、検索対象データを、前記転置ブルームフィルタの配列位置をあらわす位置情報に変換する変換手段と、
前記転置ブルームフィルタ列の中から、前記変換手段によって変換された位置情報に対応する転置ブルームフィルタを前記位置情報ごとに特定する第1の特定手段と、
前記第1の特定手段によって特定された複数の転置ブルームフィルタに共通する位置情報に基づいて、前記データブロック集合内での前記検索対象データの有無を判定する判定手段と、
を備えることを特徴とする検索装置。 A data block set including a registered data group for each data block and n Bloom filters in which m bits indicating negative in a predetermined number of data blocks are arranged in units of the predetermined number of data blocks A search device accessible to the Bloom filter column,
Receiving means for receiving a transposition request of the Bloom filter row;
When a transposition request is accepted by the accepting unit, a transposed Bloom filter sequence in which m n-bit transposed Bloom filters are arranged in which the Bloom filter sequence is a group of bit sequences in each Bloom filter. Transposing means for transposing to a storage device;
Based on a plurality of types of hash functions, for each hash function, conversion means for converting search target data into position information representing an array position of the transposed Bloom filter;
From the transposed Bloom filter row, a first identifying unit that identifies, for each positional information, a transposed Bloom filter corresponding to the positional information converted by the converting unit;
Determination means for determining presence or absence of the search target data in the data block set based on position information common to a plurality of transposed Bloom filters specified by the first specifying means;
A search device comprising:
前記ブルームフィルタ列の転置要求を受け付ける受付工程と、
前記受付工程によって転置要求が受け付けられた場合、前記ブルームフィルタ列を、前記各ブルームフィルタ内のビット列を同一位置のビットどうしでまとめたnビットの転置ブルームフィルタがm個配列された転置ブルームフィルタ列に転置して記憶装置に保存する転置工程と、
複数種類のハッシュ関数に基づいて、前記ハッシュ関数ごとに、検索対象データを、前記転置ブルームフィルタの配列位置をあらわす位置情報に変換する変換工程と、
前記転置ブルームフィルタ列の中から、前記変換工程によって変換された位置情報に対応する転置ブルームフィルタを前記位置情報ごとに特定する第1の特定工程と、
前記第1の特定工程によって特定された複数の転置ブルームフィルタに共通する位置情報に基づいて、前記データブロック集合内での前記検索対象データの有無を判定する判定工程と、
を実行することを特徴とする検索方法。 A data block set including a registered data group for each data block and n Bloom filters in which m bits indicating negative in a predetermined number of data blocks are arranged in units of the predetermined number of data blocks A computer with access to the Bloom Filter column,
An accepting step for accepting a transposition request for the Bloom filter row;
When a transposition request is accepted by the accepting step, a transposed Bloom filter sequence in which m n-bit transposed Bloom filters are arranged in which the Bloom filter sequence is a group of bit sequences in each Bloom filter are arranged at the same position. A transposition step of transposing to a storage device,
Based on a plurality of types of hash functions, for each hash function, a conversion step of converting search target data into position information representing an array position of the transposed Bloom filter;
From the transposed Bloom filter row, a first identifying step that identifies, for each positional information, a transposed Bloom filter corresponding to the positional information converted by the converting step;
A determination step of determining presence / absence of the search target data in the data block set based on position information common to a plurality of transposed Bloom filters specified by the first specification step;
The search method characterized by performing.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010104013A JP5526985B2 (en) | 2010-04-28 | 2010-04-28 | Search program, search device, and search method |
US13/064,674 US8560558B2 (en) | 2010-04-28 | 2011-04-07 | Computer product, search apparatus, management apparatus, search method, and management method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010104013A JP5526985B2 (en) | 2010-04-28 | 2010-04-28 | Search program, search device, and search method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011233014A JP2011233014A (en) | 2011-11-17 |
JP5526985B2 true JP5526985B2 (en) | 2014-06-18 |
Family
ID=45322263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010104013A Expired - Fee Related JP5526985B2 (en) | 2010-04-28 | 2010-04-28 | Search program, search device, and search method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5526985B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6028567B2 (en) * | 2012-12-28 | 2016-11-16 | 富士通株式会社 | Data storage program, data search program, data storage device, data search device, data storage method, and data search method |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3318834B2 (en) * | 1999-07-30 | 2002-08-26 | 三菱電機株式会社 | Data file system and data retrieval method |
JP2002171525A (en) * | 2000-11-29 | 2002-06-14 | Canon Inc | Simd type arithmetic unit provided with bit plane arithmetic instruction |
JP2003271649A (en) * | 2002-03-13 | 2003-09-26 | Ricoh Co Ltd | Relational database inquiry processing method and relational database inquiry processing system |
-
2010
- 2010-04-28 JP JP2010104013A patent/JP5526985B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011233014A (en) | 2011-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5716554B2 (en) | SEARCH PROGRAM, SEARCH METHOD, SEARCH DEVICE, AND NODE | |
US8560558B2 (en) | Computer product, search apparatus, management apparatus, search method, and management method | |
US9251467B2 (en) | Probabilistic parsing | |
JP5011751B2 (en) | Translation information output processing program, processing method, and processing apparatus | |
JP2007004633A (en) | Language model generation device and language processing device using language model generated by the same | |
CN101099129A (en) | Organizing pointers to objects | |
JP5141560B2 (en) | Information search program, recording medium storing the program, information search device, and information search method | |
JP5359941B2 (en) | Data management apparatus and data management method | |
KR20090048624A (en) | Dynamic fragment mapping | |
JP5083367B2 (en) | SEARCH DEVICE, SEARCH METHOD, AND COMPUTER PROGRAM | |
KR20150083961A (en) | The method for searching integrated multilingual consonant pattern, for generating a character input unit to input consonants and apparatus thereof | |
US10387543B2 (en) | Phoneme-to-grapheme mapping systems and methods | |
WO2015005017A1 (en) | Multidimensional-range search device and multidimensional-range search method | |
JP5526985B2 (en) | Search program, search device, and search method | |
US20060248037A1 (en) | Annotation of inverted list text indexes using search queries | |
JP2013003653A (en) | Retrieval program, retrieval method, retrieval device, and node | |
KR101694179B1 (en) | Method and apparatus for indexing based on removing vowel | |
JP5526986B2 (en) | Management program, management apparatus, and management method | |
JP5526987B2 (en) | Management program, management apparatus, and management method | |
KR101113787B1 (en) | Apparatus and method for indexing text | |
WO2012061983A1 (en) | Seed set expansion | |
JP2008243074A (en) | Device, method, and program for retrieving document | |
CN104077418A (en) | Mobile terminal application program searching method and system | |
JP5601123B2 (en) | Transposed index generation method and generation apparatus for N-gram search, search method and search apparatus using the inverted index, and computer program | |
JP5472929B2 (en) | Document search apparatus, document search method, and document search program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131024 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131112 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140114 |
|
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: 20140318 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140331 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5526985 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |