JP2017194762A - インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 - Google Patents

インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 Download PDF

Info

Publication number
JP2017194762A
JP2017194762A JP2016083243A JP2016083243A JP2017194762A JP 2017194762 A JP2017194762 A JP 2017194762A JP 2016083243 A JP2016083243 A JP 2016083243A JP 2016083243 A JP2016083243 A JP 2016083243A JP 2017194762 A JP2017194762 A JP 2017194762A
Authority
JP
Japan
Prior art keywords
word
index
bitmap
file
search
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.)
Granted
Application number
JP2016083243A
Other languages
English (en)
Other versions
JP6720664B2 (ja
Inventor
片岡 正弘
Masahiro Kataoka
正弘 片岡
将夫 出内
Masao Ideuchi
将夫 出内
葉月 阿部
Hazuki Abe
葉月 阿部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016083243A priority Critical patent/JP6720664B2/ja
Priority to CN201710249150.XA priority patent/CN107305586B/zh
Priority to US15/488,685 priority patent/US11080234B2/en
Priority to EP20196907.8A priority patent/EP3770770A1/en
Priority to EP17166792.6A priority patent/EP3236369A1/en
Publication of JP2017194762A publication Critical patent/JP2017194762A/ja
Application granted granted Critical
Publication of JP6720664B2 publication Critical patent/JP6720664B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/319Inverted lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ファイルとキーとその出現位置に対応付けられたインデックスを容易に生成する。
【解決手段】インデックス生成装置100は、入力された複数のファイルそれぞれに対し、複数のキーそれぞれの存否、および、キーが存在する場合のキーが存在する位置についての情報を、複数のファイルそれぞれに対する字句解析の際に生成する。インデックス生成装置100は、生成された情報に基づいて、複数のファイルそれぞれに対する、キーおよび位置のインデックス情報を生成する。
【選択図】図9

Description

本発明は、インデックス生成プログラムなどに関する。
テキストデータの検索を高速化するために、テキストデータに含まれる文字ごとの、ファイルごとの存否をインデックス化した、ビットマップ型インデックスが知られている(例えば、特許文献1参照)。
また、レコードに含まれるデータ項目の内容をキーにして、キーに対するレコードの格納位置を指すインデックを生成し、データベースの探索の際に利用する技術がある(例えば、特許文献2参照)。
一方、単語に対応付けられたポインタテーブル型のインデックスを生成する技術が知られている(例えば、非特許文献1参照)。かかる技術について、図1を参照して説明する。図1は、ポインタテーブル型インデックスの生成処理の参考例を示す図である。図1に示すように、かかる技術では、文書ファイルごとに単語を抽出し、文書IDと単語IDとその出現位置に対応づけられたインデックスを生成し、それを収集し、単語IDについてソートする。これにより、単語IDをもとに文書IDと出現位置とを対応づけた転置インデックス、すなわちポインタテーブル型インデックスを生成する。
国際公開第2013/038527号 特開昭63−189934号公報 特開昭63−271525号公報
西田圭介著「Googleを支える技術」技術評論社、2008年4月25日 関口宏司著「ApacheLucene入門」技術評論社、2006年6月25日
しかしながら、ファイル、キーおよびその出現位置を含むインデックスを圧縮形式にて1パスで容易に生成できないという問題がある。また、別の観点では、キーに対するファイルおよびその出現位置の組合せの探索を容易に行えないという問題がある。
例えば、従来のビットマップ型インデックスは、文字をキーとした場合に、キーおよびファイルを含むインデックスであるが、ファイル、キーおよびその出現位置を含むインデックスではなく、インデックスの生成と圧縮はそれぞれ独立していて2パスとなっている。したがって、かかる技術では、ファイル、キーおよびその出現位置を含むインデックスを圧縮形式にて1パスで容易に生成できない。
また、ビットマップ型インデックスでは、出現位置の情報を含まないため、キーに対するファイルおよびその出現位置の組合せを探索する際には、インデックスにより対象のファイルを特定した後、それぞれのファイルを参照し、キーに対するファイルの出現位置を確認する必要がある。したがって、キーに対するファイルおよびその出現位置の組合せの探索を容易に行えない。
一方、ポインタテーブル型のインデックスを生成する技術では、文書ファイルごとに含まれる単語が異なるので、文書ファイルの更新や追加の度に、巨大なクラウド環境において3パスでインデックスの生成処理と収集処理とソート処理および転置処理が繰り返される。さらに、1パスでインデックスの圧縮が行われる。したがって、ポインタテーブル型のインデックスは、ファイル、キーおよびその出現位置を含むインデックスを含むインデックスであるが、かかる技術では、文書ファイルに対するポインタテーブル型インデックスを圧縮形式にて1パスで容易に生成できない。
なお、上記課題は、データ項目の内容をキーとしたが、データ項目の内容だけではなく、単語や文字にも同様に生じる課題である。
1つの側面では、ファイル、キーおよびその出現位置を含むインデックスを圧縮形式にて1パスで容易に生成することを目的とする。また、1つの側面では、キーに対するファイルおよびその出現位置の組合せの探索を容易に行うことを目的とする。
第1の案では、インデックス生成プログラムは、コンピュータに、入力された複数のファイルそれぞれに対し、複数のキーそれぞれの存否、および、前記キーが存在する場合の前記キーが存在する位置についての情報を、前記複数のファイルそれぞれに対する字句解析の際に生成し、前記情報に基づいて、前記複数のファイルそれぞれに対する、前記キーおよび前記位置のインデックス情報を生成する処理を実行させる。
1つの態様によれば、ファイル、キーおよびその出現位置を含むインデックスを圧縮形式にて1パスで容易に生成できる。
図1は、ポインタテーブル型インデックスの生成処理の参考例を示す図である。 図2は、実施例に係るビットマップ型インデックスの生成処理の流れの一例を示す図である。 図3は、実施例に係るビットマップ型インデックスの一例を示す図である。 図4は、実施例に係る動的辞書の一例を示す図である。 図5は、実施例に係るハッシュ化インデックス生成処理の一例を示す図である。 図6は、符号化ファイルの構成例を示す図である。 図7は、実施例に係る検索処理の一例を示す図である。 図8は、実施例に係るハッシュ化ビットマップ復元処理の一例を示す図である。 図9は、実施例に係るインデックス生成装置の構成を示す機能ブロック図である。 図10は、実施例に係るインデックス生成処理のフローチャートの一例を示す図である。 図11は、実施例に係る符号化処理のフローチャートの一例を示す図である。 図12は、実施例に係る検索装置の構成を示す機能ブロック図である。 図13は、実施例に係る検索処理のフローチャートの一例を示す図である。 図14は、コンピュータのハードウェア構成例を示す図である。 図15は、コンピュータで動作するプログラムの構成例を示す図である。 図16は、実施形態のシステムにおける装置の構成例を示す図である。
以下に、本願の開示するインデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[実施例に係るビットマップ型インデックス生成の一例]
図2は、実施例に係るビットマップ型インデックスの生成処理の流れの一例を示す図である。図2に示すように、ビットマップ型インデックス生成処理は、入力された複数のファイルに対し、複数の単語それぞれの存否、および単語が存在する場合の単語の位置についての情報を、複数のファイルそれぞれに対する字句解析の際に生成する。そして、ビットマップ型インデックス生成処理は、生成された情報に基づいて、複数のファイルそれぞれに対する、単語および単語の位置のビットマップ型インデックスを生成する。なお、以降、ビットマップ型インデックス生成処理を「インデックス生成処理」というものとする。
インデックス生成処理の一例を、以下に説明する。例えば、インデックス生成処理を実行するインデックス生成装置は、符号化対象のファイルF1に含まれる1つのファイル3を記憶領域にロードする。なお、ファイル3の「3」は、ファイルIDが「3」であることを示す。
インデックス生成装置は、ファイル3を記憶領域から読み出し、読み出したファイル3に対して字句解析を行う。ここでいう字句解析とは、符号化されていない状態のファイルを単語に分割することをいう。
インデックス生成装置は、静的辞書S0と単語の文字列とを比較して、静的辞書S0に単語の文字列に対応する符号があるか否かを判定する。なお、かかる判定処理は、静的辞書S0を用いて符号化可能な単語の文字列を特定するビットフィルタと単語の文字列とを比較して、単語の文字列がビットフィルタにヒットするか否かを判定しても良い。ここでいうビットフィルタとは、静的辞書S0を用いて符号化可能な単語の文字列を特定するフィルタのことをいう。インデックス生成装置は、静的辞書S0に単語の文字列に対応する符号がある場合には、静的辞書S0に基づいて単語の文字列を、当該単語の文字列に対応する符号(静的コード)に符号化する。
インデックス生成装置は、静的辞書S0に単語の文字列に対応する符号がない場合には、単語の文字列が動的辞書D0に登録されているか否かを判定する。インデックス生成装置は、単語の文字列が動的辞書D0に登録されていない場合には、単語の文字列を動的辞書D0に登録し、動的辞書D0に基づいて、登録した単語の文字列を、当該登録した単語の文字列に対応する動的コードに符号化する。また、インデックス生成装置は、単語の文字列が動的辞書D0に登録されている場合には、動的辞書D0に基づいて、当該単語の文字列を、当該単語の文字列に対応する動的コードに符号化する。
ここで、静的辞書S0とは、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書のことをいう。静的辞書S0には、それぞれの単語に対応する符号である静的コードがあらかじめ登録されている。これに対して、動的辞書D0とは、静的辞書に登録されていない単語と、動的に付された動的コード(符号)とを対応付けた辞書である。静的辞書S0に登録されていない単語には、一例として、出現頻度の低い単語(低頻度単語)、未知語、数値、時刻、タグなどがある。ここでいう未知語とは、静的辞書S0に登録されていない単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。動的辞書D0には、静的辞書S0に登録されていない単語の出現順に、動的コードに対応付けられた単語がバッファ部に登録される。なお、動的辞書D0に関する詳しい説明は後述する。
そして、インデックス生成装置は、符号化された単語コードを、符号化ファイルF2内のファイル3の符号化データのエリアに格納する。
そして、インデックス生成装置は、ファイル3に対し、符号化された単語コードおよび当該単語コードが示す単語の位置についての情報を生成する。インデックス生成装置は、生成された情報に基づき、ファイル3に対する、単語コードが示す単語の存否を2次元ビットマップ型インデックスBI1に設定する。インデックス生成装置は、生成された情報に基づき、ファイル3に対する、単語コードおよび当該単語コードが示す単語の位置を3次元ビットマップ型インデックスBI2に設定する。
ここでいう2次元ビットマップ型インデックスBI1とは、全文検索のためのインデックスであり、単語を指定するポインタと単語の各対象ファイルでの存否を示すビットを連結したビット列である。すなわち、2次元ビットマップ型インデックスBI1とは、ファイルに含まれる単語について、ファイルごとの存否をインデックス化したビットマップのことをいう。検索処理時には、このビットマップを、ビットのON・OFFに応じて検索対象の単語を含むか否かを示すインデックスとして用いることができる。単語を指定するポインタとしては、例えば、単語の符号が採用される。単語の符号は、静的コードおよび単語コードのことをいい、単語IDと同義である。なお、単語を指定するポインタは、例えば、単語そのものを用いても良い。すなわち、2次元ビットマップ型インデックスBI1は、単語を指定するポインタで示される単語ごとのビットマップを纏めたものである。図2に示すように、2次元ビットマップ型インデックスBI1のX軸はファイルIDを表し、Y軸は単語IDを表す。つまり、2次元ビットマップ型インデックスBI1は、単語IDが示す単語の、複数のファイルIDが示すファイルごとの存否を表す。
ここでいう3次元ビットマップ型インデックスBI2は、2次元ビットマップ型インデックスBI1に対して、各対象ファイル内での単語の位置を追加したビットマップ型インデックスである。すなわち、3次元ビットマップ型インデックスBI2とは、ファイルに含まれる単語について、ファイルごとの存する位置をインデックス化したビットマップのことをいう。図2に示すように、3次元ビットマップ型インデックスBI2のX軸はValue(位置)を表し、Y軸は単語IDを表し、Z軸はファイルIDを表す。つまり、3次元ビットマップ型インデックスBI2は、単語IDが示す単語の、複数のファイルIDが示すファイルごとの位置を表す。
ここで、インデックス生成装置がファイル3に対して、ビットマップ型インデックスを生成する場合の処理について説明する。ファイル3のテキストファイルには、「・・・Sherlock・・・LONDON・・・・・Baker・・・」が記憶されている。なお、単語の文字列「Sherlock」、単語の文字列「LONDON」、単語の文字列「Baker」は、静的辞書S0に登録されていないとする。
インデックス生成装置は、ファイル3に対して字句解析を行い、「Sherlock」、「LONDON」、「Baker」を取得する。ここでは、取得された単語の文字列の中で、一例として、「Baker」におけるインデックスを生成する処理を説明する。単語の文字列「Sherlock」、単語の文字列「LONDON」は、動的辞書D0に登録されているとする。
インデックス生成装置は、静的辞書S0に単語の文字列「Baker」に対応する符号がないので、単語の文字列「Baker」が動的辞書D0に登録されているか否かを判定する。インデックス生成装置は、単語の文字列「Baker」が動的辞書D0に登録されていないので、単語の文字列「Baker」を動的辞書D0に登録する。そして、インデックス生成装置は、動的辞書D0に基づいて、登録した単語の文字列「Baker」を、当該単語の文字列に対応する動的コード「A002」に符号化する。
そして、インデックス生成装置は、符号化された単語コード「A002」を、符号化ファイルF2内のファイル3の符号化データのエリアに格納する。
そして、インデックス生成装置は、ファイル3に対し、符号化された単語コード「A002」および当該単語コードが示す単語「Baker」の位置についての情報を生成する。ここでは、ファイル3に対する、単語「Baker」の位置は、「23」であるとする。
そして、インデックス生成装置は、生成された情報に基づき、ファイル3に対する、単語コード「A002」が示す単語の存否を2次元ビットマップ型インデックスBI1に設定する。ここでは、2次元ビットマップ型インデックスBI1には、「Baker」の単語ID「A002」に対応するビットマップが示される。かかるビットマップには、ファイルID「3」のファイルに対する存否としてON、すなわち2進数の「1」が設定されている。なお、ファイルに単語が存在しない場合には、単語が示す単語IDに対応するビットマップに、当該ファイルに対する存否としてOFFが設定される。
そして、インデックス生成装置は、生成された情報に基づき、ファイル3に対する、単語コード「A002」および当該単語コードが示す単語の位置「23」を3次元ビットマップ型インデックスBI2に設定する。ここでは、3次元ビットマップ型インデックスBI2には、「Baker」の単語ID「A002」およびファイルID「3」に対応するビットマップが示される。かかるビットマップには、Value(位置)「23」に対するビットにON、すなわち2進数の「1」が設定されている。なお、ファイルの所定の位置に単語が存在しない場合には、単語が示す単語IDおよびファイルが示すファイルIDに対応するビットマップの、所定の位置に対するビットにOFFが設定される。
このようにして、インデックス生成装置は、ファイル3に対して字句解析された単語を、順番に符号化し、符号化して得られた単語コードおよび単語の位置についての情報に基づいて、2次元および3次元のビットマップ型インデックスBI1、BI2を生成する。
[ビットマップ型インデックスの一例]
次に、2次元のビットマップ型インデックスの一例を、図3を参照して説明する。図3は、実施例に係るビットマップ型インデックスの一例を示す図である。図3に示すように、2次元ビットマップ型インデックスBI1は、超高頻度の単語、高頻度の単語および低頻度の単語に係る圧縮付号(単語IDに対応)ごとにビットマップを対応付ける。ビットマップとは、超高頻度の単語、高頻度の単語および低頻度の単語がいずれの圧縮ファイルに含まれるかを表す符号ビット列である。ビットマップの各ビットが、各圧縮ファイルに超高頻度の単語、高頻度の単語および低頻度の単語が含まれているか否かを表す。
2次元ビットマップ型インデックスBIは、例えば、32種類の超高頻度単語ごと、8K(8000)種類の高頻度の単語および約16K(16000)種類の低頻度単語ごとにビットマップを対応付ける。超高頻度単語とは、出現頻度集計用のファイル群において各単語の出現頻度を集計した場合に、出現頻度の高い単語を表す。例えば、超高頻度単語は、出現頻度集計用のファイル群での出現頻度が上位32位までの単語である。高頻度単語は、出現頻度集計用のファイル群での出現頻度が上位8000位までの単語である。また、低頻度単語は、出現頻度集計用のファイル群での出現頻度の順位が24000位未満であって、符号化するファイルから抽出された数値文字列または単語である。低頻度単語の一例として、専門単語、新語および未知語が挙げられる。ここでいう専門単語とは、ある特定の学問の分野や業界などの間で通用する単語であり、符号化するファイルの中で繰り返し出現する特長がある単語のことをいう。新語とは、流行語などの新しく作られた単語であり、符号化するファイルの中で繰り返し出現する特長がある単語のことをいう。未知語とは、専門単語でなく、新語でない単語であり、符号化するファイルの中で繰り返し出現する特長がある単語のことをいう。
例えば、2次元ビットマップ型インデックスBI1の有効行1行目は、圧縮符号が示す単語「the」のビットマップが「・・・1101」となっている。かかるビットマップは、「the」の圧縮符号が含まれるファイルを表す。ビットマップ「・・・1101」は、1ビット目に「1」が格納されているのでファイル1に「the」が含まれ、2ビット目に「0」が格納されているのでファイル2に「the」が含まれず、3ビット目に「1」が格納されているのでファイル3に「the」が含まれることを表す。また、ビットマップ「・・・1101」は、4ビット目に「1」が格納されているのでファイル4に「the」が含まれていることを表す。なお、ビットマップ「・・・1101」は、ファイル5以降の他の各ファイルに「the」が含まれるか否かについても表す。
なお、3次元ビットマップ型インデックスBI2は、図示しないが、単語IDおよびファイルIDごとにビットマップを対応付ける。ビットマップとは、単語が圧縮ファイルに含まれる場合には、単語が圧縮ファイルのいずれの位置に含まれるかを表す符号ビット列である。ビットマップの各ビットが、各位置に圧縮ファイルの単語が含まれているか否かを表す。
[動的辞書の一例]
図4は、実施例に係る動的辞書の一例を示す図である。図4に示される動的辞書D0は、バッファ部D1とアドレステーブルD2とを含む。バッファ部D1は、文字列を記憶する。アドレステーブルD2は、動的コードと、格納位置と、データ長とを対応付けて保持する。動的コードは、あらかじめ定められた固定長の符号であり、例えば圧縮符号である。そして、動的コードは、単語の文字列が登録された順に割り当てられる。ここでは、動的コードは、16進数「A」で始まる固定長2バイトのコードである。格納位置は、バッファ部D1に格納された文字列の位置を示す。データ長は、バッファ部D1に格納された文字列の長さ(バイト長)を示す。
例えば、文字列「Baker」に動的コードが割り当てられる場合について説明する。インデックス生成装置は、文字列「Baker」をバッファ部D1に格納する。インデックス生成装置は、文字列を格納した格納位置および格納したデータ長をアドレステーブルD2に登録する。ここでは、インデックス生成装置は、格納位置として「16」、データ長として「6」をアドレステーブルD2に登録する。
インデックス生成装置は、文字列に対応付けられたアドレステーブルD2の動的コードを圧縮符号として割り当てる。ここでは、インデックス生成装置は、文字列「Baker」に対応付けられた動的コード「A002」を割り当てる。
[実施例に係るハッシュ化インデックス生成処理の一例]
次に、2次元のビットマップ型インデックスをハッシュ化する処理の一例を、図5を参照して説明する。図5は、実施例に係るハッシュ化インデックス生成処理の一例を示す図である。
図5に示すように、インデックス生成装置は、単語IDに対応するビットマップそれぞれについてハッシュ関数を適用した複数のハッシュ化ビットマップを生成する。ここでは、インデックス生成装置は、32ビットレジスタを想定し、一例として29と31のハッシュ値(底)を基に、各ビットマップをハッシュ化する。具体的には、インデックス生成装置は、1つの底のハッシュ化ビットマップについて、単語IDに対応するビットマップの各ビットの位置を底で割った余りの位置に、当該ビットマップの各ビットの値を設定する。ビットマップの各ビットの位置は、それぞれのファイルIDに対応する。一例として、インデックス生成装置は、底29のハッシュ化ビットマップh11について、ビットマップb1の各ビットの位置を底29で割った余りの位置に、ビットマップb1の各ビットの値を設定する。ビットマップb1の35ビット目の位置のビット値「1」は、ハッシュ化ビットマップh11の6ビット目に設定される。ビットマップb1の42ビット目の位置のビット値「1」は、ハッシュ化ビットマップh11の13ビット目に設定される。インデックス生成装置は、底31のハッシュ化ビットマップh12について、ビットマップb1の各ビットの位置を底31で割った余りの位置に、ビットマップb1の各ビットの値を設定する。ビットマップb1の35ビット目の位置のビット値「1」は、ハッシュ化ビットマップh12の4ビット目に設定される。ビットマップb1の42ビット目の位置のビット値「1」は、ハッシュ化ビットマップh12の11ビット目に設定される。すなわち、インデックス生成装置は、ビットマップの0ビット目からの各ビットを順番にハッシュ化ビットマップの0ビット目から設定し、(底−1)ビット目まで設定する。そして、インデックス生成装置は、再度折り返してハッシュ化ビットマップの0ビット目から既にハッシュ化ビットマップに設定された値とOR演算した値を設定する。この結果、インデックス生成装置は、ビットマップb1について、ハッシュ化ビットマップh11,h12を生成する。このようにして、インデックス生成装置は、複数の単語が示すそれぞれの単語IDにおけるビットマップについて、それぞれハッシュ化ビットマップを生成する。この結果、インデックス生成装置は、それぞれ生成されたハッシュ化ビットマップを纏めた2次元ハッシュ化インデックスHI1を生成する。
なお、インデックス生成装置は、3次元ビットマップ型インデックスBI2のビットマップも、2次元ビットマップ型インデックスBI1のビットマップの場合と同様に、ハッシュ関数を適用した複数のハッシュ化ビットマップを生成する。そして、インデックス生成装置は、それぞれ生成されたハッシュ化ビットマップを纏めた3次元ハッシュ化インデックスHI2を生成すれば良い。以降、ハッシュ値(底)は、一例として、29と31であるとして説明する。
[符号化ファイルの構成例]
図6は、符号化ファイルの構成例を示す図である。図6に示すように、符号化ファイルF2は、ヘッダ部と、符号化データと、トレーラ部とを有する。符号化データは、複数のファイルそれぞれの符号化された単語コード群を記憶する。トレーラ部は、各ファイルのアドレス、動的辞書(共通/個別)の情報、ハッシュ化インデックス(2次元/3次元)などを記憶する。各ファイルのアドレスは、複数のファイルが符号化された各符号化データの格納先のアドレスを示す。各ファイルのアドレスは、一例として、符号化データの先頭からの相対アドレスである。個別の動的辞書D0の情報は、複数のファイルそれぞれに対する、図4に示した動的辞書の情報に対応する。共通の動的辞書D0の情報は、複数のファイル全体に対する、図4に示した動的辞書D0の情報に対応する。2次元ハッシュ化インデックスは、2次元ハッシュ化インデックスHI1を示す。3次元ハッシュ化インデックスは、3次元ハッシュ化インデックスHI2を示す。ヘッダ部には、トレーラ部に格納された各ファイルのアドレスへのポインタ、動的辞書D0へのポインタやハッシュ化インデックス(2次元/3次元)へのポインタが格納される。インデックス生成装置は、複数のファイルをそれぞれ符号化すると、符号化されたそれぞれの結果を示す符号化データを符号化ファイルF2に格納し、格納した各アドレスを各ファイルのアドレスに格納する。復号化処理では、ヘッダ部の各ファイルのアドレスへのポインタを利用して、トレーラ部の各ファイルのアドレスから復号化対象のファイルのアドレスを参照する。復号化処理は、ヘッダ部の動的辞書D0へのポインタを利用し、動的辞書D0を参照する。
[実施例に係る検索処理の一例]
図7は、実施例に係る検索処理の一例を示す図である。図7に示すように、検索処理を実行する検索装置は、入力された検索キーを構成する単語をもとに、2次元ハッシュ化インデックスHI1を参照し、単語が存在するファイルIDを取得する。そして、検索装置は、3次元ハッシュ化インデックスHI2に、単語が示す単語IDとファイルIDを指定して、単語の位置情報を特定する。
検索処理の一例を、以下に説明する。例えば、検索処理を実行する検索装置は、検索キーを構成する単語の入力を受け付けると、2次元ハッシュ化インデックスHI1を参照し、受け付けた単語が示す単語IDに対するハッシュ化ビットマップを抽出する。ここでは、単語として「Sherlock」と「Baker」が受け付けられたとする。すると、検索装置は、検索単語として受け付けられた「Sherlock」が示す単語ID「A000」に対するハッシュ化ビットマップh4を2次元ハッシュ化インデックスHI1から抽出する。ハッシュ化ビットマップh4には、底29のハッシュ化ビットマップh41と底31のハッシュ化ビットマップh42とが含まれる。また、検索装置は、検索単語として受け付けられた「Baker」が示す単語ID「A0002」に対するハッシュ化ビットマップh5をハッシュ化インデックスHI1から抽出する。ハッシュ化ビットマップh5には、底29のハッシュ化ビットマップh51と底31のハッシュ化ビットマップh52とが含まれる。
検索装置は、抽出されたそれぞれの単語IDに対するハッシュ化ビットマップを復元する。なお、ハッシュ化ビットマップの復元処理は、後述する。復元結果は、単語IDに対応するビットマップで表わされる。ここでは、検索装置は、単語ID「A000」に対するハッシュ化ビットマップh4を復元し、ビットマップb4を復元結果として出力する。検索装置は、単語ID「A002」に対するハッシュ化ビットマップh5を復元し、ビットマップb5を復元結果として出力する。
また、検索装置は、単語ID「A000」のビットマップb4と、単語ID「A002」のビットマップb5と、のAND演算を行う。検索装置は、AND結果のビットがON(「1」)であるファイルIDを出力する。すなわち、検索装置は、単語ID「A000」が示す「Sherlock」と単語ID「A002」が示す「Baker」を含むファイルのファイルIDを絞り込む。ここでは、ファイルIDとして「3」が出力される。
また、検索装置は、ファイルIDを絞り込んだ後、3次元ハッシュ化インデックスHI2を参照し、単語IDおよびファイルIDに対するハッシュ化ビットマップを抽出する。ここでは、検索装置は、単語ID「A000」およびファイルID「3」に対するハッシュ化ビットマップh6を3次元ハッシュ化インデックスHI2から抽出する。ハッシュ化ビットマップh6には、底29のハッシュ化ビットマップh61と底31のハッシュ化ビットマップh62とが含まれる。また、検索装置は、単語ID「A002」およびファイルID「3」に対するハッシュ化ビットマップh7を3次元ハッシュ化インデックスHI2から抽出する。ハッシュ化ビットマップh7には、底29のハッシュ化ビットマップh71と底31のハッシュ化ビットマップh72とが含まれる。
また、検索装置は、抽出されたそれぞれのハッシュ化ビットマップを復元する。復元結果は、単語IDおよびファイルIDに対応するビットマップで表わされる。ここでは、検索装置は、単語ID「A000」およびファイルID「3」に対するハッシュ化ビットマップh6を復元し、ビットマップb6を復元結果として出力する。検索装置は、単語ID「A002」およびファイルID「3」に対するハッシュ化ビットマップh7を復元し、ビットマップb7を復元結果として出力する。
また、検索装置は、復元結果として出力されたビットマップのビットがON(「1」)を示すValue(位置)を特定する。ここでは、検索装置は、ビットマップb6のビットが「1」を示す「10」のValue(位置)を特定する。検索装置は、ビットマップb7のビットマップが「1」を示す「23」のValue(位置)を特定する。
検索装置は、特定されたValue(位置)をファイルIDおよび単語IDが示す単語とともにValueリストに追加し、Valueリストを検索結果として出力する。ここでは、検索装置は、特定されたValue(位置)「10」をファイルID「3」および単語ID「A000」が示す「Sherlock」とともにValueリストに追加する。検索装置は、特定されたValue(位置)「23」をファイルID「3」および単語ID「A002」が示す「Baker」とともにValueリストに追加する。そして、検索装置は、Valueリストを検索結果として出力する。なお、出力される検索結果のフォーマットは、これに限定されず、検索キーがどのファイルのどの位置に存在するのかがわかるフォーマットであれば良い。
これにより、検索装置は、検索キーが示す単語がどのファイルおよびどの位置に存在するかを、高速に絞り込むことができる。
[実施例に係るハッシュ化ビットマップ復元処理の一例]
次に、2次元のハッシュ化ビットマップを復元する処理の一例を、図8を参照して説明する。図8は、実施例に係るハッシュ化ビットマップ復元処理の一例を示す図である。図8に示すように、ハッシュ化ビットマップ復元処理は、単語IDに対応するハッシュ化ビットマップから、ハッシュ化を展開したビットマップへ復元する。ハッシュ化ビットマップ復元処理は、例えば、検索キーを構成する単語がどのファイルおよびどの位置に存在するかを検索する際に実行される。
例えば、検索装置は、図7で示したハッシュ化ビットマップ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の最大ビットの位置のビットの値が設定されるまで繰り返す。
検索装置は、第1の復元処理で復元されたそれぞれのビットマップの対応する位置のビットをAND演算する(第2の復元処理)。ここでは、検索装置は、底29のハッシュ化ビットマップh41から復元されたビットマップb41と、底31のハッシュ化ビットマップh42から復元されたビットマップb42とをAND演算する。検索装置は、AND結果のビットマップb4を復元結果として出力する。
なお、検索装置は、3次元ハッシュ化インデックスHI2のハッシュ化ビットマップも、2次元ハッシュ化インデックスHI1のハッシュ化ビットマップの場合と同様に、復元すれば良い。
[実施例に係るインデックス生成装置の構成]
次に、図9を参照して、実施例に係るインデックス生成装置100の構成について説明する。図9は、実施例に係るインデックス生成装置の構成を示す機能ブロック図である。図9に示すように、インデックス生成装置100は、制御部110と記憶部120とを有する。
制御部110は、図2に示したインデックス生成処理を実行する処理部である。制御部110は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部110は、例えば、ASICやFPGAなどの集積回路の電子回路に対応する。または、制御部110は、CPUやMPUなどの電子回路に対応する。また、制御部110は、ファイルリード部111、符号化部112、2次元インデックス生成部113および3次元インデックス生成部114を有する。
記憶部120は、例えばフラッシュメモリやFRAM(登録商標)などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部120は、静的辞書121、動的辞書122、2次元ビットマップ型インデックス123、3次元ビットマップインデックス124、2次元ハッシュ化インデックス125および3次元ハッシュ化インデックス126を有する。なお、2次元ビットマップ型インデックス123および3次元ビットマップ型インデックス124のそれぞれの構成は、図2、図3と同様であるので、その説明を省略する。また、2次元ハッシュ化インデックス125の構成は、単語IDに対応するハッシュ化ビットマップ(図5参照)を纏めた構成と同様であるので、その説明を省略する。3次元ハッシュ化インデックス126の構成は、単語IDおよびファイルIDに対応するハッシュ化ビットマップ(図5参照)を纏めた構成と同様であるので、その説明を省略する。
静的辞書121は、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書である。なお、静的辞書121は、図2の静的辞書S0に対応する。
動的辞書122は、静的辞書121に登録されていない単語と動的に付された動的コード(単語コード)とを対応付けた辞書である。なお、動的辞書122は、図4の動的辞書D0に対応する。動的辞書122の説明は、図4と同様であるので、その説明を省略する。
ファイルリード部111は、符号化対象のファイルF1内の複数のファイルを記憶領域に読み出す。ファイルリード部111は、対象ファイルを記憶領域から読み出し、読み出した対象ファイルに対して字句解析を行う。ファイルリード部111は、字句解析した結果の各単語を順次符号化部112に出力する。
符号化部112は、静的辞書121および動的辞書122に基づいて、単語を符号化する。例えば、符号化部112は、ファイルリード部111から出力された単語の文字列が静的辞書121に登録されているか否かを判定する。一例として、符号化部112は、対象の単語の文字列が静的辞書121のビットフィルタにヒットするか否かを判定する。符号化部112は、対象の単語の文字列が静的辞書121に登録されている場合には、当該単語の文字列を静的辞書121に基づいて符号化する。一例として、符号化部112は、静的辞書121に基づいて、単語の文字列を、当該単語の文字列に対応する静的コード(単語コード)に符号化する。符号化部112は、符号化された単語コードを2次元インデックス生成部113に出力する。
そして、符号化部112は、対象の単語の文字列が静的辞書121に登録されていない場合には、当該単語の文字列を動的辞書122に基づいて符号化する。一例として、符号化部112は、単語の文字列が動的辞書122のバッファ部D1に格納されているか否かを判定する。符号化部112は、単語の文字列が動的辞書122のバッファ部D1に格納されていない場合には、当該単語の文字列をバッファ部D1に格納するとともに、当該単語の文字列を格納した格納位置および格納したデータ長をアドレステーブルD2に格納する。符号化部112は、単語の文字列を、当該単語の文字列に対応付けられた、アドレステーブルD2の動的コード(単語コード)に符号化する。また、符号化部112は、単語の文字列が、動的辞書122のバッファ部D1に格納されている場合には、当該単語の文字列を、当該単語の文字列に対応する動的コード(単語コード)に符号化する。符号化部112は、符号化された単語コードおよび当該単語コードが示す単語の位置を含む情報を2次元インデックス生成部113および3次元インデックス生成部114に出力する。
2次元インデックス生成部113は、対象ファイルのファイルIDおよび符号化された単語コードに基づいて、2次元ハッシュ化インデックス123を生成する。例えば、2次元インデックス生成部113は、符号化部112から出力された情報を受け取る。2次元インデックス生成部113は、受け取った情報に基づいて、単語コードに対応するビットマップの、対象ファイルのファイルIDに対応するビットについて、底α、底βをそれぞれ用いてハッシュ化し、「1」を設定する。すなわち、2次元インデックス生成部113は、対象ファイルに対する、単語コードが示す単語の存否を2次元ハッシュ化インデックス123に設定する。
一例として、2次元インデックス生成部113は、単語ID(単語コード)に対応するビットマップそれぞれについて、2つのハッシュ値(底)に基づいたハッシュ化ビットマップを生成する。すなわち、2次元インデックス生成部113は、ビットマップの0ビット目からの各ビットを順番にハッシュ化ビットマップの0ビット目から設定し、(底−1)ビット目まで設定する。そして、2次元インデックス生成部113は、再度折り返してハッシュ化ビットマップの0ビット目から既にハッシュ化ビットマップに設定された値とOR演算した値を設定する。そして、2次元インデックス生成部113は、全ての単語IDに対応するビットマップに対してハッシュ化ビットマップを生成すると、生成されたハッシュ化ビットマップを纏めた2次元ハッシュ化インデックス123を記憶部120に格納する。
3次元インデックス生成部114は、対象ファイルのファイルID、符号化された単語コードおよび当該単語コードが示す単語の位置に基づいて、3次元ハッシュ化インデックス124を生成する。例えば、3次元インデックス生成部114は、符号化部112から出力された情報を受け取る。3次元インデックス生成部114は、受け取った情報に基づいて、単語コードおよび対象ファイルのファイルIDに対応するビットマップの、当該単語コードが示す単語の位置に対応するビットについて、底α、底βをそれぞれ用いてハッシュ化し、「1」を設定する。すなわち、3次元インデックス生成部114は、対象ファイルに対する、単語コードおよび当該単語コードが示す単語の位置を3次元ハッシュ化インデックス124に設定する。
なお、ハッシュ化ビットマップの生成方法は、2次元インデックス生成部113の説明と同様であるので、その説明を省略する。
[実施例に係るインデックス生成処理の処理手順]
次に、実施例に係るインデックス生成処理の処理手順について、図10を参照して説明する。図10は、実施例に係るインデックス生成処理のフローチャートの一例を示す図である。
図10に示すように、インデックス生成装置110は、前処理を実行する(ステップS11)。例えば、インデックス生成装置110は、各種記憶領域を記憶部120に確保する。
インデックス生成装置110は、符号化対象のファイルF1内の複数の対象ファイルのうち、1つの対象ファイルを読み出し、読出用の記憶領域に格納する(ステップS12)。インデックス生成装置110は、対象ファイルに対して、字句解析を行う(ステップS12A)。
インデックス生成装置110は、字句解析した結果の単語の文字列を先頭から読み出す(ステップS13)。インデックス生成装置110は、読み出した単語を符号化する(ステップS14)。なお、単語の符号化処理の説明は、後述する。そして、インデックス生成装置110は、単語の符号化処理から出力された単語コードを、対象ファイルに対応する符号化データ用の記憶領域に書き込む(ステップS15)。
続いて、インデックス生成装置110は、単語コードに対するビットマップの、対象ファイルが示すファイルIDに対するビットについて、底α、底βをそれぞれ用いてハッシュ化し、「1」を書き込む(ステップS16)。例えば、インデックス生成装置110は、底αのハッシュ化ビットマップについて、ビットマップの各ビットの位置を底αで割った余りの位置に、各ビットの値を設定する。インデックス生成装置110は、底βのハッシュ化ビットマップについて、ビットマップの各ビットの位置を底βで割った余りの位置に、各ビットの値を設定する。すなわち、インデックス生成装置110は、ビットマップの0ビット目からの各ビットを順番にハッシュ化ビットマップの0ビット目から設定し、(底−1)ビット目まで設定したら、再度折り返して0ビット目からOR演算した結果を設定する。すなわち、インデックス生成装置110は、対象ファイルに対する、単語コードが示す単語の存否を2次元ビットマップ型インデックス123に設定する。
続いて、インデックス生成装置110は、単語コード、ファイルIDに関するビットマップの、単語コードが示す単語の位置に対するビットについて、底α、底βをそれぞれ用いてハッシュ化し、「1」を書き込む(ステップS17)。すなわち、インデックス生成装置110は、対象ファイルに対する、単語コードおよび当該単語コードが示す単語の位置を3次元ビットマップ型インデックス124に設定する。
インデックス生成装置110は、対象ファイルの終点か否かを判定する(ステップS18)。対象ファイルの終点でないと判定した場合には(ステップS18;No)、インデックス生成装置110は、対象ファイルの次の単語を読み出すべく、ステップS13に移行する。
一方、対象ファイルの終点であると判定した場合には(ステップS18;Yes)、インデックス生成装置110は、符号化されていない対象ファイルがあるか否かを判定する(ステップS19)。符号化されていない対象ファイルがあると判定した場合には(ステップS19;Yes)、インデックス生成装置110は、次の対象ファイルを符号化すべく、ステップS12に移行する。
符号化されていない対象ファイルがないと判定した場合には(ステップS19;No)、インデックス生成装置110は、生成されたハッシュ化ビットマップを纏めた2次元ハッシュ化インデックス123を記憶部120に格納する。インデックス生成装置110は、生成されたハッシュ化ビットマップを纏めた3次元ハッシュ化インデックス124を記憶部120に格納する(ステップS20)。そして、インデックス生成装置110は、インデックス生成処理を終了する。
[符号化処理の処理手順]
次に、実施例に係る符号化処理の処理手順について、図11を参照して説明する。図11は、実施例に係る符号化処理のフローチャートの一例を示す図である。なお、インデックス生成装置110は、単語の文字列を受け取ったものとする。
図11に示すように、単語の文字列を受け取ったインデックス生成装置110は、静的辞書121に当該単語の文字列が登録済みであるか否かを判定する(ステップS31)。静的辞書121に単語の文字列が登録済みであると判定した場合には(ステップS31;Yes)、インデックス生成装置110は、静的辞書121に登録されている静的コード(単語コード)を出力する(ステップS32)。そして、インデックス生成装置110は、符号化処理を終了する。
一方、静的辞書121に単語の文字列が登録済みでないと判定した場合には(ステップS31;No)、インデックス生成装置110は、動的辞書122を参照する(ステップS33)。インデックス生成装置110は、動的辞書122に単語の文字列が登録済みであるか否かを判定する(ステップS34)。例えば、インデックス生成装置110は、単語の文字列が動的辞書122のバッファ部D1に格納されているか否かを判定する。
動的辞書122に単語の文字列が登録済みであると判定した場合には(ステップS34;Yes)、インデックス生成装置110は、ステップS36に移行する。
一方、動的辞書122に単語の文字列が登録済みでないと判定した場合には(ステップS34;No)、インデックス生成装置110は、当該単語の文字列を動的辞書122に登録する(ステップS35)。例えば、インデックス生成装置110は、単語の文字列を動的辞書122のバッファ部D1に格納するとともに、当該単語の文字列を格納した格納位置および格納したデータ長をアドレステーブルD2に格納する。そして、インデックス生成装置110は、ステップS36に移行する。
ステップS36において、インデックス生成装置110は、動的辞書122に登録されている単語コード(動的コード)を出力する(ステップS36)。例えば、インデックス生成装置110は、単語の文字列を、当該単語の文字列に対応付けられた、アドレステーブルD2の動的コードに符号化する。インデックス生成装置110は、符号化した動的コードを単語コードとして出力する。そして、インデックス生成装置110は、符号化処理を終了する。
[実施例に係る検索装置の構成]
次に、図12を参照して、実施例に係る検索処理を実行する検索装置200の構成について説明する。図12は、実施例に係る検索装置の構成を示す機能ブロック図である。図12に示すように、検索装置200は、制御部210と記憶部220とを有する。
制御部210は、図7に示した検索処理を実行する処理部である。制御部210は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部210は、例えば、ASICやFPGAなどの集積回路の電子回路に対応する。または、制御部210は、CPUやMPUなどの電子回路に対応する。また、制御部210は、検索キー受付部211、第1の復元部212、第2の復元部213、検索処理部214および検索結果出力部215を有する。
記憶部220は、例えばフラッシュメモリやFRAM(登録商標)などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部220は、2次元ハッシュ化インデックス221、3次元ハッシュ化インデックス222、復元ビットマップ223および絞込みビットマップ224を有する。なお、2次元ハッシュ化インデックス221の構成は、単語IDに対応するハッシュ化ビットマップ(図5参照)を纏めた構成と同様であるので、その説明を省略する。3次元ハッシュ化インデックス222の構成は、単語IDおよびファイルIDに対応するハッシュ化ビットマップ(図5参照)を纏めた構成と同様であるので、その説明を省略する。復元ビットマップ223の構成は、ビットマップの構成(図8参照)と同様であるので、その説明を省略する。また、絞込みビットマップ224の構成は、各単語とAND結果に対応するビットマップの構成(図8参照)と同様であるので、その説明を省略する。
検索キー受付部211は、検索キーを受け付ける。例えば、検索キー受付部211は、検索キーとして検索対象の単語を受け付ける。検索対象の単語は、単数であっても良いし、複数であっても良い。
第1の復元部212は、検索対象の単語が示す単語IDに対応するハッシュ化ビットマップを復元する。例えば、第1の復元部212は、2次元ハッシュ化インデックスHI1を参照し、検索キー受付部211によって受け付けられた単語の単語IDに対応する複数のハッシュ化ビットマップを抽出する。第1の復元部212は、抽出した複数のハッシュ化ビットマップをそれぞれビットマップに展開する(第1の復元処理)。そして、第1の復元部212は、第1の復元処理で展開されたそれぞれのビットマップの対応する位置のビットをAND演算する(第2の復元処理)。第1の復元部212は、AND結果のビットマップを復元結果として復元ビットマップ223に保持する。なお、検索対象の単語が複数ある場合には、第1の復元部212は、検索対象の単語ごとにハッシュ化ビットマップを復元し、復元結果であるビットマップを復元ビットマップ223に保持する。
また、第1の復元部212は、検索対象の単語が存在するファイルのファイルIDを第2の復元部213に出力する。例えば、第1の復元部212は、復元ビットマップ223に保持されたビットマップが複数ある場合には、複数のビットマップのAND演算を行い、AND結果を絞込みビットマップ224に保持する。第1の復元部212は、復元ビットマップ223に保持されたビットマップが単数である場合には、当該ビットマップを絞込みビットマップ224にコピーする。そして、第1の復元部212は、絞込みビットマップ224のビットが「1」を示すファイルIDを第2の復元部213に出力する。
第2の復元部213は、ファイルIDおよび検索対象の単語が示す単語IDに対応するハッシュ化ビットマップを復元する。例えば、第2の復元部213は、3次元ハッシュ化インデックスHI2を参照し、第1の復元部212によって出力されたファイルIDおよび検索対象の単語の単語IDに対応する複数のハッシュ化ビットマップを抽出する。第2の復元部213は、抽出した複数のハッシュ化ビットマップをそれぞれビットマップに展開する(第1の復元処理)。そして、第2の復元部213は、第1の復元処理で展開されたそれぞれのビットマップの対応する位置のビットをAND演算する(第2の復元処理)。第2の復元部213は、AND結果のビットマップを復元結果として復元ビットマップ223に保持する。
検索処理部214は、検索対象の単語が存在するファイルの単語の位置を検索する。例えば、検索処理部214は、第2の復元部213によって復元ビットマップ223に保持されたビットマップのビットが「1」を示すValue(位置)を抽出する。抽出されたValue(位置)が、検索対象の単語が存在するファイルの単語の位置である。
検索結果出力部215は、検索処理部214によって検索されたValue(位置)をファイルIDおよび単語IDが示す単語とともにValueリストに追加する。そして、検索結果出力部215は、Valueリストを検索結果として出力する。
[検索処理のフローチャート]
図13は、実施例に係る検索処理のフローチャートの一例を示す図である。
図13に示すように、検索装置200は、検索対象の単語を受け付けたか否かを判定する(ステップS41)。検索対象の単語を受け付けていないと判定した場合には(ステップS41;No)、検索装置200は、検索対象の単語を受け付けるまで、判定処理を繰り返す。
一方、検索対象の単語を受け付けたと判定した場合には(ステップS41;Yes)、検索装置200は、2次元ハッシュ化インデックス221および3次元ハッシュ化インデックス222を記憶部220から読み出す(ステップS42)。
検索装置200は、読み出した2次元ハッシュ化インデックス221を参照し、検索対象の単語が示す単語IDに対応するハッシュ化ビットマップを選択し、選択したハッシュ化ビットマップを復元する(ステップS43)。検索装置200は、未処理の単語があるか否かを判定する(ステップS43A)。未処理の単語があると判定した場合には(ステップS43A;Yes)、検索装置200は、検索対象の次の単語を処理すべく、ステップS43に移行する。
一方、未処理の単語がないと判定した場合には(ステップS43A;No)、検索装置200は、復元されたビットマップが複数ある場合には、復元されたビットマップをAND演算し、AND結果を絞込みビットマップ224に保持する。(ステップS43B)。そして、検索装置200は、絞込みビットマップ224のビットが「1」を示すファイルIDを取得する(ステップS44)。
検索装置200は、3次元ハッシュ化インデックス222を参照し、取得したファイルID毎に、単語IDおよびファイルIDに対応するハッシュ化ビットマップを選択し、選択したハッシュ化ビットマップを復元する(ステップS45)。そして、検索装置200は、単語IDおよびファイルID毎に、ビットが「1」を示すValue(位置)を取得する(ステップS46)。
検索装置200は、単語ID、ファイルIDおよびValue(位置)をValueリストに追加する(ステップS47)。そして、検索装置200は、Valueリストを出力し(ステップS48)、検索処理を終了する。
これにより、検索装置200は、単語を有するファイルの、当該単語の位置の特定を、2次元ハッシュ化インデックス221および3次元ハッシュ化インデックス222により可能となる。
[実施例の効果]
上記実施例によれば、インデックス生成装置100は、入力された複数のファイルそれぞれに対し、複数のキーそれぞれの存否、および、キーが存在する場合のキーが存在する位置についての情報を、複数のファイルそれぞれに対する字句解析の際に生成する。そして、インデックス生成装置100は、生成した情報に基づいて、複数のファイルそれぞれに対する、キーおよび位置のインデックス情報を生成する。かかる構成によれば、インデックス生成装置100は、入力されたファイルに対して字句解析して、キーおよびその位置を含むインデックス情報を生成することで、当該インデックス情報を圧縮形式にて1パスで生成できる。すなわち、インデックス生成装置100は、ファイルとキーとその位置とに対応付けられたインデックス情報を容易に生成できる。
[実施例に関連する他の態様]
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
また、実施例に係るインデックス生成装置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は、ハッシュ化ビットマップのデータが衝突する場合であっても、ハッシュ化前のビットマップの偶数番目のデータと奇数番目のデータとを分割してそれぞれハッシュ化することで、データの衝突を回避することが可能となる。
また、検索装置200は、検索対象として単語を受け付けると、当該単語が存在するファイルの当該単語の位置を検索する場合を説明した。すなわち、検索装置200は、2次元ハッシュ化インデックス221を用いて、検索対象として受け付けられた単語が示す単語IDに対応するハッシュ化ビットマップを復元し、ビットが「1」を示すファイルIDを取得する。検索装置200は、3次元ハッシュ化インデックス222を用いて、単語IDおよび取得したファイルIDに対応するハッシュ化ビットマップを復元し、ビットが「1」を示すValue(位置)を特定することで、検索対象の単語の位置を検索する。しかしながら、検索装置200は、これに限定されず、検索対象として単語および当該単語の位置を受け付けると、当該単語および当該単語の位置に対応するファイルを検索しても良い。すなわち、検索装置200は、3次元ハッシュ化インデックス222を用いて、検索対象として受け付けられた単語が示す単語IDおよび当該単語の位置に対応するハッシュ化ビットマップを復元し、ビットが「1」を示すファイルIDを特定する。これにより、検索装置200は、単語および当該単語の位置の双方を有する検索条件に対するファイルの特定を3次元ハッシュ化インデックス222のみにより可能とすることができる。
また、実施例に係るインデックス生成装置100は、隣接した複数のハッシュ値(底)を基に、2次元(単語の軸とファイルの軸)および3次元(単語の軸、ファイルの軸と位置の軸)にハッシュ化を適用したハッシュ化インデックスを生成すると説明した。しかしながら、インデックス生成装置100は、ファイルの軸に代えてブロックの軸としても良い。すなわち、単語IDの存否情報は、ブロック単位であるとしても良い。
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[ハードウェア構成]
下記に、上述の実施形態に用いられるハードウェア及びソフトウェアについて説明する。図14は、コンピュータ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がプログラムファイル(後述のアプリケーションプログラム24、ミドルウェア23およびOS22など)やデータファイル(例えば、静的辞書121、動的辞書122、2次元ビットマップ型インデックス123、3次元ビットマップ型インデックス124、2次元ハッシュ化インデックス125、3次元ハッシュ化インデックス126など)を記憶し、RAM302がプロセッサ301のワークエリアとして用いられることによって実現される。プロセッサ301が読み出すプログラムについては、図15を用いて説明する。
図15は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ1において、図15に示すハードウェア群HW21(301〜312)の制御を行なうOS(オペレーティング・システム)22が動作する。OS22に従った手順でプロセッサ301が動作して、ハードウェア群HW21の制御・管理が行なわれることにより、アプリケーションプログラムAP24やミドルウェアMW23に従った処理がハードウェア群21で実行される。さらに、コンピュータ1において、ミドルウェアMW23またはアプリケーションプログラムAP24が、RAM302に読み出されてプロセッサ301により実行される。
プロセッサ301が、インデックス生成機能が呼び出された場合に、ミドルウェア23またはアプリケーションプログラム24の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS22に基づいてハードウェア群21を制御して)制御部110の機能が実現される。プロセッサ301が、検索機能が呼び出された場合に、ミドルウェア23またはアプリケーションプログラム24の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS22に基づいてハードウェア群21を制御して)制御部210の機能が実現される。符号化機能および検索機能は、アプリケーションプログラム24自体に含まれても良いし、アプリケーションプログラム24に従って呼び出されることで実行されるミドルウェア23の一部であっても良い。
図16は、実施形態のシステムにおける装置の構成例を示す図である。図16のシステムは、コンピュータ1a、コンピュータ1b、基地局2およびネットワーク3を含む。コンピュータ1aは、無線または有線の少なくとも一方により、コンピュータ1bと接続されたネットワーク3に接続している。
インデックス生成装置100と検索装置200とは、図16に示すコンピュータ1aとコンピュータ1bとのいずれに含まれても良い。コンピュータ1bがインデックス生成装置100の機能を含み、コンピュータ1aが検索装置200の機能を含んでも良いし、コンピュータ1aがインデックス生成装置100の機能を含み、コンピュータ1bが検索装置200の機能を含んでも良い。また、コンピュータ1aとコンピュータ1bとの双方が、インデックス生成装置100の機能および検索装置200の機能を備えても良い。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
入力された複数のファイルそれぞれに対し、複数のキーそれぞれの存否、および、前記キーが存在する場合の前記キーが存在する位置についての情報を、前記複数のファイルそれぞれに対する字句解析の際に生成し、
前記情報に基づいて、前記複数のファイルそれぞれに対する、前記キーおよび前記位置のインデックス情報を生成する
処理を実行させることを特徴とするインデックス生成プログラム。
(付記2)前記インデックス情報を生成する処理は、前記情報より、複数の前記位置の軸に対し複数のハッシュ関数を適用した複数のハッシュ化軸を用いたハッシュ化インデック情報を生成する
処理を実行させることを特徴とする付記1に記載のインデックス生成プログラム。
(付記3)入力された複数のファイルそれぞれに対し、複数のキーそれぞれの存否、および、前記キーが存在する場合の前記キーが存在する位置についての情報を、前記複数のファイルそれぞれに対する字句解析の際に生成する第1の生成部と、
前記情報に基づいて、前記複数のファイルそれぞれに対する、前記キーおよび前記位置のインデックス情報を生成する第2の生成部と、
を有することを特徴とするインデックス生成装置。
(付記4)コンピュータが、
入力された複数のファイルそれぞれに対し、複数のキーそれぞれの存否、および、前記キーが存在する場合の前記キーが存在する位置についての情報を、前記複数のファイルそれぞれに対する字句解析の際に生成し、
前記情報に基づいて、前記複数のファイルそれぞれに対する、前記キーおよび前記位置のインデックス情報を生成する
処理を実行することを特徴とするインデックス生成方法。
(付記5)コンピュータに、
ファイルに対する、キーおよび位置による探索条件を含む探索要求を受け付け、
前記複数のファイルそれぞれについての、複数のキーおよび位置に対する存否に関するインデックス情報を参照し、前記探索要求に対応するファイルを前記複数のファイルより特定する
処理を実行させることを特徴とする検索プログラム。
(付記6)ファイルに対する、キーおよび位置による探索条件を含む探索要求を受け付ける受付部と、
前記複数のファイルそれぞれについての、複数のキーおよび位置に対する存否に関するインデックス情報を参照し、前記探索要求に対応するファイルを前記複数のファイルより特定する特定部と、
を有することを特徴とする検索装置。
(付記7)コンピュータが、
ファイルに対する、キーおよび位置による探索条件を含む探索要求を受け付け、
前記複数のファイルそれぞれについての、複数のキーおよび位置に対する存否に関するインデックス情報を参照し、前記探索要求に対応するファイルを前記複数のファイルより特定する
処理を実行することを特徴とする検索方法。
(付記8)コンピュータに、
キーによる探索条件を含む探索要求を受け付け、
複数のファイルそれぞれについての、複数のキーに対する存否を示す第1のインデックス情報を参照し、前記探索要求に含まれるキーが存在するファイルを特定し、
前記複数のファイルそれぞれについての、前記複数のキーおよび位置に対する存否を示す第2のインデックス情報を参照し、特定されたファイルについての、前記探索要求に含まれるキーが存在する位置を特定する
処理を実行させることを特徴とする検索プログラム。
(付記9)キーによる探索条件を含む探索要求を受け付ける受付部と、
複数のファイルそれぞれについての、複数のキーに対する存否を示す第1のインデックス情報を参照し、前記探索要求に含まれるキーが存在するファイルを特定する第1の特定部と、
前記複数のファイルそれぞれについての、前記複数のキーおよび位置に対する存否を示す第2のインデックス情報を参照し、特定されたファイルについての、前記探索要求に含まれるキーが存在する位置を特定する第2の特定部と、
を有することを特徴とする検索装置。
(付記10)コンピュータが、
キーによる探索条件を含む探索要求を受け付け、
複数のファイルそれぞれについての、複数のキーに対する存否を示す第1のインデックス情報を参照し、前記探索要求に含まれるキーが存在するファイルを特定し、
前記複数のファイルそれぞれについての、前記複数のキーおよび位置に対する存否を示す第2のインデックス情報を参照し、特定されたファイルについての、前記探索要求に含まれるキーが存在する位置を特定する
処理を実行することを特徴とする検索方法。
100 インデックス生成装置
110 制御部
111 ファイルリード部
112 符号化部
113 2次元インデックス生成部
114 3次元インデックス生成部
120 記憶部
121 静的辞書
122 動的辞書
123 2次元ハッシュ化インデックス
124 3次元ハッシュ化インデックス
200 検索装置
210 制御部
211 検索キー受付部
212 第1の復元部
213 第2の復元部
214 検索処理部
215 検索結果出力部
220 記憶部
221 2次元ハッシュ化インデックス
222 3次元ハッシュ化インデックス
223 復元ビットマップ
224 絞込みビットマップ

Claims (7)

  1. コンピュータに、
    入力された複数のファイルそれぞれに対し、複数のキーそれぞれの存否、および、前記キーが存在する場合の前記キーが存在する位置についての情報を、前記複数のファイルそれぞれに対する字句解析の際に生成し、
    前記情報に基づいて、前記複数のファイルそれぞれに対する、前記キーおよび前記位置のインデックス情報を生成する
    処理を実行させることを特徴とするインデックス生成プログラム。
  2. 前記情報より、複数の前記位置の軸に対し複数のハッシュ関数を適用した複数のハッシュ化軸を用いたハッシュ化インデック情報を生成する
    処理を実行させることを特徴とする請求項1に記載のインデックス生成プログラム。
  3. 入力された複数のファイルそれぞれに対し、複数のキーそれぞれの存否、および、前記キーが存在する場合の前記キーが存在する位置についての情報を、前記複数のファイルそれぞれに対する字句解析の際に生成する第1の生成部と、
    前記情報に基づいて、前記複数のファイルそれぞれに対する、前記キーおよび前記位置のインデックス情報を生成する第2の生成部と、
    を有することを特徴とするインデックス生成装置。
  4. コンピュータが、
    入力された複数のファイルそれぞれに対し、複数のキーそれぞれの存否、および、前記キーが存在する場合の前記キーが存在する位置についての情報を、前記複数のファイルそれぞれに対する字句解析の際に生成し、
    前記情報に基づいて、前記複数のファイルそれぞれに対する、前記キーおよび前記位置のインデックス情報を生成する
    処理を実行することを特徴とするインデックス生成方法。
  5. コンピュータに、
    ファイルに対する、キーおよび位置による探索条件を含む探索要求を受け付け、
    前記複数のファイルそれぞれについての、複数のキーおよび位置に対する存否に関するインデックス情報を参照し、前記探索要求に対応するファイルを前記複数のファイルより特定する
    処理を実行させることを特徴とする検索プログラム。
  6. ファイルに対する、キーおよび位置による探索条件を含む探索要求を受け付ける受付部と、
    前記複数のファイルそれぞれについての、複数のキーおよび位置に対する存否に関するインデックス情報を参照し、前記探索要求に対応するファイルを前記複数のファイルより特定する特定部と、
    を有することを特徴とする検索装置。
  7. コンピュータが、
    ファイルに対する、キーおよび位置による探索条件を含む探索要求を受け付け、
    前記複数のファイルそれぞれについての、複数のキーおよび位置に対する存否に関するインデックス情報を参照し、前記探索要求に対応するファイルを前記複数のファイルより特定する
    処理を実行することを特徴とする検索方法。
JP2016083243A 2016-04-18 2016-04-18 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 Active JP6720664B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2016083243A JP6720664B2 (ja) 2016-04-18 2016-04-18 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
CN201710249150.XA CN107305586B (zh) 2016-04-18 2017-04-17 索引生成方法、索引生成装置及搜索方法
US15/488,685 US11080234B2 (en) 2016-04-18 2017-04-17 Computer readable recording medium for index generation
EP20196907.8A EP3770770A1 (en) 2016-04-18 2017-04-18 Index generation program, index generation device and index generation method, search program
EP17166792.6A EP3236369A1 (en) 2016-04-18 2017-04-18 Index generation program, index generation device and index generation method, search program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016083243A JP6720664B2 (ja) 2016-04-18 2016-04-18 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法

Publications (2)

Publication Number Publication Date
JP2017194762A true JP2017194762A (ja) 2017-10-26
JP6720664B2 JP6720664B2 (ja) 2020-07-08

Family

ID=58549054

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016083243A Active JP6720664B2 (ja) 2016-04-18 2016-04-18 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法

Country Status (4)

Country Link
US (1) US11080234B2 (ja)
EP (2) EP3236369A1 (ja)
JP (1) JP6720664B2 (ja)
CN (1) CN107305586B (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019083477A (ja) * 2017-10-31 2019-05-30 富士通株式会社 データ生成プログラム、データ生成方法および情報処理装置
JP2019185491A (ja) * 2018-04-12 2019-10-24 富士通株式会社 特定プログラム、生成プログラム、特定方法、生成方法および情報処理装置
JP2019185145A (ja) * 2018-04-02 2019-10-24 富士通株式会社 データ生成プログラム、データ生成方法および情報処理装置
US11487817B2 (en) 2017-03-28 2022-11-01 Fujitsu Limited Index generation method, data retrieval method, apparatus of index generation
WO2022249478A1 (ja) 2021-05-28 2022-12-01 富士通株式会社 情報処理プログラム、情報処理方法および情報処理装置
US11797581B2 (en) 2018-06-12 2023-10-24 Fujitsu Limited Text processing method and text processing apparatus for generating statistical model

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10652248B2 (en) * 2016-07-28 2020-05-12 Molecula Corp. Systems and methods of managing data rights and selective data sharing
JP6805720B2 (ja) 2016-10-21 2020-12-23 富士通株式会社 データ検索プログラム、データ検索装置およびデータ検索方法
JP7059516B2 (ja) * 2017-03-29 2022-04-26 富士通株式会社 符号化プログラム、符号化装置および符号化方法
CN108595508B (zh) * 2018-03-22 2020-11-13 佛山市顺德区中山大学研究院 一种基于后缀数组的自适应索引构建方法及系统
CN113568912B (zh) * 2021-07-27 2023-05-02 重庆紫光华山智安科技有限公司 一种设备编码的管理方法、系统、介质及终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08180066A (ja) * 1994-12-26 1996-07-12 Toshiba Corp インデックス作成方法、文書検索方法及び文書検索装置
JPH09114854A (ja) * 1995-10-20 1997-05-02 D I S:Kk 文書検索システム
JPH10261969A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データ圧縮方法および装置
WO2012108006A1 (ja) * 2011-02-08 2012-08-16 富士通株式会社 検索プログラム、検索装置、および検索方法
WO2013069149A1 (ja) * 2011-11-11 2013-05-16 株式会社日立製作所 データ検索装置、データの検索方法及びプログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63189934A (ja) 1987-02-02 1988-08-05 Fujitsu Ltd デ−タベ−ス副次エントリ処理方式
JP2753228B2 (ja) 1987-04-30 1998-05-18 株式会社日立製作所 データ処理装置
US7062567B2 (en) * 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US8831995B2 (en) * 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
KR100713534B1 (ko) * 2005-09-08 2007-04-30 삼성전자주식회사 이동 통신 단말의 사용자 데이터 검색 방법
US20080270363A1 (en) * 2007-01-26 2008-10-30 Herbert Dennis Hunt Cluster processing of a core information matrix
US20110055585A1 (en) * 2008-07-25 2011-03-03 Kok-Wah Lee Methods and Systems to Create Big Memorizable Secrets and Their Applications in Information Engineering
CN102024047B (zh) 2010-12-14 2013-05-29 青岛普加智能信息有限公司 数据检索方法及装置
CN102567421B (zh) 2010-12-27 2014-04-02 北大方正集团有限公司 文档检索方法和装置
AU2011377004B2 (en) 2011-09-14 2015-11-12 Fujitsu Limited Extraction method, extraction program, extraction device, and extraction system
WO2013175537A1 (ja) * 2012-05-24 2013-11-28 富士通株式会社 検索プログラム、検索方法、検索装置、記憶プログラム、記憶方法及び記憶装置
CN104283930B (zh) * 2013-07-11 2017-09-22 一零四资讯科技股份有限公司 安全索引的关键字搜索系统及建立该系统的方法
JP6476647B2 (ja) 2014-08-20 2019-03-06 富士通株式会社 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法
JP6543922B2 (ja) * 2014-12-10 2019-07-17 富士通株式会社 インデックス生成プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08180066A (ja) * 1994-12-26 1996-07-12 Toshiba Corp インデックス作成方法、文書検索方法及び文書検索装置
JPH09114854A (ja) * 1995-10-20 1997-05-02 D I S:Kk 文書検索システム
JPH10261969A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データ圧縮方法および装置
WO2012108006A1 (ja) * 2011-02-08 2012-08-16 富士通株式会社 検索プログラム、検索装置、および検索方法
WO2013069149A1 (ja) * 2011-11-11 2013-05-16 株式会社日立製作所 データ検索装置、データの検索方法及びプログラム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11487817B2 (en) 2017-03-28 2022-11-01 Fujitsu Limited Index generation method, data retrieval method, apparatus of index generation
JP2019083477A (ja) * 2017-10-31 2019-05-30 富士通株式会社 データ生成プログラム、データ生成方法および情報処理装置
JP2019185145A (ja) * 2018-04-02 2019-10-24 富士通株式会社 データ生成プログラム、データ生成方法および情報処理装置
JP7006462B2 (ja) 2018-04-02 2022-01-24 富士通株式会社 データ生成プログラム、データ生成方法および情報処理装置
JP2019185491A (ja) * 2018-04-12 2019-10-24 富士通株式会社 特定プログラム、生成プログラム、特定方法、生成方法および情報処理装置
US11120222B2 (en) 2018-04-12 2021-09-14 Fujitsu Limited Non-transitory computer readable recording medium, identification method, generation method, and information processing device
JP2022095952A (ja) * 2018-04-12 2022-06-28 富士通株式会社 生成プログラム、生成方法および情報処理装置
JP7135399B2 (ja) 2018-04-12 2022-09-13 富士通株式会社 特定プログラム、特定方法および情報処理装置
JP7351372B2 (ja) 2018-04-12 2023-09-27 富士通株式会社 生成プログラム、生成方法および情報処理装置
US11797581B2 (en) 2018-06-12 2023-10-24 Fujitsu Limited Text processing method and text processing apparatus for generating statistical model
WO2022249478A1 (ja) 2021-05-28 2022-12-01 富士通株式会社 情報処理プログラム、情報処理方法および情報処理装置

Also Published As

Publication number Publication date
CN107305586B (zh) 2021-10-15
US20170300507A1 (en) 2017-10-19
CN107305586A (zh) 2017-10-31
EP3236369A1 (en) 2017-10-25
EP3770770A1 (en) 2021-01-27
US11080234B2 (en) 2021-08-03
JP6720664B2 (ja) 2020-07-08

Similar Documents

Publication Publication Date Title
JP6720664B2 (ja) インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
JP6679874B2 (ja) 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法
US9793920B1 (en) Computer-readable recording medium, encoding device, and encoding method
EP3236367B1 (en) Encoding program, encoding method, encoding device, retrieval program, retrieval method, and retrieval device
JP6641857B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
US11182341B2 (en) Recording medium recording indexed data generation program, indexed data generation method and retrieval method
US9520896B1 (en) Non-transitory computer-readable recording medium, encoding method, encoding device, decoding method, and decoding device
JP6551131B2 (ja) インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
JP6428615B2 (ja) 多次元範囲検索装置及び多次元範囲検索方法
JP6032292B2 (ja) 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置
JP2018061166A (ja) 符号化プログラム、符号化装置および符号化方法
JP6805720B2 (ja) データ検索プログラム、データ検索装置およびデータ検索方法
JP6728926B2 (ja) 符号化処理プログラム、符号化処理装置、符号化処理方法、復号化処理プログラム、復号化処理装置および復号化処理方法
US11055328B2 (en) Non-transitory computer readable medium, encode device, and encode method
US20180276260A1 (en) Search apparatus and search method
JP6931442B2 (ja) 符号化プログラム、インデックス生成プログラム、検索プログラム、符号化装置、インデックス生成装置、検索装置、符号化方法、インデックス生成方法および検索方法
WO2014030180A1 (ja) 格納プログラム、格納方法、格納装置、伸張プログラム、伸張方法及び伸張装置
JP2017195628A (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法及び復号化装置
JP2016134754A (ja) 変換処理プログラム、情報処理装置および変換処理方法
JP2015018497A (ja) 多次元範囲検索装置及び多次元範囲検索方法
JP2016171589A (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法及び復号化装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200423

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: 20200519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200601

R150 Certificate of patent or registration of utility model

Ref document number: 6720664

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150