JP2010231675A - コード列検索装置、検索方法及びプログラム - Google Patents
コード列検索装置、検索方法及びプログラム Download PDFInfo
- Publication number
- JP2010231675A JP2010231675A JP2009080726A JP2009080726A JP2010231675A JP 2010231675 A JP2010231675 A JP 2010231675A JP 2009080726 A JP2009080726 A JP 2009080726A JP 2009080726 A JP2009080726 A JP 2009080726A JP 2010231675 A JP2010231675 A JP 2010231675A
- Authority
- JP
- Japan
- Prior art keywords
- code
- search
- string
- code string
- range
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 138
- 238000013523 data management Methods 0.000 claims description 66
- 238000007726 management method Methods 0.000 claims description 24
- 238000013500 data storage Methods 0.000 claims description 21
- 238000012795 verification Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 description 106
- 238000010586 diagram Methods 0.000 description 24
- 230000002457 bidirectional effect Effects 0.000 description 20
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 1
- 230000002250 progressing effect Effects 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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【解決手段】検索対象のコード列を1コードずつ重複させて複数ブロックに分割し、分割されたコード列ブロックに対してコード毎のコードIDの範囲を格納したコード別ID範囲表と各コードIDの次に位置する次コードIDを格納したID関係表を作成し、コード別ID範囲表から検索コード列を構成するコードのコードIDの範囲を読み出し、検索コード列の先頭コードのコードID範囲に含まれるコードIDに対応して格納された次コードIDをID関係表から読み出し、該次コードに対応して格納された次コードIDを順次ID関係表から読み出すとともに、ID関係表から読み出した次コードIDがコード別ID範囲読出表から読み出したコードIDの範囲に含まれるか照合する。
【選択図】図3A
Description
図1は、上述の接尾辞配列に関する従来の検索方法の例を説明するものである。図1の(a)に例示するのは、検索対象の文字列である。図に示すように、文字列10は、アルファベットの文字A、B、C、Eと区切り文字$で構成されている。文字Aは文字列10の文字位置1、4、7に位置している。文字Bは文字列10の文字位置2、5に位置している。文字Cは文字列10の文字位置6、8に位置している。文字Eは文字列10の文字位置3に位置している。区切り文字$は、文字列10の末尾の位置である文字位置9に位置している。
文字列10は、図1の(b)に示すようにその部分文字列として9の接尾辞を持つと考えることができる。各接尾辞の先頭文字の文字位置順に接尾辞を並べた文字位置順の接尾辞20を辞書順にソートすることにより、辞書順の接尾辞20aが得られる。このとき、辞書順に並べ替えた接尾辞の先頭文字の文字位置を配列に格納することにより、接尾辞配列30が得られる。この接尾辞配列により、検索文字列のパターンと一致する検索対象文字列中の部分文字列の先頭の文字位置を求めることができる。
そこで本発明の解決しようとする課題は、文字列に限らず、任意のコード列の検索を行うことができる索引データの作成時間を従来のものよりも短縮することである。そして、本発明の目的は、任意のコード列の検索を行うことができ、従来よりも短時間で作成することのできる索引のデータ構造を求め、それを用いたコード列検索手法を提供することである。
そして本発明によれば、各コード列ブロックに対応してコード毎にそのコードIDの範囲を格納したコード別ID範囲表と各コードIDの次に位置するコードIDである次コードIDを格納したID関係表を作成し、コード別ID範囲表とID関係表を用いてコード列検索を実施する。
図2Aは、本発明の一実施の形態における索引用のデータ構造を作成するための機能ブロックを説明する図である。索引データ作成管理手段104は、索引データ作成手段105による検索対象コード列を分割したブロック(コード列ブロック)毎の索引データの作成を管理し、索引データ管理表を作成する。索引データ作成手段105は、検索対象コード列読出手段101、コード別ID範囲表生成手段102及びID関係表生成手段103を含む。
検索対象コード列が検索対象コード列読出手段101で読み出され、コード別ID範囲表生成手段102とID関係表生成手段103に渡される。コード別ID範囲表生成手段102は、コード毎にそのコードIDの範囲を格納したコード別ID範囲表を作成し、ID関係表生成手段103は、各コードIDの次に位置するコードIDである次コードIDを格納したID関係表を生成する。
コードID照合手段114は、ID関係読出手段113から渡された次コードIDがコード別ID範囲読出手段から渡されたコードIDの範囲に含まれるか照合し、検索結果を出力する。
本発明の検索装置による検索処理及び索引生成処理は中央処理装置302及びキャッシュメモリ303を少なくとも備えたデータ処理装置301によりデータ格納装置308を用いて実施される。索引データ管理表321の格納領域と、コード列ブロックに対応するコード別ID範囲表309とID関係表310を格納する索引データの格納領域324を含むデータ格納装置308は、主記憶装置305または外部記憶装置306で実現することができ、あるいは通信装置307を介して接続された遠方に配置された装置を用いることも可能である。
また、特に図示されてはいないが、処理の途中で得られた各種の値を後の処理で用いるためにそれぞれの処理に応じた一時記憶領域が用いられることは当然である。以下の説明では、一時記憶領域に格納されたあるいは設定された値を一時記憶領域の名前で呼ぶことがある。
図3Aは、本発明の一実施の形態における索引データの構造を説明する図である。図3Aの(a)に示すのは、索引データを作成する対象となる検索対象のコード列の例である。例示された検索対象コード列10aは、コードA、B、E、A、B、C、A、・・・、C、Bの英文字の文字コードから構成されている。それぞれの文字コードの下に記載されたP1〜P8、・・・、Pn−1、Pnは、検索対象コード列10aにおけるコードの位置を表している。コード位置ポインタ11は、検索対象コード列10aにおけるコードの位置を示すポインタであり、図の例ではコード位置P1を指している。
図に示す例では、検索対象コード列10aは4つのコード毎に、前方のコード列ブロックの末尾位置のコードと後方のコード列ブロックの先頭位置のコードが重複するように分割されている。したがって、先頭のコード列ブロック15aは、コード列ポインタ11の指すコード位置P1に位置するコードA、コード位置P2に位置するコードB、コード位置P3に位置するコードE、コード位置P4に位置するコードAで構成される。矢印12で示すように、2番目のコード列ブロック15bの先頭位置は、先頭のコード列ブロック15aの末尾位置と等しいP4であり、コードAは先頭のコード列ブロック15aと2番目のコード列ブロック15bの双方に含まれる。2番目のコード列ブロック15bは、図の太線の枠内に示すように、矢印12で示す先頭位置であるコード位置P4に位置するコードA、コード位置P5に位置するコードB、コード位置P6に位置するコードC、矢印13で示す末尾位置であるコード位置P7に位置するコードAで構成される。矢印14で示すコード位置Pnは、終端位置と定義する。最後のコード列ブロックだけは、2つのコードで構成されている。
個々のコード列ブロックに対して、索引データとして、コード別ID範囲表とID関係表が生成される。
コード別ID範囲表309のエントリは、索引データを作成する対象である検索対象コード列に出現する異なるコードの種別毎に作成される。コード別ID範囲表309の左側に表示しているように、図に示す例では、アルファベットのうち、コードA〜Eからなるコード列である検索対象コード列が索引データを作成する対象であり、各コードに対応してエントリが作成されている。コード種別ポインタ311は、コード別ID範囲表309のエントリを指すポインタである。図の先頭のコード列ブロックに対応するコード別ID範囲表309aの例では、コード種別ポインタ311aがコードAに対応するエントリを指している。同様に、2番目のコード列ブロックに対応するコード別ID範囲表309bの例では、コード種別ポインタ311bがコードAに対応するエントリを指している。また、最後のコード列ブロックに対応するコード別ID範囲表309dの例では、コード種別ポインタ311dがコードAに対応するエントリを指している。
なお、各コードはビット列で構成されることから、そのビット列のビット値により表現される値を持つ。したがって、コード別ID範囲表309の各コードに対応するエントリの位置は各コードの値と対応付けることができることは明らかである。つまり、コード種別ポインタ311のとる値をコードそのものとすることもできる。そこで、以下の説明においては、各コードに対応するエントリを、各コードの指すエントリと表記することがある。
設定表示は、対応するコード列ブロックにそのコードが出現するかを1あるいは0で示すものである。コード別ID範囲表309aの例では、先頭のコード列ブロックにはコードCとコードDが出現しないので、コードCとコードDのエントリは0であり、他のエントリは1である。コード別ID範囲表309bの例では、2番目のコード列ブロックにはコードDとコードEが出現しないので、コードDとコードEのエントリは0であり、他のエントリは1である。コード別ID範囲表309Dの例では、最後のコード列ブロックにはコードBとコードCしか出現しないので、コードBとコードCのエントリは1であり、他のエントリは0である。
出現回数は、対応するコード列ブロックにそのコードが出現する回数である。コード別ID範囲表309aの例では、コードAからコードEに対して、2、1、0、0、1が格納されている。コード別ID範囲表309bの例では、コードAからコードEに対して、2、1、1、0、0が格納されている。コード別ID範囲表309dの例では、コードAからコードEに対して、0、1、1、0、0が格納されている。
コード別ID範囲表309aの例では、コードAについては出現回数が2であるのでコードIDの範囲はID1からID2であり、次のコードBについては出現回数が1であるので先頭コードと末尾コードは共にID3である。コードC及びコードDについては出現回数が0であるから、先頭コードIDと末尾コードIDは共に未設定である。コードEについては出現回数が1であるので先頭コードと末尾コードは共にID4である。
以下同様に、コード別ID範囲表309bの例では、コードAの先頭コードはID1、末尾コードはID2であり、コードBの先頭コードと末尾コードは共にID3、コードCの先頭コードと末尾コードは共にID4である。
また、コード別ID範囲表309dの例では、コードBの先頭コードと末尾コードは共にID1、コードCの先頭コードと末尾コードは共にID2である。
図の点線の矢印313a(A)で示すように、ID関係表310aの1〜2番目のエントリはコードAに対応するものである。同様に、点線の矢印313a(B)で示すように、3番目のエントリはコードBに、点線の矢印313a(E)で示すように、4番目のエントリはコードEに対応する。
各コードIDのエントリの次コードIDは、コード列ブロックにおけるそのコードIDのコードの次に位置するコードのコードIDである。なお、コード列ブロックの末尾位置のコードに対しては、先頭位置のコードのコードIDが格納される。したがって、ID関係表310aでは、次コードIDとして、ID1に対してID3、ID2に対してID1、ID3に対してID4、ID4に対してID2が格納されている。
図の点線の矢印313b(A)で示すように、ID関係表310bの1〜2番目のエントリはコードAに対応するものである。同様に、点線の矢印313b(B)で示すように、3番目のエントリはコードBに、点線の矢印313b(C)で示すように、4番目のエントリはコードCに対応する。
また、次コードIDとして、ID1に対してID3、ID2に対してID1、ID3に対してID4、ID4に対してID2が格納されている。
図の点線の矢印313d(B)で示すように、ID関係表310dの1番目のエントリはコードBに対応するものである。同様に、点線の矢印313d(C)で示すように、2番目のエントリはコードCに対応する。
また、次コードIDとして、ID1に対してID2、ID2に対してID1が格納されている。
索引データ管理表321の設定表示には、エントリ1からエントリmまで1が設定され、それ以外のエントリの設定表示は0である。エントリmは最後のコード列ブロックに対応するものである。また、索引データ管理表321の先頭コードIDとして、エントリ1にはID1が、エントリ2にはID1が、エントリmにはID2が設定されている。
索引データポインタは、点線の矢印344a、344b、344c、344dが示すように、それぞれ対応するコード列ブロックの索引データの格納領域324a、324b、324c、324dを指している。
検索対象コード列は、図3Aに例示した検索対象コード列10aとし、図3Aに示すようにコード列ブロックに分割されているものとする。また、検索コード列は図3Bに示す検索コード列40aとして、コード列検索の概念を説明する。検索対象コード列10aのコード列ブロックに対応して、コード別ID範囲表309とID関係表310が生成されており、また索引データ管理表321が生成されているものとする。
検索を開始する前に、矢印348aで示す索引データ管理表の先頭のエントリ321(1)が読み出され、点線の矢印344aが示すように索引データポインタ342aにより索引データの格納領域324a内に格納されたコード別ID範囲表309aとID関係表310aが取得される。さらに、点線の矢印345aで示すように、先頭コードID341aに格納されたID1が読み出されて、一時記憶領域である先頭コードID346aに設定されている。
そして点線の矢印334aで示すように、エントリ309a(E)からID範囲336aに含まれるコードID、図の例ではコードID4が読み出され、読み出されたコードID4に対応するエントリ310a(4)がID関係表310aから読み出される。
そして、双方向の点線の矢印347aで示すように、コードID4に対応するエントリ310a(4)の次コードIDであるID2と先頭コードID346aに設定されているID1が比較され、次コードIDは先頭コードID以外であると判定される。
すると、点線の矢印348bで示すように索引データ管理表の2番目のエントリ321(2)が読み出され、点線の矢印344bが示すように索引データポインタ342bにより索引データの格納領域324bがアクセスされ、コード別ID範囲表309bとID関係表310bが取得される。
また、索引データ管理表の2番目のエントリ321(2)の先頭コードID341bに格納されたID1が点線の矢印345bで示すように一時記憶領域である先頭コードID346bに設定される。そして、点線の矢印334cで示すように、先頭コードID346bに設定されたID1に対応するエントリ310b(1)がID関係表310bから読み出される。
そこで、次に点線の矢印331dで示すように、4番目のコード332dであるコードCが読み出される。また、点線の矢印333dで示すように、3番目のコードBの場合と同じコード別ID範囲表309bのコードCに対応するエントリ309b(C)が読み出される。そして、双方向の点線の矢印335dで示すように、ID関係表310bのコードID3に対応するエントリ310b(3)の次コードID337dであるID4が、点線の矢印333dで示すコードCに対応するエントリ309b(C)のコードIDの範囲336d(ID4〜ID4)に含まれるかを判定する。図の例では、この判定はイエスになることから、検索対象コード列10aは検索コード列EABCでヒットすることがわかる。
この判定に続いて、点線の矢印334eで示すように、次コードID337dであるID4に対応するエントリ310b(4)の次コードID337eであるID2が読み出される。そして、双方向の点線の矢印347eに示すように、この読み出されたID2と、先に先頭コードID346bに設定されたID1の比較がおこなわれ、次コードIDと先頭コードIDが等しくないことが判定される。
そして、ID関係表310aから読み出されたコードID2に対応するエントリ310a(2)のコード位置338bがP4であること、ID関係表310bから読み出されたコードID3に対応するエントリ310b(3)のコード位置338dはP5であること、コードID4に対応するエントリ310b(4)のコード位置338eはP6であることから、上述のヒット位置はコード位置P3、P4、P5、P6であることが分かる。
以上のようにして、本発明の一実施の形態によるコード列検索が実施される。
図4A及び図4Bは、本発明の一実施形態における索引データを作成する処理のフローを説明する図である。図4A及び図4Bに示す索引データの作成処理フローは、初期処理のものと、各コード列ブロックに対応する索引データ(以下、各コード列ブロックに対応するブロック索引データ、あるいは単にブロック索引データということがある。)の作成処理を順次実行するフローから構成される。
図4Aに示すように、ステップS401において、検索対象コード列を設定する。検索対象コード列の設定は、データ格納装置に格納された検索対象となるコード列の集合から、1つのコード列を図2Aに例示する検索対象コード列読出手段111で読み出して、図示しない検索対象コード列設定エリアに設定することを意味する。なお、上述の検索対象コード列設定エリアは、先に述べた「処理の途中で得られた各種の値を後の処理で用いるためにそれぞれの処理に応じた一時記憶装置」の1つである。以下の説明では、「図示しない検索対象コード列設定エリアに設定する」のような表現に変えて、「検索対象コード列として設定する」あるいは単に「検索対象コード列に設定する」のように記述することもある。検索対象コード列以外についても同様である。
以上で索引データ作成処理の初期処理が終了する。図3Aの例示では、検索対象コード列10aが設定され、索引データ管理ポインタ322は索引データ管理用321の先頭のエントリに位置付けられ、最大コード数には4が、コード列の先頭位置にはP1が、コード列の終端位置にはPnが設定される。
図に示すように、ステップS406において、残りコード数に、コード列の終端位置からコード列の先頭位置を減じた値を設定し、ステップS407で、残りコード数は最大コード数より大きいか判定する。
残りコード数が最大コード数より大きければステップS408に進み、コード列の末尾位置に、コード列の先頭位置から最大コード数分だけ移動した位置を設定する。また、残りコード数が最大コード数より大きくなければステップS409に進み、コード列の末尾位置に、コード列の終端位置を設定する。
上述のステップS406〜ステップS409の処理は、後述の各コード列ブロックに対応する索引データの作成処理の終了を、ステップS408あるいはステップS409で設定したコード列の末尾位置で判定するために行われる。
以上のステップS406〜ステップS415のループ処理を、ステップS413においてコード列の末尾位置がコード列の終端位置を指していると判定されるまで繰り返し、該判定が得られると全てのコード列に対する索引データの作成が完了しているので、索引データ作成の処理を終了する。
まず、ステップS420において、検索対象のコード種別数をもとにコード別ID範囲表の領域を確保すると共に、検索対象コード列に含まれるコードを順次読み出してコード種別毎の出現回数とコードの総数を求める。図3Aに示す先頭のコード列ブロックの場合のコードの総数は、図4Aに示すステップS403で設定した最大コード数と等しい4である。
ステップS420の処理の詳細は、後に図5Aを参照して説明する。
以上の処理により、コード別ID範囲表の出現回数が設定されると共に、コード総数が設定される。
次にステップS550で、ステップS543あるいは後記ステップS552で取り出したコードの指すコード別ID範囲表のコード別IDカウンタに1を加え、ステップS551で、コード位置ポインタを次のコード位置に進める。
なお、上述の説明のとおり、検索対象コード列の先頭から順次ID関係表を作成していくこと、コードIDの範囲はコード種別毎に分離されていることから、ID関係表にコードIDに対応して格納された次コードIDとコード位置は、同一種別のコードのコードID順に連続してコード位置順で格納されることは明らかである。
以上図4A〜図5Cを参照して詳細に説明した処理により、本発明の一実施の形態におけるコード列検索のための索引データが作成される。
本発明の一実施の形態におけるコード列検索の処理フローは、3重のループを有する。
最外側のループは、コード列ブロック毎のループである。検索対象コード列の先頭のコード列ブロックから終端のコード列ブロックまで検索コード列による検索を繰り返す。この最外側のループの制御フローは、図6に示されている。
次の内側のループは、検索コード列の先頭コードのコードID毎のループである。あるコード列ブロックにおいて、検索コード列の先頭コードのコードIDの範囲に亘って検索コード列による検索を繰り返す。このループの制御フローは図7A及び図7Bに示されている。
最内側のループは、検索コード列の1コード毎のコード列ブロックとの照合のループである。検索コード列の先頭のコードから末尾のコードまでの1コード毎の照合が繰り返される。この最内側のループの制御フローは、完全一致検索に関しては図8Aに、前方一致検索に関しては図8Bに、任意コードを含む検索に関しては図8Cに示されている。
そして、本発明においては、検索対象コード列がコード列ブロック毎に分割されており、最内側のループ処理において、上記1コード毎の照合を繰り返しているとき、検索コード列の末尾のコードの照合が終わらないうちに、当該コード列ブロックの末尾位置に至ることがありうる。すると、次のコード列ブロックに亘っての上記1コード毎の照合の繰り返しを継続する必要がある。
この1コード毎の照合の繰り返しの継続を実現するのが図9A及び図9Bにその処理フローを示す次のコード列ブロックに対する検索処理である。この検索処理は最内側のループ処理により呼び出されるが、1コード毎の照合の繰り返しのために再帰的に当該最内側のループ処理を呼び出す。
次にステップS602において、一時記憶領域である検索開始位置の索引データ管理ポインタに、索引データ管理表の先頭のエントリ位置を設定する。
以上で先に述べた初期処理が終了する。
次にステップS608において、ステップS605で取得したコード別ID範囲表とID関係表をもとに、該当するコード列ブロックを検索する。ステップS608の処理の詳細は、後に図7A及び図7Bを参照して説明する。
次にステップS609で、検索開始位置の索引管理データポインタに索引データ管理表の次のエントリ位置を設定してステップS603に戻る。
なお、上述のステップS602、S609の検索開始位置の索引データ管理ポインタの設定処理及びステップS606の先頭コードIDの設定処理は、先に述べたように検索を開始するコード列ブロックから次のコード列ブロックに亘って1コード毎の照合が行われる場合があるので、検索を開始するコード列ブロックに係わる索引データ管理ポインタ及び先頭コードIDを退避するためのものである。この先頭コードIDは、後に図8Aを参照して説明するように、コードの照合が現在のコード列ブロックの末尾にまで至り、次のコード列ブロックのコードとの照合に進む判定に用いられる。
図7Aは、本発明の一実施の形態における、あるコード列ブロックを検索開始位置のコード列ブロックとして行われるコード列検索の前段の処理フローを説明する図である。
まず、ステップS701において、検索先頭位置に、検索コード列の先頭位置を設定し、ステップS702で、検索末尾位置に、検索コード列の末尾位置を設定する。
設定表示が「あり」でなければ、検索先頭位置の検索コードが検索対象コード列中に存在しないということであるから、検索処理を終了する。
ステップS706の処理は、先に述べた検索コード列の先頭コードのコードID毎のループ処理における処理中のコードIDである検索開始コードIDを、コードIDの範囲の先頭コードIDに初期設定するものであり、ステップ707の処理は、処理対象のコードIDの終端を識別可能とするためのものである。
ステップS707に引き続き、図7Bに示すステップS711に進む。
ステップS711では、検索進行位置にステップS701で設定した検索先頭位置を設定する。検索進行位置は、先に述べた図8A等に示す検索コード列の1コード毎のコード列ブロックとの照合ループにおける、照合対象のコードのコード位置を示すものであり、ステップS711では、検索先頭位置、すなわち検索コード列の先頭位置に初期設定される。
次にステップS712において、索引データ管理ポインタに、図6に示すステップS602で設定した検索開始位置の索引データ管理ポインタを設定し、ステップS713で一時記憶領域である先頭コードIDに、図6に示すステップS607で設定した検索開始位置の先頭コードIDを設定する。さらにステップS714において、検索開始コードIDを退避してステップS715に進む。
検索開始コードIDと検索終了コードIDが一致すれば、現在処理中のコード列ブロックにおける、検索コード列の先頭コードが指すコード別ID範囲表のコードIDの範囲の検索が終了しているので、図6に示す処理に戻る。
図に示すように、ステップS810でコードIDポインタに検索開始コードIDを設定する。この検索開始コードIDは、図7Aに示すステップS706で初期設定されたか、あるいは図7Bに示すステップS722で更新され設定されたものである。次にステップS811において、コードIDポインタの指すID関係表より次コードIDを取り出し、検索コードIDに設定するとともに、コードIDポインタに設定する。
ステップS813では、ステップS811で取り出した次コードIDは先頭コードIDと一致するか判定する。先頭コードIDは、図7Bに示すステップS713で設定したものである。次コードIDと先頭コードIDが一致しなければ、ステップS814に進み、検索進行位置を、検索コード列の次の検索コードの位置に進め、ステップS815で、検索進行位置の指す検索コード列より検索コードを取り出し、ステップS816で、該取り出した検索コードの指すコード別ID範囲表より先頭コードIDと末尾コードIDを取り出す。
なお、ステップS831において、コードIDポインタの指すID関係表のエントリより、次コードIDに加えてコード位置を順次取り出しておき、ステップS837において検索コードは索引コードと一致しないと判定したとき、ステップS831で最後に取り出したコード位置を、検索成功と共に検索結果として返してもよい。この最後に取り出したコード位置は、上述の索引コードのコードID範囲に含まれる次コードIDとID関係表の同一エントリに格納されたコード位置である。このコード位置に位置する検索対象コード列のコードまでは、検索コード列の検索コードと一致している。上記最後に取り出したコード位置と、図7Bに示すステップS720で検索開始コードの指すID関係表から取り出すコード位置を検索結果コード位置として出力することにより、検索コード列と前方一致する検索対象コード列のコード位置の範囲を知ることができる。
上述のステップS837での判定後のリターン種別及びステップS838以降の処理以外に関しては、先に述べたように全て図8Aに示すものと同じであるので、その説明は省略する。
上述のステップS855aでの判定処理以外は、先に述べたように全て図8Aに示すものと同じであるので、その説明は省略する。
図9Aは、本発明の一実施の形態における次のコード列ブロックの検索の処理フローの前段を説明する図である。
ステップS915では、ステップS914での検索が成功であれば検索成功を、失敗であれば検索失敗を返して、図8A、図8Bあるいは図8Cに示す処理に戻る。
図10Aは、そのうちの先頭のコード列ブロックを対象とした検索の流れを説明するものである。
図において、符号701aを付した点線で囲ったブロックには、検索コード列ABCの各検索コードを先頭から処理する流れが記載されている。言い換えれば、該ブロック701aは、検索進行位置のコードの変化を示すものである。符号702aを付した点線で囲ったブロックには、その検索進行位置のコードの指すコード別ID範囲表309aのコードIDの範囲と、コード列ブロックの先頭位置にあるコードAの指すコード別ID範囲表309aの先頭コードID742aであるID1が記載されている。符号703aを付した点線で囲ったブロックには、ID関係表310aから順次次コードを求める流れが記載されている。
また、図中括弧書きで示しているのは、図に示す処理の流れに関連する図6〜図9Bに示す処理ステップである。
次に、ブロック702aのID1からブロック703aへの矢印724aで示すように、ID1の指すID関係表310aの次コードIDであるID3がステップS810及びステップS811により取り出される。そして、ブロック703aの、ID1の指すID関係表310aの次コードIDであるID3と、ブロック702aの、先頭コードID742aの間の双方向の点線の矢印736aで示すように、ステップS813において、次コードIDであるID3は先頭コードIDであるID1とは異なることが判定される。
すると次に、ブロック703a内の矢印724bで示すように、ID3の指すID関係表310aの次コードIDであるID4がステップS811で取り出される。そして、ブロック703aの、ID3の指すID関係表310aの次コードIDであるID4と、ブロック702aの、先頭コードID742aの間の双方向の点線の矢印736bで示すように、ステップS813において、次コードIDであるID4は先頭コードIDであるID1とは異なることが判定される。
つまり、検索対象コード列10aの先頭のコード列ブロックのうち、コードIDがID1であるコードAからのコード列は、検索コード列ABCと一致しないことを示している。これは、検索対象コード列10aの先頭のコード列ブロックのうち、コードIDがID1であるコードAからの3コードのコード列は、図3Aの(a)に示すようにABEであり、ABCではないことに整合している。
そして、この2順目の処理においては、検索対象コード列と検索コード列間の照合が先頭のコード列ブロックの次のコード列ブロックに亘って行われる。
そして、ブロック703bの、ID1の指すID関係表310bの次コードIDであるID3とブロック702bの、コードBの指すコード別ID範囲表309bのコードID範囲の間の双方向の点線の矢印725dで示すように、ステップS817においてID1の指すID関係表310bの次コードIDであるID3がコードBの指すコード別ID範囲表309bのコードID範囲であることが判定される。
すると次に、ブロック703b内の矢印724eで示すように、ID3の指すID関係表310bの次コードIDであるID4がステップS811で取り出される。そして、その次コードIDであるID4と、ブロック702bの、先頭コードID742bの間の双方向の点線の矢印736eで示すように、ステップS813において、次コードIDであるID4は先頭コードIDであるID1とは異なることが判定される。
そこでステップS720で、矢印728aに示すように、符号705aで示す検索結果コード位置に、検索開始コードIDであるID2の指すID関係表310aのコード位置P4を設定する。
検索を開始する前の処理として、図の矢印731bに示すように、ステップS609で検索開始位置の索引データ管理ポインタの値が更新され、ステップS603で索引データ管理表の先頭のエントリ704bが取り出される。そして、図の矢印734bに示すように、ステップS605で該エントリの索引データポインタ733bに基づき索引データの格納領域705b内に格納されたコード別ID範囲表309bとID関係表310bが取得される。また、矢印735bに示すように、ステップS606で、該エントリ704bの先頭コードID732bに格納された先頭コードIDであるID1が読み出されて、先頭コードID742bに設定される。
次に、ブロック702bのID1からブロック703bへの矢印724fで示すように、ID1の指すID関係表310bの次コードIDであるID3がステップS810及びステップS811により取り出される。そして、ブロック703bの、ID1の指すID関係表309bの次コードIDであるID3と、ブロック702bの、先頭コードID742bの間の双方向の点線の矢印736gで示すように、ステップS813において、次コードIDであるID3は先頭コードIDであるID1とは異なることが判定される。
すると次に、ブロック703b内の矢印724gで示すように、ID3の指すID関係表310bの次コードIDであるID4がステップS811で取り出される。そして、ブロック703bの、ID3の指すID関係表310bの次コードIDであるID4と、ブロック702bの、先頭コードID742bの間の双方向の点線の矢印736hで示すように、ステップS813において、次コードIDであるID4は先頭コードIDであるID1とは異なることが判定される。
そこでステップS720で、矢印728bに示すように、符号705bで示す検索結果コード位置に、検索開始コードIDであるID1の指すID関係表310bのコード位置P4を設定する。
また、本発明のコード列検索装置が、索引データ管理表とコード別ID範囲表とID関係表を格納する記憶手段と、図6〜図9Bに示した処理をコンピュータに実行させるプログラムによりコンピュータ上に構築可能なことは明らかである。
したがって、上記プログラム、及びプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の実施の形態に含まれる。さらに、本発明のコード列検索のための索引データのデータ構造及びそのデータ構造を有する索引データを記録したコンピュータ読み取り可能な記録媒体も、本発明の実施の形態に含まれる。
また、本発明によれば、索引データを複数の格納領域に分割して格納することができるので、多量の索引データであっても、利用するハードウェア環境に応じてコード列ブロックの大きさを決定し、索引データへのアクセスやメンテナンスを容易にすることもできる。
10a 検索対象コード列
11 コード位置ポインタ
20 文字位置順の接尾辞
20a 辞書順の接尾辞
30 接尾辞配列
40 検索文字列
40a 検索コード列
50 圧縮接尾辞配列
101 検索対象コード列読出手段
102 コード別ID範囲表生成手段
103 ID関係表生成手段
104 索引データ作成管理手段
105 索引データ作成手段
111 検索コード列読出手段
112 コード別ID範囲読出手段
113 ID関係読出手段
114 コードID照合手段
115 コード列検索管理手段
116 コード列検索手段
301 データ処理装置
302 中央処理装置
303 キャッシュメモリ
304 バス
305 主記憶装置
306 外部記憶装置
307 通信装置
308 データ格納装置
309 コード別ID範囲表
310 ID関係表
311 コード種別ポインタ
312 コードIDポインタ
321 索引データ管理表
322 索引データ管理ポインタ
324 索引データの格納領域
Claims (25)
- 検索対象である検索対象コード列を検索コード列により検索するコード列検索装置において、
前記検索対象コード列を複数に分割した部分コード列であるコード列ブロックであって、該コード列ブロックの末尾のコードと該コード列ブロックの次に位置するコード列ブロックの先頭のコードとを重複させて前記検索対象コード列を複数に分割したコード列ブロック毎に設けられた、
前記コード列ブロックに位置する全ての各コードを一意に識別するコードIDの範囲であるコードID範囲を同一種別のコード毎に格納したコード別ID範囲表と、
前記コードIDに対応して、前記コード列ブロックにおいて該コードIDに係るコードの次に位置するコードのコードIDである次コードIDを格納するとともに、前記コードIDに係るコードが前記コード列ブロックの末尾に位置する場合は前記次コードIDとして前記コード列ブロックの先頭のコードのコードIDを格納するID関係表と、
前記コード列ブロック毎に設けられたコード別ID範囲表とID関係表を参照して前記検索コード列による検索を実行する検索実行部と、
前記コード列ブロック毎に該コード列ブロックの先頭のコードのコードIDである先頭コードIDを格納した索引データ管理表と、
前記検索実行部による検索の実行を管理する検索管理部と、
を備え、
前記検索実行部は、
前記検索コード列を読み出す検索コード列読出手段と、
指定されたコード列ブロックに対応する前記コード別ID範囲表から、前記検索コード列読出手段により読み出された検索コード列の先頭のコードあるいは2番目のコードからコード毎に、該コードの種別のコードID範囲を順次読み出すコード別ID範囲読出手段と、
前記コード別ID範囲読出手段により読み出された前記検索コード列の先頭のコードの種別のコードID範囲に含まれるコードIDあるいは前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出し、以後、読み出された次コードIDに対応して格納された次コードIDを順次前記ID関係表から読み出すとともに、該次コードIDが当該コード列ブロックの前記先頭コードIDと等しいか判定するID関係読出手段と、
前記ID関係読出手段により読み出された次コードIDが当該コード列ブロックの先頭のコードのコードIDと等しくないとき、該次コードIDが前記コード別ID範囲読出手段により読み出されたコードIDの範囲に含まれるか照合するコードID照合手段を備え、
前記検索管理部は、
前記検索実行部に先頭のコード列ブロックから前記コード列ブロックを順次指定するとともに、前記ID関係読出手段が、前記読み出した次コードIDが前記コード列ブロックの先頭のコードのコードIDと等しいと判定すると、前記コード列ブロックの次に位置するコード列ブロックを前記検索実行部に指定するものであり、
前記検索管理部が前記コード列ブロックを順次指定すると、
前記コード別ID範囲読出手段は、前記検索コード列の先頭のコードからコード毎に、該コードの種別のコードID範囲を順次読み出し、
前記ID関係読出手段は、最初に、前記検索コード列の先頭のコードの種別のコードID範囲に含まれるコードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出し、
前記検索管理部が前記コード列ブロックを次に位置するコード列ブロックとして指定すると、
前記コード別ID範囲読出手段は、前記検索コード列の2番目のコードからコード毎に、該コードの種別のコードID範囲を順次読み出し、
前記ID関係読出手段は、最初に、前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出す、
ことを特徴とするコード列検索装置。 - 請求項1に記載のコード列検索装置において、
前記コードID照合手段は、前記コード別ID範囲読出手段により読み出された、前記検索コード列の先頭のコードのコード種別のコードID範囲に含まれる検索コード列の先頭のコードのコードIDあるいは前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDを第1コードIDとしたとき該第1コードIDに対応して前記ID関係表に格納された前記次コードIDが、前記検索対象コード列において前記第1のコードの次に位置するコードである第2のコードの種別のコードID範囲に含まれるか照合し、以後、前記第1のコードと第2のコードの前記検索コード列における位置が前記コード別ID範囲読出手段及びID関係読出手段の読出動作により更新されると、該位置の更新された第1のコードのコードIDに対応して格納された前記次コードIDが、該位置の更新された第2のコードの種別の前記コードID範囲に含まれるかを照合するものである、
ことを特徴とするコード列検索装置。 - 請求項2に記載のコード列検索装置において、
前記ID関係表は、前記コードIDに対応して、前記検索対象コード列において該コードIDに係るコードの位置を示すコード位置を格納しており、
前記コードID照合手段は、前記ID関係読出手段により読み出された次コードIDが前記コード別ID範囲読出手段により読み出されたコードIDの範囲に含まれるかの照合が前記検索コード列の先頭のコードから末尾のコードについてまで成功すると、該先頭のコードのコードIDに対応して前記ID関係表に格納されたコード位置を検索結果コード位置として出力する、
ことを特徴とするコード列検索装置。 - 請求項3に記載のコード列検索装置において、
前記ID関係表に前記コードIDに対応して格納された次コードIDとコード位置は、同一種別のコードのコードID順に連続してコード位置順で格納されている、
ことを特徴とするコード列検索装置。 - 請求項4に記載のコード列検索装置において、
前記コードID照合手段は、前記検索コード列の先頭のコードの種別のコードID範囲に含まれる全てのコードIDを前記検索コード列の先頭のコードのコードIDとして、前記ID関係読出手段により読み出された次コードIDが前記コード別ID範囲読出手段により読み出されたコードIDの範囲に含まれるかを照合する、
ことを特徴とするコード列検索装置。 - 請求項5に記載のコード列検索装置において、
前記コードID照合手段は、前記ID関係読出手段により読み出された次コードIDが前記コード別ID範囲読出手段により読み出されたコードIDの範囲に含まれるかの照合が失敗すると、前記ID関係表の該次コードIDと同一のエントリに格納されたコード位置と、前記先頭のコードのコードIDに対応して前記ID関係表に格納されたコード位置とを、検索結果コード位置として出力する、
ことを特徴とするコード列検索装置。 - 請求項5に記載のコード列検索装置において、
前記検索コード列は任意のコードと照合する任意コードを含み、
前記コードID照合手段は、該任意コードを第2のコードとした前記ID関係読出手段により読み出された次コードIDが前記コード別ID範囲読出手段により読み出されたコードIDの範囲に含まれるかの照合に替えて、前記検索コード列において該任意コードの次に位置するコードを前記第2のコードとして前記照合を行う、
ことを特徴とするコード列検索装置。 - 検索対象である検索対象コード列を検索コード列により検索するコード列検索装置であって、前記検索対象コード列を複数に分割した部分コード列であるコード列ブロックであり、該コード列ブロックの末尾のコードと該コード列ブロックの次に位置するコード列ブロックの先頭のコードとを重複させて前記検索対象コード列を複数に分割したコード列ブロック毎に設けられた、前記コード列ブロックに位置する全ての各コードを一意に識別するコードIDの範囲であるコードID範囲を同一種別のコード毎に格納したコード別ID範囲表と、前記コードIDに対応して、前記コード列ブロックにおいて該コードIDに係るコードの次に位置するコードのコードIDである次コードIDを格納するとともに、前記コードIDに係るコードが前記コード列ブロックの末尾に位置する場合は前記次コードIDとして前記コード列ブロックの先頭のコードのコードIDを格納するID関係表と、前記コード列ブロック毎に該コード列ブロックの先頭のコードのコードIDである先頭コードIDを格納した索引データ管理表と、検索実行部と、検索管理部を備えたコード列検索装置によるコード列検索方法において、
前記検索実行部は、
前記検索コード列を読み出す検索コード列読出ステップと、
指定されたコード列ブロックに対応する前記コード別ID範囲表から、前記検索コード列読出ステップで読み出された検索コード列の先頭のコードあるいは2番目のコードからコード毎に、該コードの種別のコードID範囲を順次読み出すコード別ID範囲読出ステップと、
前記コード別ID範囲読出ステップで読み出された前記検索コード列の先頭のコードの種別のコードID範囲に含まれるコードIDあるいは前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出し、以後、読み出された次コードIDに対応して格納された次コードIDを順次前記ID関係表から読み出すとともに、該次コードIDが当該コード列ブロックの前記先頭コードIDと等しいか判定するID関係読出ステップと、
前記ID関係読出ステップで読み出された次コードIDが当該コード列ブロックの先頭のコードのコードIDと等しくないとき、該次コードIDが前記コード別ID範囲読出ステップで読み出されたコードIDの範囲に含まれるか照合するコードID照合ステップと、
を実行し、
前記検索管理部は、
前記検索実行部に先頭のコード列ブロックから前記コード列ブロックを順次指定する検索開始位置指定ステップを実行するとともに、
前記ID関係読出ステップにおいて、前記読み出した次コードIDが前記コード列ブロックの先頭のコードのコードIDと等しいと判定されると、前記コード列ブロックの次に位置するコード列ブロックを前記検索実行部に指定する次コード列指定ステップを実行するものであり、
前記検索管理部が前記検索開始位置指定ステップを実行すると、
前記コード別ID範囲読出ステップでは、前記検索コード列の先頭のコードからコード毎に、該コードの種別のコードID範囲を順次読み出し、
前記ID関係読出ステップでは、最初に、前記検索コード列の先頭のコードの種別のコードID範囲に含まれるコードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出し、
前記検索管理部が前記次コード列指定ステップを実行すると、
前記コード別ID範囲読出ステップでは、前記検索コード列の2番目のコードからコード毎に、該コードの種別のコードID範囲を順次読み出し、
前記ID関係読出ステップでは、最初に、前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出す、
ことを特徴とするコード列検索方法。 - 請求項8に記載のコード列検索方法において、
前記コードID照合ステップは、
前記コード別ID範囲読出手段により読み出された、前記検索コード列の先頭のコードのコード種別のコードID範囲に含まれる検索コード列の先頭のコードのコードIDあるいは前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDを第1コードIDとしたとき該第1コードIDに対応して前記ID関係表に格納された前記次コードIDが、前記検索対象コード列において前記第1のコードの次に位置するコードである第2のコードの種別のコードID範囲に含まれるか照合し、以後、前記第1のコードと第2のコードの前記検索コード列における位置が前記コード別ID範囲読出ステップ及びID関係読出ステップの読出動作により更新されると、該位置の更新された第1のコードのコードIDに対応して格納された前記次コードIDが、該位置の更新された第2のコードの種別の前記コードID範囲に含まれるかを照合するものである、
ことを特徴とするコード列検索方法。 - 請求項9に記載のコード列検索方法において、
前記ID関係表は、前記コードIDに対応して、前記検索対象コード列において該コードIDに係るコードの位置を示すコード位置を格納しており、
前記コードID照合ステップは、前記ID関係読出ステップで読み出された次コードIDが前記コード別ID範囲読出ステップで読み出されたコードIDの範囲に含まれるかの照合が前記検索コード列の先頭のコードから末尾のコードについてまで成功すると、該先頭のコードのコードIDに対応して前記ID関係表に格納されたコード位置を検索結果コード位置として出力する、
ことを特徴とするコード列検索方法。 - 請求項10に記載のコード列検索方法において、
前記コードID照合ステップは、前記検索コード列の先頭のコードの種別のコードID範囲に含まれる全てのコードIDを前記検索コード列の先頭のコードのコードIDとして、前記ID関係読出ステップで読み出された次コードIDが前記コード別ID範囲読出ステップで読み出されたコードIDの範囲に含まれるかを照合する、
ことを特徴とするコード列検索方法。 - 検索対象である検索対象コード列を検索コード列により検索するコード列検索装置であって、前記検索対象コード列を複数に分割した部分コード列であるコード列ブロックであり、該コード列ブロックの末尾のコードと該コード列ブロックの次に位置するコード列ブロックの先頭のコードとを重複させて前記検索対象コード列を複数に分割したコード列ブロック毎に設けられた、前記コード列ブロックに位置する全ての各コードを一意に識別するコードIDの範囲であるコードID範囲を同一種別のコード毎に格納したコード別ID範囲表と、前記コードIDに対応して、前記コード列ブロックにおいて該コードIDに係るコードの次に位置するコードのコードIDである次コードIDを格納するとともに、前記コードIDに係るコードが前記コード列ブロックの末尾に位置する場合は前記次コードIDとして前記コード列ブロックの先頭のコードのコードIDを格納するID関係表と、前記コード列ブロック毎に該コード列ブロックの先頭のコードのコードIDである先頭コードIDを格納した索引データ管理表と、検索実行部と、検索管理部を備えたコード列検索装置の機能をコンピュータに実現させるコード列検索プログラムにおいて、
コンピュータに、
前記検索実行部の機能として、
前記検索コード列を読み出す検索コード列読出機能、
指定されたコード列ブロックに対応する前記コード別ID範囲表から、前記検索コード列読出機能により読み出された検索コード列の先頭のコードあるいは2番目のコードからコード毎に、該コードの種別のコードID範囲を順次読み出すコード別ID範囲読出機能、
前記コード別ID範囲読出機能により読み出された前記検索コード列の先頭のコードの種別のコードID範囲に含まれるコードIDあるいは前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出し、以後、読み出された次コードIDに対応して格納された次コードIDを順次前記ID関係表から読み出すとともに、該次コードIDが当該コード列ブロックの前記先頭コードIDと等しいか判定するID関係読出機能、
前記ID関係読出機能により読み出された次コードIDが当該コード列ブロックの先頭のコードのコードIDと等しくないとき、該次コードIDが前記コード別ID範囲読出機能により読み出されたコードIDの範囲に含まれるか照合するコードID照合機能、
を実現させ、
前記検索管理部の機能として、
前記検索実行部に先頭のコード列ブロックから前記コード列ブロックを順次指定する検索開始位置指定機能を実現させるとともに、
前記ID関係読出機能により、前記読み出した次コードIDが前記コード列ブロックの先頭のコードのコードIDと等しいと判定されると、前記コード列ブロックの次に位置するコード列ブロックを前記検索実行部に指定する次コード列指定機能を実現させるものであり、
前記検索管理部の機能として、前記検索開始位置指定機能を実現させると
前記コード別ID範囲読出機能により、前記検索コード列の先頭のコードからコード毎に、該コードの種別のコードID範囲を順次読み出す機能、
前記ID関係読出機能により、最初に、前記検索コード列の先頭のコードの種別のコードID範囲に含まれるコードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出す機能を、
前記検索管理部の機能として、前記次コード列指定機能を実現させると、
前記コード別ID範囲読出機能により、前記検索コード列の2番目のコードからコード毎に、該コードの種別のコードID範囲を順次読み出す機能、
前記ID関係読出機能により、最初に、前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出す機能を、
実現させることを特徴とするコード列検索プログラム。 - 請求項12に記載のコード列検索プログラムにおいて、
前記コードID照合機能は、
前記コード別ID範囲読出機能により読み出された、前記検索コード列の先頭のコードのコード種別のコードID範囲に含まれる検索コード列の先頭のコードのコードIDあるいは前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDを第1コードIDとしたとき該第1コードIDに対応して前記ID関係表に格納された前記次コードIDが、前記検索対象コード列において前記第1のコードの次に位置するコードである第2のコードの種別のコードID範囲に含まれるか照合する機能と、以後、前記第1のコードと第2のコードの前記検索コード列における位置が前記コード別ID範囲読出機能及びID関係読出機能の読出動作により更新されると、該位置の更新された第1のコードのコードIDに対応して格納された前記次コードIDが、該位置の更新された第2のコードの種別の前記コードID範囲に含まれるかを照合する機能を含む、
ことを特徴とするコード列検索プログラム。 - 請求項13に記載のコード列検索プログラムにおいて、
前記ID関係表は、前記コードIDに対応して、前記検索対象コード列において該コードIDに係るコードの位置を示すコード位置を格納しており、
前記コードID照合機能は、前記ID関係読出機能により読み出された次コードIDが前記コード別ID範囲読出機能により読み出されたコードIDの範囲に含まれるかの照合が前記検索コード列の先頭のコードから末尾のコードについてまで成功すると、該先頭のコードのコードIDに対応して前記ID関係表に格納されたコード位置を検索結果コード位置として出力する機能を含む、
ことを特徴とするコード列検索プログラム。 - 請求項14に記載のコード列検索プログラムにおいて、
前記コードID照合機能は、前記検索コード列の先頭のコードの種別のコードID範囲に含まれる全てのコードIDを前記先頭コードIDとして、前記ID関係読出機能により読み出された次コードIDが前記コード別ID範囲読出機能により読み出されたコードIDの範囲に含まれるかを照合する機能を含む、
ことを特徴とするコード列検索プログラム。 - 請求項12〜請求項15のいずれか1項に記載のコード列検索プログラムを記録したコンピュータ読み取り可能な記録媒体。
- 検索対象である検索対象コード列を検索コード列により検索するコード列検索のためのデータ構造において、
前記検索対象コード列を複数に分割した部分コード列であるコード列ブロックであり、該コード列ブロックの末尾のコードと該コード列ブロックの次に位置するコード列ブロックの先頭のコードとを重複させて前記検索対象コード列を複数に分割したコード列ブロック毎に設けられた、前記コード列ブロックに位置する全ての各コードを一意に識別するコードIDの範囲であるコードID範囲を同一種別のコード毎に格納したコード別ID範囲表と、前記コードIDに対応して、前記コード列ブロックにおいて該コードIDに係るコードの次に位置するコードのコードIDである次コードIDを格納するとともに、前記コードIDに係るコードが前記コード列ブロックの末尾に位置する場合は前記次コードIDとして前記コード列ブロックの先頭のコードのコードIDを格納するID関係表と、前記コード列ブロック毎に該コード列ブロックの先頭のコードのコードIDである先頭コードIDを格納した索引データ管理表と
を備え、
検索実行部と、検索管理部を備えたコード列検索装置により、
前記検索実行部は、
前記検索コード列を読み出す検索コード列読出ステップと、
指定されたコード列ブロックに対応する前記コード別ID範囲表から、前記検索コード列読出ステップで読み出された検索コード列の先頭のコードあるいは2番目のコードからコード毎に、該コードの種別のコードID範囲を順次読み出すコード別ID範囲読出ステップと、
前記コード別ID範囲読出ステップで読み出された前記検索コード列の先頭のコードの種別のコードID範囲に含まれるコードIDあるいは前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出し、以後、読み出された次コードIDに対応して格納された次コードIDを順次前記ID関係表から読み出すとともに、該次コードIDが当該コード列ブロックの先頭のコードのコードIDと等しいか判定するID関係読出ステップと、
前記ID関係読出ステップで読み出された次コードIDが当該コード列ブロックの先頭のコードのコードIDと等しくないとき、該次コードIDが前記コード別ID範囲読出ステップで読み出されたコードIDの範囲に含まれるか照合するコードID照合ステップと、
を実行し、
前記検索管理部は、
前記検索実行部に先頭のコード列ブロックから前記コード列ブロックを順次指定する検索開始位置指定ステップを実行するとともに、
前記ID関係読出ステップにおいて、前記読み出した次コードIDが前記コード列ブロックの先頭のコードのコードIDと等しいと判定されると、前記コード列ブロックの次に位置するコード列ブロックを前記検索実行部に指定する次コード列指定ステップを実行し、
前記検索管理部が前記検索開始位置指定ステップを実行すると、
前記コード別ID範囲読出ステップでは、前記検索コード列の先頭のコードからコード毎に、該コードの種別のコードID範囲を順次読み出し、
前記ID関係読出ステップでは、最初に、前記検索コード列の先頭のコードの種別のコードID範囲に含まれるコードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出し、
前記検索管理部が前記次コード列指定ステップを実行すると、
前記コード別ID範囲読出ステップでは、前記検索コード列の2番目のコードからコード毎に、該コードの種別のコードID範囲を順次読み出し、
前記ID関係読出ステップでは、最初に、前記索引データ管理表に格納された前記指定されたコード列ブロックの先頭コードIDに対応して格納された前記次コードIDを前記指定されたコード列ブロックに対応するID関係表から読み出すことにより、
前記検索対象コード列の前記検索コード列による検索の実行を可能とする
ことを特徴とするコード列検索のためのデータ構造。 - 請求項17に記載のコード列検索のためのデータ構造において、
前記ID関係表は、前記コードIDに対応して、前記検索対象コード列において該コードIDに係るコードの位置を示すコード位置を格納しており、
前記ID関係表から読み出された次コードIDが前記コード別ID範囲読出表から読み出されたコードIDの範囲に含まれるかの照合が前記検索コード列の先頭のコードから末尾のコードについてまで成功すると、該先頭のコードのコードIDに対応して前記ID関係表に格納されたコード位置を検索結果コード位置として出力することを可能とする、
ことを特徴とするコード列検索のためのデータ構造。 - 請求項18に記載のコード列検索のためのデータ構造において、
前記ID関係表に前記コードIDに対応して格納された次コードIDとコード位置は、同一種別のコードのコードID順に連続してコード位置順で格納されている、
ことを特徴とするコード列検索のためのデータ構造。 - 請求項17〜請求項19のいずれか1項に記載されたデータ構造を有するデータが記録されたコンピュータ読み取り可能な記録媒体。
- 検索対象である検索対象コード列を検索コード列により検索するコード列検索のための索引データ作成装置において、
前記検索対象コード列を複数に分割した部分コード列であるコード列ブロックであって、該コード列ブロックの末尾のコードと該コード列ブロックの次に位置するコード列ブロックの先頭のコードとを重複させて前記検索対象コード列を複数に分割したコード列ブロックを順次読み出し、該読み出したコード列ブロックのコードの種別毎の出現回数を求める検索対象コード列読出手段と
前記検索対象コード列読出手段が求めたコードの種別毎の出現回数に基づいて、前記コード列ブロックに位置する全ての各コードを一意に識別するコードIDの範囲であるコードID範囲を同一種別のコード毎に格納したコード別ID範囲表を生成するコード別ID範囲表生成手段と、
前記検索対象コード列読出手段が読み出したコード列ブロックと前記コード別ID範囲表に基づき、前記コードIDに対応して、前記コード列ブロックにおいて該コードIDに係るコードの次に位置するコードのコードIDである次コードIDを格納したID関係表を前記コード列ブロック毎に生成するID関係表生成手段と、
前記コード列ブロック毎に該コード列ブロックに対応した前記コード別ID範囲表とID関係表を格納する索引データの格納領域を確保するとともに、前記コード列ブロックの先頭のコードのコードIDと前記索引データの格納領域のポインタを前記コード列ブロック毎に格納する索引データ管理表を生成する索引データ作成管理手段と、
を備えたことを特徴とする索引データ作成装置。 - 請求項21に記載の索引データ作成装置において、
前記ID関係表に前記コードIDに対応して格納された次コードIDとコード位置は、同一種別のコードのコードID順に連続してコード位置順で格納されている、
ことを特徴とする索引データ作成装置。 - 検索対象である検索対象コード列を検索コード列により検索するコード列検索のための索引データ作成装置による索引データ作成方法において、
前記検索対象コード列を複数に分割した部分コード列であるコード列ブロックであって、該コード列ブロックの末尾のコードと該コード列ブロックの次に位置するコード列ブロックの先頭のコードとを重複させて前記検索対象コード列を複数に分割したコード列ブロックを読み出し、該読み出したコード列ブロックのコードの種別毎の出現回数を求める検索対象コード列読出ステップと
前記検索対象コード列読出ステップで求めたコードの種別毎の出現回数に基づいて、前記コード列ブロックに位置する全ての各コードを一意に識別するコードIDの範囲であるコードID範囲を同一種別のコード毎に格納したコード別ID範囲表を生成するコード別ID範囲表生成ステップと、
前記検索対象コード列読出ステップで読み出したコード列ブロックと前記コード別ID範囲表生成ステップで生成されたコード別ID範囲表に基づき、前記コードIDに対応して、前記コード列ブロックにおいて該コードIDに係るコードの次に位置するコードのコードIDである次コードIDを格納したID関係表を生成するID関係表生成ステップと、
を備え、
前記検索対象コード列読出ステップ、前記コード別ID範囲表生成ステップ及びID関係表生成ステップを全ての前記コード列ブロックについて繰り返すことを特徴とする索引データ作成方法。 - 検索対象である検索対象コード列を検索コード列により検索するコード列検索のための索引データ作成方法をコンピュータに実行させる索引データ作成プログラムにおいて、
コンピュータに、
コード列検索のための索引データ作成方法であって、
前記検索対象コード列を複数に分割した部分コード列であるコード列ブロックであり、該コード列ブロックの末尾のコードと該コード列ブロックの次に位置するコード列ブロックの先頭のコードとを重複させて前記検索対象コード列を複数に分割したコード列ブロックを読み出し、該読み出したコード列ブロックのコードの種別毎の出現回数を求める検索対象コード列読出ステップと
前記検索対象コード列読出ステップで求めたコードの種別毎の出現回数に基づいて、前記コード列ブロックに位置する全ての各コードを一意に識別するコードIDの範囲であるコードID範囲を同一種別のコード毎に格納したコード別ID範囲表を生成するコード別ID範囲表生成ステップと、
前記検索対象コード列読出ステップで読み出したコード列ブロックと前記コード別ID範囲表生成ステップで生成されたコード別ID範囲表に基づき、前記コードIDに対応して、前記コード列ブロックにおいて該コードIDに係るコードの次に位置するコードのコードIDである次コードIDを格納したID関係表を生成するID関係表生成ステップと、
を備え、
前記検索対象コード列読出ステップ、前記コード別ID範囲表生成ステップ及びID関係表生成ステップを全ての前記コード列ブロックについて繰り返すことを特徴とする索引データ作成方法を実行させることを特徴とする索引データ作成プログラム。 - 請求項24に記載の索引データ作成プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009080726A JP4464459B1 (ja) | 2009-03-29 | 2009-03-29 | コード列検索装置、検索方法及びプログラム |
PCT/JP2009/006922 WO2010116435A1 (ja) | 2009-03-29 | 2009-12-16 | コード列検索装置、検索方法及びプログラム |
EP09842945A EP2416258A4 (en) | 2009-03-29 | 2009-12-16 | CODE CHAIN DETECTION DEVICE, POLLING PROCEDURE AND PROGRAM |
CN2009801595558A CN102449624B (zh) | 2009-03-29 | 2009-12-16 | 码串检索装置、检索方法 |
US13/064,487 US9009655B2 (en) | 2008-09-28 | 2011-03-28 | Code string search apparatus, search method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009080726A JP4464459B1 (ja) | 2009-03-29 | 2009-03-29 | コード列検索装置、検索方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP4464459B1 JP4464459B1 (ja) | 2010-05-19 |
JP2010231675A true JP2010231675A (ja) | 2010-10-14 |
Family
ID=42306564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009080726A Active JP4464459B1 (ja) | 2008-09-28 | 2009-03-29 | コード列検索装置、検索方法及びプログラム |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP2416258A4 (ja) |
JP (1) | JP4464459B1 (ja) |
CN (1) | CN102449624B (ja) |
WO (1) | WO2010116435A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5790664B2 (ja) * | 2011-01-25 | 2015-10-07 | 日本電気株式会社 | 情報検索装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0561910A (ja) * | 1991-09-02 | 1993-03-12 | Fujitsu Sooshiaru Sci Raboratori:Kk | 全文インデツクス検索方法 |
JPH05324722A (ja) * | 1992-03-24 | 1993-12-07 | Ricoh Co Ltd | 文書検索方式 |
JPH06149882A (ja) * | 1992-11-06 | 1994-05-31 | Fujitsu Ltd | 全文データベース検索装置 |
JP2002229987A (ja) * | 2001-01-11 | 2002-08-16 | Internatl Business Mach Corp <Ibm> | パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0782504B2 (ja) * | 1990-11-30 | 1995-09-06 | 株式会社テレマティーク国際研究所 | 情報検索処理方式および検索ファイル作成装置 |
JPH04242864A (ja) * | 1991-01-08 | 1992-08-31 | Chubu Nippon Denki Software Kk | 情報検索方式 |
JPH06162092A (ja) * | 1992-11-18 | 1994-06-10 | Fujitsu Ltd | 情報検索装置 |
WO1995034155A2 (en) * | 1994-06-06 | 1995-12-14 | Nokia Telecommunications Oy | A method for storing and retrieving data and a memory arrangement |
JP3552318B2 (ja) * | 1995-01-11 | 2004-08-11 | 株式会社日立製作所 | 文書検索方法およびシステム |
EP1107126A2 (en) * | 1999-12-08 | 2001-06-13 | Hewlett-Packard Company, A Delaware Corporation | A fast, efficient, adaptive, hybrid tree |
US6931424B1 (en) * | 2000-03-21 | 2005-08-16 | Alantro Communications, Inc. | Storage efficient minimization logic |
JP4271214B2 (ja) * | 2006-07-07 | 2009-06-03 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4402168B1 (ja) * | 2008-09-28 | 2010-01-20 | 株式会社エスグランツ | コード列検索装置、検索方法及びプログラム |
JP4402169B1 (ja) * | 2009-02-23 | 2010-01-20 | 株式会社エスグランツ | コード列検索装置、検索方法及びプログラム |
-
2009
- 2009-03-29 JP JP2009080726A patent/JP4464459B1/ja active Active
- 2009-12-16 WO PCT/JP2009/006922 patent/WO2010116435A1/ja active Application Filing
- 2009-12-16 CN CN2009801595558A patent/CN102449624B/zh not_active Expired - Fee Related
- 2009-12-16 EP EP09842945A patent/EP2416258A4/en not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0561910A (ja) * | 1991-09-02 | 1993-03-12 | Fujitsu Sooshiaru Sci Raboratori:Kk | 全文インデツクス検索方法 |
JPH05324722A (ja) * | 1992-03-24 | 1993-12-07 | Ricoh Co Ltd | 文書検索方式 |
JPH06149882A (ja) * | 1992-11-06 | 1994-05-31 | Fujitsu Ltd | 全文データベース検索装置 |
JP2002229987A (ja) * | 2001-01-11 | 2002-08-16 | Internatl Business Mach Corp <Ibm> | パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体 |
Also Published As
Publication number | Publication date |
---|---|
WO2010116435A1 (ja) | 2010-10-14 |
EP2416258A4 (en) | 2013-02-27 |
CN102449624A (zh) | 2012-05-09 |
JP4464459B1 (ja) | 2010-05-19 |
EP2416258A1 (en) | 2012-02-08 |
CN102449624B (zh) | 2013-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4535130B2 (ja) | 文字列照合装置および文字列照合プログラム | |
JP4402169B1 (ja) | コード列検索装置、検索方法及びプログラム | |
JP4160548B2 (ja) | 文書要約作成システム、方法、及びプログラム | |
CN108027816B (zh) | 数据管理系统、数据管理方法及记录介质 | |
JP2005165598A (ja) | 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム | |
JP4402168B1 (ja) | コード列検索装置、検索方法及びプログラム | |
JP5190898B2 (ja) | コード列検索装置、検索方法及びプログラム | |
JP4464459B1 (ja) | コード列検索装置、検索方法及びプログラム | |
JP2022103676A (ja) | 情報処理装置、情報処理方法、プログラム | |
WO2010095179A1 (ja) | コード列検索装置、検索方法及びプログラム | |
JPH05225238A (ja) | データベース検索システム | |
JP4429373B1 (ja) | コード列検索装置、検索方法及びプログラム | |
JP5077380B2 (ja) | 文字列照合装置および文字列照合プログラム | |
JPH05101102A (ja) | 検索装置 | |
JP3260428B2 (ja) | 情報検索処理装置 | |
JP5807592B2 (ja) | 符号化方法、符号化装置及びコンピュータプログラム | |
WO2010035366A1 (ja) | コード列検索装置、検索方法及びプログラム | |
JP4319827B2 (ja) | 文書検索プログラム | |
KR100904835B1 (ko) | 문자열 대조 장치 및 문자열 대조 프로그램을 기록한 컴퓨터 판독 가능한 기억 매체 | |
US7840583B2 (en) | Search device and recording medium | |
JPWO2009050797A1 (ja) | 検索装置および検索方法 | |
JPH07200622A (ja) | 情報管理システム | |
JP2001075982A (ja) | 文書検索方法、文書検索用インデックスの作成方法、文書検索装置、及び記録媒体 | |
KR102326105B1 (ko) | 워드 추출 방법 및 장치 | |
JPS59100939A (ja) | 日本語入力装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100218 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130226 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4464459 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130226 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130226 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130226 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160226 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |