JP6575688B2 - インデックス付きデータ生成プログラム、インデックス付きデータ生成方法、インデックス付きデータ生成システム、検索プログラム、検索方法、および検索システム - Google Patents
インデックス付きデータ生成プログラム、インデックス付きデータ生成方法、インデックス付きデータ生成システム、検索プログラム、検索方法、および検索システム Download PDFInfo
- Publication number
- JP6575688B2 JP6575688B2 JP2018543574A JP2018543574A JP6575688B2 JP 6575688 B2 JP6575688 B2 JP 6575688B2 JP 2018543574 A JP2018543574 A JP 2018543574A JP 2018543574 A JP2018543574 A JP 2018543574A JP 6575688 B2 JP6575688 B2 JP 6575688B2
- Authority
- JP
- Japan
- Prior art keywords
- bitmap
- data
- search
- file
- hashed
- 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
Links
- 238000000034 method Methods 0.000 title claims description 60
- 238000012545 processing Methods 0.000 description 57
- 238000010586 diagram Methods 0.000 description 44
- 239000000284 extract Substances 0.000 description 30
- 230000003068 static effect Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 15
- WBMKMLWMIQUJDP-STHHAXOLSA-N (4R,4aS,7aR,12bS)-4a,9-dihydroxy-3-prop-2-ynyl-2,4,5,6,7a,13-hexahydro-1H-4,12-methanobenzofuro[3,2-e]isoquinolin-7-one hydrochloride Chemical compound Cl.Oc1ccc2C[C@H]3N(CC#C)CC[C@@]45[C@@H](Oc1c24)C(=O)CC[C@@]35O WBMKMLWMIQUJDP-STHHAXOLSA-N 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000007639 printing Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 239000013078 crystal Substances 0.000 description 2
- 239000007788 liquid Substances 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、インデックス付きデータ生成プログラム、インデックス付きデータ生成方法、インデックス付きデータ生成システム、検索プログラム、検索方法、および検索システムに関する。
従来、帳票を印刷する際には、目的の出力形式で出力されることを保証するために、例えばPDF(Portable Document Format)の形式が用いられる。印刷のために作成されたPDFファイルは、単に印刷や保管の目的だけでなく、検索などに利用されることがある。しかしながら、印刷のために作成されたPDFファイルは、ファイルサイズを小さくすることが求められるため、高度な検索などに利用することができない。高度な検索を行うために、例えば、タグを拡張することにより、PDFファイルに、文字列などの位置情報や属性情報などのメタデータを埋め込むことが知られている。また、高度な検索を行うために、例えば、帳票の項目とページ数とを特定のキーで関連付けたインデックスを生成することが知られている。
しかしながら、例えば、タグを拡張する場合には、ファイルサイズが大きくなり、かつインデックスを有さないので、速やかに検索することができない。
また、例えば、従来の技術を用いて、単語や数値単位に、単語や数値とページの情報を関連付けたインデックスを作成した場合であっても、インデックスは、ページの情報しか有していないため、単語や数値の項目に対応した検索ができない。そのため、インデックスを参照した場合であっても、検索により検索候補を絞り込んだ後に、検索候補に対して個別に検索対象の項目に該当するか否かを確認する必要がある。
例えば、帳票で数値の検索を行う場合、「100」という数値を検索しても、「単価」が「100」、「数量」が「100」、「金額」が「100」である検索候補が表示されるため、目的とする項目に該当するか否かの確認が必要となる。また、単語の検索を行う場合も同様に、「鎌倉」を検索しても、「支店名」が「鎌倉」、「住所」が「鎌倉」、「氏名」が「鎌倉」である検索候補が表示される。
そのため、PDFファイルの検索候補とされたページのデータをそれぞれ参照して、個別に検索対象の項目に該当するか否かを確認する必要がある。
1つの側面では、検索対象の項目に該当するか否かを速やかに判別することを目的とする。
第1の案では、インデックス付きデータ生成プログラムは、コンピュータに、複数のカラムを有する帳票を含む帳票データから帳票出力形式データを生成する処理を実行させる。インデックス付きデータ生成プログラムは、コンピュータに、単語、文字、または数値に対するインデックス情報であって、複数のカラムそれぞれの属性と、帳票出力形式データに含まれる複数のカラムそれぞれに対応したデータ相互の帳票データにおける位置関係とを特定可能な位置情報を含むインデックス情報を生成する処理を実行させる。インデックス付きデータ生成プログラムは、コンピュータに、インデックス情報、および帳票出力形式データを含む出力ファイルを出力する処理を実行させる。
1つの態様によれば、検索対象の項目に該当するか否かを速やかに判別することができる。
以下に、本願の開示するインデックス付きデータ生成プログラム、インデックス付きデータ生成方法、インデックス付きデータ生成システム、検索プログラム、検索方法、および検索システムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの権利範囲が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[実施例1に係る帳票ファイル生成の一例]
図1は、実施例1に係る帳票ファイルの生成処理の流れの一例を示す図である。帳票出力装置は、入力された帳票データから帳票出力形式データを生成する。帳票出力装置は、生成した帳票出力形式データに基づいて、帳票の複数の項目(カラム)それぞれの属性(以下、「項目」と称する場合がある。)と、帳票出力形式データに含まれる複数の項目それぞれに対応したデータ相互の帳票データにおける位置関係とを特定可能な位置情報を含むビットマップ型インデックスを生成する。そして、帳票出力装置は、帳票出力形式データと、ビットマップ型インデックスとを含む帳票ファイルを生成する。帳票データは、複数の項目を有する帳票を含む。
図1は、実施例1に係る帳票ファイルの生成処理の流れの一例を示す図である。帳票出力装置は、入力された帳票データから帳票出力形式データを生成する。帳票出力装置は、生成した帳票出力形式データに基づいて、帳票の複数の項目(カラム)それぞれの属性(以下、「項目」と称する場合がある。)と、帳票出力形式データに含まれる複数の項目それぞれに対応したデータ相互の帳票データにおける位置関係とを特定可能な位置情報を含むビットマップ型インデックスを生成する。そして、帳票出力装置は、帳票出力形式データと、ビットマップ型インデックスとを含む帳票ファイルを生成する。帳票データは、複数の項目を有する帳票を含む。
帳票ファイルの生成処理の一例を、以下に説明する。例えば、帳票ファイル生成処理を実行する帳票出力装置は、帳票データを含むファイル3を読み出す。なお、ファイル3の「3」は、ファイルIDが「3」であることを示す。ファイル3は、帳票の項目として、「日付」、「商品コード」、「商品名」などを有している。例えば、「日付」の項目には「2015/7/15」が含まれる。また、例えば、「商品コード」の項目には「12345」が含まれる。また、例えば、「商品名」の項目には「a1a2a3」が含まれる。ここでは、「a1a2a3」を、日本語の漢字で表示される「冷蔵庫」として説明する。なお、帳票の項目は、これらに限定されるものではない。
帳票出力装置は、ファイル3に含まれる帳票データから帳票出力形式データを生成する。帳票出力形式データは、CSV(Comma-Separated Values)形式のデータである。帳票出力形式データには、カンマにより区切られた複数の項目のデータからなるレコードが含まれる。なお、図1では、一例として1つのレコードを有した例を示しているが、帳票出力形式データには、複数のレコードが含まれる。
帳票出力装置は、ファイル3に対し、単語、文字などで構成される文字列や、数値で構成される数値列を含む帳票出力形式データを符号化し、符号化データと、符号化辞書とを生成する。なお、以降、文字列、および数値列を、単に「文字列」として説明する。帳票出力装置は、例えば、「日付」の項目の「2015/7/15」を「A000h」に符号化する。帳票出力装置は、例えば、「商品コード」の項目の「12345」を「B010h」に符号化する。帳票出力装置は、例えば、「商品名」の項目の「冷蔵庫」を「C021h」に符号化する。また、帳票出力装置は、例えば、帳票出力形式データの文字列がアルファベットである場合、単語ごとに符号化する。例えば、「Liquid Crystal Television」は、「Liquid」、「Crystal」、および「Television」に分けられ、それぞれ符号化される。帳票出力形式データの各データは、項目ごとに、符号化される。帳票出力装置は、帳票出力形式データを符号化し、符号化データを生成する。
また、帳票出力装置は、帳票出力形式データの文字列が日本語である場合、1文字ごとに符号化する。例えば、「冷蔵庫」は、「冷」、「蔵」、「庫」に分けられ、それぞれ符号化される。帳票出力装置は、例えば、「冷」を「D000h」に符号化する。帳票出力装置は、例えば、「蔵」を「D001h」に符号化する。帳票出力装置は、例えば、「庫」を「D002h」に符号化する。なお、帳票出力形式データの文字列が日本語である場合、符号化データに用いられる符号は、文字列ごとに、符号化された符号である。
以降、帳票出力形式データの各データなどが符号化された符号を「単語ID」という。
符号化辞書は、静的辞書と、動的辞書とを有する。静的辞書とは、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号(単語ID)を割り当てた辞書のことをいう。静的辞書には、それぞれの単語に対応する符号である静的コードがあらかじめ登録されている。これに対して、動的辞書とは、静的辞書に登録されていない単語と、動的に付された動的コード(符号)とを対応付けた辞書である。静的辞書に登録されていない単語には、一例として、出現頻度の低い単語(低頻度単語)、文字、未知語、数値、時刻、タグなどがある。ここでいう未知語とは、静的辞書に登録されていない単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。動的辞書には、静的辞書に登録されていない単語の出現順に、動的コードに対応付けられた単語が登録される。なお、符号化データを生成するための符号化辞書と、ビットマップ型インデックスを生成するための符号化辞書とを異なる辞書としても良い。
帳票出力装置は、ファイルIDに対する単語IDについての情報を生成する。また、帳票出力装置は、ファイルIDに対し、単語IDと、単語IDが示す文字列の位置とについての情報を生成する。また、帳票出力装置は、ファイルIDに対し、帳票の項目と、帳票の項目の位置とについての情報を生成する。帳票出力装置は、生成された情報に基づき、ファイル3に対する、単語IDが示す文字列の存否を2次元ビットマップ型インデックスBI1に設定する。また、帳票出力装置は、生成された情報に基づき、ファイル3に対する、単語ID、および単語IDが示す文字列の位置を第1の3次元ビットマップ型インデックスBI2に設定する。また、帳票出力装置は、生成された情報に基づき、ファイル3に対する、帳票の項目、および帳票の項目が示す位置を第2の3次元ビットマップ型インデックスBI3に設定する。
帳票出力形式データの文字列が日本語である場合、2次元ビットマップ型インデックスBI1、第1の3次元ビットマップ型インデックスBI2などでは、1文字ごとに符号化した単語IDが用いられる。例えば、文字列が日本語の「冷蔵庫」である場合、「冷」、「蔵」、「庫」の対応する3つの単語IDが用いられる。また、例えば、文字列がアルファベットの「Liquid Crystal Television」である場合、「Liquid」、「Crystal」、「Television」に対応する3つの単語IDが用いられる。
ここでいう2次元ビットマップ型インデックスBI1とは、全文検索のためのインデックスであり、文字列を指定するポインタと、各ファイルにおける文字列の存否を示すビットとを連結したビット列である。すなわち、2次元ビットマップ型インデックスBI1とは、ファイルに含まれる文字列について、ファイルごとの存否をインデックス化したビットマップのことをいう。検索処理時には、このビットマップを、検索対象である文字列を含むか否かを示すインデックスとして用いることができる。文字列を指定するポインタとしては、例えば、単語IDが採用される。なお、文字列を指定するポインタは、例えば、文字列そのものを用いても良い。すなわち、2次元ビットマップ型インデックスBI1は、文字列を指定するポインタで示される文字列ごとのビットマップを纏めたものである。図1に示すように、2次元ビットマップ型インデックスBI1のX軸はファイルIDを表し、Y軸は単語IDを表す。つまり、2次元ビットマップ型インデックスBI1は、単語IDが示す文字列の、複数のファイルIDが示すファイルごとの存否を表す。
ここでいう第1の3次元ビットマップ型インデックスBI2は、2次元ビットマップ型インデックスBI1に対して、各ファイル内での、文字列の位置を追加したビットマップ型インデックスである。すなわち、第1の3次元ビットマップ型インデックスBI2とは、ファイルに含まれる、文字列について、ファイルごとに存する位置をインデックス化したビットマップのことをいう。図1に示すように、第1の3次元ビットマップ型インデックスBI2のX軸はOffset(位置)を表し、Y軸は単語IDを表し、Z軸はファイルIDを表す。第1の3次元ビットマップ型インデックスBI2は、単語IDが示す文字列の、複数のファイルIDが示すファイルごとの位置を表す。すなわち、第1の3次元ビットマップ型インデックスBI2は、文字列相互の帳票データにおける位置関係を特定可能な位置情報を含むインデックス情報である。
また、第2の3次元ビットマップ型インデックスBI3は、各ファイルにおける、帳票の項目の位置をインデックス化したビットマップのことをいう。図1に示すように、第2の3次元ビットマップ型インデックスBI3のX軸はOffset(位置)を表し、Y軸は帳票の項目を表し、Z軸はファイルIDを表す。すなわち、第2の3次元ビットマップ型インデックスBI3は、帳票の項目の帳票データにおける位置関係を特定可能な位置情報を含むインデックス情報である。
ここで、帳票出力装置がファイル3に対して、各ビットマップ型インデックスを生成する場合の処理について説明する。
帳票出力装置は、ファイル3の帳票の項目に含まれる文字列を単語IDに符号化する。なお、文字列が日本語である場合、帳票出力装置は、1文字ごとに、単語IDに符号化する。例えば、「商品名」の「冷蔵庫」は、日本語なので、1文字ごとに、単語IDに符号化される。ここでは、帳票の項目「商品名」の「冷」について各ビットマップ型インデックスを生成する場合の処理について説明する。「商品名」の「冷」の単語IDは、「D000h」である。ファイル3における「冷」の位置は、「2」であるとする。
帳票出力装置は、生成された情報に基づいて、ファイル3に対する、単語ID「D000h」が示す文字の存否を2次元ビットマップ型インデックスBI1に設定する。図1に示す2次元ビットマップ型インデックスBI1には、ファイルIDが「3」のファイルに、「D000h」が存在することを意味するビット値「1」が、ファイルID「3」に対応するビットに設定される。なお、例えば、ファイルに「D000h」が存在しない場合には、そのファイルIDに対応するビットにビット値「0」が設定される。
帳票出力装置は、生成された情報に基づいて、ファイル3に対し、単語ID「D000h」が示す文字の位置「2」を第1の3次元ビットマップ型インデックスBI2に設定する。図1に示す第1の3次元ビットマップ型インデックスBI2には、ファイルIDが「3」のファイルの位置「2」に、「D000h」が存在することを意味するビット値「1」が、ファイルID「3」の位置「2」に対応するビットに設定される。なお、例えば、ファイルの所定の位置に「D000h」が存在しない場合には、そのファイルIDの所定の位置に対応するビットにビット値「0」が設定される。
また、帳票出力装置は、生成された情報に基づいて、ファイル3に対し、帳票の項目「商品名」の位置を第2の3次元ビットマップ型インデックスBI3に設定する。図1に示す第2の3次元ビットマップ型インデックスBI3には、帳票の項目「商品名」が、ファイル3の位置「2」から始まっていることを意味するビット値「1」が、ファイルID「3」の位置「2」に対応するビットに設定される。第2の3次元ビットマップ型インデックスBI3では、帳票の項目が始まる位置に対応するビットにのみビット値「1」が設定される。例えば、ファイル3において帳票の項目「商品名」は、位置「2」から始まり、位置「4」で終わる。そのため、帳票の項目「商品名」の次の項目について、第2の3次元ビットマップ型インデックスBI3では、位置「5」に対応するビットにビット値「1」が設定される。
このようにして、帳票出力装置は、ファイル3に対して、帳票の複数の項目、および帳票の各データを符号化した単語ID相互の帳票データにおける位置関係を特定可能な位置情報を含む各ビットマップ型インデックスBI1〜BI3を生成する。帳票出力装置は、各ビットマップ型インデックスBI1〜BI3から各ハッシュ化インデックスを生成する。そして、帳票出力装置は、各ハッシュ化インデックスのインデックス情報を有する符号化ファイル、および帳票出力形式データを含む帳票ファイルを、出力ファイルとして出力する。ハッシュ化インデックスについては後述する。
[ビットマップ型インデックスの一例]
次に、ビットマップ型インデックスについて、図2を用いて説明する。図2は、実施例1のビットマップ型インデックスの一例を示す図である。ここでは、ファイル3における、帳票の項目についてのビットマップ型インデックスを一例として説明する。また、ファイル3における、帳票の項目「日付」の「2015/7/15」、および帳票の項目「冷蔵庫」に対応する単語IDについてのビットマップ型インデックスを一例として説明する。
次に、ビットマップ型インデックスについて、図2を用いて説明する。図2は、実施例1のビットマップ型インデックスの一例を示す図である。ここでは、ファイル3における、帳票の項目についてのビットマップ型インデックスを一例として説明する。また、ファイル3における、帳票の項目「日付」の「2015/7/15」、および帳票の項目「冷蔵庫」に対応する単語IDについてのビットマップ型インデックスを一例として説明する。
帳票の項目についてのビットマップ型インデックスでは、ファイル3の先頭のレコードから、項目順に、位置、および位置に対応するビットが割り当てられる。そして、項目の位置に対応するビットのビット値が「1」に設定される。或るレコードの最後の帳票の項目に位置、および位置に対応するビットが割り当てられると、次のレコードの最初の項目に次の位置、および位置に対応する次のビットが割り当てられる。
帳票の項目「日付」のビットマップは、「・・・1000001」となっている。これは、ファイル3の位置「0」である0ビット目に、先頭のレコードの帳票の項目「日付」に関するデータが格納されていることを表す。また、ファイル3の位置「6」である6ビット目に、次のレコードの帳票の項目「日付」に関するデータが格納されていることを表す。また、ここでは、位置「12」、「21」、「29」、および「37」に対応する各ビットに、帳票の項目「日付」に関するデータが格納されている。
また、帳票の項目「商品コード」のビットマップは、「・・・10000010」となっている。これは、ファイル3の位置「1」である1ビット目に、先頭のレコードの帳票の項目の「商品コード」に関するデータが格納されていることを表す。また、ファイル3の位置「7」である7ビット目に、次のレコードの帳票の項目「商品コード」に関するデータが格納されていることを表す。また、ここでは、位置「13」、「22」、「30」、および「38」に対応する各ビットに、帳票の項目「商品コード」に関するデータが格納されている。
また、帳票の項目「商品名」のビットマップは、「・・・100000100」となっており、帳票の項目「単価」のビットマップは、「・・・100000100000」となっている。これは、ファイル3の位置「2」〜「4」である2ビット目〜4ビット目に項目「商品名」に関するデータが格納されていることを表す。また、ファイル3の位置「8」〜「10」である8ビット目〜10ビット目に項目「商品名」に関するデータが格納されていることを表す。また、ここでは、位置「14」〜「19」、「23」〜「27」、「31」〜「35」、および「39」〜「42」に対応する各ビットに、帳票の項目「商品名」に関するデータが格納されている。
単語IDについてのビットマップ型インデックスでは、ファイル3の先頭のレコードから、単語ID順に、位置、および位置に対応するビットが割り当てられる。そして、単語IDの位置に対応するビットのビット値が「1」に設定される。或るレコードの最後の単語IDに位置、および位置に対応するビットが割り当てられると、次のレコードの最初の単語IDに次の位置、および位置に対応する次のビットが割り当てられる。
また、単語ID「A000h」(数値「2015/7/15))のビットマップは、「・・・0001」となっている。これは、単語ID「A000h」に対応する数値「2015/7/15」が0ビット目に格納され、他のビットには格納されていないことを表す。また、単語ID「D000h」(文字「冷」)のビットマップは、「・・・0100」となっている。これは、単語ID「D000h」に対応する文字「冷」が2ビット目に格納され、他のビットには格納されていないことを表す。また、単語ID「D001h」(文字「蔵」)のビットマップは、「・・・1000」となっている。これは、単語ID「D001h」に対応する文字「蔵」が3ビット目に格納され、他のビットには格納されていないことを表す。また、単語ID「D002h」(文字「庫」)のビットマップは、「・・・10000」となっている。これは、単語ID「D002h」に対応する文字「蔵」が4ビット目に格納され、他のビットには格納されていないことを表す。
このように、ビットマップ型インデックスは、例えば、帳票の項目や、帳票データにおける単語IDの位置情報などを格納したビットマップ型転置インデックスである。
[実施例1に係るハッシュ化インデックス生成処理の一例]
次に、ビットマップ側インデックスのビットマップをハッシュ化する処理の一例を、図3を参照して説明する。図3は、実施例1に係るハッシュ化インデックス生成処理の一例を示す図である。図3は、X軸としてファイルID、Y軸として単語IDを表す2次元ビットマップ型インデックスBI1のビットマップをハッシュ化する場合を一例として説明する。
次に、ビットマップ側インデックスのビットマップをハッシュ化する処理の一例を、図3を参照して説明する。図3は、実施例1に係るハッシュ化インデックス生成処理の一例を示す図である。図3は、X軸としてファイルID、Y軸として単語IDを表す2次元ビットマップ型インデックスBI1のビットマップをハッシュ化する場合を一例として説明する。
帳票出力装置は、単語IDに対応するビットマップそれぞれについてハッシュ関数を適用した複数のハッシュ化ビットマップを生成する。ここでは、帳票出力装置は、43ビットレジスタを想定し、一例として29と31のハッシュ値(底)を基に、2次元ビットマップ型インデックスBI1のビットマップをハッシュ化する。具体的には、帳票出力装置は、1つの底のハッシュ化ビットマップについて、単語IDに対応するビットマップの各ビットの位置を底で割った余りの位置に、ビットマップの各ビットの値を設定する。ビットマップの各ビットの位置は、それぞれのファイルIDに対応する。一例として、帳票出力装置は、底29のハッシュ化ビットマップh11について、ビットマップの各ビットの位置を底29で割った余りの位置に、ビットマップの各ビットの値を設定する。ビットマップの35ビット目の位置のビット値「1」は、ハッシュ化ビットマップh11の6ビット目に設定される。ビットマップの42ビット目の位置のビット値「1」は、ハッシュ化ビットマップh11の13ビット目に設定される。帳票出力装置は、底31のハッシュ化ビットマップh12について、ビットマップの各ビットの位置を底31で割った余りの位置に、ビットマップの各ビットの値を設定する。ビットマップの35ビット目の位置のビット値「1」は、ハッシュ化ビットマップh12の4ビット目に設定される。ビットマップの42ビット目の位置のビット値「1」は、ハッシュ化ビットマップh12の11ビット目に設定される。すなわち、帳票出力装置は、ビットマップの0ビット目からの各ビットを順番にハッシュ化ビットマップの0ビット目から設定し、(底−1)ビット目まで設定する。そして、帳票出力装置は、再度折り返してビットマップの0ビット目から既にハッシュ化ビットマップに設定された値とOR演算した値を設定する。この結果、帳票出力装置は、ビットマップについて、ハッシュ化ビットマップh11、h12を生成する。このようにして、帳票出力装置は、単語IDにおける2次元ビットマップ型インデックスBI1のビットマップについて、それぞれハッシュ化ビットマップh11、h12を生成する。帳票出力装置は、生成されたハッシュ化ビットマップh11、h12を纏めた2次元ハッシュ化インデックスHI1を生成する。
帳票出力装置は、第1の3次元ビットマップ型インデックスBI2のビットマップから、2次元ビットマップ型インデックスBI1のビットマップの場合と同様に、ハッシュ関数を適用した複数のハッシュ化ビットマップを生成する。そして、帳票出力装置は、それぞれ生成されたハッシュ化ビットマップを纏めた第1の3次元ハッシュ化インデックスHI2を生成する。また、帳票出力装置は、第2の3次元ビットマップ型インデックスBI3から、同様に、第2の3次元ハッシュ化インデックスHI3を生成する。以降、ハッシュ値(底)は、一例として、29と31であるとして説明する。
[符号化ファイルの構成例]
図4は、符号化ファイルの構成例を示す図である。図4に示すように、符号化ファイルは、ヘッダ部と、符号化データと、トレーラ部とを有する。符号化データは、複数のファイルそれぞれの符号化された単語ID群を記憶する。トレーラ部は、各ファイルのアドレス、動的辞書(共通/個別)の情報、ハッシュ化インデックス(2次元/3次元)などを記憶する。各ファイルのアドレスは、複数のファイルが符号化された各符号化データの格納先のアドレスを示す。各ファイルのアドレスは、一例として、符号化データの先頭からの相対アドレスである。個別の動的辞書の情報は、複数のファイルそれぞれに対する、動的辞書の情報に対応する。共通の動的辞書の情報は、複数のファイル全体に対する、動的辞書の情報に対応する。ヘッダ部には、トレーラ部に格納された各ファイルのアドレスへのポインタ、動的辞書へのポインタやハッシュ化インデックス(2次元/3次元)へのポインタが格納される。帳票出力装置は、複数のファイルをそれぞれ符号化すると、符号化されたそれぞれの結果を示す符号化データを符号化ファイルに格納し、格納した各アドレスを各ファイルのアドレスに格納する。復号化処理では、ヘッダ部の各ファイルのアドレスへのポインタを利用して、トレーラ部の各ファイルのアドレスから復号化対象のファイルのアドレスを参照する。復号化処理は、ヘッダ部の動的辞書へのポインタを利用し、動的辞書を参照する。検索処理では、ヘッダ部の各ハッシュ化インデックスのアドレスへのポインタを利用して、トレーラ部の各ハッシュ化インデックスのアドレスから検索対象のハッシュ化インデックスのアドレスを参照する。
図4は、符号化ファイルの構成例を示す図である。図4に示すように、符号化ファイルは、ヘッダ部と、符号化データと、トレーラ部とを有する。符号化データは、複数のファイルそれぞれの符号化された単語ID群を記憶する。トレーラ部は、各ファイルのアドレス、動的辞書(共通/個別)の情報、ハッシュ化インデックス(2次元/3次元)などを記憶する。各ファイルのアドレスは、複数のファイルが符号化された各符号化データの格納先のアドレスを示す。各ファイルのアドレスは、一例として、符号化データの先頭からの相対アドレスである。個別の動的辞書の情報は、複数のファイルそれぞれに対する、動的辞書の情報に対応する。共通の動的辞書の情報は、複数のファイル全体に対する、動的辞書の情報に対応する。ヘッダ部には、トレーラ部に格納された各ファイルのアドレスへのポインタ、動的辞書へのポインタやハッシュ化インデックス(2次元/3次元)へのポインタが格納される。帳票出力装置は、複数のファイルをそれぞれ符号化すると、符号化されたそれぞれの結果を示す符号化データを符号化ファイルに格納し、格納した各アドレスを各ファイルのアドレスに格納する。復号化処理では、ヘッダ部の各ファイルのアドレスへのポインタを利用して、トレーラ部の各ファイルのアドレスから復号化対象のファイルのアドレスを参照する。復号化処理は、ヘッダ部の動的辞書へのポインタを利用し、動的辞書を参照する。検索処理では、ヘッダ部の各ハッシュ化インデックスのアドレスへのポインタを利用して、トレーラ部の各ハッシュ化インデックスのアドレスから検索対象のハッシュ化インデックスのアドレスを参照する。
[実施例1に係る検索処理の一例]
図5は、検索対象を入力した画像の一例を示す図である。図5に示すように、検索装置では、検索条件の有効範囲として、「帳票」、「ページ」、「レコード」とを選択可能となっている。検索条件の有効範囲は、検索を行う単位を表している。例えば、「帳票」が選択されている場合には、帳票単位で検索が行われる。また、例えば、「ページ」が選択されている場合には、ページ単位で検索が行われる。例えば、「すべて」が選択されている場合には、検索を行う単位を指定せずに、検索が行われる。検索装置では、項目条件として、例えば、3つの検索条件で検索可能となっている。ここでは、検索条件の有効範囲として、「すべて」が選択され、検索条件として「商品名」が設定され、検索対象として「冷蔵庫」が入力された場合について説明する。なお、検索条件は、直接入力可能であってもよい。検索対象として日本語が入力された場合には、検索対象の文字列は、1文字ごとに分けられ、検索が行われる。
図5は、検索対象を入力した画像の一例を示す図である。図5に示すように、検索装置では、検索条件の有効範囲として、「帳票」、「ページ」、「レコード」とを選択可能となっている。検索条件の有効範囲は、検索を行う単位を表している。例えば、「帳票」が選択されている場合には、帳票単位で検索が行われる。また、例えば、「ページ」が選択されている場合には、ページ単位で検索が行われる。例えば、「すべて」が選択されている場合には、検索を行う単位を指定せずに、検索が行われる。検索装置では、項目条件として、例えば、3つの検索条件で検索可能となっている。ここでは、検索条件の有効範囲として、「すべて」が選択され、検索条件として「商品名」が設定され、検索対象として「冷蔵庫」が入力された場合について説明する。なお、検索条件は、直接入力可能であってもよい。検索対象として日本語が入力された場合には、検索対象の文字列は、1文字ごとに分けられ、検索が行われる。
図6は、実施例1の検索処理の一例を示す図である。図6に示すように、検索処理を実行する検索装置は、入力された検索対象の「冷蔵庫」をもとに、2次元ハッシュ化インデックスHI1を参照する。検索装置は、「冷」、「蔵」、「庫」に対応する各単語IDが存在するファイルIDを取得する。そして、検索装置は、第1の3次元ハッシュ化インデックスHI2に、単語IDとファイルIDとを指定して、単語IDの位置情報を特定する。また、検索装置は、第2の3次元ハッシュ化インデックスHI3に、検索条件の「商品名」とファイルIDとを指定して、帳票の項目「商品名」の位置情報を特定する。
検索処理の一例を、以下で詳しく説明する。検索装置は、検索対象の文字列の入力を受け付けると、2次元ハッシュ化インデックスHI1を参照し、受け付けた検索対象が示す単語IDに対するハッシュ化ビットマップを抽出する。検索装置は、検索対象として受け付けられた「冷蔵庫」を「冷」、「蔵」、「庫」に分けて、各文字に対応する単語IDを読み出す。検索装置は、「冷」に対応する単語ID「D000h」を読み出す。検索装置は、「蔵」に対応する単語ID「D001h」を読み出す。検索装置は、「庫」に対応する単語ID「D002h」を読み出す。そして、検索装置は、単語ID「D000h」に対するハッシュ化ビットマップh4を2次元ハッシュ化インデックスHI1から抽出する。ハッシュ化ビットマップh4には、底29のハッシュ化ビットマップh41と底31のハッシュ化ビットマップh42とが含まれる。検索装置は、単語ID「D001h」に対するハッシュ化ビットマップh5を2次元ハッシュ化インデックスHI1から抽出する。ハッシュ化ビットマップh5には、底29のハッシュ化ビットマップh51と底31のハッシュ化ビットマップh52とが含まれる。検索装置は、単語ID「D002h」に対するハッシュ化ビットマップh6を2次元ハッシュ化インデックスHI1から抽出する。ハッシュ化ビットマップh6には、底29のハッシュ化ビットマップh61と底31のハッシュ化ビットマップh62とが含まれる。
検索装置は、抽出された各単語IDに対するハッシュ化ビットマップを復元する。なお、ハッシュ化ビットマップの復元処理は、後述する。復元結果は、単語IDに対応するビットマップで表わされる。ここでは、検索装置は、単語ID「D000h」に対するハッシュ化ビットマップh4を復元し、ビットマップb4を復元結果として出力する。検索装置は、単語ID「D001h」に対するハッシュ化ビットマップh5を復元し、ビットマップb5を復元結果として出力する。検索装置は、単語ID「D002h」に対するハッシュ化ビットマップh6を復元し、ビットマップb6を復元結果として出力する。
また、検索装置は、単語ID「D000h」のビットマップb4と、単語ID「D001h」のビットマップb5と、単語ID「D002h」のビットマップとのAND演算を行う。検索装置は、AND結果のビットがON(「1」)であるファイルIDを出力する。すなわち、検索装置は、単語ID「D000h」が示す「冷」と、単語ID「D001h」が示す「蔵」と、単語ID「D002h」が示す「庫」と、を含むファイルのファイルIDを絞り込む。ここでは、ファイルIDとして「3」が出力される。
また、検索装置は、ファイルIDを絞り込んだ後、第1の3次元ハッシュ化インデックスHI2を参照し、単語ID、およびファイルIDに対するハッシュ化ビットマップを抽出する。ここでは、検索装置は、単語ID「D000h」、およびファイルID「3」に対するハッシュ化ビットマップh7を第1の3次元ハッシュ化インデックスHI2から抽出する。ハッシュ化ビットマップh7には、底29のハッシュ化ビットマップh71と底31のハッシュ化ビットマップh72とが含まれる。また、検索装置は、単語ID「D001h」、およびファイルID「3」に対するハッシュ化ビットマップh8を第1の3次元ハッシュ化インデックスHI2から抽出する。ハッシュ化ビットマップh8には、底29のハッシュ化ビットマップh81と底31のハッシュ化ビットマップh82とが含まれる。また、検索装置は、単語ID「D002h」、およびファイルID「3」に対するハッシュ化ビットマップh9を第1の3次元ハッシュ化インデックスHI2から抽出する。ハッシュ化ビットマップh9には、底29のハッシュ化ビットマップh91と底31のハッシュ化ビットマップh92とが含まれる。
また、検索装置は、抽出されたハッシュ化ビットマップh7〜h9を復元する。復元結果は、単語ID、およびファイルIDに対応するビットマップで表わされる。ここでは、検索装置は、単語ID「D000h」、およびファイルID「3」に対するハッシュ化ビットマップh7を復元し、ビットマップb7を復元結果として出力する。検索装置は、単語ID「D001h」、およびファイルID「3」に対するハッシュ化ビットマップh8を復元し、ビットマップb8を復元結果として出力する。検索装置は、単語ID「D002h」、およびファイルID「3」に対するハッシュ化ビットマップh9を復元し、ビットマップb9を復元結果として出力する。
また、検索装置は、復元結果として出力されたビットマップb7〜b9のビットがON(「1」)を示すOffset(位置)を特定する。例えば、検索装置は、ファイルID「3」、および単語ID「D000h」のビットマップb7において、ビット値が「1」のOffset(位置)を特定する。ここでは、Offset(位置)「2」が特定される。また、検索装置は、ファイルID「3」、および単語ID「D001h」のビットマップb8において、ビット値が「1」のOffset(位置)を特定する。ここでは、Offset(位置)「3」が特定される。また、検索装置は、ファイルID「3」、および単語ID「D002h」のビットマップb9において、ビット値が「1」のOffset(位置)を特定する。ここでは、Offset(位置)「4」が特定される。
検索装置は、特定したOffset(位置)に基づいて、検索対象の文字列がファイルに含まれるか否か判別する。図7は、実施例1に係る文字列判別処理の一例を示す図である。
検索装置は、例えば、図7に示すように、単語ID「D000h」、「D001h」、「D002h」について、Offset(位置)が特定されると、検索対象の文字列に応じて、単語IDのビットマップb7〜b9を配置する。ここでは、検索対象の文字列が「冷蔵庫」なので、検索装置は、ビットマップb7、ビットマップb8、ビットマップb9の順に配置する。そして、検索装置は、検索対象の文字列の最初の文字である「冷」のビットマップb7でビット値が「1」であるビットを1つ左にシフトする。これにより、「冷」のビットマップb7では、3ビット目のビットが「1」となる。検索装置は、シフトさせた「冷」のビットマップb7と、次の文字である「蔵」のビットマップb8とのAND演算を行う。検索装置は、AND演算の結果が「1」である場合、AND結果のビットマップでビット値が「1」であるビットを1つ左にシフトする。これにより、AND結果のビットマップでは、4ビット目のビットが「1」となる。検索装置は、シフトさせたAND結果のビットマップと、さらに次の文字である「庫」のビットマップb9とのAND演算を行う。検索装置は、AND演算の結果が「1」である場合、検索対象がファイルに含まれていると判別する。なお、検索装置は、AND演算のいずれかの結果が「0」である場合には、検索対象がファイルに含まれていないと判別する。
このように検索装置は、AND演算と、ビットのシフトとを組み合わせることで、検索対象がファイルに含まれているか否か判別する。
図6に戻り、検索装置は、ファイルIDを絞り込んだ後、第2の3次元ハッシュ化インデックスHI3を参照し、ファイルIDに含まれる帳票の項目に対するハッシュ化ビットマップを抽出する。ここでは、検索装置は、ファイルID「3」に含まれる帳票の項目に対するハッシュ化ビットマップを第2の3次元ハッシュ化インデックスHI3から抽出する。検索装置は、ファイル3に含まれる帳票の項目「日付」、「商品コード」、「商品名」、「単価」などに対応する、ハッシュ化ビットマップh10〜h13を第2の3次元ハッシュ化インデックスHI3から抽出する。ハッシュ化ビットマップh10には、底29のハッシュ化ビットマップh101と底31のハッシュ化ビットマップh102とが含まれる。ハッシュ化ビットマップh11には、底29のハッシュ化ビットマップh111と底31のハッシュ化ビットマップh112とが含まれる。ハッシュ化ビットマップh12には、底29のハッシュ化ビットマップh121と底31のハッシュ化ビットマップh122とが含まれる。ハッシュ化ビットマップh13には、底29のハッシュ化ビットマップh131と底31のハッシュ化ビットマップh132とが含まれる。
また、検索装置は、抽出されたハッシュ化ビットマップh10〜h13を復元する。復元結果は、ファイルID、および帳票の項目に対応するビットマップで表される。ここでは、検索装置は、ハッシュ化ビットマップh10〜h13を復元し、ビットマップb10〜b13を復元結果として出力する。
また、検索装置は、復元結果として出力されたビットマップb10〜b13のビットがON(「1」)を示すOffset(位置)を特定する。例えば、検索装置は、ファイルID「3」、および帳票の項目「日付」のビットマップb10において、ビットマップb10のビット値が「1」のOffset(位置)を特定する。ここでは、例えば、Offset(位置)「0」が特定される。検索装置は、同様に、帳票の各項目について、ビットマップb11〜b13のビット値が「1」のOffset(位置)を特定する。
検索装置は、特定したOffset(位置)に基づいて、検索対象の文字列が検索条件の項目に含まれるか否か判別する。図8は、実施例1に係る検索条件判別処理の一例を示す図である。
ここでは、検索装置は、特定された帳票の項目のOffset(位置)と、図7を用いて説明した「冷蔵庫」についてのAND演算の結果とに基づいて、検索条件判別処理を行う。検索装置は、図7において最終的なAND結果のビットマップにおいて、ビット値が「1」となるOffset(位置)が、検索条件として選択された「商品名」の項目に含まれるか否か判別する。最終的なAND結果のビットマップでは、4ビット目のビット値が「1」となる。「商品名」の項目のビットマップでは、2ビット目が「1」となり、「単価」の項目のビットマップでは、5ビット目が「1」となる。そのため、「商品名」の項目に含まれる文字がビットマップにおいて2ビット目〜4ビット目に格納されていることがわかる。最終的なAND結果のビットマップでは、4ビット目が「1」である。これにより、検索装置は、ファイル3において、検索対象の文字列「冷蔵庫」が、「商品名」の項目に存在すると判別する。なお、例えば、最終的なAND結果のビットマップでビット値が「1」となる位置が、1ビット目や、5ビット目である場合には、検索装置は、検索対象の文字列「冷蔵庫」が、「商品名」の項目に存在しないと判別する。
検索装置は、例えば、帳票の項目「商品名」に文字列「冷蔵庫」を含むファイル名を出力する。なお、検索装置は、例えば、帳票の項目「商品名」に文字列「冷蔵庫」を含むファイル名、および「冷蔵庫」を含む前後の文字列を表示してもよい。このように、検索装置は、ハッシュ化インデックス(ビットマップ型インデックス)を用いて、検索条件を満たす検索対象の文字列について検索を行い、検索結果を出力する。これにより、検索装置は、検索対象の文字列に対する検索結果を速やかに出力することができる。
[実施例1に係るハッシュ化ビットマップ復元処理の一例]
次に、ハッシュ化ビットマップを復元する処理の一例を、図9を参照して説明する。図9は、実施例1に係るハッシュ化ビットマップの復元処理の一例を示す図である。ここでは、ハッシュ化ビットマップh4を復元する場合を一例として説明する。
次に、ハッシュ化ビットマップを復元する処理の一例を、図9を参照して説明する。図9は、実施例1に係るハッシュ化ビットマップの復元処理の一例を示す図である。ここでは、ハッシュ化ビットマップh4を復元する場合を一例として説明する。
検索装置は、ハッシュ化ビットマップh4に含まれる、ハッシュ化ビットマップh41、h42をそれぞれビットマップに展開する(復元1)。ここでは、検索装置は、1つの底のハッシュ化ビットマップの復元先のビットマップについて、底に整数(0〜)を乗算して得られた値にハッシュ化ビットマップの各ビットの位置を加算した位置に、ハッシュ化ビットマップの各ビットの値を設定する。一例として、検索装置は、底29のハッシュ化ビットマップh41の復元先のビットマップb41について、底29に「0」を乗算した値にハッシュ化ビットマップh41の各ビットの位置を加算した位置に、ハッシュ化ビットマップh41の各ビットの値を設定する。検索装置は、底29のハッシュ化ビットマップh41の復元先のビットマップb41について、底29に「1」を乗算した値にハッシュ化ビットマップh41の各ビットの位置を加算した位置に、ハッシュ化ビットマップh41の各ビットの値を設定する。検索装置は、復元先の底29のビットマップb41の最大ビットの位置のビットの値が設定されるまで繰り返す。同様に、検索装置は、底31のハッシュ化ビットマップh42の復元先のビットマップb42について、底31に「0」を乗算した値にハッシュ化ビットマップh42の各ビットの位置を加算した位置に、ハッシュ化ビットマップh42の各ビットの値を設定する。検索装置は、底31のハッシュ化ビットマップh42の復元先のビットマップb42について、底31に「1」を乗算した値にハッシュ化ビットマップh42の各ビットの位置を加算した位置に、ハッシュ化ビットマップh42の各ビットの値を設定する。検索装置は、復元先のビットマップb42の最大ビットの位置のビットの値が設定されるまで繰り返す。
検索装置は、復元された各ビットマップの対応する位置のビットをAND演算する(復元2)。ここでは、検索装置は、底29のハッシュ化ビットマップh41から復元されたビットマップb41と、底31のハッシュ化ビットマップh42から復元されたビットマップb42とをAND演算する。検索装置は、AND結果のビットマップb4を復元結果として出力する。
なお、検索装置は、第1の3次元ハッシュ化インデックスHI2のハッシュ化ビットマップも、2次元ハッシュ化インデックスHI1のハッシュ化ビットマップの場合と同様に、復元する。また、検索装置は、第2の3次元ハッシュ化インデックスHI3のハッシュ化ビットマップも、2次元ハッシュ化インデックスHI1のハッシュ化ビットマップの場合と同様に、復元する。
[実施例1に係る帳票出力装置の構成]
次に、図10を参照して、実施例1に係る帳票出力装置100の構成について説明する。図10は、実施例1に係る帳票出力装置100の構成を示す機能ブロック図である。図10に示すように、帳票出力装置100は、制御部110と、記憶部120とを有する。
次に、図10を参照して、実施例1に係る帳票出力装置100の構成について説明する。図10は、実施例1に係る帳票出力装置100の構成を示す機能ブロック図である。図10に示すように、帳票出力装置100は、制御部110と、記憶部120とを有する。
制御部110は、図1に示したインデックス生成処理を実行する処理部である。制御部110は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部110は、例えば、ASICやFPGAなどの集積回路の電子回路に対応する。または、制御部110は、CPUやMPUなどの電子回路に対応する。また、制御部110は、帳票出力形式データ生成部111、符号化処理部112、埋込部113、および出力部114を有する。
記憶部120は、例えばフラッシュメモリやFRAM(登録商標)などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部120は、符号化辞書121と、2次元ハッシュ化インデックス122と、第1の3次元ハッシュ化インデックス123と、第2の3次元ハッシュ化インデックス124と、符号化データ125とを有する。
帳票出力形式データ生成部111は、符号化対象のファイルを記憶領域に読み出す。帳票出力形式データ生成部111は、読み出したファイルに含まれる帳票データから帳票出力形式データを生成する。帳票出力形式データ生成部111は、生成した帳票出力形式データを符号化処理部112に出力する。なお、帳票出力形式データ生成部111は、帳票データから帳票データのページ情報を抽出する。例えば、帳票出力形式データ生成部111は、帳票出力形式データを生成する前に、定義ファイルを検索し、ページ情報を抽出する。また、例えば、帳票出力形式データ生成部111は、帳票出力形式データを生成する過程で、ページ情報を抽出しても良い。なお、例えば、帳票出力形式データ生成部111は、ページ情報を、帳票出力形式データに追記する。また、例えば、帳票出力形式データ生成部111は、帳票出力形式データとは別に、ページ情報として出力しても良い。
符号化処理部112は、符号化部112aと、インデックス生成部112bとを有する。符号化部112aは、符号化辞書121に基づいて、帳票出力形式データに含まれる文字列を符号化し、符号化データ125を生成する。符号化部112aは、帳票出力形式データに含まれる文字列が静的辞書に登録されているか否かを判定する。一例として、符号化部112aは、文字列が静的辞書のビットフィルタにヒットするか否かを判定する。符号化部112aは、文字列が静的辞書に登録されている場合には、文字列を静的辞書に基づいて符号化する。一例として、符号化部112aは、静的辞書に基づいて、文字列を、文字列に対応する静的コード(単語ID)に符号化する。符号化部112aは、符号化された単語IDをインデックス生成部112bに出力する。
符号化部112aは、文字列が静的辞書に登録されていない場合には、文字列を動的辞書に基づいて符号化する。一例として、符号化部112aは、文字列が動的辞書のバッファ部に格納されているか否かを判定する。符号化部112aは、文字列が動的辞書のバッファ部に格納されていない場合には、文字列をバッファ部に格納するとともに、文字列を格納した格納位置、および格納したデータ長をアドレステーブルに格納する。符号化部112aは、文字列を、文字列に対応付けられた、アドレステーブルの動的コード(単語ID)に符号化する。また、符号化部112aは、文字列が、動的辞書のバッファ部に格納されている場合には、文字列を、文字列に対応する動的コード(単語ID)に符号化する。符号化部112aは、符号化された単語ID、および単語IDが示す文字列の位置を含む情報をインデックス生成部112bに出力する。
インデックス生成部112bは、ファイルのファイルID、および符号化された単語IDに基づいて、2次元ハッシュ化インデックス122を生成する。例えば、インデックス生成部112bは、符号化部112aから出力された情報を受け取る。インデックス生成部112bは、受け取った情報に基づいて、単語IDが存在するファイルのファイルIDに対応するビットマップを生成する。インデックス生成部112bは、生成したビットマップについて、底α、底βをそれぞれ用いてハッシュ化ビットマップを生成する。すなわち、インデックス生成部112bは、ファイルに対する、単語IDが示す文字列の存否を2次元ハッシュ化インデックス122に設定する。
一例として、インデックス生成部112bは、単語IDに対応するビットマップそれぞれについて、2つのハッシュ値(底)に基づいたハッシュ化ビットマップを生成する。すなわち、インデックス生成部112bは、ビットマップの0ビット目からの各ビットを順番にハッシュ化ビットマップの0ビット目から設定し、(底−1)ビット目まで設定する。そして、インデックス生成部112bは、再度折り返してハッシュ化ビットマップの0ビット目から既にハッシュ化ビットマップに設定された値とOR演算した値を設定する。そして、インデックス生成部112bは、全ての単語IDに対応するビットマップに対してハッシュ化ビットマップを生成すると、生成されたハッシュ化ビットマップを纏めた2次元ハッシュ化インデックス122を記憶部120に格納する。
また、インデックス生成部112bは、ファイルのファイルID、符号化された単語ID、および単語IDが示す文字列の位置に基づいて、第1の3次元ハッシュ化インデックス123を生成する。例えば、インデックス生成部112bは、受け取った情報に基づいて、単語IDが存在するファイルのファイルID、およびファイル内の単語IDの位置に対応するビットマップを生成する。インデックス生成部112bは、生成したビットマップについて、底α、底βをそれぞれ用いてハッシュ化ビットマップを生成する。すなわち、インデックス生成部112bは、ファイル(帳票データ)に対する、単語ID、および単語IDが示す文字列の位置を第1の3次元ハッシュ化インデックス123に設定する。
またインデックス生成部112bは、ファイルのファイルID、帳票の項目、および帳票の項目の位置に基づいて、第2の3次元ハッシュ化インデックス124を生成する。例えば、インデックス生成部112bは、受け取った情報に基づいて、単語IDが存在するファイルのファイルID、および帳票の項目の位置に対応するビットマップを生成する。インデックス生成部112bは、生成したビットマップについて、底α、底βをそれぞれ用いてハッシュ化ビットマップを生成する。すなわち、インデックス生成部112bは、ファイル(帳票データ)に対する、帳票の項目、および帳票データにおける帳票の項目の位置を第2の3次元ハッシュ化インデックス124に設定する。
なお、第1の3次元ハッシュ化インデックス123、および第2の3次元ハッシュ化インデックス124の生成方法は、2次元ハッシュ化インデックス122の説明と同様であるので、その説明を省略する。インデックス生成部112bは、生成した、第1の3次元ハッシュ化インデックス123、および第2の3次元ハッシュ化インデックス124を記憶部120に格納する。
埋込部113は、符号化辞書121の動的辞書と、符号化データ125と、各ハッシュ化インデックス122〜124のインデックス情報とを有する符号化ファイルを、帳票ファイルに埋め込み、出力ファイルを生成する。これにより、インデックス付きの帳票ファイルが生成される。例えば、帳票ファイルがPDFファイルである場合には、埋込部113は、PDFファイルの拡張領域に、符号化ファイルを埋め込む。また、例えば、帳票ファイルが、帳票製品の独自圧縮ファイルである場合には、埋込部113は、符号化ファイルを帳票定義体などと一緒に圧縮し、出力ファイルを生成する。
出力部114は、出力ファイルを、例えば、検索装置200(図12参照)へ転送する。
[実施例1に係る帳票ファイル生成処理の処理手順]
次に、実施例1に係る帳票ファイル生成処理の処理手順について、図11を参照して説明する。図11は、実施例1に係る帳票ファイル生成処理のフローチャートの一例を示す図である。帳票ファイルは、インデックス付きの帳票ファイルである。
次に、実施例1に係る帳票ファイル生成処理の処理手順について、図11を参照して説明する。図11は、実施例1に係る帳票ファイル生成処理のフローチャートの一例を示す図である。帳票ファイルは、インデックス付きの帳票ファイルである。
帳票出力形式データ生成部111は、符号化対象のファイルを記憶領域に読み出す(S10)。帳票出力形式データ生成部111は、読み出したファイルに含まれる帳票データから帳票出力形式データを生成する(S11)。
符号化部112aは、符号化辞書121に基づいて、帳票出力形式データの文字列を単語IDに符号化する(S12)。なお、符号化部112aは、符号化辞書121(静的辞書、および動的辞書)に文字列が格納されていない場合には、新たに文字列を符号化し、動的辞書に格納する。
インデックス生成部112bは、ファイルのファイルID、および単語IDに基づいて、2次元ハッシュ化インデックス122を生成する(S13)。インデックス生成部112bは、ファイルのファイルID、単語ID、およびファイル内における単語IDの位置に基づいて、第1の3次元ハッシュ化インデックス123を生成する(S14)。インデックス生成部112bは、ファイルのファイルID、帳票の項目、およびファイル内における帳票の項目の位置に基づいて、第2の3次元ハッシュ化インデックス124を生成する(S15)。
埋込部113は、符号化辞書121の動的辞書と、各ハッシュ化インデックス122〜124とを有する符号化ファイルを帳票ファイルに埋め込み、出力ファイルを生成する(S16)。
出力部114は、生成された出力ファイルを、例えば、検索装置200(図12参照)に出力する(S17)。
[実施例1に係る検索装置の構成]
次に図12を参照して、実施例1に係る検索処理を実行する検索装置200の構成について説明する。図12は、実施例1に係る検索装置200の構成を示す機能ブロック図である。図12に示すように、検索装置200は、制御部210と記憶部220とを有する。
次に図12を参照して、実施例1に係る検索処理を実行する検索装置200の構成について説明する。図12は、実施例1に係る検索装置200の構成を示す機能ブロック図である。図12に示すように、検索装置200は、制御部210と記憶部220とを有する。
制御部210は、図6〜図8に示した検索処理を実行する処理部である。制御部210は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部210は、例えば、ASICやFPGAなどの集積回路の電子回路に対応する。または、制御部210は、CPUやMPUなどの電子回路に対応する。また、制御部210は、検索対象受付部211と、第1の復元部212と、第2の復元部213と、検索処理部214と、検索結果出力部215とを有する。
記憶部220は、例えばフラッシュメモリやFRAM(登録商標)などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部220は、符号化辞書221、2次元ハッシュ化インデックス222、第1の3次元ハッシュ化インデックス223、第2の3次元ハッシュ化インデックス224、第1の復元ビットマップ225、第2の復元ビットマップ226、第3の復元ビットマップ227、絞込みビットマップ228、および符号化データ229を有する。第1の復元ビットマップ225は、2次元ハッシュ化インデックス222を展開したビットマップである。第2の復元ビットマップ226は、第1の3次元ハッシュ化インデックス223を展開したビットマップである。第3の復元ビットマップ227は、第2の3次元ハッシュ化インデックス224を展開したビットマップである。絞込みビットマップ228は、検索対象が複数の単語IDで表される文字列である場合に、第2の復元ビットマップ226をAND演算したAND結果のビットマップである。ANDのビットマップは、例えば、図7において、AND結果の「冷蔵庫」を示すビットマップが対応する。
検索対象受付部211は、検索対象を受け付ける。例えば、検索対象受付部211は、図5に示すような入力画像を表示し、検索条件や、検索対象の文字列を受け付ける。
第1の復元部212は、検索対象の文字列が示す単語IDに対応する2次元ハッシュ化インデックス222からハッシュ化ビットマップを抽出する。第1の復元部212は、抽出したハッシュ化ビットマップを展開し、展開した第1の復元ビットマップ225を記憶部220に格納する。検索対象が複数の単語IDで表される文字列で構成される場合には、第1の復元部212は、各単語IDに対応した複数の2次元ハッシュ化インデックス222からハッシュ化ビットマップを複数抽出する。そして、第1の復元部212は、各ハッシュ化ビットマップを展開し、展開した複数のビットマップを第1の復元ビットマップ225として、記憶部220に格納する。
第1の復元部212は、第1の復元ビットマップ225から、検索対象の文字列を全て含むファイルIDを抽出する。例えば、第1の復元部212は、第1の復元ビットマップ225が複数ある場合には、図6に示すように、第1の復元ビットマップ225のAND演算を行う。第1の復元部212は、AND結果のビット値が「1」であるファイルIDを抽出する。第1の復元部212は、抽出したファイルIDを第2の復元部213に出力する。
第2の復元部213は、ファイルID、および検索対象の文字列が示す単語IDに対応する第1の3次元ハッシュ化インデックス223からハッシュ化ビットマップを抽出する。第2の復元部213は、抽出したハッシュ化ビットマップを展開し、展開した第2の復元ビットマップ226を記憶部220に格納する。検索対象が複数の単語IDで表される文字列で構成される場合には、第2の復元部213は、各単語IDに対応した複数の第1の3次元ハッシュ化インデックス223からハッシュ化ビットマップを複数抽出する。そして、第2の復元部213は、各ハッシュ化ビットマップを展開し、展開した複数のビットマップを第2の復元ビットマップ226として、記憶部220に格納する。
また、第2の復元部213は、ファイルID、および帳票の項目に対応する第2の3次元ハッシュ化インデックス224からハッシュ化ビットマップを抽出する。第2の復元部213は、抽出したハッシュ化ビットマップを展開し、展開した第3の復元ビットマップ227を記憶部220に格納する。
検索処理部214は、検索対象の文字列を含むファイル、および検索対象の文字列の位置を検索する。例えば、検索処理部214は、第2の復元ビットマップ226に基づいて、ビット値が「1」を示すOffset(位置)を抽出する。検索処理部214は、検索対象が複数の単語IDで表される文字列で構成される場合には、ビット値が「1」を示すOffset(位置)を、第2の復元ビットマップ226ごとに、抽出する。そして、検索処理部214は、単語IDの並び、すなわち文字列の並びと、ビット値が「1」を示すOffset(位置)の並びとを比較する。すなわち、検索処理部214は、検索対象における文字列の位置関係と、ビット値が「1」となる単語IDの位置関係とが一致するか否か判別する。例えば、検索処理部214は、第2の復元ビットマップ226において、図7に示すように、AND演算とビットのシフトとを組み合わせて、検索対象の文字列の位置関係と、単語IDの位置関係とが一致するか否か判別する。検索処理部214は、検索対象の文字列の位置関係と、単語IDの位置関係とが一致する場合に、最終的なAND結果のビットマップを、絞込みビットマップ228として記憶部220に格納する。
また、検索処理部214は、検索条件を満たす検索対象を検索する。例えば、検索処理部214は、図5の項目条件において、検索条件が選択されている場合には、第3の復元ビットマップ227、および絞込みビットマップ228に基づいて、検索条件を満たす検索対象を検索する。例えば、検索処理部214は、絞込みビットマップ228においてビット値が「1」となるOffset(位置)が、第3の復元ビットマップ227において検索条件の項目を示すOffset(位置)に含まれる場合に、検索条件を満たすと判別する。このようにして、検索処理部214は、検索条件を満たす検索対象を検索する。
検索結果出力部215は、検索処理部214の検索結果を出力する。検索結果出力部215は、検索条件を満たし、検索対象の文字列を含むファイルについて、例えば、ファイル名を出力する。
[実施例1に係る検索処理の処理手順]
次に、実施例1に係る検索処理の処理手順について、図13を参照して説明する。図13は、実施例1に係る検索処理のフローチャートの一例を示す図である。
次に、実施例1に係る検索処理の処理手順について、図13を参照して説明する。図13は、実施例1に係る検索処理のフローチャートの一例を示す図である。
検索対象受付部211は、検索対象を受け付ける(S20)。
第1の復元部212は、検索対象の文字列を表す単語IDに対応する2次元ハッシュ化インデックス222を読み出す(S21)。第1の復元部212は、読み出した2次元ハッシュ化インデックス222からハッシュ化ビットマップを抽出し、第1の復元ビットマップ225に展開する(S22)。第1の復元部212は、第1の復元ビットマップ225に基づいて、検索対象の文字列を表す単語IDを全て含むファイルIDを抽出する(S23)。
第2の復元部213は、ファイルID、および単語IDに基づいて第1の3次元ハッシュ化インデックス223を読み出す(S24)。第2の復元部213は、第1の3次元ハッシュ化インデックス223からハッシュ化ビットマップを抽出し、第2の復元ビットマップ226に展開する(S25)。第2の復元部213は、ファイルID、および検索条件として選択された帳票の項目に基づいて第2の3次元ハッシュ化インデックス224を読み出す(S26)。第2の復元部213は、第2の3次元ハッシュ化インデックス224からハッシュ化ビットマップを抽出し、第3の復元ビットマップ227に展開する(S27)。なお、検索条件が選択されていない場合には、第2の復元部213は、例えば、第2の3次元ハッシュ化インデックス224からハッシュ化ビットマップを抽出せずに、処理を進める。
検索処理部214は、第2の復元ビットマップ226に検索対象の文字列が全て含まれるか否か判別する(S28)。第2の復元ビットマップ226に検索対象の文字列が全て含まれている場合(S28肯定)、検索処理部214は、検索条件を満たすか否か判別する(S29)。なお、検索条件が選択されていない場合には、検索処理部214は、例えば、検索条件を満たすか否か判別せずに、処理を進める。
検索条件を満たす場合(S29肯定)、検索結果出力部215は、検索条件を満たし、検索対象の文字列を含むファイルについて、例えば、ファイル名を出力する(S30)。一方、第2の復元ビットマップ226に検索対象の文字列の何れかが含まれていない場合(S28否定)、検索結果出力部215は、検索対象の文字列を含むファイルがない旨を検索結果として出力する(S31)。また、検索条件を満たさない場合(S29否定)、検索結果出力部215は、検索条件を満たすファイルがない旨を検索結果として出力する(S32)。
[実施例の効果]
帳票出力装置100は、帳票データから帳票出力形式データを生成する。帳票出力装置100は、文字列に対するインデックス情報であって、帳票の項目と、帳票出力形式データに含まれる帳票の項目それぞれに対応したデータ相互の帳票データにおける位置関係とを特定可能な位置情報を含むインデックス情報を生成する。帳票出力装置100は、インデックス情報、および帳票出力形式データを含む出力ファイルを出力する。これにより、例えば、検索装置200は、インデックス情報を参照することで、検索対象の有無を速やかに判別することができる。
帳票出力装置100は、帳票データから帳票出力形式データを生成する。帳票出力装置100は、文字列に対するインデックス情報であって、帳票の項目と、帳票出力形式データに含まれる帳票の項目それぞれに対応したデータ相互の帳票データにおける位置関係とを特定可能な位置情報を含むインデックス情報を生成する。帳票出力装置100は、インデックス情報、および帳票出力形式データを含む出力ファイルを出力する。これにより、例えば、検索装置200は、インデックス情報を参照することで、検索対象の有無を速やかに判別することができる。
インデックス情報は、帳票の項目と、帳票出力形式データに含まれるデータ相互の位置関係とを特定可能な位置情報を含んでいる。これにより、例えば、検索装置200は、インデックス情報を参照することで、例えば、検索対象の項目に該当するか否かを速やかに判別することができる。
出力ファイルは、拡張領域に、帳票出力形式データが符号化された符号化データ、およびインデックス情報を含む。例えば、出力ファイルがPDFファイルである場合、PDFの拡張領域に、符号化データ、およびインデックス情報が含まれる。これにより、例えば、検索装置200は、帳票出力形式データが符号化された状態で、検索を行うことができ、検索対象の項目に該当するか否かを速やかに判別することができる。
なお、例えば、PDFファイルに属性情報や、文字列などの位置情報などをメタデータとして埋め込むことも考えられる。しかし、この場合、ファイルサイズが大きくなる。また、PDFファイルを生成する時間が長くなる。これに対し、帳票出力装置100は、例えば、PDFファイルの拡張領域に、帳票出力形式データが符号化された符号化データ、およびインデックス情報を埋め込む。これにより、帳票出力装置100は、出力ファイルのファイルサイズを小さくすることができる。また、帳票出力装置100は、例えば、PDFファイルを生成する時間を短くすることができる。
また、ファイルサイズを小さくするために、例えば、帳票データをZip形式で圧縮することも考えられる。しかし、Zip形式で圧縮すると、圧縮された帳票データを使用する場合に、圧縮ファイルを全て伸張する必要がある。そのため、全ての伸張が終了するまで検索ができず、検索時間が長くなる。これに対し、帳票出力装置100は、符号化データとは別に、インデックス情報を有する。これにより、例えば、検索装置200は、インデックス情報を参照することで、検索対象の項目に該当するか否かを速やかに判別することができる。そのため、検索時間を短くすることができる。
符号化データは、帳票出力形式データが帳票の項目ごとに、符号化されたデータである。これにより、帳票出力装置100は、高い圧縮率で圧縮した出力ファイルを作成することができ、出力ファイルのサイズを小さくすることができる。また、例えば、検索装置200は、符号化データを帳票の項目ごとに、伸張することができ、必要な部分のみの参照、または取り出しを行うことができる。
インデックス情報である第1の3次元ハッシュ化インデックス123、223は、ファイルIDと、単語IDと、単語IDの位置情報とを軸とするビットマップ型転置インデックス情報である。これにより、帳票出力装置100は、例えば、PDFファイルに属性情報や、文字列などの位置情報などをメタデータとして埋め込む場合と比較して、出力ファイルのサイズを小さくすることができる。また、例えば、検索装置200は、精度の良い検索を速やかに行うことができる。
次に、実施例2について説明する。実施例2では、異なる項目の中に同じ文字列が含まれる場合について説明する。
[実施例2に係る帳票出力形式データとビットマップ型インデックスの一例]
図14は、実施例2に係る帳票出力形式データと、ビットマップ型インデックスとを示す図である。図14の帳票出力形式データは、帳票の項目として、「支店名」、「住所」、「性別」などを有している。また、例えば、「支店名」の項目には、「鎌倉支店」が含まれる。また、例えば、「住所」の項目には、「鎌倉市」が含まれる。また、例えば、「性別」の項目には、「男」が含まれる。なお、実施例2における符号化の手順、ハッシュ化の手順などは、実施例1と同じであり、実施例2での説明は省略する。また、以降、各文字列については、単語IDに符号化する前の各文字列を用いて説明する。
図14は、実施例2に係る帳票出力形式データと、ビットマップ型インデックスとを示す図である。図14の帳票出力形式データは、帳票の項目として、「支店名」、「住所」、「性別」などを有している。また、例えば、「支店名」の項目には、「鎌倉支店」が含まれる。また、例えば、「住所」の項目には、「鎌倉市」が含まれる。また、例えば、「性別」の項目には、「男」が含まれる。なお、実施例2における符号化の手順、ハッシュ化の手順などは、実施例1と同じであり、実施例2での説明は省略する。また、以降、各文字列については、単語IDに符号化する前の各文字列を用いて説明する。
帳票出力装置が生成したビットマップ型インデックスには、異なる帳票の項目、例えば、「支店名」、および「住所」に、文字列「鎌」、および「倉」が含まれる。そのため、「鎌」におけるビットマップでは、0ビット目、および4ビット目のビット値が「1」に設定される。また、「倉」におけるビットマップでは、1ビット目、および5ビット目のビット値が「1」に設定される。
[実施例2の検索処理の一例]
図15は、検索対象を入力した画像の一例を示す図である。ここでは、検索条件として「住所」が選択され、検索対象として「鎌倉」が入力されている。
図15は、検索対象を入力した画像の一例を示す図である。ここでは、検索条件として「住所」が選択され、検索対象として「鎌倉」が入力されている。
検索装置は、検索対象の入力を受け付けると、図16に示すように、検索条件である「住所」の項目のビットマップにマスクビットを設定する。図16は、実施例2に係る検索処理の一例を示す図である。帳票の項目「住所」のビットマップにマスクビットが設定されると、4ビット目〜6ビット目のビット値が「1」に設定されたビットマップが生成される。
検索装置は、マスクビットのビットマップと、「鎌倉」の検索結果のビットマップ(絞込みビットマップ228)とをAND演算する。なお、「鎌倉」の検索処理は、例えば、図7を用いて説明した検索処理と同じであり説明は省略する。「鎌倉」は、帳票の項目「支店名」と、帳票の項目「住所」とに存在するため、「鎌倉」の検索結果のビットマップでは、1ビット目、および5ビット目のビット値が「1」に設定されている。しかし、マスクビットのビットマップでは、1ビット目は、帳票の項目「住所」に該当しないため、ビット値が「0」に設定されている。従って、AND演算を行うと、AND結果のビットマップでは、1ビット目のビット値は「0」であり、5ビット目のビット値のみが「1」となる。このように、検索装置は、AND演算を行うことで、検索条件を満たす検索対象を絞り込む。つまり、帳票の複数の項目に同じ文字列が含まれる場合でも、検索装置は、検索条件に応じて検索対象の位置を絞り込むことができる。
次に、実施例3について説明する。実施例3では、異なる項目の中に同じ文字列が含まれ、レコード単位で検索を行う場合について説明する。
[実施例3に係る帳票出力形式データとビットマップ型インデックスの一例]
図17は、実施例3に係る帳票出力形式データと、ビットマップ型インデックスとを示す図である。図17の帳票出力形式データは、帳票の項目として、「支店名」、「住所」、「性別」を有している。なお、帳票出力形式データは、他の項目を有しても良い。また、図17の帳票出力形式データには、複数のレコードが含まれ、例えば、レコード1、およびレコード2には、「性別」の項目のみが異なるデータが含まれる。なお、実施例3における符号化の手順、ハッシュ化の手順などは、実施例1と同じであり、実施例3での説明は省略する。また、以降、各文字列については、単語IDに符号化する前の各文字列を用いて説明する。
図17は、実施例3に係る帳票出力形式データと、ビットマップ型インデックスとを示す図である。図17の帳票出力形式データは、帳票の項目として、「支店名」、「住所」、「性別」を有している。なお、帳票出力形式データは、他の項目を有しても良い。また、図17の帳票出力形式データには、複数のレコードが含まれ、例えば、レコード1、およびレコード2には、「性別」の項目のみが異なるデータが含まれる。なお、実施例3における符号化の手順、ハッシュ化の手順などは、実施例1と同じであり、実施例3での説明は省略する。また、以降、各文字列については、単語IDに符号化する前の各文字列を用いて説明する。
帳票出力装置が生成したビットマップ型インデックスには、異なる帳票の項目、および異なるレコードに、文字列「鎌」、および「倉」が含まれる。そのため、「鎌」におけるビットマップでは、0ビット目、4ビット目、8ビット目、および12ビット目のビット値が「1」に設定される。また、「倉」におけるビットマップでは、1ビット目、5ビット目、9ビット目、および13ビット目のビット値が「1」に設定される。また、レコードの区切りを示すビットマップでは、0ビット目、8ビット目、および16ビット目に「1」が設定される。なお、レコードの区切りを示すビットマップでは、レコードの最初の文字列に対応するビットのビット値が「1」に設定される。レコードの区切りを示すビットマップは、例えば、帳票の項目についてのビットマップと同様に、3次元ビットマップ型インデックスとして生成される。その手順についての説明は省略する。
[実施例3の検索処理の一例]
図18は、検索対象を入力した画像の一例を示す図である。ここでは、レコード単位で検索が選択されている。また、検索条件1として「住所」が設定され、検索対象として「鎌倉」が入力されている。さらに検索条件2として「すべて」が設定され、検索対象として「女」が入力されている。
図18は、検索対象を入力した画像の一例を示す図である。ここでは、レコード単位で検索が選択されている。また、検索条件1として「住所」が設定され、検索対象として「鎌倉」が入力されている。さらに検索条件2として「すべて」が設定され、検索対象として「女」が入力されている。
検索装置は、検索対象を受け付けると、図19に示すように、検索条件である「住所」の項目のビットマップにマスクビットを設定する。図19は、実施例3に係る検索処理の一例を示す図である。帳票の項目「住所」のビットマップにマスクビットが設定されると、4〜6ビット目、および12〜14ビット目のビット値が「1」に設定されたビットマップが生成される。
検索装置は、マスクビットのビットマップと、「鎌倉」の検索結果のビットマップ(絞込みビットマップ228)とをAND演算する。AND演算を行うと、AND結果のビットマップでは、5ビット目、および13ビット目のビット値が「1」となる。これは、レコード1の帳票の項目「住所」と、レコード2の帳票の項目「住所」とに「鎌倉」が含まれることを表している。
検索装置は、検索条件が「すべて」である場合には、例えば、マスクビットを設定せずに、検索対象の「女」の検索結果のビットマップをそのまま、AND結果のビットマップとして出力する。検索対象の「女」のAND結果のビットマップでは、15ビット目のビット値が「1」に設定されている。なお、検索装置は、検索条件が「すべて」である場合には、帳票の項目の全てのビットマップにマスクビットを設定して、AND演算を行ってもよい。
検索装置は、AND結果のビットマップと、検索対象の「女」のAND結果のビットマップと、レコードの区切り位置を示すビットマップとに基づいて、検索条件を満たすレコードを判別する。検索装置は、レコードの区切り位置を示すビットマップにおいて、レコード1を示す0ビット目〜7ビット目に、AND結果のビットマップ、および検索対象の「女」のAND結果のビットマップでビット値が「1」に設定されているか否か判別する。また、検索装置は、レコードの区切り位置を示すビットマップにおいて、レコード2を示す8ビット目〜15ビット目に、AND結果のビットマップ、および検索対象の「女」のAND結果のビットマップでビット値が「1」に設定されているか否か判別する。ここでは、0ビット目〜7ビット目には、検索対象の「女」のAND結果のビットマップでビット値が「1」に設定されていない。そのため、検索装置は、レコード1は、検索条件を満たさないと判別する。また、8ビット目〜15ビット目には、検索対象の「女」のAND結果のビットマップでビット値が「1」に設定されており、AND結果のビットマップのビット値が「1」に設定されている。そのため、検索装置は、レコード2は検索条件を満たすと判別する。検索装置は、検索条件を満たし、検索対象の「鎌倉」、および「女」を含むレコード2を絞り込み出力する。つまり、複数のレコード、および帳票の複数の項目に同じ文字列が含まれる場合でも、検索装置は、検索条件に応じてレコード単位で検索対象を絞り込むことができる。
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
実施例に係る検索装置200は、検索対象を含むファイルなどが複数存在する場合には、例えば、ファイルごとに、検索対象の数をカウントし、検索対象を多く含むほどファイルを優先的に出力しても良い。例えば、検索装置200は、ファイルを、検索対象を多く含む順に出力する。これにより、検索対象を多く含むファイルなどを速やかに発見することができる。
また、実施例に係る帳票出力装置100は、32ビットレジスタを想定し、29と31のハッシュ値(底)を基に、各ビットマップをハッシュ化するとして説明した。実施例では、1つのビットマップを44ビットとして説明した。しかしながら、29および31のハッシュ値(底)は、一例であって、これに限定されない。ビットマップのビット数も、一例であって、これに限定されない。2つのハッシュ値(底)は、複数のファイル内のそれぞれの文字列の数に応じて決定されれば良い。例えば、文字列の数が10000であるとすると、一方の底で割った余りと他方の底で割った余りとから表わされる2次元の行列が約10000となるように、2つの底が選択される。2つの底は、隣接した素数であれば良い。選択される2つの素数は、行列の数が10000の場合、一例として、97と101である。つまり、最小公倍数が約10000となる2次元のマトリックス空間の中で、ある文字列について一方のハッシュおよび他方のハッシュで求められる余りの組は、他の文字列について求められる余りの組と衝突しない(重複しない)であろうという推測に基づくものである。
また、実施例では、帳票出力装置100が、単語IDに対応するビットマップおよび単語IDおよびファイルIDに対応するビットマップそれぞれについて、2つのハッシュ値(底)に基づいたそれぞれのハッシュ化ビットマップを生成すると説明した。帳票出力装置100は、ハッシュ化ビットマップを生成する際、ハッシュの衝突(ハッシュノイズ)を検知する場合がある。例えば、超高頻度の文字列は、複数のファイルに存在するため、超高頻度の文字列に対応するビットマップの複数位置のビット値が「1」に設定される。すると、ビットマップがハッシュ化されると、ハッシュ化ビットマップの同じ位置に「1」が重複して設定されることがある。超高頻度の文字列の一例として、「the」や「on」が挙げられる。そこで、帳票出力装置100は、ハッシュノイズに対して、ハッシュの衝突監視を行い、0/1比率の測定やビットマップの分割により、ハッシュノイズの低減化を行えば良い。例えば、帳票出力装置100は、ハッシュ化ビットマップのいずれか1つで連続して衝突が発生した場合に、衝突が発生したハッシュ化ビットマップに対応するビットマップの存否情報を用いて存否(1/0)の比率を集計する。帳票出力装置100は、「1」の比率が閾値より大きい場合には、衝突が発生したハッシュ化ビットマップに対応するビットマップを分割する。一例として、帳票出力装置100は、衝突が発生したハッシュ化ビットマップに対応するビットマップの偶数番目の位置のビットを抽出し、新たにビットマップを生成する。加えて、帳票出力装置100は、衝突が発生したハッシュ化ビットマップに対応するビットマップの奇数番目の位置のビットを抽出し、新たにビットマップを生成する。そして、帳票出力装置100は、分割した新たなビットマップを、分割先として例えば低頻度単語の領域に格納する。帳票出力装置100は、2つのハッシュ化ビットマップのいずれか1つに対し分割先を設定する。そして、帳票出力装置100は、ビットマップを分割後に、分割先の各ビットマップに対して、2つのハッシュ値(底)に基づいたそれぞれのハッシュ化ビットマップを生成する。これにより、帳票出力装置100は、ハッシュ化ビットマップのデータが衝突する場合であっても、ハッシュ化前のビットマップの偶数番目のデータと奇数番目のデータとを分割してそれぞれハッシュ化することで、データの衝突を回避することが可能となる。
また、実施例に係る帳票出力装置100は、隣接した複数のハッシュ値(底)を基に、例えば、2次元(単語IDの軸とファイルIDの軸)、および3次元(単語IDの軸とファイルIDの軸と文字列の位置の軸、帳票の項目の軸とファイルIDと帳票の項目の位置の軸)にハッシュ化を適用したハッシュ化インデックスを生成すると説明した。しかしながら、帳票出力装置100は、ファイルの軸に代えてブロックの軸としても良い。すなわち、単語IDの存否情報は、ブロック単位であるとしても良い。
また、実施例に係る帳票出力装置100は、検索対象の文字列が日本語である場合、1文字ごとに、単語IDを設定し、ビットマップ型インデックスを生成した。しかしながら、帳票出力装置100は、単語ごとに、単語IDを設定し、ビットマップ型インデックスを生成しても良い。
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[ハードウェア構成]
下記に、上述の実施形態に用いられるハードウェア、およびソフトウェアについて説明する。図20は、コンピュータ1のハードウェア構成例を示す図である。コンピュータ1は、例えば、プロセッサ301、RAM(Random Access Memory)302、ROM(Read Only Memory)303、ドライブ装置304、記憶媒体305、入力インターフェース(I/F)306、入力デバイス307、出力インターフェース(I/F)308、出力デバイス309、通信インターフェース(I/F)310、SAN(Storage Area Network)インターフェース(I/F)311、およびバス312などを含む。それぞれのハードウェアはバス312を介して接続されている。
下記に、上述の実施形態に用いられるハードウェア、およびソフトウェアについて説明する。図20は、コンピュータ1のハードウェア構成例を示す図である。コンピュータ1は、例えば、プロセッサ301、RAM(Random Access Memory)302、ROM(Read Only Memory)303、ドライブ装置304、記憶媒体305、入力インターフェース(I/F)306、入力デバイス307、出力インターフェース(I/F)308、出力デバイス309、通信インターフェース(I/F)310、SAN(Storage Area Network)インターフェース(I/F)311、およびバス312などを含む。それぞれのハードウェアはバス312を介して接続されている。
RAM302は読み書き可能なメモリ装置であって、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などの半導体メモリ、またはRAMでなくてもフラッシュメモリなどが用いられる。ROM303は、PROM(Programmable ROM)なども含む。ドライブ装置304は、記憶媒体305に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体305は、ドライブ装置304によって書き込まれた情報を記憶する。記憶媒体305は、例えば、ハードディスク、SSD(Solid State Drive)などのフラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ1は、複数種類の記憶媒体それぞれについて、ドライブ装置304、および記憶媒体305を設ける。
入力インターフェース306は、入力デバイス307と接続されており、入力デバイス307から受信した入力信号をプロセッサ301に伝達する回路である。出力インターフェース308は、出力デバイス309と接続されており、出力デバイス309に、プロセッサ301の指示に応じた出力を実行させる回路である。通信インターフェース310はネットワーク3を介した通信の制御を行なう回路である。通信インターフェース310は、例えばネットワークインターフェースカード(NIC)などである。SANインターフェース311は、ストレージエリアネットワークによりコンピュータ1と接続された記憶装置との通信の制御を行なう回路である。SANインターフェース311は、例えばホストバスアダプタ(HBA)などである。
入力デバイス307は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ1の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス309は、コンピュータ1の制御に応じて情報を出力する装置である。出力デバイス309は、例えば、ディスプレイなどの画像出力装置(表示デバイス)や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス307、および出力デバイス309として用いられる。また、入力デバイス307、および出力デバイス309は、コンピュータ1と一体になっていても良いし、コンピュータ1に含まれず、例えば、コンピュータ1に外部から接続する装置であっても良い。
例えば、プロセッサ301は、ROM303や記憶媒体305に記憶されたプログラムをRAM302に読み出し、読み出されたプログラムの手順に従って制御部110、210の処理を行なう。その際にRAM302はプロセッサ301のワークエリアとして用いられる。記憶部120、220の機能は、ROM303および記憶媒体305がプログラムファイル(後述のアプリケーションプログラムAP24、ミドルウェアMW23およびOS22など)やデータファイル(例えば、符号化辞書121、221、2次元ハッシュ化インデックス122、222、第1の3次元ハッシュ化インデックス123、223など)を記憶し、RAM302がプロセッサ301のワークエリアとして用いられることによって実現される。プロセッサ301が読み出すプログラムについては、図21を用いて説明する。
図21は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ1において、図21に示すハードウェア群HW21(301〜312)の制御を行なうOS(オペレーティング・システム)22が動作する。OS22に従った手順でプロセッサ301が動作して、ハードウェア群HW21の制御・管理が行なわれることにより、アプリケーションプログラムAP24やミドルウェアMW23に従った処理がハードウェア群HW21で実行される。さらに、コンピュータ1において、ミドルウェアMW23またはアプリケーションプログラムAP24が、RAM302に読み出されてプロセッサ301により実行される。
プロセッサ301が、帳票生成機能が呼び出された場合に、ミドルウェアMW23またはアプリケーションプログラムAP24の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS22に基づいてハードウェアHW群21を制御して)制御部110の機能が実現される。プロセッサ301が、検索機能が呼び出された場合に、ミドルウェアMW23またはアプリケーションプログラムAP24の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS22に基づいてハードウェアHW群21を制御して)制御部210の機能が実現される。符号化機能および検索機能は、アプリケーションプログラムAP24自体に含まれても良いし、アプリケーションプログラムAP24に従って呼び出されることで実行されるミドルウェアMW23の一部であっても良い。
図22は、実施例のシステムにおける装置の構成例を示す図である。図22のシステムは、コンピュータ1a、コンピュータ1b、基地局2およびネットワーク3を含む。コンピュータ1aは、無線または有線の少なくとも一方により、コンピュータ1bと接続されたネットワーク3に接続している。
帳票出力装置100と検索装置200とは、図22に示すコンピュータ1aとコンピュータ1bとのいずれに含まれても良い。コンピュータ1bが帳票出力装置100の機能を含み、コンピュータ1aが検索装置200の機能を含んでも良いし、コンピュータ1aが帳票出力装置100の機能を含み、コンピュータ1bが検索装置200の機能を含んでも良い。また、コンピュータ1aとコンピュータ1bとの双方が、帳票出力装置100の機能および検索装置200の機能を備えても良い。
100 帳票出力装置
110 制御部
111 帳票出力形式データ生成部
112 符号化処理部
112a 符号化部
112b インデックス生成部
113 埋込部
114 出力部
120 記憶部
121 符号化辞書
122 2次元ハッシュ化インデックス
123 第1の3次元ハッシュ化インデックス
124 第2の3次元ハッシュ化インデックス
200 検索装置
211 検索対象受付部
212 第1の復元部
213 第2の復元部
214 検索処理部
215 検索結果出力部
220 記憶部
221 符号化辞書
222 2次元ハッシュ化インデックス
223 第1の3次元ハッシュ化インデックス
224 第2の3次元ハッシュ化インデックス
225 第1の復元ビットマップ
226 第2の復元ビットマップ
227 第3の復元ビットマップ
228 絞込みビットマップ
110 制御部
111 帳票出力形式データ生成部
112 符号化処理部
112a 符号化部
112b インデックス生成部
113 埋込部
114 出力部
120 記憶部
121 符号化辞書
122 2次元ハッシュ化インデックス
123 第1の3次元ハッシュ化インデックス
124 第2の3次元ハッシュ化インデックス
200 検索装置
211 検索対象受付部
212 第1の復元部
213 第2の復元部
214 検索処理部
215 検索結果出力部
220 記憶部
221 符号化辞書
222 2次元ハッシュ化インデックス
223 第1の3次元ハッシュ化インデックス
224 第2の3次元ハッシュ化インデックス
225 第1の復元ビットマップ
226 第2の復元ビットマップ
227 第3の復元ビットマップ
228 絞込みビットマップ
Claims (9)
- コンピュータに、
複数のカラムを有する帳票を含む帳票データから帳票出力形式データを生成し、
単語、文字、または数値に対するインデックス情報であって、前記複数のカラムそれぞれの属性と、前記帳票出力形式データに含まれる前記複数のカラムそれぞれに対応したデータ相互の前記帳票データにおける位置関係とを特定可能な位置情報を含む前記インデックス情報を生成し、
前記インデックス情報、および前記帳票出力形式データを含む出力ファイルを出力する
処理を実行させることを特徴とするインデックス付きデータ生成プログラム。 - 前記出力ファイルは、前記出力ファイルの拡張領域に、前記帳票出力形式データが符号化された符号化データ、および前記インデックス情報を含む
ことを特徴とする請求項1に記載のインデックス付きデータ生成プログラム。 - 前記符号化データは、前記帳票出力形式データが、前記帳票の属性ごとに、符号化されたデータである
ことを特徴とする請求項2に記載のインデックス付きデータ生成プログラム。 - 前記インデックス情報は、前記単語、前記文字、または前記数値と、前記帳票のファイル情報と、前記位置情報とを軸とするビットマップ型転置インデックス情報である
ことを特徴とする請求項1〜3の何れか1つに記載のインデックス付きデータ生成プログラム。 - コンピュータが、
複数のカラムを有する帳票を含む帳票データから帳票出力形式データを生成し、
単語、文字、または数値に対するインデックス情報であって、前記複数のカラムそれぞれの属性と、前記帳票出力形式データに含まれる前記複数のカラムそれぞれに対応したデータ相互の前記帳票データにおける位置関係とを特定可能な位置情報を含む前記インデックス情報を生成し、
前記インデックス情報、および前記帳票出力形式データを含む出力ファイルを出力する
処理を実行させることを特徴とするインデックス付きデータ生成方法。 - 複数のカラムを有する帳票を含む帳票データから帳票出力形式データを生成する第1生成部と、
単語、文字、または数値に対するインデックス情報であって、前記複数のカラムそれぞれの属性と、前記帳票出力形式データに含まれる前記複数のカラムそれぞれに対応したデータ相互の前記帳票データにおける位置関係とを特定可能な位置情報を含む前記インデックス情報を生成する第2生成部と、
前記インデックス情報、および前記帳票出力形式データを含む出力ファイルを出力する出力部と
を有することを特徴とするインデックス付きデータ生成システム。 - コンピュータに、
単語、文字、数値を組み合わせた検索対象の文字列を受け付け、
単語、文字、または数値に対するインデックス情報であって、複数のカラムそれぞれの属性と、前記複数のカラムを有する帳票を含む帳票データから生成された帳票出力形式データに含まれる前記複数のカラムそれぞれに対応したデータ相互の前記帳票データにおける位置関係とを特定可能な位置情報を含む前記インデックス情報を参照して、前記検索対象の文字列に含まれる前記単語、前記文字、前記数値が前記帳票出力形式データに含まれ、かつ、位置関係が前記検索対象の文字列と一致するかを判別する
処理を実行させることを特徴とする検索プログラム。 - コンピュータが、
単語、文字、数値を組み合わせた検索対象の文字列を受け付け、
単語、文字、または数値に対するインデックス情報であって、複数のカラムそれぞれの属性と、前記複数のカラムを有する帳票を含む帳票データから生成された帳票出力形式データに含まれる複数のカラムそれぞれに対応したデータ相互の前記帳票データにおける位置関係とを特定可能な位置情報を含む前記インデックス情報を参照して、前記検索対象の文字列に含まれる前記単語、前記文字、前記数値が前記帳票出力形式データに含まれ、かつ、位置関係が前記検索対象の文字列と一致するかを判別する
処理を実行させることを特徴とする検索方法。 - 単語、文字、数値を組み合わせた検索対象の文字列を受け付ける受付部、
単語、文字、または数値に対するインデックス情報であって、複数のカラムそれぞれの属性と、前記複数のカラムを有する帳票を含む帳票データから生成された帳票出力形式データに含まれる複数のカラムそれぞれに対応したデータ相互の前記帳票データにおける位置関係とを特定可能な位置情報を含む前記インデックス情報を参照して、前記検索対象の文字列に含まれる前記単語、前記文字、前記数値が前記帳票出力形式データに含まれ、かつ、位置関係が前記検索対象の文字列と一致するかを判別する判別部と
を有することを特徴とする検索システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/080034 WO2018066144A1 (ja) | 2016-10-07 | 2016-10-07 | インデックス付きデータ生成プログラム、インデックス付きデータ生成方法、インデックス付きデータ生成システム、検索プログラム、検索方法、および検索システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2018066144A1 JPWO2018066144A1 (ja) | 2019-06-24 |
JP6575688B2 true JP6575688B2 (ja) | 2019-09-18 |
Family
ID=61830864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018543574A Active JP6575688B2 (ja) | 2016-10-07 | 2016-10-07 | インデックス付きデータ生成プログラム、インデックス付きデータ生成方法、インデックス付きデータ生成システム、検索プログラム、検索方法、および検索システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11182341B2 (ja) |
JP (1) | JP6575688B2 (ja) |
WO (1) | WO2018066144A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7210130B2 (ja) * | 2017-04-07 | 2023-01-23 | 富士通株式会社 | 符号化プログラム、符号化方法および符号化装置 |
CN108763512A (zh) * | 2018-05-30 | 2018-11-06 | 重庆小雨点小额贷款有限公司 | 一种信息处理方法、装置及服务器 |
CN114328501A (zh) * | 2020-09-29 | 2022-04-12 | 华为技术有限公司 | 一种数据处理方法、装置以及设备 |
CN115803730A (zh) * | 2021-06-30 | 2023-03-14 | 株式会社英弗麦斯 | 检索装置、检索方法、以及记录介质 |
JP6970867B1 (ja) * | 2021-06-30 | 2021-11-24 | 株式会社インフォメックス | 検索装置、検索方法、およびプログラム |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2244626A1 (en) * | 1998-07-31 | 2000-01-31 | Kom Inc. | A hardware and software system |
US6405187B1 (en) * | 1999-06-18 | 2002-06-11 | International Business Machines Corporation | Utilizing encoded vector indexes for statistics in database processing |
JP2001056836A (ja) * | 1999-08-19 | 2001-02-27 | Casio Comput Co Ltd | 帳票処理装置、及び記憶媒体 |
JP2002015266A (ja) | 2000-06-30 | 2002-01-18 | Mitsubishi Electric Business Systems Co Ltd | 電子帳票システム |
US7949689B2 (en) * | 2002-07-18 | 2011-05-24 | Accenture Global Services Limited | Media indexing beacon and capture device |
JP3784060B2 (ja) * | 2003-01-10 | 2006-06-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベース検索システム、その検索方法及びプログラム |
JP2005084784A (ja) | 2003-09-05 | 2005-03-31 | Canon Inc | 印刷システム |
US7747629B2 (en) * | 2006-08-23 | 2010-06-29 | International Business Machines Corporation | System and method for positional representation of content for efficient indexing, search, retrieval, and compression |
US8250115B2 (en) * | 2007-08-10 | 2012-08-21 | International Business Machines Corporation | Method, apparatus and software for processing data encoded as one or more data elements in a data format |
US8825592B2 (en) * | 2008-03-12 | 2014-09-02 | Web Access, Inc. | Systems and methods for extracting data from a document in an electronic format |
CN102834824A (zh) * | 2010-04-20 | 2012-12-19 | Ips株式会社 | 数据库,传票数据管理服务器和索引数据管理程序 |
JP2012123575A (ja) | 2010-12-07 | 2012-06-28 | Canon Marketing Japan Inc | 情報処理装置、及びその制御方法、プログラム |
JP5659753B2 (ja) * | 2010-12-07 | 2015-01-28 | キヤノンマーケティングジャパン株式会社 | 帳票システムとサーバと情報処理装置と、その処理方法及びプログラム。 |
WO2012126180A1 (en) * | 2011-03-24 | 2012-09-27 | Microsoft Corporation | Multi-layer search-engine index |
US20120303633A1 (en) * | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Systems and methods for querying column oriented databases |
JP2013045208A (ja) * | 2011-08-23 | 2013-03-04 | Fujitsu Ltd | データ生成方法、装置及びプログラム、検索処理方法、装置及びプログラム |
US9251413B2 (en) * | 2013-06-14 | 2016-02-02 | Lexmark International Technology, SA | Methods for automatic structured extraction of data in OCR documents having tabular data |
US9495347B2 (en) * | 2013-07-16 | 2016-11-15 | Recommind, Inc. | Systems and methods for extracting table information from documents |
RU2679960C2 (ru) * | 2013-10-10 | 2019-02-14 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система базы данных для нахождения документов |
US9870382B2 (en) * | 2014-03-25 | 2018-01-16 | Sap Se | Data encoding and corresponding data structure |
CN105518667B (zh) * | 2014-06-30 | 2019-06-18 | 微软技术许可有限责任公司 | 理解供搜索的表格的方法、系统和计算机存储介质 |
US10452661B2 (en) * | 2015-06-18 | 2019-10-22 | Microsoft Technology Licensing, Llc | Automated database schema annotation |
US10078629B2 (en) * | 2015-10-22 | 2018-09-18 | International Business Machines Corporation | Tabular data compilation |
US10095720B2 (en) * | 2016-02-05 | 2018-10-09 | Amadeus S.A.S. | Database table index |
US10706218B2 (en) * | 2016-05-16 | 2020-07-07 | Linguamatics Ltd. | Extracting information from tables embedded within documents |
-
2016
- 2016-10-07 JP JP2018543574A patent/JP6575688B2/ja active Active
- 2016-10-07 WO PCT/JP2016/080034 patent/WO2018066144A1/ja active Application Filing
-
2019
- 2019-02-20 US US16/280,046 patent/US11182341B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JPWO2018066144A1 (ja) | 2019-06-24 |
US11182341B2 (en) | 2021-11-23 |
WO2018066144A1 (ja) | 2018-04-12 |
US20190251062A1 (en) | 2019-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6575688B2 (ja) | インデックス付きデータ生成プログラム、インデックス付きデータ生成方法、インデックス付きデータ生成システム、検索プログラム、検索方法、および検索システム | |
JP6720664B2 (ja) | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 | |
WO2015145647A1 (ja) | ストレージ装置とデータ処理方法及びストレージシステム | |
JP2011003214A (ja) | オフセット表を使用する完全ハッシュの生成 | |
JP6641857B2 (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
EP3236367B1 (en) | Encoding program, encoding method, encoding device, retrieval program, retrieval method, and retrieval device | |
JP6540308B2 (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
US10872060B2 (en) | Search method and search apparatus | |
CN106354746A (zh) | 搜索方法和搜索设备 | |
JP6728926B2 (ja) | 符号化処理プログラム、符号化処理装置、符号化処理方法、復号化処理プログラム、復号化処理装置および復号化処理方法 | |
JP6551131B2 (ja) | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 | |
US9576008B2 (en) | System and method for search indexing | |
US11055328B2 (en) | Non-transitory computer readable medium, encode device, and encode method | |
JP6805720B2 (ja) | データ検索プログラム、データ検索装置およびデータ検索方法 | |
JP2018061166A (ja) | 符号化プログラム、符号化装置および符号化方法 | |
US10997139B2 (en) | Search apparatus and search method | |
US20190205297A1 (en) | Index generating apparatus, index generating method, and computer-readable recording medium | |
EP3404560A1 (en) | Search program, search device, and search method | |
JP2019121861A (ja) | 符号化プログラム、動的辞書の生成プログラム、符号化方法、動的辞書の生成方法、符号化装置および復号化装置 | |
US20210357438A1 (en) | Computer-readable recording medium, index creation device, index creation method, computer-readable recording medium, search device, and search method | |
JP6717153B2 (ja) | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190213 |
|
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: 20190723 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190805 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6575688 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |