JP4114600B2 - 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム - Google Patents

可変長文字列検索装置及び可変長文字列検索方法並びにプログラム Download PDF

Info

Publication number
JP4114600B2
JP4114600B2 JP2003402741A JP2003402741A JP4114600B2 JP 4114600 B2 JP4114600 B2 JP 4114600B2 JP 2003402741 A JP2003402741 A JP 2003402741A JP 2003402741 A JP2003402741 A JP 2003402741A JP 4114600 B2 JP4114600 B2 JP 4114600B2
Authority
JP
Japan
Prior art keywords
pattern
registered
character string
length
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.)
Expired - Fee Related
Application number
JP2003402741A
Other languages
English (en)
Other versions
JP2005165598A (ja
Inventor
顕弘 元木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2003402741A priority Critical patent/JP4114600B2/ja
Priority to US11/000,913 priority patent/US20050120017A1/en
Publication of JP2005165598A publication Critical patent/JP2005165598A/ja
Application granted granted Critical
Publication of JP4114600B2 publication Critical patent/JP4114600B2/ja
Priority to US12/965,602 priority patent/US8095526B2/en
Priority to US13/276,676 priority patent/US8200646B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access

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)

Description

本発明は、可変長文字列データの情報検索技術に関し、特に可変長文字列に対する前方または後方最大一致検索の検索効率を向上させる技術に関する。
初めに、本発明の主たる適用対象である前方最大一致検索(Longest Prefix Match)の一般形について図12を用いて説明する。前方最大一致検索では、パターンリストの中から検索キー(検索文字列)と先頭文字から一致するもののうち最も一致する部分が長いパターンが検索結果となる。図12の例では、検索キーと先頭文字から一致するパターンは「ABCD」「ABCDEFGH」「ABCDE」の3パターンがあるが、最もマッチする部分が長いパターン「ABCDEFGH」が検索結果として出力される。このとき、検索キーのパターンよりも長い部分はどのような文字列であっても構わず、一方、パターン「BCDE」のように、検索キーの部分文字列であっても先頭が一致していないパターンは前方一致の条件を満たさない。
可変長文字列データの情報検索、特に可変長文字列の前方一致検索、後方一致検索を行うシステムにおいて、大量のパターンの中から検索キーに一致するパターンを高速に検索する方法として、従来、次のような技術が知られている(例えば、特許文献1参照)。
この特許文献1に記載された従来の技術は、前方一致検索に関するものであり、文字列データの先頭n文字(n:自然数)からインデックス表を作成するインデックス作成手段と、インデックス表を走査して前方一致する文字列を抽出するデータ検索手段から構成されている。データ検索手段において、検索条件に指定された文字列がインデックスデータの文字列よりも長い場合、抽出した文字列データの残り部分の各文字を比較して検索条件に一致する文字列の検索を行う。
特開平4−209069号公報
この従来技術の問題点を図13を用いて説明する。従来技術では、インデックスデータを文字列データの先頭n文字から作成している。そのため、パターン1301〜1304のみが登録されているような検索においては、パターン1301〜1304は先頭4文字が共通なので、先頭から5文字(区切り1351より左側)をインデックスとすることで、インデックスによる登録パターンの絞り込みが効率的に行うことができる。同様に、パターン1305〜1310のみから構成されるパターンに対する検索においては、各パターンは先頭から9文字目までは共通なので、先頭から10文字(区切り1352より左側)をインデックスとすればよい。
ところが、上記の両方のパターン1301〜1310が検索対象となる場合には、不都合が生じる。パターン1301〜1304を効率的に絞り込むためには、先頭から5文字をインデックスとするのが望ましいが、その場合にはパターン1305〜1310のインデックスは全て同じになってしまう。このため、検索キーとして「PQRSPQRSP」から始まる文字列が入力された場合には、インデックスによる絞り込みが十分に行われず、その後に行うサフィックス部分の比較コストが大きくなり、検索効率が低下する。このように、従来技術では、登録パターンの重複部分の長さにばらつきがあるような場合にはインデックスによる絞り込みが十分に行われず、文字列の残りの部分の比較のコストが大きくなるという問題がある。
〔発明の目的〕
そこで、本発明の目的は、登録パターンの重複部分の長さにばらつきがある場合においても、高い検索効率を得られるようにすることにある。
本発明にかかる第1の可変長文字列検索装置は、
パターン格納部と、
可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から前記登録パターンの長さ以下で且つ最長の長さを選択し、前記登録パターンの先頭から該選択した長さ分の文字データをプレフィックスとして抽出すると共に、抽出した該プレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのプレフィックスを抽出し、前記パターン格納部に登録されているインデックス要素を、該抽出した各長さのプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部と
を備えたことを特徴とする。
本発明にかかる第2の可変長文字列検索装置は、
パターン格納部と、
可変長文字列データである登録パターンが入力される毎に、前記登録パターンの先頭から末尾に向かって区切り文字の検出処理を行い、予め定められた個数の区切り文字を検出した場合は、前記登録パターンの先頭文字から該検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録する一方、前記登録パターンの末尾まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの先頭文字から最後に検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの先頭から末尾に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録されているインデックス要素を、前記検索キーの先頭文字から検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部と
を備えたことを特徴とする。
本発明にかかる第3の可変長文字列検索装置は、第1または第2の可変長文字列検索装置において、
前記パターン登録部は、前記登録パターンのプレフィックスを前記パターン格納部に登録する際、前記登録パターンからプレフィックスを除いたサフィックスを前記プレフィックスに関連付けて登録し、
前記検索実行部は、
前記検索キーから前記各プレフィックスを抽出するプレフィックス抽出部と、
該プレフィックス抽出部によって抽出した前記各プレフィックスを使用して前記パターン格納部を検索するプレフィックス検索部と、
該プレフィックス検索部によって検索されたプレフィックスに関連付けて登録されている登録パターンのサフィックスについて、前記検索キーのサフィックスとの一致検証を行うサフィックス照合部と
を含むことを特徴とする。
本発明にかかる第4の可変長文字列検索装置は、第1乃至第3の何れかの可変長文字列検索装置において、
前記パターン登録部は、前記登録パターンのプレフィックスを前記パターン格納部に登録する際、前記プレフィックスに対してハッシュ関数を適用することにより得られるハッシュ値に応じた位置に登録し、
前記プレフィックス検索部は、前記プレフィックス抽出部によって抽出された各プレフィックスに対するハッシュ値を前記ハッシュ関数を用いて求め、該求めた各ハッシュ値を使用して前記パターン格納部を検索する
ことを特徴とする。
本発明にかかる第5の可変長文字列検索装置は、
パターン格納部と、
可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から、前記登録パターンの長さ以下で且つ最長の長さを選択し、前記登録パターンの末尾から該選択した長さ分の文字データをサフィックスとして抽出すると共に、抽出した該サフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのサフィックスを抽出し、前記パターン格納部に登録されているインデックス要素を、該抽出した各長さのサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部と
を備えたことを特徴とする。
本発明にかかる第6の可変長文字列検索装置は、
パターン格納部と、
可変長文字列データである登録パターンが入力される毎に、前記登録パターンの末尾から先頭に向かって区切り文字の検出処理を行い、予め定められた個数の区切り文字を検出した場合は、前記登録パターンの末尾文字から該検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録する一方、前記登録パターンの先頭まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの末尾文字から最後に検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの末尾から先頭に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録されているインデックス要素を、前記検索キーの末尾文字から検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部と
を備えたことを特徴とする。
本発明にかかる第7の可変長文字列検索装置は、第5または第6の可変長文字列検索装置において、
前記パターン登録部は、前記登録パターンのサフィックスを前記パターン格納部に登録する際、前記登録パターンからサフィックスを除いたプレフィックスを前記サフィックスに関連付けて登録し、
前記検索実行部は、
前記検索キーから前記各サフィックスを抽出するサフィックス抽出部と、
該サフィックス抽出部によって抽出した前記各サフィックスを使用して前記パターン格納部を検索するサフィックス検索部と、
該サフィックス検索部によって検索されたサフィックスに関連付けて登録されている登録パターンのプレフィックスについて、前記検索キーのプレフィックスとの一致検証を行うプレフィックス照合部と
を含むことを特徴とする。
本発明にかかる第8の可変長文字列検索装置は、第5乃至第7の何れかの可変長文字列検索装置において、
前記パターン登録部は、前記登録パターンのサフィックスを前記パターン格納部に登録する際、前記サフィックスに対してハッシュ関数を適用することにより得られるハッシュ値に応じた位置に登録し、
前記サフィックス検索部は、前記サフィックス抽出部によって抽出された各サフィックスに対するハッシュ値を前記ハッシュ関数を用いて求め、該求めた各ハッシュ値を使用して前記パターン格納部を検索する
ことを特徴とする。
本発明にかかる第1の可変長文字列検索方法は、
可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から、前記登録パターンの長さ以下で且つ最長の長さを選択し、
前記登録パターンの先頭から該選択した長さ分の文字データをプレフィックスとして抽出すると共に、抽出した該プレフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録し、
可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのプレフィックスを抽出し、
前記パターン格納部に登録したインデックス要素を、該抽出した各長さのプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む
ことを特徴とする。
本発明にかかる第2の可変長文字列検索方法は、
可変長文字列データである登録パターンが入力される毎に、前記登録パターンの先頭から末尾に向かって区切り文字の検出処理を行い、
予め定められた個数の区切り文字を検出した場合は、前記登録パターンの先頭文字から該検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録する一方で、
前記登録パターンの末尾まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの先頭文字から最後に検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録し、
可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの先頭から末尾に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録したインデックス要素を、前記検索キーの先頭文字から検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む
ことを特徴とする。
本発明にかかる第3の可変長文字列検索方法は、
可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から、前記登録パターンの長さ以下で且つ最長の長さを選択し、前記登録パターンの末尾から該選択した長さ分の文字データをサフィックスとして抽出すると共に、抽出した該サフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録し、
可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのサフィックスを抽出し、前記パターン格納部に登録したインデックス要素を、該抽出した各長さのサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む
ことを特徴とする。
本発明にかかる第4の可変長文字列検索方法は、
可変長文字列データである登録パターンが入力される毎に、前記登録パターンの末尾から先頭に向かって区切り文字の検出処理を行い、
予め定められた個数の区切り文字を検出した場合は、前記登録パターンの末尾文字から該検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録する一方で、
前記登録パターンの先頭まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの末尾文字から最後に検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録し、
可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの末尾から先頭に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録したインデックス要素を、前記検索キーの末尾文字から検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む
ことを特徴とする。
本発明にかかる第1のプログラムは、
パターン格納部を備えたコンピュータを可変長文字列検索装置として機能させるためのプログラムであって、前記コンピュータを、
可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から、前記登録パターンの長さ以下で且つ最長の長さを選択し、前記登録パターンの先頭から該選択した長さ分の文字データをプレフィックスとして抽出すると共に、抽出した該プレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのプレフィックスを抽出し、前記パターン格納部に登録されているインデックス要素を、該抽出した各長さのプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部として機能させる。
本発明にかかる第2のプログラムは、
パターン格納部を備えたコンピュータを可変長文字列検索装置として機能させるためのプログラムであって、前記コンピュータを、
可変長文字列データである登録パターンが入力される毎に、前記登録パターンの先頭から末尾に向かって区切り文字の検出処理を行い、予め定められた個数の区切り文字を検出した場合は、前記登録パターンの先頭文字から該検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録する一方、前記登録パターンの末尾まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの先頭文字から最後に検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの先頭から末尾に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録されているインデックス要素を、前記検索キーの先頭文字から検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部として機能させる。
本発明にかかる第3のプログラムは、
パターン格納部を備えたコンピュータを可変長文字列検索装置として機能させるためのプログラムであって、前記コンピュータを、
可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から、前記登録パターンの長さ以下で且つ最長の長さを選択し、前記登録パターンの末尾から該選択した長さ分の文字データをサフィックスとして抽出すると共に、抽出した該サフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのサフィックスを抽出し、前記パターン格納部に登録されているインデックス要素を、該抽出した各長さのサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部として機能させる。
本発明にかかる第4のプログラムは、
パターン格納部を備えたコンピュータを可変長文字列検索装置として機能させるためのプログラムであって、前記コンピュータを、
可変長文字列データである登録パターンが入力される毎に、前記登録パターンの末尾から先頭に向かって区切り文字の検出処理を行い、予め定められた個数の区切り文字を検出した場合は、前記登録パターンの末尾文字から該検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録する一方、前記登録パターンの先頭まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの末尾文字から最後に検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの末尾から先頭に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録されているインデックス要素を、前記検索キーの末尾文字から検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部として機能させる。
本発明にかかる第1の可変長文字列検索装置、可変長文字列検索方法およびプログラムは、登録パターンの重複部分の長さにばらつきがある場合であっても、前方最長一致検索において高い検索効率を得られるという効果を有する。
その理由は、登録パターンから抽出可能な複数の異なる長さのプレフィックスの内の、最長のプレフィックスを登録パターンに対するインデックス要素とし、検索キーに従った検索時には、検索キーから抽出した各長さのプレフィックスを使用してインデックス要素を検索し、検索対象となる登録パターンを絞り込むようにしているからである。つまり、各登録パターンについて、抽出可能な複数の異なる長さのプレフィックスの内の、最長のプレフィックスをその登録パターンに対するインデックス要素としているので、各登録パターンのインデックス要素が同じものになってしまう確率を低くすることができ、その結果、インデックス検索による絞り込み効率を高くし、それ以後に行う登録パターンと検索キーのインデックス要素以外の部分の比較照合処理のコストを削減することができるからである。また、最長のプレフィックスをインデックス要素としたので、上記比較照合処理で比較対象にする文字が少なくなり、検索効率を高いものにすることができる。
本発明にかかる第2の可変長文字列検索装置、可変長文字列検索方法およびプログラムは、第1の可変長文字列検索装置、可変長文字列検索方法およびプログラムと同様の効果を有する。特に区切り文字“/”により抽出する複数のプレフィックスを指定した場合には、インターネットのWWWページのURLの検索を行う際の検索効率を高いものにすることができる。
本発明にかかる第の可変長文字列検索装置は、第1、第2の可変長文字列検索装置と同様の効果を有する。
その理由は、パターン登録部が、登録パターンのプレフィックスをパターン格納部に登録する際、登録パターンのサフィックスをプレフィックスに関連付けてパターン格納部に登録する構成を有し、検索実行部が、検索キーから各プレフィックスを抽出するプレフィックス抽出部と、プレフィックス抽出部で抽出した各プレフィックスを使用してパターン格納部を検索するプレフィックス検索部と、プレフィックス検索部で検索されたプレフィックスに関連付けて登録されている登録パターンのサフィックスについて、検索キーのサフィックスとの一致検証を行うサフィックス照合部とを備えているからである。
本発明にかかる第の可変長文字列検索装置は、前方最長一致検索の検索効率を更に高めることができるという効果を有する。
その理由は、インデックス要素となるプレフィックスをパターン格納部に登録する際、その収容位置を、そのプレフィックスに対してハッシュ関数を適用することにより得られるハッシュ値に応じた位置としているからである。
本発明にかかる第の可変長文字列検索装置、第3の可変長文字列検索方法および第3のプログラムは、登録パターンの重複部分の長さにばらつきがある場合であっても、後方最長一致検索において高い検索効率を得られるという効果を有する。
その理由は、登録パターンから抽出可能な、登録パターン末尾部分からの長さがそれぞれ異なる複数のサフィックスの内の、最長のサフィックス登録パターンに対するインデックス要素としてパターン格納部に登録し、検索キーに従った検索時には、検索キーから抽出可能な各長さのサフィックスを使用してインデックス要素を検索し、検索対象となる登録パターンを絞り込むようにしているからである。
本発明にかかる第6の可変長文字列検索装置、第4の可変長文字列検索方法および第4のプログラムは、第5の可変長文字列検索装置、可変長文字列検索方法およびプログラムと同様の効果を有する。特に区切り文字“/”により抽出する複数のプレフィックスを指定した場合には、インターネットのWWWページのURLの検索を行う際の検索効率を高いものにすることができる。
本発明にかかる第の可変長文字列検索装置は、第5または第6の可変長文字列検索装置と同様の効果を有する。
その理由は、パターン登録部が、登録パターンのサフィックスをパターン格納部に登録する際、登録パターンのプレフィックスをサフィックスに関連付けてパターン格納部に登録する構成を有し、検索実行部が、検索キーから各サフィックスを抽出するサフィックス抽出部と、サフィックス抽出部で抽出した各サフィックスを使用してパターン格納部を検索するサフィックス検索部と、サフィックス検索部で検索されたサフィックスに関連付けて登録されている登録パターンのプレフィックスについて、検索キーのプレフィックスとの一致検証を行うプレフィックス照合部とを備えているからである。
本発明にかかる第の可変長文字列検索装置は、第5乃至第7の何れかの可変長文字列検索装置よりも後方最長一致検索の検索効率を高いものにできるという効果を有する。
その理由は、インデックス要素となるサフィックスをパターン格納部に登録する際、その収容位置を、そのサフィックスに対してハッシュ関数を適用することにより得られるハッシュ値に応じた位置としているからである。
本発明は可変長文字列データの検索、特に可変長文字列の前方最長一致検索を行う方法及びそれを利用した装置に関する発明である。あらかじめ登録された複数のパターンリストの中から、検索キーとして指定された可変長文字列データに一致するパターンを検索する。可変長文字列データを構成する個々の文字は、人間が認識可能な文字だけでなく、バイナリデータでもよい。また、1文字を表現するために必要なビット数に制限はなく、必ずしも1バイトである必要はない(1ビットであっても2バイトであっても構わない)。
次に本発明の実施の形態について図面を参照して詳細に説明する。
〔第一の実施の形態の構成の説明〕
本発明にかかる可変長文字列検索装置の第一の実施の形態について図1を参照して説明する。本実施の形態の可変長文字列検索装置1は、大別してパターン登録部131と検索実行部11とパターン格納部12とから構成される。
パターン登録部131は、登録パターン132が入力されると、所定の抽出ルールに基づいて長さが異なるN個(N:自然数)のプレフィックスを抽出し、更に、その中から所定の選択ルールに従って1個のプレフィックスを選択し、それを登録パターン132に対するインデックス要素とする。その後、インデックス要素とするプレフィックスに対して、予め定めたハッシュ関数を適用し、得られたハッシュ値に応じたプレフィックスパターンリスト121上の位置にプレフィックスを登録する。つまり、プレフィックスパターンリスト121上には、個々のプレフィックスをインデックス要素とするインデックスが構成されることになる。一方、登録パターン132からプレフィックスを除いたサフィックスは、サフィックスパターンリスト122に登録する。
ここで、本実施の形態で使用する抽出ルールおよび選択ルールについて説明しておく。抽出ルールは、登録パターン先頭部分からの長さがL1〜LN(L1〜LNはいずれも自然数)のN種類のプレフィックスを、登録パターンから抽出(作成)するルールである。抽出するプレフィックスの長さは、予め定めておく必要があるが、長さの組み合わせはどのようなものであっても良い。長さの組み合わせ方の一例としては、例えば、Lk=k*M(M:自然数、k=1、2・・・N)のようにN種類のMの倍数を使用する方法を採用することができる。本実施の形態では、上記方法を採用するものとする。また、選択ルールは、抽出ルールに従って抽出した複数のプレフィックスの中から1つのプレフィックスを選択するルールであり、本実施の形態では、抽出ルールに従って抽出した複数のプレフィックスの内の、最長のプレフィックスを選択するものとする。
検索実行部11は、検索キー114を受信すると、プレフィックスパターンリスト121及びサフィックスパターンリスト122から検索キー114に一致する登録パターンを検索し、検索結果115を出力する。このような機能を有する検索実行部11は、プレフィックス抽出部111とプレフィックス検索部112とサフィックス照合部113とから構成されている。
プレフィックス抽出部111は、入力された検索キー114から上述した所定の抽出ルールに基づいて、N個のプレフィックスを抽出し、プレフィックス情報116として出力する。
プレフィックス検索部112は、プレフィックス抽出部111から受信したプレフィックス情報116のそれぞれについて、予め定めたハッシュ関数を適用し、得られたハッシュ値に基づいてプレフィックスパターンリスト121に対して検索を行い、プレフィックス検索結果117を出力する。
サフィックス照合部113は、プレフィックス検索結果117を受信し、前段のプレフィックス検索部112において一致するプレフィックスが見つかった場合に、サフィックスパターンリスト122から当該プレフィックスに対応するエントリを読み出し、検索キー114のプレフィックス以外の部分(サフィックス)が登録パターンと一致しているかどうかの検証を行い、一致している場合は、上記登録パターンを検索結果115として出力する。
なお、上述した構成を有する可変長文字列検索装置1は、コンピュータによって実現可能である。可変長文字列検索装置1をコンピュータによって実現する場合には、ディスク、半導体メモリ、その他の記録媒体に可変長文字列検索装置用のプログラムを記録しておく。コンピュータは、上記プログラムを読み込み、それに従って自身の動作を制御することにより、自コンピュータ上に、検索実行部11、パターン格納部12およびパターン登録部131を実現する。
〔第一の実施の形態の動作説明〕
次に、本実施の形態の動作について詳細に説明する。先ず、パターン登録時の動作を説明し、次に検索時の動作について説明する。なお、以下の説明では、抽出ルールとして、N=4、M=4とした抽出ルールを使用するものとする。即ち、長さが4、8、12、16となる4種類のプレフィックスを抽出する抽出ルールを使用するものとする。
パターン登録部131に長さ11の新規登録パターン201「ABCDEFGHXYZ」が入力された場合について図2、図3を用いて説明する。
登録パターン201が入力されると、最初に登録パターン201に対するインデックス要素とするプレフィックス202の長さを決定する(図3のS31)。抽出ルールに従って抽出可能なN種類のプレフィックス長の中から、選択ルールに従って、登録パターン以下で最も長い値を、登録パターンのプレフィックスの長さとする。図2の例では、プレフィックスの長さが4、8、12、16の4種類で、登録パターン201の長さは11なので、登録パターン201のプレフィックス長は8となる。
その後、プレフィックス202及びサフィックス203を抽出する(S32)。この例の場合、プレフィックス202は「ABCDEFGH」、サフィックス203は「XYZ」となる。
次に、サフィックス203をサフィックスパターンリスト122に登録する(S33)。サフィックスパターンリスト122のデータ構造はどのようなものを用いても構わない。
その後、プレフィックス202に対して予め定められたハッシュ関数Hp(x)を適用してハッシュ値Xhを得る(S34)。そして、最後に、プレフィックスパターンリスト121上の、上記ハッシュ値Xhと対応するアドレスにプレフィックス202とサフィックスパターンリスト122内に格納されているサフィックス203へのポインタ情報を登録する(S35)。
なお、ステップS35において、プレフィックスパターンリスト121上のハッシュ値Xhと対応するアドレスに、既にプレフィックス及びポインタ情報が登録されている場合は、例えば、次のような処理を行う。先ず、ポインタ情報が指し示しているサフィックスパターンリスト122中のエントリに注目する。そして、注目エントリに、次のエントリを指し示すポインタ情報が登録されていない場合は、ステップS33でサフィックスを登録したエントリを指し示すポインタ情報を上記注目エントリに登録し、処理を終了する。これに対して、注目エントリに、次のエントリを指し示すポインタ情報が登録されている場合には、上記次のエントリに注目する。そして、新たな注目エントリにポインタ情報が登録されているか否かに従って、前述した処理と同様の処理を行う。
また、登録パターン201の長さとプレフィックス202の長さが同じ場合は、登録パターン201全体をプレフィックスとし、サフィックスは長さ0として扱う。サフィックスパターンリスト122には長さ0のサフィックスとして登録する(プレフィックスの登録は上記の説明の通りである)。
以上で、パターンの登録処理は完了する。
次に、パターン検索時の動作について図4を用いて説明する。
プレフィックスパターンリスト121及びサフィックスパターンリスト122からなるパターンリストに、登録パターン421“ABCDEF”、登録パターン422“BCDEFGH”及び登録パターン423“ABCDEFGHXYZ”の3つの登録パターンが登録されているものとする。これらの登録パターンは、前述したパターン登録方法に従って、プレフィックスパターンリスト121とサフィックスパターンリスト122に分かれて格納されている。このパターンリストに対し前方最長一致検索を行う。具体的にはパターンリストに登録された登録パターンのうち、検索キー401“ABCDEFGHIJKLMN”の部分文字列で且つ前方一致する登録パターンの中で最長のパターンを検索をする。
検索時の動作説明に入る前にハッシュ値の定義を行う。プレフィックスに対するハッシュ値を計算するハッシュ関数をHp(x)としたとき、プレフィックスとハッシュ値の対応関係を以下のように定義する:H1=Hp(“ABCD”)、H2=Hp(“ABCDEFGH”)、H3=Hp(“ABCDEFGHIJKL”)、H4=Hp(“BCDE”)。
プレフィックス抽出部111は、検索キー401“ABCDEFGHIJKLMN”が入力されると、抽出ルールに従って検索キー401からN種類の長さのプレフィックスを作成する(S41)。基本的にはN種類の長さのプレフィックスすべてを作成するが、検索キー401よりも長いプレフィックスについてはプレフィックスの作成を行わない。図4の例では、4種類の長さのプレフィックスが存在するが、入力された検索キー401の長さは14文字なので、長さが4、8、12であるプレフィックス411、412、413についてはプレフィックス作成を行うが、長さ16のプレフィックスは作成しない。作成した3種類の長さのプレフィックス411〜413をプレフィックス検索部112に通知する。
プレフィックス検索部112の処理は、プレフィックスに対するハッシュ値の計算(S42)と、得られたハッシュ値によるプレフィックスパターンリスト121の検索(S43)の二段階で行われる。最初のハッシュ値の計算ステップ(S42)では、プレフィクス抽出部111で作成されたプレフィックス411〜413の各々に、予め定めたハッシュ関数Hp(x)を適用し、プレフィックスに対するハッシュ値を得る。H1、H2、H3は、それぞれプレフィックス411、412、413に対するハッシュ値である。
次に、得られたハッシュ値に基づきプレフィックスパターンリスト121の検索を行う。プレフィックス411のハッシュ値H1が指しているアドレスにはパターン421のプレフィックスが登録されており、検索キー401とパターン421はプレフィックス検索の段階では前方一致していることが分かる。同様に、プレフィックス412のハッシュ値H2が指しているアドレスにも対応するパターン423が登録されている。一方、プレフィックス413のハッシュ値H3に対応するエントリはプレフィックスパターンリスト121には登録されていない。したがって、プレフィックス検索の段階で、検索キー401と前方一致する登録パターンの候補は、登録パターン421と423の二つに絞られる。
サフィックス照合部113は、検索キー401とプレフィックスが一致した登録パターンのサフィックスについて一致検証を行う(S44)。上記のプレフィックス検索で検索キー401と一致する登録パターンの候補は、登録パターン421、423の二つなので、この二つの登録パターンについてサフィックス照合を行う(S44−1、S44−3)。
登録パターン421の場合、検索キー401と一致したプレフィックスの長さは4なので、検索キー401のサフィックスは5文字目以降の「EFGHIJKLMN」、登録パターン421のサフィックスは「EF」である。登録パターン421と検索キー401はサフィックスの最初の2文字が一致しており、全体としては先頭6文字が一致している。したがって、部分文字列かつ前方一致文字列という検索条件を満たしており、登録パターン421は検索キー401に一致していることになる。一方、登録パターン423の場合、検索キー401と一致したプレフィックスの長さは8なので、検索キー401のサフィックスは9文字目以降の「IJKLMN」、パターン423のサフィックスは「XYZ」である。検索キー401とパターン423のサフィックスは明らかに異なり、パターン423は検索キー401と一致していないことになる。検索キー401に一致するパターンとしてパターン421が見つかったので、パターン421を検索結果として出力する。
上記の例では、検索キー401と一致するパターンが一つしか見つからなかったが、複数のパターンが見つかることもありえる。例えば、“ABCDEFG”と“ABCDE”という二つの登録パターンが登録されていた場合には、両者とも検索キー401に一致することになるが、この場合は前方最長一致検索の定義に基づき、検索キー401により長く一致している方の登録パターンを選択する。従って、“ABCDEFG”が検索結果として選択される。
なお、ステップS44のプレフィックス検索において、既に一致しないことが分かっている登録パターン422についてはサフィックス照合は行わない(ステップSS44−2は行わない)。また、ステップS44−1、S44−3のサフィックス照合において、サフィックス照合対象にしているエントリに、次のエントリを指し示すポインタ情報が登録されている場合には、このポインタ情報が指し示すエントリについてもサフィックス照合を行う。
以上で、パターン検索処理が完了する。
〔第一の実施の形態の効果〕
インデックスとしてN種類(N:自然数)の長さのプレフィックスを考え、パターン登録時にはN種類の長さのプレフィックスの中で最長のものをインデックス要素として採用し、検索時にはN種類のプレフィックス全てについてインデックス検索を行う。インデックスとして複数の長さの文字列を収容できることにより、インデックス検索によるパターンの絞り込みを効率的に行うことができ、登録パターンと検索キーのプレフィックス以外の部分の比較照合処理のコストを削減することが可能になる。
〔発明の第二の実施の形態〕
第一の実施の形態では、プレフィックス抽出部111が、検索キーから予め定められたN種類の長さのプレフィックスを抽出し、パターン登録部131が、登録パターンから予め定められているN種類の長さに基づいて、インデックス要素とするプレフィックスを抽出するようにしたが、本発明の第二の実施の形態では、インデックス抽出部111が、予め定められた区切り文字に基づいてN種類の長さのプレフィックスを抽出し、パターン登録部131が、登録パターンから予め定められている区切り文字に基づいてインデックス要素とするプレフィックスを抽出することを特徴とする。
本実施の形態におけるプレフィックス抽出部111の動作について、図5及び図6を使用して説明する。本説明では、N=4として説明する。また、区切り文字を“/”とし、図5に示すような検索キー51が入力された場合を考える。
プレフィックス抽出部111は、検索キー51が入力されると、その先頭文字に注目する(図6、S61がYES、S62)。その後、現在注目している文字が区切り文字“/”であるか否かを判断する(S63)。
そして、区切り文字でない場合は、次の文字に注目する(S62)。これに対して、区切り文字である場合は、検索キー51の先頭文字から現在注目中の区切り文字の直前の文字までの文字列をプレフィックスとして抽出し、プレフィックス検索部112に渡す(S64)。但し、注目中の文字が第1文字目である場合は、その前に文字が存在しないので、プレフィックスの抽出処理は行わない。その後、所定数N=4個のプレフィックスを抽出したか否かを判断し(S65)、抽出していない場合は、ステップS62に戻り、抽出している場合は、処理を終了する。また、ステップS61において、検索キーの次の文字がないと判断した場合も処理を終了する。
図5の例の場合、検索キー51の第1文字目〜第7文字目には区切り文字が存在しないので、注目文字が第8文字目の区切り文字531となるまでは、ステップS61〜S63が繰り返し行われる。そして、注目文字が1つ目の区切り文字531となると(S63がYES)、先頭文字“a”から上記区切り文字531の直前の文字“m”までを、1つめのプレフィックス521とする。以下、同様に先頭から2つ目の区切り文字532、3つ目の区切り文字533の直前の文字までを、それぞれ2つ目のプレフィックス522、3つ目のプレフィックス523とする(S64)。4種類のプレフィックスを作成することになっているが、4つ目の区切り文字は検索キー51には含まれていないため(S61がNO)、プレフィックス抽出手段111は、4つ目のプレフィックスは作成せず、処理を終了する。
次に、本実施の形態におけるパターン登録部131の動作について、図7及び図8を使用して説明する。本説明では、N=4として説明する。また、区切り文字を“/”とし、図7に示すような登録パターン751が入力された場合を考える。
パターン登録部131は、登録パターン751が入力されると、その第1文字目に注目する(図8、S81がYES、S82)。その後、注目した文字が区切り文字“/”であるか否かを判断する(S83)。
そして、区切り文字でない場合は、次の文字に注目する(S82)。これに対して、区切り文字である場合は、保持しているプレフィックス候補を、登録パターン751の先頭文字から現在注目中の区切り文字の直前の文字までの文字列で置き換える(ステップS84)。但し、注目中の文字が第1文字目である場合は、その前に文字が存在しないので、プレフィックス候補の更新は行わない。
その後、置き換えたプレフィックス候補が第N(=4)番目のプレフィックス候補であるか否かを判断する。そして、第4番目のプレフィックス候補でない場合(S85がNO)は、次の文字に注目する(S82)。これに対して、第4番目のプレフィックス候補である場合には、ステップS84で置き換えたプレフィックス候補を登録パターン751に対するインデックス要素としてプレフィックスパターンリスト121に登録する(ステップS86)。また、ステップS86では、登録パターン751のサフィックスをサフィックスパターンリスト122に登録する処理や、ポインタ情報の登録処理も行う。なお、ステップS81において、検索キーの次の文字がないと判断した場合も、ステップS86の処理を行う。
図7の例の場合、登録パターン751の第1文字目〜第4文字目までは、区切り文字でないので、ステップS81〜S83の処理が繰り返し行われる。そして、注目文字が1つ目の区切り文字731となると(S83がYES)、先頭文字“x”から上記区切り文字731の直前の文字“w”までの文字列を、第1番目のプレフィックス候補721として保持する(S84)。その後,注目文字が2つめの区切り文字732になると(S83がYES)、保持している第1番目のプレフィックス候補721を、先頭文字“x”から上記区切り文字732の直前の文字“m”までの文字列(第2番目のプレフィックス候補722)で置き換える(S84)。以下、注目文字が3つ目、4つ目の区切り文字733、734となる毎に同様の処理が行われ、第3番目、第4番目のプレフィックス候補723、724が保持される(S84)。そして、第4番目のプレフィックス候補724を保持すると、それを登録パターン751に対するインデックス要素として、プレフィックスパターンリスト121に登録する(S86)。なお、登録パターン751には、5つ目の区切り文字735も含まれているが、N=4としているので、5つめの区切り文字735は区切り文字としては使用しない。
以上の説明では、区切り文字の例として“/”を挙げているが、区切り文字の長さ、位置、内容には制約はない。区切り文字の長さは1以上であればどのような長さでも構わず、図9(a)に示すように、“://”のような文字列を区切り文字として指定することや、同図(b)に示すように、“A”と“B”の両方を区切り文字として指定することや、同図(c)に示すように、2度目と4度目に現れた“C”を区切り文字として指定することも可能である。
本実施の形態の区切り文字によるプレフィックスの決定方法は、インターネットのWWWページの場所を示すURLなどのように、長さよりも区切り文字に特徴があるパターンの検索を行う際に、プレフィックスによるパターンの絞り込みを効率的に行うことができる。
〔本発明の第三の実施の形態〕
第一の実施の形態及び第二の実施の形態は、可変長文字列の前方最長一致検索を行うものであるが、第三の実施の形態は後方最長一致検索を行うことを特徴とする。第3の実施の形態の説明は、図10及び図11を用いて行う。
図10は後方最長一致検索を行う可変長文字列検索装置1aの構成例を示すブロック図である。同図を参照すると、本実施の形態の可変長文字列検索装置1aは、大別してパターン登録部131aと検索実行部11aとパターン格納部12aとから構成される。
パターン登録部131aは、登録パターン132が入力されると、所定の抽出ルールに基づいて登録パターン132の末尾部分からの長さが異なるN個(N:自然数)のサフィックスを抽出し、更に、選択ルールに基づいてその内の最長のものを選択し、それを登録パターンに対するインデックス要素とする。その後、インデックス要素とするサフィックスに対して、予め定めたハッシュ関数を適用し、得られたハッシュ値に応じたサフィックスパターンリスト121a上の位置に、上記サフィックスを登録する。一方、登録パターン132からサフィックスを除いたプレフィックスは、プレフィックスパターンリスト122aに登録する。なお、サフィックスをサフィックスパターンリスト121aに登録する際には、前述した実施の形態と同様に、該当するプレフィックスへのポインタ情報も登録する。
検索実行部11aは、サフィックス抽出部111aとサフィックス検索部112aとプレフィックス照合部113aとから構成されている。
サフィックス抽出部111aは、入力された検索キー114から上述した所定の抽出ルールに基づいて、N個のサフィックスを抽出し、サフィックス情報116aとして出力する。
サフィックス検索部112aは、サフィックス抽出部111aから受信したサフィックス情報116aのそれぞれについて、予め定めたハッシュ関数を適用し、得られたハッシュ値に基づいてサフィックスパターンリスト121aに対して検索を行い、サフィックス検索結果117aを出力する。
プレフィックス照合部113aは、サフィックス検索結果117aを受信し、前段のサフィックス検索部112aにおいて一致するサフィックスが見つかった場合に、プレフィックスパターンリスト122aから当該サフィックスに対応するエントリを読み出し、検索キー114のサフィックス以外の部分(プレフィックス)が登録パターンのプレフィックスと一致しているかどうかの検証を行い、一致している場合は、上記登録パターンを検索結果115として出力する。
なお、上述した構成を有する可変長文字列検索装置1aは、コンピュータによって実現可能である。コンピュータによって可変長文字列検索装置1aを実現する場合には、可変長文字列検索装置用のプログラムを記録したディスク、半導体メモリ、その他の記録媒体を用意しておく。コンピュータは、上記プログラムを読み込み、それに従って自身の動作を制御することにより、自コンピュータ上に検索実行部11a、パターン格納部12a及びパターン登録部131aを実現する。
次に、図11を参照して本実施の形態の動作について説明する。
第一及び第二の実施の形態では複数の長さのプレフィックスを用意しているのに対し、本実施の形態では複数の長さ(長さ4、8、12、16)のサフィックスを用意する(S111)。検索キー1101から作成したサフィックス1111〜1113(長さ16のサフィックス1114は存在しない)に対してハッシュ値H1〜H3を計算し(S112)、得られたハッシュ値H1〜H3にもとづいてサフィックスパターンリスト121aを検索し(S113)、検索キー1101のサフィックス1111〜1113に一致するサフィックスが見つかった登録パターンに関してのみプレフィックスパターンリスト122aに格納されているプレフィックスの照合を行う。以上の手順により、後方一致検索を行うことができる。
このように、第三の実施の形態は、第一の実施例のプレフィックスとサフィックスに関する部分を入れ換えた形になっている。パターンの登録も、第一の実施例におけるパターン登録方法においてプレフィックスとサフィックスにを入れ換えて第一の実施例の登録を実行することで行うことができる。
なお、上述した各実施の形態では、ハッシュ関数を利用して検索する場合を例に挙げて説明したが、検索方法はこれに限られるものではなく、線形探索法や二分木法などを採用することもできる。
第一の実施の形態の全体構成を示すブロック図である。 第一の実施の形態におけるパターン登録時の動作を説明するための図である。 パターン登録部131の処理例を示すフローチャートである。 第一の実施の形態の検索時の動作を説明するための図である。 第二の実施の形態の検索時の動作を説明するための図である。 第二の実施の形態の検索時の処理例を示すフローチャートである。 第二の実施の形態の登録時の動作を用いて説明するための図である。 第二の実施の形態の登録時の処理例を示すフローチャートである。 第二の実施の形態の応用例を示す図である。 第三の実施の形態の全体構成を示すブロック図である。 第三の実施の形態の動作を説明するための図である。 前方最大一致検索を説明するための図である。 従来の技術の問題点を説明するための図である。
符号の説明
1、1a…可変長文字列検索装置
11、11a…検索実行部
111…プレフィックス抽出部
111a…サフィックス抽出部
112…プレフィックス検索部
112a…サフィックス検索部
113…サフィックス照合部
113a…プレフィックス照合部
12、12a…パターン格納部
121、122a…プレフィックスパターンリスト
121a、122…サフィックスパターンリスト
131、131a…パターン登録部

Claims (16)

  1. パターン格納部と、
    可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から前記登録パターンの長さ以下で且つ最長の長さを選択し、前記登録パターンの先頭から該選択した長さ分の文字データをプレフィックスとして抽出すると共に、抽出した該プレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
    可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのプレフィックスを抽出し、前記パターン格納部に登録されているインデックス要素を、該抽出した各長さのプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部と
    を備えたことを特徴とする可変長文字列検索装置。
  2. パターン格納部と、
    可変長文字列データである登録パターンが入力される毎に、前記登録パターンの先頭から末尾に向かって区切り文字の検出処理を行い、予め定められた個数の区切り文字を検出した場合は、前記登録パターンの先頭文字から該検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録する一方、前記登録パターンの末尾まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの先頭文字から最後に検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
    可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの先頭から末尾に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録されているインデックス要素を、前記検索キーの先頭文字から検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部と
    を備えたことを特徴とする可変長文字列検索装置。
  3. 請求項1または2記載の可変長文字列検索装置において、
    前記パターン登録部は、前記登録パターンのプレフィックスを前記パターン格納部に登録する際、前記登録パターンからプレフィックスを除いたサフィックスを前記プレフィックスに関連付けて登録し、
    前記検索実行部は、
    前記検索キーから前記各プレフィックスを抽出するプレフィックス抽出部と、
    該プレフィックス抽出部によって抽出した前記各プレフィックスを使用して前記パターン格納部を検索するプレフィックス検索部と、
    該プレフィックス検索部によって検索されたプレフィックスに関連付けて登録されている登録パターンのサフィックスについて、前記検索キーのサフィックスとの一致検証を行うサフィックス照合部と
    を含むことを特徴とする可変長文字列検索装置。
  4. 請求項1乃至3の何れか1項に記載の可変長文字列検索装置において、
    前記パターン登録部は、前記登録パターンのプレフィックスを前記パターン格納部に登録する際、前記プレフィックスに対してハッシュ関数を適用することにより得られるハッシュ値に応じた位置に登録し、
    前記プレフィックス検索部は、前記プレフィックス抽出部によって抽出された各プレフィックスに対するハッシュ値を前記ハッシュ関数を用いて求め、該求めた各ハッシュ値を使用して前記パターン格納部を検索する
    ことを特徴とする可変長文字列検索装置。
  5. パターン格納部と、
    可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から、前記登録パターンの長さ以下で且つ最長の長さを選択し、前記登録パターンの末尾から該選択した長さ分の文字データをサフィックスとして抽出すると共に、抽出した該サフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
    可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのサフィックスを抽出し、前記パターン格納部に登録されているインデックス要素を、該抽出した各長さのサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部と
    を備えたことを特徴とする可変長文字列検索装置。
  6. パターン格納部と、
    可変長文字列データである登録パターンが入力される毎に、前記登録パターンの末尾から先頭に向かって区切り文字の検出処理を行い、予め定められた個数の区切り文字を検出した場合は、前記登録パターンの末尾文字から該検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録する一方、前記登録パターンの先頭まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの末尾文字から最後に検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
    可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの末尾から先頭に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録されているインデックス要素を、前記検索キーの末尾文字から検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部と
    を備えたことを特徴とする可変長文字列検索装置。
  7. 請求項5または6記載の可変長文字列検索装置において、
    前記パターン登録部は、前記登録パターンのサフィックスを前記パターン格納部に登録する際、前記登録パターンからサフィックスを除いたプレフィックスを前記サフィックスに関連付けて登録し、
    前記検索実行部は、
    前記検索キーから前記各サフィックスを抽出するサフィックス抽出部と、
    該サフィックス抽出部によって抽出した前記各サフィックスを使用して前記パターン格納部を検索するサフィックス検索部と、
    該サフィックス検索部によって検索されたサフィックスに関連付けて登録されている登録パターンのプレフィックスについて、前記検索キーのプレフィックスとの一致検証を行うプレフィックス照合部と
    を含むことを特徴とする可変長文字列検索装置。
  8. 請求項5乃至7の何れか1項に記載の可変長文字列検索装置において、
    前記パターン登録部は、前記登録パターンのサフィックスを前記パターン格納部に登録する際、前記サフィックスに対してハッシュ関数を適用することにより得られるハッシュ値に応じた位置に登録し、
    前記サフィックス検索部は、前記サフィックス抽出部によって抽出された各サフィックスに対するハッシュ値を前記ハッシュ関数を用いて求め、該求めた各ハッシュ値を使用して前記パターン格納部を検索する
    ことを特徴とする可変長文字列検索装置。
  9. 可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から、前記登録パターンの長さ以下で且つ最長の長さを選択し、
    前記登録パターンの先頭から該選択した長さ分の文字データをプレフィックスとして抽出すると共に、抽出した該プレフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録し、
    可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのプレフィックスを抽出し、
    前記パターン格納部に登録したインデックス要素を、該抽出した各長さのプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む
    ことを特徴とする可変長文字列検索方法。
  10. 可変長文字列データである登録パターンが入力される毎に、前記登録パターンの先頭から末尾に向かって区切り文字の検出処理を行い、
    予め定められた個数の区切り文字を検出した場合は、前記登録パターンの先頭文字から該検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録する一方で、
    前記登録パターンの末尾まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの先頭文字から最後に検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録し、
    可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの先頭から末尾に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録したインデックス要素を、前記検索キーの先頭文字から検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む
    ことを特徴とする可変長文字列検索方法。
  11. 可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から、前記登録パターンの長さ以下で且つ最長の長さを選択し、前記登録パターンの末尾から該選択した長さ分の文字データをサフィックスとして抽出すると共に、抽出した該サフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録し、
    可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのサフィックスを抽出し、前記パターン格納部に登録したインデックス要素を、該抽出した各長さのサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む
    ことを特徴とする可変長文字列検索方法。
  12. 可変長文字列データである登録パターンが入力される毎に、前記登録パターンの末尾から先頭に向かって区切り文字の検出処理を行い、
    予め定められた個数の区切り文字を検出した場合は、前記登録パターンの末尾文字から該検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録する一方で、
    前記登録パターンの先頭まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの末尾文字から最後に検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素としてパターン格納部に登録し、
    可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの末尾から先頭に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録したインデックス要素を、前記検索キーの末尾文字から検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む
    ことを特徴とする可変長文字列検索方法。
  13. パターン格納部を備えたコンピュータを可変長文字列検索装置として機能させるためのプログラムであって、前記コンピュータを、
    可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から、前記登録パターンの長さ以下で且つ最長の長さを選択し、前記登録パターンの先頭から該選択した長さ分の文字データをプレフィックスとして抽出すると共に、抽出した該プレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
    可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのプレフィックスを抽出し、前記パターン格納部に登録されているインデックス要素を、該抽出した各長さのプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部として機能させるためのプログラム。
  14. パターン格納部を備えたコンピュータを可変長文字列検索装置として機能させるためのプログラムであって、前記コンピュータを、
    可変長文字列データである登録パターンが入力される毎に、前記登録パターンの先頭から末尾に向かって区切り文字の検出処理を行い、予め定められた個数の区切り文字を検出した場合は、前記登録パターンの先頭文字から該検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録する一方、前記登録パターンの末尾まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの先頭文字から最後に検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
    可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの先頭から末尾に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録されているインデックス要素を、前記検索キーの先頭文字から検出した区切り文字の直前の文字までの文字列によって構成されるプレフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部として機能させるためのプログラム。
  15. パターン格納部を備えたコンピュータを可変長文字列検索装置として機能させるためのプログラムであって、前記コンピュータを、
    可変長文字列データである登録パターンが入力される毎に、予め定められている複数の異なる長さの中から、前記登録パターンの長さ以下で且つ最長の長さを選択し、前記登録パターンの末尾から該選択した長さ分の文字データをサフィックスとして抽出すると共に、抽出した該サフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
    可変長文字列データである検索キーが入力される毎に、前記検索キーから前記予め定められている複数の異なる長さのサフィックスを抽出し、前記パターン格納部に登録されているインデックス要素を、該抽出した各長さのサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部として機能させるためのプログラム。
  16. パターン格納部を備えたコンピュータを可変長文字列検索装置として機能させるためのプログラムであって、前記コンピュータを、
    可変長文字列データである登録パターンが入力される毎に、前記登録パターンの末尾から先頭に向かって区切り文字の検出処理を行い、予め定められた個数の区切り文字を検出した場合は、前記登録パターンの末尾文字から該検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録する一方、前記登録パターンの先頭まで区切り文字の検出処理を行っても前記予め定められた個数の区切り文字を検出できなかった場合は、前記登録パターンの末尾文字から最後に検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを前記登録パターンに対するインデックス要素として前記パターン格納部に登録するパターン登録部と、
    可変長文字列データである検索キーが入力される毎に、前記予め定められた個数の区切り文字を検出するまで、前記検索キーの末尾から先頭に向かって区切り文字の検出処理を行い、区切り文字を検出する毎に、前記パターン格納部に登録されているインデックス要素を、前記検索キーの末尾文字から検出した区切り文字の直後の文字までの文字列によって構成されるサフィックスを使用して検索することにより、検索対象となる登録パターンを絞り込む検索実行部として機能させるためのプログラム。
JP2003402741A 2003-12-02 2003-12-02 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム Expired - Fee Related JP4114600B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2003402741A JP4114600B2 (ja) 2003-12-02 2003-12-02 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム
US11/000,913 US20050120017A1 (en) 2003-12-02 2004-12-02 Efficient retrieval of variable-length character string data
US12/965,602 US8095526B2 (en) 2003-12-02 2010-12-10 Efficient retrieval of variable-length character string data
US13/276,676 US8200646B2 (en) 2003-12-02 2011-10-19 Efficient retrieval of variable-length character string data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003402741A JP4114600B2 (ja) 2003-12-02 2003-12-02 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム

Publications (2)

Publication Number Publication Date
JP2005165598A JP2005165598A (ja) 2005-06-23
JP4114600B2 true JP4114600B2 (ja) 2008-07-09

Family

ID=34616758

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003402741A Expired - Fee Related JP4114600B2 (ja) 2003-12-02 2003-12-02 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム

Country Status (2)

Country Link
US (3) US20050120017A1 (ja)
JP (1) JP4114600B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617197B2 (en) * 2005-08-19 2009-11-10 Google Inc. Combined title prefix and full-word content searching
US7711719B1 (en) * 2005-03-24 2010-05-04 Palamida, Inc. Massive multi-pattern searching
US7565348B1 (en) * 2005-03-24 2009-07-21 Palamida, Inc. Determining a document similarity metric
US7630982B2 (en) * 2007-02-24 2009-12-08 Trend Micro Incorporated Fast identification of complex strings in a data stream
JP5193518B2 (ja) * 2007-07-13 2013-05-08 株式会社東芝 パターン探索装置及びその方法
JP5472108B2 (ja) * 2008-08-22 2014-04-16 日本電気株式会社 検索装置、検索方法およびプログラム
IL199115A (en) 2009-06-03 2013-06-27 Verint Systems Ltd Systems and methods for efficiently locating keywords in communication traffic
JP5614338B2 (ja) * 2011-03-14 2014-10-29 富士通株式会社 検索装置、プログラム及び方法
IL224482B (en) 2013-01-29 2018-08-30 Verint Systems Ltd System and method for keyword spotting using representative dictionary
US9171063B2 (en) * 2013-03-13 2015-10-27 Facebook, Inc. Short-term hashes
US9977801B2 (en) 2013-11-21 2018-05-22 Sap Se Paged column dictionary
US9977802B2 (en) * 2013-11-21 2018-05-22 Sap Se Large string access and storage
US10235377B2 (en) 2013-12-23 2019-03-19 Sap Se Adaptive dictionary compression/decompression for column-store databases
US9940322B2 (en) * 2014-03-31 2018-04-10 International Business Machines Corporation Term consolidation for indices
US10798000B2 (en) 2014-12-22 2020-10-06 Arista Networks, Inc. Method and apparatus of compressing network forwarding entry information
US9680749B2 (en) 2015-02-27 2017-06-13 Arista Networks, Inc. System and method of using an exact match table and longest prefix match table as a combined longest prefix match
IL242218B (en) 2015-10-22 2020-11-30 Verint Systems Ltd A system and method for maintaining a dynamic dictionary
IL242219B (en) 2015-10-22 2020-11-30 Verint Systems Ltd System and method for keyword searching using both static and dynamic dictionaries
FR3078573B1 (fr) * 2018-03-05 2022-01-14 Delta Dore Procede d'analyse lexicale

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69128053T2 (de) * 1990-08-06 1998-02-26 Fujitsu Ltd., Kawasaki, Kanagawa Wörterbuch-Suchsystem
JPH04209069A (ja) 1990-12-03 1992-07-30 Nec Corp 前方一致文字列検索方式
JPH06162092A (ja) 1992-11-18 1994-06-10 Fujitsu Ltd 情報検索装置
JP2682448B2 (ja) 1994-05-23 1997-11-26 日本電気株式会社 索引検索方式
US6151565A (en) * 1995-09-08 2000-11-21 Arlington Software Corporation Decision support system, method and article of manufacture
JP3143079B2 (ja) * 1997-05-30 2001-03-07 松下電器産業株式会社 辞書索引作成装置と文書検索装置
US6938040B2 (en) * 1998-04-28 2005-08-30 International Business Machines Corporation Pattern matching in communications network where first memory stores set of patterns, and second memory stores mask data identifying patterns in the first memory
JP3696731B2 (ja) 1998-04-30 2005-09-21 株式会社日立製作所 構造化文書の検索方法および装置および構造化文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体
US6507678B2 (en) * 1998-06-19 2003-01-14 Fujitsu Limited Apparatus and method for retrieving character string based on classification of character
JP2000029879A (ja) 1998-07-14 2000-01-28 Canon Inc 文書検索装置及び制御方法
WO2001090879A1 (en) * 2000-05-26 2001-11-29 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for displaying information
JP2002049645A (ja) 2000-08-02 2002-02-15 Nec Soft Ltd ハッシュ値算出方法、ハッシュ値算出装置、検索方法、検索装置、記録媒体
JP3672242B2 (ja) * 2001-01-11 2005-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーション パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体
JP4065695B2 (ja) 2001-01-24 2008-03-26 住友電気工業株式会社 文字列類似度算出装置、文字列類似度算出プログラム、それを記録したコンピュータ読み取り可能な記録媒体および文字列類似度算出方法
US6910097B1 (en) * 2001-04-09 2005-06-21 Netlogic Microsystems, Inc. Classless interdomain routing using binary content addressable memory
US6785677B1 (en) * 2001-05-02 2004-08-31 Unisys Corporation Method for execution of query to search strings of characters that match pattern with a target string utilizing bit vector
US7177313B2 (en) * 2002-05-23 2007-02-13 International Business Machines Corporation Method and system for converting ranges into overlapping prefixes for a longest prefix match
JP2004013504A (ja) * 2002-06-06 2004-01-15 Univ Hiroshima パターン認識システム、このシステムに用いられる連想メモリ装置及びパターン認識処理方法
US6829602B2 (en) * 2002-12-12 2004-12-07 Microsoft Corporation System and method for using a compressed trie to estimate like predicates

Also Published As

Publication number Publication date
US8200646B2 (en) 2012-06-12
US8095526B2 (en) 2012-01-10
US20050120017A1 (en) 2005-06-02
US20120041958A1 (en) 2012-02-16
JP2005165598A (ja) 2005-06-23
US20110078153A1 (en) 2011-03-31

Similar Documents

Publication Publication Date Title
JP4114600B2 (ja) 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム
US10169354B2 (en) Indexing and search query processing
JP3672242B2 (ja) パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体
US8504553B2 (en) Unstructured and semistructured document processing and searching
JP3889762B2 (ja) データ圧縮方法、プログラム及び装置
US8005819B2 (en) Indexing and searching product identifiers
US7739111B2 (en) Pattern matching method and apparatus and speech information retrieval system
JP5138046B2 (ja) 検索システム、検索方法およびプログラム
JP2006519445A (ja) 文字列検索の方法および設備
JP6447161B2 (ja) 意味構造検索プログラム、意味構造検索装置、及び意味構造検索方法
JP2009512099A (ja) トライでの再始動可能なハッシュの方法及び装置
JPH09288676A (ja) 全文インデックス作成装置および全文データベース検索装置
JP5072832B2 (ja) 署名生成および関連性を有するマッチングエンジン
JP2693914B2 (ja) 検索システム
WO2022019275A1 (ja) 文書検索装置、文書検索システム、文書検索プログラム、および文書検索方法
CN113065419B (zh) 一种基于流量高频内容的模式匹配算法及系统
JPH1139315A (ja) フォーマットされた文書を順序付けされたワードリストへ変換する方法
JP4682627B2 (ja) 文書検索装置および方法
JP4558369B2 (ja) 情報抽出システム、情報抽出方法、コンピュータプログラム
JP6044422B2 (ja) 略称生成方法および略称生成装置
JPH10149367A (ja) テキスト蓄積検索装置
KR101910491B1 (ko) 가변길이 그램의 역리스트 동적 생성을 이용한 유사 문자열 검색 방법 및 장치
JP4061283B2 (ja) 字句をデータに変換する装置、方法及びプログラム
KR100738519B1 (ko) 자국어 표기를 이용한 인터넷 주소의 처리 방법 및 이를실행하기 위한 프로그램을 기록한 기록매체
JP2947832B2 (ja) 単語照合方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080121

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080407

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110425

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4114600

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

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120425

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120425

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130425

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130425

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140425

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees