JP2010287052A - 検索システムおよび記憶媒体 - Google Patents

検索システムおよび記憶媒体 Download PDF

Info

Publication number
JP2010287052A
JP2010287052A JP2009140372A JP2009140372A JP2010287052A JP 2010287052 A JP2010287052 A JP 2010287052A JP 2009140372 A JP2009140372 A JP 2009140372A JP 2009140372 A JP2009140372 A JP 2009140372A JP 2010287052 A JP2010287052 A JP 2010287052A
Authority
JP
Japan
Prior art keywords
data
state
character
processing unit
compressed
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.)
Pending
Application number
JP2009140372A
Other languages
English (en)
Inventor
Tatsuya Asai
達哉 浅井
Shinichiro Tako
真一郎 多湖
Aoshi Okamoto
青史 岡本
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 JP2009140372A priority Critical patent/JP2010287052A/ja
Publication of JP2010287052A publication Critical patent/JP2010287052A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】圧縮データから検索条件に対応したデータを、圧縮したままで正確に抽出すること。
【解決手段】圧縮処理部10aが、文書データを圧縮する場合に、文書データに含まれる文字列と、文書データに含まれる区切り文字とを区別して符号に変換することで文書データを圧縮する。圧縮された文書データは、文字列と区切文字を区別して圧縮されているので、検索処理部10cは、検索式に基づいて、圧縮データをそのまま切出しても、正確な検索結果を得ることが出来る。
【選択図】図1

Description

本発明は、検索システム等に関する。
近年、圧縮されたデータから、検索対象のレコードや項目を、圧縮されたままの状態で抽出する技術が考案されている。このように、圧縮されたままの状態でレコードや項目を抽出する技術を圧縮データ抽出と表記する。また、圧縮されたデータを圧縮データ、圧縮される前のデータを元データと表記する。
圧縮データ抽出を利用すれば、圧縮データを解凍する必要がないので、データ領域を節約できる。また、特定の圧縮方式を用いることで、ACマシン(Aho-Corasick machines)等のスキャン系のアルゴリズムは、元データを検索するよりも圧縮データを検索するほうが高速に検索を行うことができる。
図49は、従来の圧縮データ抽出の基本アイデアを説明するための図である。前提条件として、図49の元データ10aは、BPE(Byte Pair Encoding)圧縮技術により、圧縮データ10bに圧縮されているものとする。従来の圧縮データ抽出では、抽出条件が指定された場合に、抽出条件に対応するキーワードの出現位置を特定する。そして、圧縮データ抽出では、キーワードの出現位置に含まれるレコード・項目・要素等を、圧縮データからそのまま切出して出力する。
例えば、抽出条件「ENTRY/DDB/update-data[./=19990205]」が指定されたとする。かかる抽出条件の意味は、「19990205」を含むupdate-data要素を抽出せよという意味である。従来の圧縮データ抽出では、既存の圧縮検索技術を用いて、抽出条件に対応するキーワードの出現位置を特定すると、キーワードの出現位置は、圧縮データ10bの「<up・宛・0205益p・飲」となる。そして、従来の圧縮データ検出では、検索結果として、「<up・宛・0205益p・飲」をそのまま出力する。なお、検索処理の過程において、元データ10aに対するアクセスは一切発生しない。
ところで、データを圧縮する技術として、テキストデータを圧縮する途中で任意の位置に区切り記号を挿入する技術が公開されている。任意の位置に区切り記号を挿入することで、解凍時に、文字列全体を解凍することなく、区切り記号で挟まれた部分文字列のみを解凍することで、処理負荷を軽減することが出来る。
また、画像圧縮法に関する技術ではあるが、画像を所定の領域毎に分割し、分割した画像の領域部分と、分割した画像の境界部分を独立して圧縮する技術も知られている。領域部分と境界部分を独立して圧縮することで、画像を全て解凍することなく、所望する領域の画像データを抽出することが可能となる。
特開2000−22552号公報 特開2008−113267号公報
T.Kida,T.Matsumoto,M.Takeda,A.Shinohara,and S.Arikawa.Multiple pattern matching algorithms on collage system,In Proc.12th Annual Symposium on Combinatorial Pattern Matching(CPM2001) M.Takeda,S.Miyamoto,T.Kida,A.Shinohara,S.Fukamachi,T.Shinohara,and S.Arikawa.Processing Text Files as Is:Pattern Matching over Compressed Texts,Multi-Byte Character Texts,and Semi-Structured Texts.In Proc.9th International Symposium on String Processing and Information Retrieval(SPIRE2002)
元データをそのまま圧縮データに圧縮すると、レコード・項目・要素とXML(Extensible Markup Language)タグなどの区切り文字をまとめて別の符号に置き換えてしまう場合がある。このようにデータの区切り文字を意識しないで圧縮した場合には、抽出条件に対応したデータを圧縮データのまま抽出することができないという問題があった。
例えば、図49の圧縮データ10bにおいて、「飲」に対応する圧縮前のデータを「><」とすると、抽出条件「ENTRY/DDB/update-data[./=19990205]」が指定された場合に、検索結果「<up・宛・0205益p・飲」が検索結果として出力される。かかる検索結果を解凍すると、「<update-date>19990202</update-date><」となり、正しい検索結果にはならない。
抽出条件「ENTRY/DDB/update-data[./=19990205]」が指定された場合の、解凍後の正しい検索結果は、「<update-date>19990202</update-date>」である。正しくない検索結果を、XMLデータ処理系に入力するとエラーになってしまう。
検索結果「<up・宛・0205益p・飲」を解凍し、正しい検索結果「<update-date>19990202</update-date>」となるように、検索結果を修正すれば、正しい検索結果を得ることが出来るが、余計な計算コストが必要になってしまう。
ここで、従来技術を利用して、データを圧縮する場合に、区切り記号を挿入すれば、レコード・項目・要素と区切り文字を区別できるので、抽出条件に対応したデータを圧縮データのまま抽出することが可能となる。しかし、その一方で、区切り文字毎に区切り記号を挿入すると、圧縮データのデータ量が増大してしまうため、実用的ではない。
また、データを圧縮する場合に、境界部分を独立して圧縮すれば、レコード・項目・要素と区切り文字を区別できるので、データ量を増大させることなく、抽出条件に対応したデータを圧縮データのまま抽出することが可能となる。しかし、境界部分を独立して圧縮する技術は、境界部分とその他の領域が固定されている場合にのみ適応可能であるため、レコード・項目・要素と区切り文字が無作為に含まれている元データに対してかかる圧縮技術を適用することは難しい。
圧縮データから検索条件に対応したデータを、圧縮したままで正確に抽出することができる検索システムおよび記憶媒体を提供することを目的とする。
この装置によれば、圧縮されたデータの集合を対象に検索処理を実行する検索システムであって、データの属性を示す区切情報により各データが区切られたデータ集合を取得し、当該データ集合に含まれるデータに基づき符号化データに置換し、さらに、該データの属性を示す区切情報のみに基づき符号化データに置換することで前記データ集合を圧縮する圧縮処理部と、前記圧縮処理部により圧縮されたデータ集合を対象に、検索すべき属性およびデータを有する検索条件を取得した場合に、前記圧縮されたデータ集合の区切情報と置換前の区切情報の関係に基づいて、前記検索条件の属性を符号化データに置換する置換処理部と、前記検索条件の属性を符号化データに置換された検索条件と前記圧縮されたデータ集合を基にして、前記検索条件に指定される前記圧縮されたデータ集合上の領域を特定し、特定した領域に含まれるデータを出力する検索処理部とを有することを要件とする。
本発明によれば、圧縮データから検索条件に対応したデータを、圧縮したままで正確に抽出することができる。
図1は、本実施例1にかかる検索システムの構成を示す図である。 図2は、本実施例2にかかる検索装置の構成を示す図である。 図3は、XMLデータのデータ構造の一例を示す図である。 図4は、符号化データのデータ構造の一例を示す図である。 図5は、対応表のデータ構造の一例を示す図である。 図6は、ACマシンのデータ構造の一例を示す図である。 図7は、状態構造体のデータ構造の一例を示す図である。 図8は、圧縮辞書データのデータ構造の一例を示す図である。 図9は、圧縮データ用ACマシンのデータ構造の一例を示す図である。 図10は、文字列圧縮の動作例を示す図である。 図11は、文字列圧縮済みデータのデータ構造の一例を示す図である。 図12は、トライT構築処理を説明するための図(1)である。 図13は、トライT構築処理を説明するための図(2)である。 図14は、トライT構築処理を説明するための図(3)である。 図15は、フェイラ遷移追加処理を説明するための図(1)である。 図16は、フェイラ遷移追加処理を説明するための図(2)である。 図17は、フェイラ遷移追加処理を説明するための図(3)である。 図18は、フェイラ遷移追加処理を説明するための図(4)である。 図19は、フェイラ遷移追加処理を説明するための図(5)である。 図20は、フェイラ遷移追加処理を説明するための図(6)である。 図21は、フェイラ遷移追加処理を説明するための図(7)である。 図22は、フェイラ遷移追加処理を説明するための図(8)である。 図23は、フェイラ遷移追加処理を説明するための図(9)である。 図24は、圧縮データ用ACマシン構築処理を説明するための図(1)である。 図25は、圧縮データ用ACマシン構築処理を説明するための図(2)である。 図26は、圧縮データ用ACマシン構築処理を説明するための図(3)である。 図27は、照合処理を説明するための図(1)である。 図28は、照合処理を説明するための図(2)である。 図29は、照合処理を説明するための図(3)である。 図30は、照合処理を説明するための図(4)である。 図31は、照合処理を説明するための図(5)である。 図32は、照合処理を説明するための図(6)である。 図33は、圧縮処理の処理手順を示すフローチャートである。 図34は、文字列計数処理の処理手順を示すフローチャートである。 図35は、辞書構築・文字列置換処理の処理手順を示すフローチャートである。 図36は、タグ名置換処理の処理手順を示すフローチャートである。 図37は、構築処理の処理手順を示すフローチャートである。 図38は、抽出条件受け付け処理の処理手順を示すフローチャートである。 図39は、ACマシン構築処理の処理手順を示すフローチャートである。 図40は、ΠのトライTを構築する処理の処理手順を示すフローチャートである。 図41は、パターン登録処理の処理手順を示すフローチャートである。 図42は、トライ(Π)にフェイラ遷移を追加する処理の処理手順を示すフローチャート(1)である。 図43は、トライ(Π)にフェイラ遷移を追加する処理の処理手順を示すフローチャート(2)である。 図44は、ACマシンAC(Π)にスキップ遷移を追加する処理の処理手順を示すフローチャートである。 図45は、第1のスキップ遷移作成処理の処理手順を示すフローチャートである。 図46は、第2のスキップ遷移作成処理の処理手順を示すフローチャートである。 図47は、切出し位置計算処理の処理手順を示すフローチャートである。 図48は、実施例にかかる検索装置を構成するコンピュータのハードウェア構成を示す図である。 図49は、従来の圧縮データ抽出の基本アイデアを説明するための図である。
以下に、本願の開示する検索システムおよび記憶媒体の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例1にかかる検索システムの構成を示す図である。図1に示すように、この検索装置10は、圧縮処理部10a、置換処理部10b、検索処理部10cを有する。このうち、圧縮処理部10aは、データの属性を示す区切情報により各データが区切られたデータ集合を取得し、当該データ集合に含まれるデータに基づき符号化データに置換し、さらに、該データの属性を示す区切情報のみに基づき符号化データに置換することでデータ集合を圧縮する処理部である。
置換処理部10bは、圧縮処理部10aにより圧縮されたデータ集合を対象に、検索すべき属性およびデータを有する検索条件を取得した場合に、圧縮されたデータ集合の区切情報と置換前の区切情報の関係に基づいて、検索条件の属性を符号化データに置換する処理部である。
検索処理部10cは、検索条件の属性を符号化データに置換された検索条件と圧縮されたデータ集合を基にして、検索条件に指定される前記圧縮されたデータ集合上の領域を特定し、特定した領域に含まれるデータを出力する。
上述した検索システム10によれば、圧縮処理部10aが、データ集合を圧縮する場合に、データ集合に含まれる区切情報に基づきデータ集合を圧縮する。圧縮されたデータ集合は、区切情報に基づき圧縮されているので、検索処理部10cは、検索条件に基づいて、圧縮データをそのまま切出しても、正確な検索結果を得ることが出来る。
図2は、本実施例2にかかる検索装置の構成を示す図である。図2に示すように、この検索装置100は、入力部110、出力部120、通信制御IF部130、入出力制御IF部140、記憶部150、制御部160を有する。なお、検索装置100は、ネットワークを介して端末装置(図示略)に接続する。
入力部110は、各種の情報を入力する入力部であり、キーボードやマウス、マイクなどを含む。また、後述するモニタ(出力部120)も、マウスと協働してポインティングデバイス機能を実現する。
出力部120は、各種の情報を出力する出力部であり、モニタ(若しくはディスプレイ、タッチパネル)やスピーカ等を含む。通信制御IF部130は、端末装置(図示略)との間における通信を制御する処理部である。入出力制御IF部140は、入力部110、出力部120、通信制御IF部130、記憶部150、制御部160によるデータの入出力を制御する手段である。
記憶部150は、制御部160による各種処理に必要なデータおよびプログラムを記憶する記憶部である。この記憶部150は、XMLデータ150a、符号化データ150b、対応表150c、ACマシン150d、圧縮辞書150e、圧縮データ用ACマシン150f、抽出条件150g、変換後抽出条件150hを有する。
XMLデータ150aは、要素識別子「<」、「</」等により要素が区切られた階層構造を有する文書データである。図3は、XMLデータのデータ構造の一例を示す図である。符号化データ150bは、圧縮されたXMLデータである。図4は、符号化データ150bのデータ構造の一例を示す図である。
対応表150cは、XMLデータ150aのタグ名と、このタグ名に対応する符号を対応付けたテーブルである。図5は、対応表150cのデータ構造の一例を示す図である。
ACマシン150dは、有限個の状態と遷移の組合せを含むデータである。かかるACマシン150dに、テキストデータ(文字列)を入力することで、テキストデータに特定のキーワードが含まれているか否かを照合することが出来る。図6は、ACマシン150dのデータ構造の一例を示す図である。このACマシン150dは、テキストデータに、キーワードAC、BA、BB、BAA、BACDが含まれているか否かを照合するACマシンを示している。
図6に示すように、ACマシン150dは状態0〜8を有している。各状態は、初期状態、通常状態、照合状態に分類される。初期状態は、初めにテキストデータと照合される状態である。通常状態は、2番目以降にテキストデータと照合される状態である。照合状態は、テキストデータが特定のキーワードにヒットした場合に遷移する状態である。図6に示す例では、初期状態を状態1とし、通常状態を状態1,3とし、照合状態を状態2,4〜8とする。
ACマシンは、テキストデータの文字を初期状態0から順次照合し、通常遷移とフェイラ(Failure)遷移を繰り返すことで、テキストデータに含まれるキーワードを判定する。ここで、通常遷移は、照合対象となる状態において、テキストデータの比較対象となる文字による遷移先が存在する場合の遷移を示す。例えば、状態1において、テキストデータの比較対象となる文字がCの場合には、通常遷移となる。テキストデータの文字がCの場合には、状態1から状態2に通常遷移する。
一方、通常遷移の条件に該当しない場合には、フェイラ遷移となる。例えば、状態1において、テキストデータの比較対象となる文字がC以外の場合には、フェイラ遷移となる。状態1においてフェイラ遷移した場合には、状態0となる。ACマシンには、各状態に1本ずつ存在する。図6で省略されているフェイラ遷移は、全て初期状態0に向かっているものとする。
ここで、図6に示したACマシンが有する状態(状態構造体)のデータ構造について説明する。図7は、状態構造体のデータ構造の一例を示す図である。図7に示すように、この状態構造体は、各状態を識別する状態IDと、パターンリストと、通常遷移先へのポインタと、通常遷移先へのポインタと、フェイラ遷移先へのポインタを有する。
このうち、パターンリストは、初期状態0から遷移先の状態までの文字列を格納する。そして、パターンリストは、該当する通常遷移先へのポインタに対応付けられている。例えば、状態1の状態構造体において、状態1から状態2に遷移する通常遷移先のポインタがg[1]に格納されている場合には、plist[1]に初期状態0から状態2までの文字列「AC」が格納される。
圧縮辞書データ150eは、文字の組と、この文字の組に対応付けられた符号を対応付けたテーブルである。図8は、圧縮辞書データ150eのデータ構造の一例を示す図である。例えば、図8に示すように、文字B,Aのペアは、符号Xに対応する。かかる圧縮辞書データ150eは、ACマシン150dから圧縮データ用ACマシン150fを生成する場合に利用する。
圧縮データ用ACマシン150fは、圧縮されたデータに特定のキーワードが含まれるか否かを照合するべく、ACマシン150dにスキップ遷移を加えたACマシンである。図9は、圧縮データ用ACマシン150fのデータ構造の一例を示す図である。
ここで、スキップ遷移は、状態をスキップする通常遷移である。例えば、照合対象となる状態を状態0とし、圧縮データの比較対象となる文字がXの場合には、状態3をスキップして、状態4に遷移する。
抽出条件150gは、XMLデータ150aから抽出するデータの条件である。例えば、抽出条件150gは、「/AAA/BBB="BACD"」となる。ここで、「/AAA/BBB」は、検索位置を指定する項目名である。検索条件「/AAA/BBB="BACD"」は、区切文字「AAA」の下位の階層に存在する区切文字「BBB」に挟まれた文字列のうち、文字列「BACD」を含む文字列を検索する検索条件である。
変換後抽出条件150hは、対応表150cに基づいて、タグ名を変換された抽出条件である。例えば、変換後抽出条件150hは、「/1/2="BACD"」となる。かかる変換後抽出条件150hに含まれるキーワードに基づいて、ACマシン150dが生成される。
制御部160は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する制御部である。図2に示すように、制御部160は、データ管理部160a、データ圧縮処理部160b、ACマシン構築部160c、照合処理部160d、切出処理部160eを有する。
データ管理部160aは、入力部110、通信制御IF部130からXMLデータ、抽出条件を取得した場合に、取得したXMLデータ、抽出条件を記憶部150に格納する処理部である。
データ圧縮処理部160bは、XMLデータ150aを圧縮して符号化データ150bを生成する処理、および、抽出条件150gを変換して変換後抽出条件150hを生成する処理を実行する処理部である。
まず、XMLデータ150aを圧縮して、符号化データ150bを生成する処理について説明する。この符号化データ150bを生成する処理は、XMLデータ150aのタグに挟まれた文字列を圧縮する処理と、タグ名を置換する処理を有する。
文字列を圧縮する処理において、データ圧縮処理部160bは文字列を参照し、隣接する長さ2の文字列を特定する。以下の説明において、隣接する長さ2の文字列を文字ペアと表記する。データ圧縮処理部160bは、文字列に含まれる文字ペアの出現数を計数し、出現数が最大となる文字ペアを、未使用文字(符号)に割当てることで、文字列を圧縮する。データ圧縮処理部160bは、文字列に含まれる文字ペアの出現数が計数閾値未満となるまで、上記処理を繰り返し実行する。
図10は、文字列圧縮の動作例を示す図である。図10の説明において、圧縮対象となる文字列を「ABABACBACD」とする。また、計数閾値αを2とし、文字セットを「A,B,C,D,X,Y,Z」とする。データ圧縮処理部160bは、文字列「ABABACBACD」を参照し、文字ペアを特定する。文字列「ABABACBACD」に含まれる文字ペアは、「A,B」、「B,A」、「A,C」、「C,B」、「C,D」となる。
データ圧縮処理部160bは、文字列と各文字ペアを比較して、各文字ペアの出現数を計数し、計数表に登録する。計数表は、データ圧縮処理部160bが保持しているものとする。文字ペア「A,B」の出現数は2、文字ペア「B,A」の出現数は3、文字ペア「A,C」の出現数は2、文字ペア「C,B」の出現数は1、文字ペア「C,D」の出現数は1となる。ステップS1参照。
続いて、データ圧縮処理部160bは、計数表に登録した各文字ペアのうち、出現数が最大となる文字ペアを特定し、特定した文字ペアに未使用文字を割当てる。文字ペアと未使用文字の関係は、圧縮辞書データ150eに登録する。
ステップS1で作成した計数表を参照すると、文字ペア「B,A」の出現数が最大となるので、データ圧縮処理部160bは、文字ペア「B,A」に未使用文字「X」を割当てる。文字ペア「B,A」に未使用文字「X」を割当てることで、文字列「ABABACBACD」は、文字列「AXXCXCD」となる。データ圧縮処理部160bは、文字ペア「B,A」と未使用文字(符号)「X」の関係を圧縮辞書データ150eに登録する。
データ圧縮処理部160bは、文字列「AXXCXCD」を参照し、文字ペアを特定する。文字列「AXXCXCD」に含まれる文字ペアは、「A,X」、「X,X」、「X,C」、「C,X」、「C,D」となる。
データ圧縮処理部160bは、文字列と各文字ペアを比較して、各文字ペアの出現数を計数し、計数表に登録する。文字ペア「A,X」の出現数は1、文字ペア「X,X」の出現数は1、文字ペア「X,C」の出現数は2、文字ペア「C,X」の出現数は1、文字ペア「C,D」の出現数は1となる。ステップS2参照。
ステップS2で作成した計数表を参照すると、文字ペア「X,C」の出現数が最大となるので、データ圧縮処理部160bは、文字ペア「X,C」に未使用文字「Y」を割当てる。文字ペア「X,C」に未使用文字を割当てることで、文字列「AXXCXCD」は、文字列「AXYYD」となる。データ圧縮処理部160bは、文字ペア「X,C」と未使用文字(符号)「Y」の関係を圧縮辞書データ150eに登録する。
データ圧縮処理部160bは、文字列「AXYYD」を参照し、文字ペアを特定する。文字列「AXYYD」に含まれる文字ペアは、「A,X」、「X,Y」、「Y,Y」、「Y,D」となる。
データ圧縮処理部160bは、文字列と各文字ペアを比較して、各文字ペアの出現数を計数し、計数表に登録する。文字ペア「A,X」の出現数は1、「X,Y」の出現数は1、「Y,Y」の出現数は1、「Y,D」の出現数は1となる。ステップS3参照。
データ圧縮処理部160bは、各文字ペアの出現数が計数閾値α未満となった場合、あるいは、文字セットに未使用文字が存在しない場合に、文字列の圧縮を終了する。データ圧縮処理部160bは、文字列の圧縮が終了した場合に、圧縮後の文字列と圧縮辞書データ150eを出力する。ステップS4参照。
データ圧縮処理部160bは、XMLデータ150aに含まれる全ての文字列に対して、上述した圧縮処理を実行する。以下の説明において、文字列を圧縮したXMLデータを文字列圧縮済みデータと表記する。図11は、文字列圧縮済みデータのデータ構造の一例を示す図である。図3のXMLデータ150aと、図11の文字列圧縮済みデータを比較すると、文字列「ABABACBACD」が文字列「AXYYD」に圧縮されている。
続いて、タグ名を置換する処理について説明する。データ圧縮処理部160bは、文字列圧縮済みデータをスキャンし、文字列圧縮済みデータに出現する全てのタグ名を対応表150cに登録する。データ圧縮処理部160bは、対応表150cに登録されたタグ名に対して、それぞれ固有の符号を割当てる。そして、データ圧縮処理部160bは、文字列圧縮済みデータと対応表150cとを比較して、文字列圧縮済みデータのタグ名を、該当する符号に置換することで、符号化データ150bを生成する。
例えば、文字列圧縮済みデータを、図11に示す文字列圧縮済みデータとし、対応表150cを、図5に示す対応表とする。この場合、データ圧縮処理部160bは、文字列圧縮済みデータ中のタグ名「AAA」、「BBB」、「CCC」はそれぞれ符号「1」、「2」、「3」に置換し、図4に示す符号化データを生成する。
続いて、抽出条件150gを変換して変換後抽出条件150hを生成する処理について説明する。データ圧縮処理部160bは、抽出条件150gと対応表150cを比較して、抽出条件150gに含まれるタグ名を、符号に置換することで、変換後抽出条件150hを生成する。
例えば、対応表150cを、図5に示す対応表とし、抽出条件150cを「/AAA/BBB="BACD"」とする。この場合、データ圧縮処理部160bは、抽出条件150cのタグ名「AAA」、「BBB」をそれぞれ「1」、「2」に置換し、変換後抽出条件150h「/1/2="BACD"」を生成する。
次に、図2に示したACマシン構築部160cについて説明する。ACマシン構築部160cは、変換後抽出条件150hに含まれるキーワードに基づいて、当該キーワードを照合するACマシン150dを生成する。そして、ACマシン構築部160cは、圧縮辞書データ150eに基づいて、ACマシン150dにスキップ遷移を追加することで、圧縮データ用ACマシン150fを生成する。
以下において、ACマシン構築部160cについて具体的に説明する。ACマシン構築部160cがACマシン150dを生成する処理について説明した後に、圧縮データ用ACマシン150fを生成する処理について説明する。また、変換後抽出条件150hに含まれるキーワードの集合をパターン集合Πとし、説明の便宜上、パターン集合Π={AC、BA、BB、BAA、BACD}とする。
ACマシン150dを生成する処理には、トライを構築する処理と、フェイラ遷移をトライに追加する処理が含まれる。図12〜図14は、トライT構築処理を説明するための図である。
図12において、ACマシン構築部160cは、初期状態0を作成し、初期状態の状態構造体における通常遷移先をすべて初期状態に設定する(図12、ステップS10)。そして、ACマシン構築部160cは、パターン集合Πからパターン「AC」を取り出す。ACマシン構築部160cは、文字「A」を選択し、文字Aによる初期状態0の通常遷移先を通常状態1に設定する。
ACマシン構築部160cは、文字「C」を選択し、文字Cによる通常状態1の通常遷移先を照合状態2に設定する。また、ACマシン構築部160cは、通常状態1の状態構造体において、照合状態2へのポインタg[C]に対応するパターンリストをPlist[C]=ACに設定する(図12、ステップS11)。
ACマシン構築部160cは、初期状態0に戻り、パターン集合Πからパターン「BA」を取り出す。ACマシン構築部160cは、文字「B」を選択し、文字Bによる初期状態0の通常遷移先を通常状態3に設定する。
ACマシン構築部160cは、文字「A」を選択し、文字Aによる通常状態3の通常遷移先を照合状態4に設定する。また、ACマシン構築部160cは、通常状態3の状態構造体において、照合状態4へのポインタg[A]に対応するパターンリストをPlist[A]=BAに設定する(図12、ステップS12)。
図13において、ACマシン構築部160cは、初期状態0に戻り、パターン集合Πからパターン「BB」を取り出し、文字「B」を選択する。ここで、文字Bによる初期状態0の通常遷移先は通常状態3であり、既に作成済みであるため、現在の状態を通常状態3に遷移する。
ACマシン構築部160cは、文字「B」を選択し、文字Bによる通常状態3の通常遷移先を照合状態5に設定する。また、ACマシン構築部160cは、状態3の状態構造体において、照合状態5へのポインタg[B]に対応するパターンリストをPlist[B]=BBに設定する(図13、ステップS13)。
ACマシン構築部160cは、初期状態0に戻り、パターン集合Πからパターン「BAA」を取り出し、文字「B」を選択する。ここで、文字Bによる初期状態0の通常遷移先は通常状態3であり、既に作成済みであるため、現在の状態を通常状態3に遷移する。
ACマシン構築部160cは、文字「A」を選択する。ここで、文字Aによる通常状態3の通常遷移先は照合状態4であり、既に作成済みであるため、現在の状態を照合状態4に遷移する。
ACマシン構築部160cは、文字「A」を選択する。ACマシン構築部160cは文字「A」による照合状態4の通常遷移先を照合状態6に設定する。また、ACマシン構築部160cは、状態4の状態構造体において、照合状態6へのポインタg[a]に対応するパターンリストをPlist[A]=BAAに設定する(図13、ステップS14)。
図14において、ACマシン構築部160cは、初期状態0に戻り、パターン集合Πからパターン「BACD」を取り出し、文字「B」を選択する。ここで、文字Bによる初期状態0の通常遷移先は通常状態3であり、既に作成済みであるため、現在の状態を通常状態3に遷移する。
ACマシン構築部160cは、文字「A」を選択する。ここで、文字Aによる通常状態3の通常遷移先は状態4であり、既に作成済みであるため、現在の状態を照合状態4に遷移する。
ACマシン構築部160cは、文字「C」を選択する。ACマシン構築部160cは、文字Cによる照合状態4の通常遷移先を通常状態7に設定する。ACマシン構築部160cは、文字「D」を選択する。ACマシン構築部160cは、文字Dによる通常状態7の通常遷移先を照合状態8に設定する(図14、ステップS15)。ステップS15が終了した段階で、パターン集合Πに含まれる全てのパターンの登録が終了し、トライTの構築処理が終了する。
次に、ACマシン構築部160cがフェイラ遷移をトライに追加する処理について説明する。図15〜図23は、フェイラ遷移追加処理を説明するための図である。ACマシン構築部160cは、初期状態0から通常遷移先となる状態を判定し、判定した状態をキュー(Queue)に登録する。ACマシン構築部160cは、キューに登録された状態のフェイラ遷移先を初期状態0に設定する。ここで、初期状態0の通常遷移先は、通常状態1,3となるので、キューに1,3を登録する。また、通常状態1,3のフェイラ遷移先を初期状態0に設定する。図15参照。
ACマシン構築部160cは、キューの先頭の状態1を取り出し、取り出した状態1を状態sに設定する。ACマシン構築部160cは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合、ACマシン構築部160cは、文字Cを抽出し、集合Xに文字Cを格納する。
ACマシン構築部160cは、集合Xから文字Cを取り出し、状態sの通常遷移先となる状態2をキューの最後尾に追加する。ACマシン構築部160cは、状態1からフェイラ遷移した初期状態0に移行し、文字Cに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、初期状態0となる。ACマシン構築部160cは、状態s(通常状態1)から文字Cにより遷移する状態nextを判定し、判定した状態(照合状態2)のフェイラ遷移先を初期状態0に設定する。図16参照。
ACマシン構築部160cは、キューの先頭の状態3を取り出し、取り出した状態3を状態sに設定する。ACマシン構築部160cは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合は、ACマシン構築部160cは、文字A、Bを抽出し、集合Xに文字A、Bを格納する。
ACマシン構築部160cは、集合Xから文字Aを取り出し、状態sの文字Aの通常遷移先となる状態4をキューの最後尾に追加する。ACマシン構築部160cは、状態sからフェイラ遷移した初期状態0に移行し、文字Aに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態1となる。ACマシン構築部160cは、状態s(通常状態3)から文字Aにより遷移する状態nextを判定し、判定した状態(照合状態4)のフェイラ遷移先を状態1に設定する。図17の状態4参照。
ACマシン構築部160cは、集合Xから文字Bを取り出し、状態s(通常状態3)の文字Bの通常遷移先となる状態5をキューの最後尾に追加する。ACマシン構築部160cは、状態sからフェイラ遷移した初期状態0に移行し、文字Bに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態3となる。ACマシン構築部160cは、状態sから文字Bにより遷移する状態nextを判定し、判定した状態(照合状態5)のフェイラ遷移先を状態3に設定する。図17の状態5参照。
ACマシン構築部160cは、キューの先頭の状態2を取り出し、取り出した状態2を状態sに設定する。ACマシン構築部160cは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する。図18参照。
ACマシン構築部160cは、キューの先頭の状態4を取り出し、取り出した状態4を状態sに設定する。ACマシン構築部160cは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合は、ACマシン構築部160cは、文字A、Cを抽出し、集合Xに文字A、Cを格納する。
ACマシン構築部160cは、集合Xから文字Aを取り出し、状態s(照合状態4)の文字Aの通常遷移先となる状態6をキューの最後尾に追加する。ACマシン構築部160cは、状態sからフェイラ遷移した状態1に移行する。状態1において、文字Aに対する通常遷移先はNullであるため、再度フェイラ遷移し、初期状態0に移行する。
そして、初期状態0において、文字Aに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態1となる。ACマシン構築部160cは、状態s(通常状態4)から文字Aにより遷移する状態nextを判定し、判定した状態(照合状態6)のフェイラ遷移先を状態1に設定する。図19の状態6参照。
ACマシン構築部160cは、集合Xから文字Cを取り出し、状態s(照合状態4)の文字Cの通常遷移先となる状態7をキューの最後尾に追加する。ACマシン構築部160cは、状態sからフェイラ遷移した状態1に移行し、文字Cに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、状態2となる。ACマシン構築部160cは、状態sから文字Cによる遷移する状態nextを判定し、判定した状態(通常状態7)のフェイラ遷移先を状態2に設定する。
また、ACマシン構築部160cは、状態7のフェイラ遷移先が照合状態2となる。この場合、ACマシン構築部160cは、状態4の状態構造体において、状態7へのポインタg[C]に対応するパターンリストをPlist[C]=ACに設定し、状態7を通常状態から照合状態に変更する。図19参照の状態4、7参照。
ACマシン構築部160cは、キューの先頭の状態5を取り出し、取り出した状態5を状態sに設定する。ACマシン構築部160cは、状態sにおいてg[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する。図20参照。
ACマシン構築部160cは、キューの先頭の状態6を取り出し、取り出した状態6を状態sに設定する。ACマシン構築部160cは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する。図21参照。
ACマシン構築部160cは、キューの先頭の状態7を取り出し、取り出した状態7を状態sに設定する。ACマシン構築部160cは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。この場合は、ACマシン構築部160cは、文字Dを抽出し、集合Xに文字Dを格納する。
ACマシン構築部160cは、集合Xから文字Dを取り出し、状態s(照合状態7)の文字Dの通常遷移先となる状態8をキューの最後尾に追加する。ACマシン構築部160cは、状態sからフェイラ遷移した状態2に移行する。状態2において、文字Dに対する通常遷移先はNullであるため、再度フェイラ遷移し、初期状態0に移行する。
ACマシン構築部160cは、初期状態0において、文字Dに対する通常遷移先を判定することで、状態nextのフェイラ遷移先を判定すると、初期状態0となる。ACマシン構築部160cは、状態s(照合状態7)から文字Dにより遷移する状態nextを判定し、判定した状態(照合状態8)のフェイラ遷移先を初期状態0に設定する。図22の状態8参照。
ACマシン構築部160cは、キューの先頭の状態8を取り出し、取り出した状態8を状態sに設定する。ACマシン構築部160cは、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aを抽出し、集合Xに格納する。状態sに通常遷移先は存在しないので、次のステップに移行する。そして、キューに状態が存在しなくなった場合に、パターン集合ΠのACマシンが完了する。図23参照。
次に、ACマシン構築部160cが、ACマシン150dにスキップ遷移を追加して、圧縮データ用ACマシン150fを生成する処理について説明する。圧縮辞書データ150eの文字ペアをa,bとした場合、ACマシン構築部160cは、ACマシン150dのパスをスキャンし、文字aの遷移と文字bの遷移が連続する箇所を判定する。そして、ACマシン構築部160cは、ACマシン150dの該当箇所にスキップ遷移を追加する。
また、ACマシン構築部160cは、ACマシン150dのパスをスキャンし文字aの遷移と、文字bの遷移がフェイラ遷移を挟む箇所を判定する。そして、ACマシン構築部160cは、ACマシン150dの該当箇所にスキップ遷移を追加する。
図24〜図26は、圧縮データ用ACマシン構築処理を説明するための図である。ACマシン構築部160cは、圧縮辞書データ150eに登録された文字ペアに対応するスキップ遷移をACマシン150dに追加する。
まず、ACマシン構築部160cは、圧縮辞書データ150eの1段目に登録された文字ペア「B,A」に対応するスキップ遷移をACマシン150dに追加する。ACマシン構築部160cは、ACマシン150dに含まれる全パスをスキャンし、文字Bの遷移と文字Aの遷移が連続する箇所を判定する。
ACマシン構築部160cは、ACマシン150dのパス上の状態sと状態tに対して、状態sの文字Bによる通常遷移先が状態tとなり(s.g[code(B)]=t)、かつ、状態tの、文字Aによる通常遷移先が状態uとなる場合(s.g[code(A)]=u)に、状態sにスキップ遷移Xを作成する(s.g[code(X)]=u)。このとき、状態sのスキップ遷移Xのパターンリスト(s.Plist[code(X)])は、s.Plist[code(X)]=s.Plist[code(B)]∪t.Plist[code(A)]とする。
ACマシン150dの全パスの中で、(s.g[code(B)]=t)かつ(t.g[code(A)]=u)の条件を満たす状態s、状態t、状態uの組は、初期状態0、通常状態3、照合状態4となる。従って、ACマシン構築部160cは、初期状態0の文字Xによる通常遷移先のポインタ(g[code(X)])に、照合状態4を設定し、該当するパターンリスト(Plist[X])に「BA」を登録する。図24の初期状態0参照。
続いて、ACマシン構築部160cは、ACマシン150dのパスをスキャンし文字Bの遷移と、文字Aの遷移がフェイラ遷移を挟む箇所を判定する。ACマシン構築部160cは、ACマシン150dのパス上の状態sと状態tに対して、状態sの文字Bによる通常遷移先が状態tとなり(s.g[code(B)]=t)、かつ、状態tの、文字Aによる通常遷移先がNullとなる(t.g[code(A)]=Null)状態tを全て集合Fに格納する。
ACマシン150dの全パスの中で、(s.g[code(B)]=t)かつ(t.g[code(A)]=Null)の条件を満たす状態tは、照合状態5となるため、ACマシン構築部160cは、照合状態5を集合Fに格納する。ACマシン構築部160cは、集合Fのうち、状態tからフェイラ遷移し、フェイラ遷移先の状態の文字Aによる通常遷移先がNull(t.fail.g[code(A)]=Null)となる状態tを削除する。照合状態5は、(t.fail.g[code(A)]=Null)の条件を満たさないので、集合Fに残る。
ACマシン構築部160cは、集合Fの任意の状態tに対して、状態tからフェイラ遷移し、フェイラ遷移先の状態の文字Aによる通常遷移先を状態u(t.fail.g[code(A)]=u)とする。また、ACマシン構築部160cは、(s.g[code(B)]=t)の条件を満たす状態を状態sとする。このとき、状態sのスキップ遷移Xのパターンリスト(s.Plis[code(X)])を、s.Plist[code(X)]=s.Plist[code(B)]∪t.fail.Plist[code(A)]とする。
(t.fail.g[code(A)]=u)、(s.g[code(B)]=t)を満たす状態sは、通常状態3となる。ACマシン構築部160cは、通常状態3の文字Xによる通常遷移先のポインタ(g[code(X)])に、照合状態4を設定し、該当するパターンリスト(Plist[X])に「BB,BA」を登録する。図25の通常状態3参照。
続いて、ACマシン構築部160cは、圧縮辞書データ150eの2段目に登録された文字ペア「X,C」に対応するスキップ遷移をACマシン150dに追加する。ACマシン構築部160cは、ACマシン150dの該当箇所にスキップ遷移を追加する。
ACマシン構築部160cは、ACマシン150dのパス上の状態sと状態tに対して、状態sの文字Xによる通常遷移先が状態tとなり(s.g[code(X)]=t)、かつ、状態tの文字Cによる通常遷移先が状態uとなる場合(s.g[code(C)]=u)に、状態sにスキップ遷移Yを作成する(s.g[code(Y)]=u)。このとき、状態sのスキップ遷移Yのパターンリスト(s.Plist[code(Y)])は、s.Plist[code(Y)]=s.Plist[code(X)]∪t.Plist[code(C)]とする。
ACマシン150dの全パスの中で、(s.g[code(X)]=t)かつ(s.g[code(C)]=u)の条件を満たす状態s、状態t、状態uの組は、初期状態0、照合状態4、照合状態7の組と、通常状態3、照合状態4、照合状態7の組となる。
ACマシン構築部160cは、初期状態0の文字Yによる通常遷移先のポインタ(g[code(Y)])に、照合状態7を設定し、該当するパターンリスト(Plist[Y])に「BA、AC」を登録する。図26の初期状態0参照。
また、ACマシン構築部160cは、通常状態3の文字Yによる通常遷移先のポインタ(g[code(Y)])に、照合状態7を設定し、該当するパターンリスト(Plist[Y])に「BB、BA、AC」を登録する。図26の通常状態3参照。
続いて、ACマシン構築部160cは、ACマシン150dのパスをスキャンし文字Xの遷移と、文字Cの遷移がフェイラ遷移を挟む箇所を判定する。図26に示すACマシン150dにおいて、文字Xの遷移と、文字Cの遷移がフェイラ遷移を挟む箇所は存在しないので、図26に示したACマシンが、圧縮データ用ACマシン150fとなる。
次に、図2に示した照合処理部160dについて説明する。照合処理部160dは、照合対象となるテキストが与えられた場合に、与えられたテキストと圧縮データ用ACマシン150fとを比較して、テキストに特定のキーワードが含まれているか否かを判定する処理部である。
図27〜図32は、照合処理を説明するための図である。ここでは一例として、照合対象となるテキストを「AXYYD」とする。照合処理部160dは、現在の状態sを圧縮データ用ACマシン150fの初期状態0に設定する。図27参照。
照合処理部160dは、テキストの1文字目「A」を読み出し、文字Aによる初期状態0の通常遷移先を判定する。文字Aによる初期状態0の遷移先は、通常状態1であるため、現在の状態sを通常状態1に設定する。図28参照。
照合処理部160dは、テキストの2文字目「X」を読み出し、文字Xによる通常状態3の遷移先を判定する。文字Xによる通常状態3の通常遷移先は存在しないので、通常状態3からフェイラ遷移し、状態sを初期状態0に設定する。
照合処理部160dは、文字Xによる初期状態0の通常遷移先を判定する。文字Xによる初期状態0の通常遷移先は照合状態4であるため、現在の状態sを照合状態4に設定する。また、照合状態4にヒットしたため、照合処理部160dは、初期状態0のg[code(X)]に対応付けられたパターンリストPlist[X]={BA}を、集合Rに登録する。図29参照。
照合処理部160dは、テキストの3文字目「Y」を読み出し、文字Yによる照合状態4の通常遷移先を判定する。文字Yによる照合状態4の通常遷移先は存在しないので、照合状態4からフェイラ遷移し、状態sを通常状態1に設定する。
照合処理部160dは、文字Yによる通常状態1の通常遷移先を判定する。文字Yによる通常状態1の通常遷移先は存在しないので、通常状態1からフェイラ遷移し、状態sを初期状態0に設定する。
照合処理部160dは、文字Yによる初期状態0の通常遷移先を判定する。文字Yによる初期状態0の通常遷移先は照合状態7であるため、現在の状態sを照合状態7に設定する。また、照合状態7にヒットしたため、照合処理部160dは、初期状態0のg[code(Y)]に対応付けられたパターンリストPlist[X]={BA,AC}を、集合Rに登録する。なお、照合処理部160dは、BAが既に集合Rに登録されているので、ACを集合Rに登録する。図30参照。
照合処理部160dは、テキストの4文字目「Y」を読み出し、文字Yによる照合状態7の通常遷移先を判定する。文字Yによる照合状態7の通常遷移先は存在しないので、照合状態7からフェイラ遷移し、状態sを照合状態2に設定する。
照合処理部160dは、文字Yによる照合状態2の通常遷移先を判定する。文字Yによる照合状態2の通常遷移先は存在しないので、照合状態2からフェイラ遷移し、状態sを初期状態0に設定する。
照合処理部160dは、文字Yによる初期状態0の通常遷移先を判定する。文字Yによる初期状態0の通常遷移先は照合状態7であるため、現在の状態sを照合状態7に設定する。また、照合状態7にヒットしたため、照合処理部160dは、初期状態0のg[code(Y)]に対応付けられたパターンリストPlist[X]={BA,AC}を、集合Rに登録する。なお、照合処理部160dは、BA、ACが既に集合Rに登録されているので、集合Rには何も登録しない。図31参照。
照合処理部160dは、テキストの5文字目「D」を読み出し、文字Dによる照合状態7の通常遷移先を判定する。文字Dによる照合状態7の通常遷移先は照合状態8であるため、現在の状態sを照合状態8に設定する。また、照合状態8にヒットしたため、照合所理部160dは、照合状態7のg[code(D)]に対応付けられたパターンリストPlist[D]={BACD}を、集合Rに登録する。図32参照。
図27〜図32に示したように、照合処理部160dは、テキストを1文字ずつ読み出して、圧縮データ用ACマシン150fの各状態を遷移し、照合処理を実行することで、例えば、テキスト「AXYYD」が特定のキーワード「BA、AC、BADC」を含んでいることを判定する。なお、照合処理部160dは、テキスト「AXYYD」をまとめて取得する代わりに、1文字ずつテキストを取得した場合でも、図27〜図32と同様にして、照合処理を実行する。
次に、図2に示した切出処理部160eについて説明する。切出し処理部160eは、照合処理部160dと協働し、変換後抽出条件150hに対応する符号化データ150bの位置を算出する処理部である。以下の説明において、変換後抽出条件150hに対応する符号化データ150bの位置を切出し位置リストと表記する。
切出し処理部160eは、切出し位置リストに対応する位置の情報を符号化データ150bから切出し、切出した情報を、検索条件の回答として出力部120または通信制御IF部130に出力する。
以下において、切出処理部160eの処理を具体的に説明する。切出処理部160eは、符号化データ150bを1文字ずつスキャンし、文字の種類に応じた各種の処理を実行する。ここでは、スキャンした文字が、文字列部の場合、開始タグ「<>」の場合、終了タグの場合「</>」に分けて説明する。
スキャンした文字が文字列部の場合について説明する。切出処理部160eは、スキャンした文字が文字列部の場合に、スキャンした文字を照合処理部160dに出力し、圧縮データ用ACマシン150fの照合状態に遷移したか否かの情報を照合処理部160dから取得する。
上述した照合処理部160dは、上述した処理に加え、切出処理部160eから文字を取得した場合には、現在の状態sを遷移させ、照合状態に遷移したか否かを情報を切出処理部160eに通知するものとする。切出処理部160eは、照合状態に遷移した旨の情報を取得した場合には、キーワードフラグkの値を1に設定する。
続いて、スキャンした文字が開始タグの場合について説明する。切出処理部160eは、スキャンした文字が開始タグの場合に、タグ符号と現在の位置(符号化データ150bの先頭文字から数えた、該当タグ符号の「<」までの数;start)をスタックSに登録する。
また、切出処理部160eは、スタックSに登録したタグ符号が、変換後抽出条件150hの項目部と一致しているか否かを判定し、一致している場合には項目フラグfを1に設定する。
続いて、スキャンした文字が終了タグの場合について説明する。切出処理部160eは、スキャンした文字が終了タグの場合に、キーワードフラグkと項目フラグfが1であるか否かを判定する。キーワードフラグkと項目フラグfが1の場合に、切出処理部160eは、現在の位置(符号化データ150bの先頭文字から数えた、該当タグ符号の「>」までの数)をendに登録し、スタックSの最終要素のstartを取得する。そして、切出処理部160eは、取得したstartとendの組合せ(start、end)を切出し位置リストに登録する。切出処理部160eは、スタックSからタグ符号を取り出し、キーワードフラグkを0に設定する。
ここで、符号化データ150bを図4に示す符号化データとし、変換後抽出条件「/1/2="BACD"」として、切出処理部160eの処理を説明する。切出処理部160eの初期設定として、キーワードフラグkと項目フラグfを0、スタックSを空スタック、切出し位置リストRを空リストとする。
切出処理部160eは、符号化データ150bの文字「<1>」をスキャンする。文字「<1>」は、開始タグである。切出処理部160eは、スタックSにタグ符号「<1>」と現在位置「1」をスタックSに登録する。スタックS={(<1>、1)}。切出処理部160eは、スタックSのタグ符号「<1>」が、変換後抽出条件の項目部「/1/2」と一致しないので、項目フラグfを0のままにする。
切出処理部160eは、符号化データ150bの文字「<2>」をスキャンする。文字「<2>」は、開始タグである。切出処理部160eは、スタックSにタグ符号「<2>」と現在位置「4」をスタックSに登録する。スタックS={(<1>、1)、(<2>)、4}。切出処理部160eは、スタックSのタグ符号「<1>」、「<2>」が、変換後抽出条件の項目部「/1/2」と一致するので、項目フラグfを1に設定する。
切出処理部160eは、符号化データ150bの文字列「AXYYD」をスキャンする。切出処理部160eは、文字列「AXYYD」を照合処理部160dに出力し、照合結果を取得する。照合状態に遷移した旨が照合結果に含まれる場合、切出処理部160eは、キーワードフラグkを1に設定する。
切出処理部160eは、符号化データ150bの文字「<2/>」をスキャンする。文字「<2/>」は終了タグであり、項目フラグfとキーワードフラグkが1である。この場合、切出処理部160eは、end=15と、スタックSの最終要素のstart値(=4)の組を、切出し位置リストRに登録する。R={(4,15)}。切出処理部160eは、スタックSから(<2>、4)を取り出す(ホップする)。スタックS={(<1>、1)}。切出処理部160eは、キーワードフラグkを0に設定する。
切出処理部160eは、符号化データ150bの文字「<3>」をスキャンする。文字「<3>」は、開始タグである。切出処理部160eは、スタックSにタグ符号「<3>」と現在位置「16」をスタックSに登録する。スタックS={(<1>、1)、(<3>)、16}。切出処理部160eは、スタックSのタグ符号「<1>」、「<3>」が、変換後抽出条件の項目部「/1/2」と一致しないので、項目フラグfを0に設定する。
切出処理部160eは、符号化データ150bの文字列「AXYYD」をスキャンする。切出処理部160eは、文字列「AXYYD」を照合処理部160dに出力し、照合結果を取得する。照合状態に遷移した旨が照合結果に含まれる場合、切出処理部160eは、キーワードフラグkを1に設定する。
切出処理部160eは、符号化データ150bの文字「</3>」をスキャンする。文字「</3>」は終了タグである。キーワードフラグkは1であるが、項目フラグfは0であるため、切出処理部160eは、切出し位置リストRに対する登録を行わない。切出処理部160eは、スタックSから(<3>、16)を取り出す(ポップする)。スタックS={(<1>、1)}。切出処理部160eは、キーワードフラグkを0に設定する。
切出処理部160eは、符号化データ150bの文字「</1>」をスキャンする。文字「</1>」は終了タグである。キーワードフラグkと項目フラグfが0であるため、切出処理部160eは、切出し位置リストRに対する登録を行わない。切出処理部160eは、スタックSから(<1>、1)を取り出す。スタックS=空スタック。切出処理部160eは、キーワードフラグkを0に設定する。
切出処理部160eは、符号化データ150bを最後までスキャンしたので、切出し位置リストR={(4,15)}に基づいて、情報を符号化データ150bから切り出す。この場合、切出し処理部160eは、符号化データ150bの先頭文字から4文字目と16文字目の間に位置する文字「<2>AXYYD</2>」を切り出す。
次に、本実施例2にかかる検索装置100の処置手順について説明する。まず、データ圧縮処理部160bが実行する圧縮処理について説明する。図33は、圧縮処理の処理手順を示すフローチャートである。
図33に示すように、データ圧縮処理部160bは、文字列計数処理を実行し(ステップS101)、辞書構築・文字列置換処理を実行する(ステップS102)。そして、データ圧縮処理部160bは、タグ名置換処理を実行する(ステップS103)。
ここで、図33のステップS101に示した文字列計数処理の処理手順について説明する。図34は、文字列計数処理の処理手順を示すフローチャートである。図34に示すように、データ圧縮処理部160bは、一つ前の文字c0=εに設定し、現在の文字c1にXMLデータD(XMLデータ150a)の先頭文字を代入する(ステップS111)。
データ圧縮処理部160bは、計数表Tを初期化し、タグ内フラグf=0に設定する(ステップS112)。データ圧縮処理部160bは、XMLデータDに次の文字が存在するか否かを判定する(ステップS113)。データ圧縮処理部160bは、XMLデータDに次の文字が存在しない場合に(ステップS114,No)、計数表Tを出力する(ステップS115)。
一方、データ圧縮処理部160bは、XMLデータDに次の文字が存在する場合に(ステップS114,Yes)、c0=c1とし、c1に次の文字を代入する(ステップS116)。データ圧縮処理部160bは、c1がタグ開始記号(<)またはタグ終了記号(>)であるかを判定する(ステップS117)。
データ圧縮処理部160bは、c1がタグ開始記号ではなく、かつ、タグ終了記号ではない場合に(ステップS118,No)、ステップS121に移行する。一方、データ圧縮処理部160bは、c1がタグ開始記号またはタグ終了記号の場合に(ステップS118,Yes)、c1がタグ開始記号ならf=1とし、c1がタグ終了記号ならf=0に設定する(ステップS119)。
f=1の場合には(ステップS120,No)、ステップS113に移行する。f=0の場合に(ステップS120,Yes)、データ圧縮処理部160bは、c0とc1を繋げた長さ2の文字列を計数表Tに登録する。該文字列が登録時未の場合、データ圧縮処理部160bは、該文字列の出現数を1増やし(ステップS121)、ステップS113に移行する。
次に、図33のステップS102に示した辞書構築・文字列置換処理の処理手順について説明する。図35は、辞書構築・文字列置換処理の処理手順を示すフローチャートである。図35に示すように、データ圧縮処理部160bは、未使用文字集合Uに文字が存在するか否かを判定する(ステップS131)。
データ圧縮処理部160bは、未使用文字集合Uに文字が存在しない場合には(ステップS132,No)、XMLデータDを、文字列圧縮済みデータCとして出力し、圧縮辞書データDic(圧縮辞書データ150e)を出力する(ステップS133)。
一方、データ圧縮処理部160bは、未使用文字集合Uに文字が存在する場合に(ステップS132,Yes)、圧縮辞書データ150eに未登録な文字列のうちで、もっとも頻度の高い(出現数が最も大きい)文字列sを計数表Tから検索する(ステップS134)。
データ圧縮処理部160bは、文字列sの出現数が計数閾値α以上であるか否かを判定する(ステップS135)。データ圧縮処理部160bは、文字列sの出現数が計数閾値α未満の場合に(ステップS136,No)、ステップS133に移行する。
データ圧縮処理部160bは、文字列sの出現数が計数閾値α以上の場合に(ステップS136,Yes)、未使用文字集合Uの文字aに対して、(s、a)の組を圧縮辞書データDicに加え、Uから文字aを削除する(ステップS137)。
データ圧縮処理部160bは、XMLデータD中の全ての文字列sを文字aに置換し(ステップS138)、文字列計数処理を実行し(ステップS139)、ステップS131に移行する。図35のステップS139に示す文字列計数処理は、図34に示した文字列計数処理と同じである。
次に、図33のステップS103に示したタグ名置換処理の処理手順について説明する。図36は、タグ名置換処理の処理手順を示すフローチャートである。図36に示すように、データ圧縮処理部160bは、XMLデータDをスキャンし、Dに出現する全てのタグ名を対応表T(対応表150c)に登録する(ステップS141)。
データ圧縮処理部160bは、対応表Tに登録された全てのタグ名に対して、符号を割り当てる(ステップS142)。データ圧縮処理部160bは、XMLデータDの全てのタグ名を、対応表Tに割当てられた符号に変換し(ステップS143)、符号化データB(符号化データ150b)を出力する(ステップS144)。
次に、ACマシン構築部160c、照合処理部160d、切出処理部160eが実行する構築処理について説明する。図37は、構築処理の処理手順を示すフローチャートである。図37に示すように、ACマシン構築部160cは、抽出条件受け付け処理を実行する(ステップS201)。
そして、ACマシン構築部160cは、ACマシン構築処理を実行し(ステップS202)、照合処理部160d、切出処理部160eは、切出し位置計算処理を実行する(ステップS203)。
ここで、図37のステップS201に示した抽出条件受け付け処理の処理手順について説明する。図38は、抽出条件受け付け処理の処理手順を示すフローチャートである。図38に示すように、ACマシン構築部160cは、抽出条件Q(抽出条件150g)を受け付ける(ステップS211)。
ACマシン構築部160cは、対応表150cを用いて抽出条件Qにおける項目名を書き換え(ステップS212)、書き換えた抽出条件Qを抽出条件Q’とする(ステップS213)。
続いて、図37のステップS202に示したACマシン構築処理の処理手順について説明する。図39は、ACマシン構築処理の処理手順を示すフローチャートである。図39に示すように、ACマシン構築部160cは、ΠのトライTを構築し(ステップS221)、トライ(Π)にフェイラ遷移を追加する(ステップS222)。
ACマシン構築部160cは、ACマシンAC(Π)にスキップ遷移を追加し(ステップS223)、圧縮データ用ACマシンAC_b(Π、dic)を出力する(ステップS224)。
ここで、図39のステップS221に示したΠのトライTを構築する処理について説明する。図40は、ΠのトライTを構築する処理の処理手順を示すフローチャートである。図40に示すように、ACマシン構築部160cは、初期状態(id=0)を作成し、トライ(Π)を初期状態のみで構成されるトライに設定する(ステップS231)。
ACマシン構築部160cは、初期状態の全ての通常遷移先を初期状態に設定し(ステップS232)、Πにパターンが存在するか否かを判定する(ステップS233)。ACマシン構築部160cは、Πにパターンが存在しない場合に(ステップS234,No)、ΠのトライT(Π)を出力する(ステップS235)。
ACマシン構築部160cは、Πにパターンが存在しない場合に(ステップS234,Yes)、Πから1つパターンを取り出し、取り出したパターンをpに設定する(ステップS236)。ACマシン構築部160cは、パターン登録処理を実行し(ステップS237)、ステップS233に移行する。
続いて、図40のステップS237に示したパターン登録処理の処理手順について説明する。図41は、パターン登録処理の処理手順を示すフローチャートである。図41に示すように、ACマシン構築部160cは、現在の状態sをトライTの初期状態に設定し、sの前の状態rを空の状態に設定する(ステップS241)。
ACマシン構築部160cは、パターンpに次の文字が存在するか否かを判定する(ステップS242)。ACマシン構築部160cは、パターンpに次の文字が存在しない場合に(ステップS243,No)、パターンpの最後の文字(a)と状態rに対して、rのパターンリストPlist[code(a)]に、pを代入し(ステップS244)、トライTを出力する(ステップS245)。
一方、ACマシン構築部160cは、パターンpに次の文字が存在する場合に(ステップS243,Yes)、次の文字をaとし、aのasciiコードをcode(a)に設定する(ステップS246)。ACマシン構築部160cは、sの通常遷移g[code(a)]=Nullであるか否かを判定する(ステップS247)。
ACマシン構築部160cは、通常遷移g[code(a)]=Nullの場合に(ステップS248,Yes)、ステップS250に移行する。一方、ACマシン構築部160cは、g[code(a)]=Nullではない場合に(ステップS248,No)、状態nを新規作成し、g[code(a)]=nに設定する(ステップS249)。ACマシン構築部160cは、状態rに状態sを代入し、状態sにg[code(a)]を代入し(ステップS250)、ステップS242に移行する。
次に、図39のステップS222に示したトライ(Π)にフェイラ遷移を追加する処理について説明する。図42、図43は、トライ(Π)にフェイラ遷移を追加する処理の処理手順を示すフローチャートである。
図42に示すように、ACマシン構築部160cは、初期状態から通常遷移できる全ての状態sに対して、それらのフェイラ遷移先に初期状態を代入し、現在の状態sをqueueに登録する(ステップS251)。
ACマシン構築部160cは、状態リストqueueに状態が存在するか否かを判定する(ステップS252)。ACマシン構築部160cは、状態リストqueueに状態が存在しない場合に(ステップS253,No)、現在のトライTをACマシンαとして出力する(ステップS254)。
ACマシン構築部160cは、状態リストqueueに状態が存在する場合に(ステップS253,Yes)、状態リストqueueの先頭の状態をsとし、状態リストqueueからsを除去する(ステップS255)。
ACマシン構築部160cは、状態sの通常遷移が全てNullであるか否かを判定する(ステップS256)。ACマシン構築部160cは、状態sの通常遷移が全てNullの場合に(ステップS257,Yes)、ステップS252に移行する。
一方、ACマシン構築部160cは、状態sの通常遷移が全てNullではない場合に(ステップS257,No)、状態sにおいて、g[code(a)]≠Nullとなる全ての文字aの集合をAに設定する(ステップS258)。
ACマシン構築部160cは、集合Aに文字が存在するか否かを判定する(ステップS259)。ACマシン構築部160cは、集合Aに文字が存在しない場合に(ステップS260,No)、ステップS252に移行する。
一方、ACマシン構築部160cは、集合Aに文字が存在する場合に(ステップS260,Yes)、図43に移行し、集合Aから文字を1つ取り出し、取り出した文字をaに設定する(ステップS261)。
ACマシン構築部160cは、状態sの通称遷移先next=g[code(a)]を、状態リストqueueの最後尾に追加し(ステップS262)、状態sからフェイラ遷移を繰り返し、文字aに対する通常遷移先がNullにならない最初の状態をfに設定する(ステップS263)。
ACマシン構築部160cは、状態fに対する文字aの通常遷移先へのポインタfnext=g[code(a)]を判定し(ステップS264)、状態nextのフェイラ遷移先をfnext=g[code(a)]に設定する(ステップS265)。ACマシン構築部160cは、状態nextを与える遷移のパターンリストに、状態fnextを与える遷移のパターンリストを足し合わせ(ステップS266)、図42のステップS259に移行する。
次に、図39のステップS223に示したACマシンAC(Π)にスキップ遷移を追加する処理の処理手順について説明する。図44は、ACマシンAC(Π)にスキップ遷移を追加する処理の処理手順を示すフローチャートである。図44に示すように、ACマシン構築部160cは、n=1に設定し(ステップS271)、圧縮辞書データdicにn行目が存在するか否かを判定する(ステップS272)。
ACマシン構築部160cは、圧縮辞書データdicにn行目が存在しない場合に(ステップS273,No)、現在のACマシンAC(Π)を圧縮データ用ACマシンAC_b(Π、dic)として出力する(ステップS274)。
一方、ACマシン構築部160cは、圧縮辞書データdicにn行目が存在する場合に(ステップS273,Yes)、圧縮辞書データdicのn行目において、ペア文字列を(a,b)とおき、置換される文字列をXに設定する(ステップS275)。
ACマシン構築部160cは、第1のスキップ遷移作成処理を実行し(ステップS276)、第2のスキップ遷移作成処理を実行する(ステップS277)。ACマシン構築部160cは、n=n+1に設定し(ステップS278)、ステップS272に移行する。
続いて、図44のステップS276に示した第1のスキップ遷移作成処理の処理手順について説明する。図45は、第1のスキップ遷移作成処理の処理手順を示すフローチャートである。図45に示すように、ACマシン構築部160cは、ACマシンAC(Π)の全パスの集合をPとおき(ステップS281)、Pにパスが存在するか否かを判定する(ステップS282)。
ACマシン構築部160cは、Pにパスが存在しない場合に(ステップS283,No)、現在のACマシンAC(Π)を出力する(ステップS284)。一方、ACマシン構築部160cは、Pにパスが存在する場合に(ステップS283,Yes)、Pから任意のパスを取り出す(ステップS285)。
ACマシン構築部160cは、パスを初期状態から葉に向かって走査する。そして、パス上の状態sとtに対してs.g[code(a)]=t、かつt.g[code(a)]=uが成り立つ場合に、スキップ遷移s.g[code(X)]=uを作成する(ステップS286)。ACマシン構築部160cは、Pからパスを消去し(ステップS287)、ステップS282に移行する。
続いて、図44のステップS277に示した第2のスキップ遷移作成処理の処理手順について説明する。図46は、第2のスキップ遷移作成処理の処理手順を示すフローチャートである。
ACマシン構築部160cは、ACマシンAC(Π)の全状態を探索し(ステップS291)、ある状態sに対して、s.g[code(a)]=tかつt.g[code(b)]=NULLが成り立つものを、集合Fから除去する(ステップS292)。
ACマシン構築部160cは、集合Fに状態tが存在するか否かを判定する(ステップS294)。ACマシン構築部160cは、集合Fに状態tが存在しない場合に(ステップS293,No)、第2のスキップ遷移作成処理を終了する。
一方、ACマシン構築部160cは、集合Fに状態tが存在する場合に(ステップS294,Yes)、集合Fから任意の状態tを選択する(ステップS295)。ACマシン構築部160cは、t.fail.g[code(X)]=uとし、s.g[code(a)]=tとなる状態をsとする場合、スキップ遷移s.g[code(X)]=uを作成する(ステップS296)。ACマシン構築部160cは、選択済みの状態tを消去し(ステップS297)、ステップS293に移行する。
次に、図37のステップS203に示した切出し位置計算処理の処理手順について説明する。かかる切出し位置計算処理を実行することで、切出処理部160eは、抽出条件150gに対応する符号化データ150bの位置を計算し、計算した位置の情報を圧縮データのまま抽出する。図47は、切出し位置計算処理の処理手順を示すフローチャートである。図47に示すように、切出処理部160eは、符号化データBの先頭文字をスキャンし(ステップS301)、スキャンした文字が文字列部であるか否かを判定する(ステップS302)。
切出処理部160eは、スキャンした文字が文字列部である場合に(ステップS303,Yes)、文字にあわせて、圧縮データ用ACマシン150fを1文字遷移させ、照合を検知した場合にk=1に設定し(ステップS304)、ステップS311に移行する。
一方、切出処理部160eは、スキャンした文字が文字列部でない場合に(ステップS303,No)、スキャンした文字が開始タグであるか終了タグであるかを判定する(ステップS305)。
切出処理部160eは、スキャンした文字が終了タグの場合に(ステップS306,No)、f=1かつk=1の場合に、現在位置をendに登録し、スタックSの最終要素のstartを取得し、(start、end)をRに登録する(ステップS307)。ここで、endに登録する現在位置は、符号化データ150bの先頭文字から数えた、終了タグ符号の「>」までの数に対応する。切出処理部160eは、タグ符号をスタックSからポップし(取り出し)、k=0に設定し(ステップS308)、ステップS310に移行する。
一方、切出処理部160eは、スキャンした文字が開始タグの場合に(ステップS306,Yes)、タグ符号と現在位置startをスタックSにプッシュする(格納する)(ステップS309)。ここで、現在位置startは、符号化データ150bの先頭文字から数えた、開始タグ符号の「<」までの数に対応する。
切出処理部160eは、スタックSの値が、変換後抽出条件Q’の項目部と一致する場合にf=1とし、一致しない場合にf=0とし(ステップS310)、全ての文字をスキャンしたか否かを判定する(ステップS311)。
切出処理部160eは、全ての文字をスキャンしていない場合に(ステップS312,No)、次の文字をスキャンし(ステップS313)、ステップS302に移行する。一方、切出処理部160eは、全ての文字をスキャンした場合に(ステップS312,Yes)、Rを出力する(ステップS314)。
上述してきたように、本実施例1にかかる検索装置100は、データ圧縮処理部160bが、XMLデータ150aを圧縮する場合に、XMLデータ150aに含まれる文字列と、XMLデータ150aに含まれる区切り文字とを区別して符号化した符号化データ150bを生成する。符号化データ150bは、文字列と区切文字を区別して符号化しているので、切出処理部160eが抽出条件に基づいて、符号化データ150bから圧縮データをそのまま切出しても、正確な検索結果を得ることが出来る。
ところで、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
図48は、実施例にかかる検索装置100を構成するコンピュータのハードウェア構成を示す図である。図48に示すように、このコンピュータ(検索装置)200は、入力装置201、モニタ202、RAM(Random Access Memory)203、ROM(Read Only Memory)204、他の装置(例えば、端末装置)との間でデータの送受信を行う通信装置205、記憶媒体からデータを読み取る媒体読取装置206、CPU(Central Processing Unit)207、HDD(Hard Disk Drive)208をバス209で接続して構成される。
そして、HDD208には、上記した検索装置100の機能と同様の機能を発揮する検索プログラム208bが記憶されている。CPU207が、検索プログラム208bを読み出して実行することにより、検索プロセス207aが起動される。ここで、検索プロセス207aは、図2に示したデータ管理部160a、データ圧縮処理部160b、ACマシン構築部160c、照合処理部160d、切出処理部160eに対応する。
また、HDD208は、記憶部150に格納されたデータに対応する各種データ208aを記憶する。CPU207は、HDD208に格納された各種データ208aを読み出して、RAM203に格納し、RAM203に格納された各種データ203aを利用して、XMLデータを圧縮し、抽出条件に対応するデータを圧縮データのまま抽出する。
ところで、図48に示した検索プログラム208bは、必ずしも最初からHDD208に記憶させておく必要はない。たとえば、コンピュータに挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」、または、コンピュータの内外に備えられるハードディスクドライブ(HDD)などの「固定用の物理媒体」、さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータに接続される「他のコンピュータ(またはサーバ)」などに検索プログラム208bを記憶しておき、コンピュータがこれらから検索プログラム208bを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)圧縮されたデータの集合を対象に検索処理を実行する検索システムであって、
データの属性を示す区切情報により各データが区切られたデータ集合を取得し、当該データ集合に含まれるデータに基づき符号化データに置換し、さらに、該データの属性を示す区切情報のみに基づき符号化データに置換することで前記データ集合を圧縮する圧縮処理部
を有することを特徴とする検索システム。
(付記2)付記1記載の検索システムであって、
前記圧縮処理部により圧縮されたデータ集合を対象に、検索すべき属性およびデータを有する検索条件を取得した場合に、前記圧縮されたデータ集合の区切情報と置換前の区切情報の関係に基づいて、前記検索条件の属性を符号化データに置換する置換処理部と、
前記検索条件の属性を符号化データに置換された検索条件と前記圧縮されたデータ集合を基にして、前記検索条件に指定される前記圧縮されたデータ集合上の領域を特定し、特定した領域に含まれるデータを出力する検索処理部と
を有することを特徴とする検索システム。
(付記3)付記2記載の検索システムであって、
前記検索処理部は、前記圧縮されたデータ集合を先頭から読み出して、前記検索条件の属性に対応する位置の区切情報に囲まれたデータに対応する符号化データを抽出し、抽出した符号化データに対応するデータが前記検索条件のデータを有するか否かを判定し、判定結果に基づいて、前記検索条件に指定される前記圧縮されたデータ集合上の領域を特定することを特徴とする検索システム。
(付記4)コンピュータに、
データの属性を示す区切情報により各データが区切られた階層構造を有するデータ集合を取得し、当該データ集合に含まれるデータに基づき符号化データに置換し、さらに、該データの属性を示す区切情報のみに基づき符号化データに置換することで前記データ集合を圧縮する圧縮処理機能
を実現させるためのプログラムを記録した記憶媒体。
(付記5)付記4記載の記憶媒体であって、
前記圧縮処理機能により圧縮されたデータ集合を対象に、検索すべき属性およびデータを有する検索条件を取得した場合に、前記圧縮されたデータ集合の区切情報と置換前の区切情報の関係に基づいて、前記検索条件の属性を符号化データに置換する置換処理機能と、
前記検索条件の属性を符号化データに置換された検索条件と前記圧縮されたデータ集合を基にして、前記検索条件に指定される前記圧縮されたデータ集合上の領域を特定し、特定した領域に含まれるデータを出力する検索処理機能と
を実現させるためのプログラムを記録した記憶媒体。
(付記6)付記5記載の記憶媒体であって、
前記検索処理機能は、前記圧縮されたデータ集合を先頭から読み出して、前記検索条件の属性に対応する位置の区切情報に囲まれたデータに対応する符号化データを抽出し、抽出した符号化データに対応するデータが前記検索条件のデータを有するか否かを判定し、判定結果に基づいて、前記検索条件に指定される前記圧縮されたデータ集合上の領域を特定することを特徴とする記憶媒体。
(付記7)圧縮装置が、
データの属性を示す区切情報により各データが区切られた階層構造を有するデータ集合を取得するステップと、
前記データ集合に含まれるデータに基づき符号化データに置換し、さらに、該データの属性を示す区切情報のみに基づき符号化データに置換することで前記データ集合を圧縮するステップと
を実行することを特徴とする圧縮方法。
(付記8)検索装置が、
付記7に記載の圧縮装置により圧縮されたデータ集合を対象に、検索すべき属性およびデータを有する検索条件を取得した場合に、前記圧縮されたデータ集合の区切情報と置換前の区切情報の関係に基づいて、前記検索条件の属性を符号化データに置換するステップと、
前記検索条件の属性を符号化データに置換された検索条件と前記圧縮されたデータ集合を基にして、前記検索条件に指定される前記圧縮されたデータ集合上の領域を特定し、特定した領域に含まれるデータを出力するステップと
を実行することを特徴とする検索方法。
(付記9)前記データを出力するステップにおいて、前記圧縮されたデータ集合を先頭から読み出して、前記検索条件の属性に対応する位置の区切情報に囲まれたデータに対応する符号化データを抽出し、抽出した符号化データに対応するデータが前記検索条件のデータを有するか否かを判定し、判定結果に基づいて、前記検索条件に指定される前記圧縮されたデータ集合上の領域を特定すること特徴とする付記8に記載の検索方法。
110 入力部
120 出力部
130 通信制御IF部
140 入出力制御IF部
150 記憶部
150a XMLデータ
150b 符号化データ
150c 対応表
150d ACマシン
150e 圧縮辞書データ
150f 圧縮データ用ACマシン
150g 抽出条件
150h 変換後抽出条件
160 制御部
160a データ管理部
160b データ圧縮処理部
160c ACマシン構築部
160d 照合処理部
160e 切出処理部
200 コンピュータ(検索装置)
201 入力装置
202 モニタ
203 RAM
203a,208a 各種データ
204 ROM
205 通信制御装置
206 媒体読取装置
207 CPU
207a 検索プロセス
208 HDD
208b 検索プログラム
209 バス

Claims (5)

  1. 圧縮されたデータの集合を対象に検索処理を実行する検索システムであって、
    データの属性を示す区切情報により各データが区切られたデータ集合を取得し、当該データ集合に含まれるデータに基づき符号化データに置換し、さらに、該データの属性を示す区切情報のみに基づき符号化データに置換することで前記データ集合を圧縮する圧縮処理部
    を有することを特徴とする検索システム。
  2. 請求項1記載の検索システムであって、
    前記圧縮処理部により圧縮されたデータ集合を対象に、検索すべき属性およびデータを有する検索条件を取得した場合に、前記圧縮されたデータ集合の区切情報と置換前の区切情報の関係に基づいて、前記検索条件の属性を符号化データに置換する置換処理部と、
    前記検索条件の属性を符号化データに置換された検索条件と前記圧縮されたデータ集合を基にして、前記検索条件に指定される前記圧縮されたデータ集合上の領域を特定し、特定した領域に含まれるデータを出力する検索処理部と
    を有することを特徴とする検索システム。
  3. 請求項2記載の検索システムであって、
    前記検索処理部は、前記圧縮されたデータ集合を先頭から読み出して、前記検索条件の属性に対応する位置の区切情報に囲まれたデータに対応する符号化データを抽出し、抽出した符号化データに対応するデータが前記検索条件のデータを有するか否かを判定し、判定結果に基づいて、前記検索条件に指定される前記圧縮されたデータ集合上の領域を特定することを特徴とする検索システム。
  4. コンピュータに、
    データの属性を示す区切情報により各データが区切られた階層構造を有するデータ集合を取得し、当該データ集合に含まれるデータに基づき符号化データに置換し、さらに、該データの属性を示す区切情報のみに基づき符号化データに置換することで前記データ集合を圧縮する圧縮処理機能
    を実現させるためのプログラムを記録した記憶媒体。
  5. 請求項4記載の記憶媒体であって、
    前記圧縮処理機能により圧縮されたデータ集合を対象に、検索すべき属性およびデータを有する検索条件を取得した場合に、前記圧縮されたデータ集合の区切情報と置換前の区切情報の関係に基づいて、前記検索条件の属性を符号化データに置換する置換処理機能と、
    前記検索条件の属性を符号化データに置換された検索条件と前記圧縮されたデータ集合を基にして、前記検索条件に指定される前記圧縮されたデータ集合上の領域を特定し、特定した領域に含まれるデータを出力する検索処理機能と
    を実現させるためのプログラムを記録した記憶媒体。
JP2009140372A 2009-06-11 2009-06-11 検索システムおよび記憶媒体 Pending JP2010287052A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009140372A JP2010287052A (ja) 2009-06-11 2009-06-11 検索システムおよび記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009140372A JP2010287052A (ja) 2009-06-11 2009-06-11 検索システムおよび記憶媒体

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014155577A Division JP6055441B2 (ja) 2014-07-30 2014-07-30 検索装置、検索方法および検索プログラム

Publications (1)

Publication Number Publication Date
JP2010287052A true JP2010287052A (ja) 2010-12-24

Family

ID=43542701

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009140372A Pending JP2010287052A (ja) 2009-06-11 2009-06-11 検索システムおよび記憶媒体

Country Status (1)

Country Link
JP (1) JP2010287052A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013045208A (ja) * 2011-08-23 2013-03-04 Fujitsu Ltd データ生成方法、装置及びプログラム、検索処理方法、装置及びプログラム
JP2013101565A (ja) * 2011-11-09 2013-05-23 Fujitsu Ltd オートマトン処理装置、オートマトン処理方法およびオートマトン処理プログラム
JP2014521159A (ja) * 2011-12-30 2014-08-25 ペキン ユニバーシティ ファウンダー グループ カンパニー リミテッド 文書の圧縮、解凍及び照会のための方法及び装置
WO2016205209A1 (en) * 2015-06-15 2016-12-22 Ascava, Inc. Performing multidimensional search, content-associative retrieval, and keyword-based search and retrieval on data that has been losslessly reduced using a prime data sieve
US9582514B2 (en) 2014-12-27 2017-02-28 Ascava, Inc. Performing multidimensional search and content-associative retrieval on data that has been losslessly reduced using a prime data sieve
JP2018077611A (ja) * 2016-11-08 2018-05-17 株式会社野村総合研究所 文書検索装置、文書検索方法およびコンピュータプログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003203067A (ja) * 2001-12-28 2003-07-18 Fujitsu Ltd 構造化文書変換方法およびデータ変換方法
JP2008084341A (ja) * 1999-06-21 2008-04-10 Fujitsu Ltd 構造化文書の圧縮方法および圧縮装置並びに構造化文書圧縮プログラムを記録したコンピュータ読取可能な記録媒体
JP2008140179A (ja) * 2006-12-01 2008-06-19 Canon Inc 文書データ処理方法、文書データ作成装置、及び文書データ処理システム
JP2008243077A (ja) * 2007-03-28 2008-10-09 Toshiba Corp 構造化文書管理装置、方法及びシステム
WO2008142800A1 (ja) * 2007-05-24 2008-11-27 Fujitsu Limited 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084341A (ja) * 1999-06-21 2008-04-10 Fujitsu Ltd 構造化文書の圧縮方法および圧縮装置並びに構造化文書圧縮プログラムを記録したコンピュータ読取可能な記録媒体
JP2003203067A (ja) * 2001-12-28 2003-07-18 Fujitsu Ltd 構造化文書変換方法およびデータ変換方法
JP2008140179A (ja) * 2006-12-01 2008-06-19 Canon Inc 文書データ処理方法、文書データ作成装置、及び文書データ処理システム
JP2008243077A (ja) * 2007-03-28 2008-10-09 Toshiba Corp 構造化文書管理装置、方法及びシステム
WO2008142800A1 (ja) * 2007-05-24 2008-11-27 Fujitsu Limited 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013045208A (ja) * 2011-08-23 2013-03-04 Fujitsu Ltd データ生成方法、装置及びプログラム、検索処理方法、装置及びプログラム
JP2013101565A (ja) * 2011-11-09 2013-05-23 Fujitsu Ltd オートマトン処理装置、オートマトン処理方法およびオートマトン処理プログラム
JP2014521159A (ja) * 2011-12-30 2014-08-25 ペキン ユニバーシティ ファウンダー グループ カンパニー リミテッド 文書の圧縮、解凍及び照会のための方法及び装置
US11947494B2 (en) 2014-12-27 2024-04-02 Ascava, Inc Organizing prime data elements using a tree data structure
US9582514B2 (en) 2014-12-27 2017-02-28 Ascava, Inc. Performing multidimensional search and content-associative retrieval on data that has been losslessly reduced using a prime data sieve
US10108633B2 (en) 2014-12-27 2018-10-23 Ascava, Inc. Using a distributed prime data sieve for efficient lossless reduction, search, and retrieval of data
US11068444B2 (en) 2014-12-27 2021-07-20 Ascava, Inc. Using a distributed prime data sieve for efficient lossless reduction, search, and retrieval of data
US11567901B2 (en) 2014-12-27 2023-01-31 Ascava, Inc. Reduction of data stored on a block processing storage system
WO2016205209A1 (en) * 2015-06-15 2016-12-22 Ascava, Inc. Performing multidimensional search, content-associative retrieval, and keyword-based search and retrieval on data that has been losslessly reduced using a prime data sieve
KR20180021074A (ko) * 2015-06-15 2018-02-28 아스카바, 인크. 무손실 축소된 데이터에 대한 기본 데이터 시브를 사용한 다차원 탐색, 내용 연관 검색, 및 키워드 기반 탐색 및 검색의 수행
JP2018524886A (ja) * 2015-06-15 2018-08-30 アスカバ・インコーポレイテッドAscava, Inc. 基本データシーブを用いて無損失削減されたデータに対する多次元検索、コンテンツ連想的な取出し、ならびにキーワードベースの検索および取出しの実行
KR102667800B1 (ko) 2015-06-15 2024-05-22 아스카바, 인크. 무손실 축소된 데이터에 대한 기본 데이터 시브를 사용한 다차원 탐색, 내용 연관 검색, 및 키워드 기반 탐색 및 검색의 수행
JP2018077611A (ja) * 2016-11-08 2018-05-17 株式会社野村総合研究所 文書検索装置、文書検索方法およびコンピュータプログラム
CN109923538B (zh) * 2016-11-08 2023-09-15 株式会社野村综合研究所 文本检索装置、文本检索方法以及计算机程序
CN109923538A (zh) * 2016-11-08 2019-06-21 株式会社野村综合研究所 文本检索装置、文本检索方法以及计算机程序

Similar Documents

Publication Publication Date Title
JP2010287052A (ja) 検索システムおよび記憶媒体
JP4980148B2 (ja) 文書検索方法
US7200584B2 (en) Time series pattern extraction apparatus and method
US20100011032A1 (en) Document management apparatus, document management system, and document management method
JP5195149B2 (ja) 真偽判定方法
JP2007521528A (ja) ボリュームイメージを生成すること
JP5207696B2 (ja) 情報処理装置及び情報処理装置の制御方法、並びにプログラム
CN111831785A (zh) 敏感词检测方法、装置、计算机设备及存储介质
JP6055441B2 (ja) 検索装置、検索方法および検索プログラム
JP5194818B2 (ja) データ分類方法およびデータ処理装置
KR101374239B1 (ko) 문서파일의 포렌식 분석 방법 및 시스템
CN109564613B (zh) 签名创建设备、签名创建方法、记录签名创建程序的记录介质、以及软件确定***
US20060173755A1 (en) Catalog management apparatus, catalog generation method and catalog retrieval method
JP5665821B2 (ja) 文書処理装置、及びプログラム
US20120317526A1 (en) Verification method, computer-readable recording medium, and design verification apparatus
JP2009059050A (ja) 画像処理装置および統合ドキュメント生成方法
JP5396843B2 (ja) 検索方法および検索装置
JP5223380B2 (ja) 評価方法および検索装置
JP2007140707A (ja) グラフ検索装置
JP2004213091A (ja) 文書画像検索装置及びその方法、文書画像検索システム、プログラム
US7523031B1 (en) Information processing apparatus and method capable of processing plurality type of input information
CN114118078A (zh) 制作辅助装置、制作辅助方法及记录介质
JP5514145B2 (ja) テストデータ生成装置及び方法
JP4222166B2 (ja) 文書収集装置、文書検索装置及び文書収集検索システム
JP2009070206A (ja) データ検索システムおよびデータ検索方法ならびにデータ検索装置,検索実行者端末およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131010

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131022

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131224

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140430

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140730

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140807

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20141003