JP4796108B2 - 構造化文書検索装置、方法及びプログラム - Google Patents

構造化文書検索装置、方法及びプログラム Download PDF

Info

Publication number
JP4796108B2
JP4796108B2 JP2008247998A JP2008247998A JP4796108B2 JP 4796108 B2 JP4796108 B2 JP 4796108B2 JP 2008247998 A JP2008247998 A JP 2008247998A JP 2008247998 A JP2008247998 A JP 2008247998A JP 4796108 B2 JP4796108 B2 JP 4796108B2
Authority
JP
Japan
Prior art keywords
stream
data
structured document
scanning
scan
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008247998A
Other languages
English (en)
Other versions
JP2010079646A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008247998A priority Critical patent/JP4796108B2/ja
Priority to US12/503,439 priority patent/US9378301B2/en
Publication of JP2010079646A publication Critical patent/JP2010079646A/ja
Application granted granted Critical
Publication of JP4796108B2 publication Critical patent/JP4796108B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/81Indexing, e.g. XML tags; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • G06F16/8365Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • G06F16/8373Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/149Adaptation of the text data for streaming purposes, e.g. Efficient XML Interchange [EXI] format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/221Parsing markup language streams

Landscapes

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

Description

本発明は、複数の要素が階層化されて含まれる構造化文書データを記憶し検索条件に応じて該当の構造化文書データを検索する構造化文書検索装置、方法及びプログラムに関する。
XML(Extensible Markup Language)などで記述された構
造化文書データを記憶・検索するための構造化文書管理システムとしては、いくつかの方
式が考えられている。第1の方式としては、構造化文書データをそのままテキストファイルとして管理する方式がある。この第1の方式では、データ数やサイズが大きくなると格納効率が悪くなるという問題がある。また、この第1の方式では、構造化文書の特性を生かした検索が困難になるという問題がある。第2の方式としては、RDB(Relational Database)に構造化文書データを管理する方式がある。この第2の方式は、基幹系などで広く使われている。第3の方式としては、構造化文書データを管理するために開発されたOODB(Obje ct Oriented Database)で管理する方式がある。この第3の方式は、RDBを拡張した、例えばXML対応RDBである。RDBは、データをフラットなテーブル形式に格納するため、XMLデータのような階層構造をテーブルに対応付ける複雑なマッピングが必要となる。このマッピングのため、テーブルに関する事前の構造(スキーマ)設計を十分に行わないと、パフォーマンスが低下してしまう問題が発生する。そこで、近年においては、上述した第1〜第3の方式に代わる第4の方式が提案されている。第4の方式は、ネイティブに構造化文書データを管理する方式である。この第4の方式は、多種多様な階層構造を持つXMLデータを特別なマッピング処理すること無しに格納するため、格納や取得時に特別なオーバヘッドが存在しない。また、コストのかかる事前のスキーマ設計が不要になり、ビジネス環境の変化により必要に応じてXMLデータの構造を自由に変更することが可能である。
ところで、構造化文書データが効率良く格納されたからといって、格納されたデータを取り出す手段が無ければ意味が無い。この格納されたデータを取り出す手段として、問合せ言語がある。RDBの世界ではSQL(Structured Query Langu age)があるように、XMLではXQuery(XML Query Language)が策定されている。このXQueryは、XMLデータをデータベースのように扱うための言語であり、条件に合致するデータ集合の取り出しや集計・分析を行うための手段が提供されている。また、XMLデータは親子や兄弟などの要素が組み合わさった階層構造を持つため、この階層構造を辿る手段が提供されている。このように格納された構造化文書データの階層構造を辿りながら、検索条件で指定された特定の要素と特定の構造とが含まれている構造化文書データを検索するための技術は、例えば特許文献1や特許文献2において開示されている。
ところが、前述したように、XMLデータは親子や兄弟などの要素が組み合わさった階層構造を持つため、データベースの格納効率が悪いという問題がある。さらに、構造化文書データの構造が大規模になる程、データベースに格納されている構造化文書データの数が多い程、あるいは、検索条件が複雑な程、各構造化文書データの階層構造を構成する要素間を辿るという処理には時間がかかる。また、構造化文書データの数、あるいはサイズが大きくなれば、格納された構造化文書データをメモリ上に展開することは不可能であり、多くはハードディスクなど二次記憶に格納されることになる。特に、ネイティブに構造化文書データを管理する方式では、構造化文書データは要素間の階層構造をそのまま記憶することから、検索条件として指定された要素や構造があるか否かを調べるためには、二次記憶上に格納された構造化文書データの要素間を頻繁にアクセスしなければならない。複雑な検索条件の場合はなおさらである。すなわち、特許文献1や特許文献2において開示されているような階層構造を辿る手段によれば、データベース内の各構造化文書データの階層構造を構成する要素データ間を辿りながら、検索条件にて指定された要素や構造を持つ構造化文書データを検索するため、高速に検索できないという問題点がある。特に、構造化文書データのサイズが大きくなる程、検索対象の構造化文書データの数が多い程、あるいは、クエリデータ(検索条件)が複雑である程、検索処理の高速化が困難である。より具体的には、下記の通りである。
(1)複雑なXQueryの場合、複数のパスパターンがクエリに含まれる。複数のパスパターンへの照合を行うのに、同一構造化文書データへのトラバースが繰り返し発生する。特にオンメモリにできないサイズを取り扱うケースでは、同一ページへのディスクI/Oが断続発生し、性能劣化が激しくなる。
(2)XQueryのサブセットであるXPathの場合でも、高ヒット時には性能劣化が発生する。つまり、構造化文書の集合の大半をトラバースするケースでは、大量のディスクI/Oが発生してしまう。
また、同一の構造化文書データへのデータスキャンを抑えるアイデアとして、構造化文書ストリーム処理の技術がある。例えば、非特許文献1〜2に記載された技術が挙げられる。これらの技術は構造化文書データ全部を主記憶に記憶しないでXPathなどの問合わせを処理するものである。複数のXPathに現れる複数のパスパターンを状態遷移に変換して処理する方式も提案されている。しかし、現実には以下のような問題が発生してしまう。
(3)高ヒットでないXPathでは性能劣化が著しい。バックトラックベースであるため、CPU処理上のオーバヘッドも大きい。処理の特性上、索引を使った問合わせ処理が難しい。
上述したように、構造化文書データを格納したデータベースに対して、複数のパスパターンを最小のディスクI/Oと少ない計算量とで処理するのは困難であると言える。このような上記の課題に鑑みてなされた技術が特許文献3に開示されている。特許文献3の技術では、構造化文書データを構文解析し、構造ガイドデータを用いて構造化文書データ中にある構造情報を1次元の配列データである構造ストリームデータに変換して記憶する。これにより、構造化文書データの原文比でも1/20程度に圧縮することができ、ディスクI/Oを大幅に低減することができる。このため、データベースの格納効率を向上させることができるという効果を奏する。また、特許文献3の技術によれば、バックトラックでなく決定的な基本動作の繰返しであり、CPU処理上のオーバヘッドが小さい。このことから、結果として、高速化が困難であった複雑なXQueryや複数のXPathなどのクエリデータによる検索処理を飛躍的に高速化することができるという効果を奏する。特許文献3の技術は、要素順序を保持しながら構造データやテキストデータをストリームという概念で永続化したものである。単なる構造データの並びは圧縮符号化しやすいので、高速化や軽量化などの効果が見込まれる。
特開2001−034618号公報 特開2000−057163号公報 特開2007−226452号公報 Y. Diao、 P.Fischer、 and M.J.Frank lin. YFilter: Efficient and Scalable Fil tering of XML Documents. In The 18th Int ernational Conference of Data Engineering、 San Jose、 February 2002. I. Avila−Campillo、 D. Raven、 T. G reen、 A. Gupta、 Y. Kadiyska、 M.Onizuka、 a nd D. Suciu. An XML Toolkit for Light−we ight XML Stream Processing、2002.
ところで、XQueryを高速に処理するためには、テキスト条件や構造条件を使って、テキスト索引とXMLデータとの走査範囲をできるだけ絞り込む必要がある。しかし、特許文献3の技術のように、直列的なリレーでは、構造条件を使ってテキスト索引の走査範囲を絞り込むことが困難であり、テキスト条件に関連する全てのテキスト索引を走査しなければならない。結果として、ディスクI/Oコストが増大するという恐れがあった。また、テキスト索引での大量ヒット時には、大きなサイズの中間データを保持する必要があり、メモリコストが増大する可能性があった。
本発明は、上記に鑑みてなされたものであって、ディスクI/Oコストやメモリコストの増大を抑制しつつ、検索条件に応じた検索を高速に行うことが可能な構造化文書検索装置、方法及びプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、複数の要素が階層化されて各々含まれる複数の構造化文書データを記憶する構造化文書検索装置であって、前記複数の構造化文書データに各々含まれる各要素が構文解析の結果順に配列されたデータストリームを第1記憶領域に格納する第1格納手段と、前記複数の構造化文書データに各々含まれ且つ当該構造化文書データを検索する際の索引となる前記要素を構文解析の結果順に並べた少なくとも1つの索引ストリームを第2記憶領域に格納する第2格納手段と、前記構造化文書データを検索するための検索条件に基づいて、前記データストリーム及び前記索引ストリームに対する走査を命じる走査プランを生成する生成手段と、前記走査プランによって命じられた前記データストリーム及び前記索引ストリームのうち少なくとも一方に対する走査を実行する実行手段とを備え、前記生成手段は、前記検索条件に基づいて、文書単位で、前記データストリーム及び前記索引ストリームを含む複数のストリームのうち第1のストリームに対する走査を命じ、当該走査の結果に応じて第2のストリームに対する走査を命じる走査プランを生成し、前記第1格納手段は、固定長のデータブロック毎に配列された前記データストリームについて、前記構造化文書データ毎に先頭の前記データブロックの先頭に同期記号を埋め込んで、当該データストリームを前記第1記憶領域に格納し、前記実行手段は、前記同期記号が出現してから次の前記同期記号が出現するまでのデータブロックを前記文書単位として前記データストリームに対する走査を実行するものであり、前記走査プランによって命じられた前記第1のストリームに対する走査を文書単位で実行し、前記走査の結果に応じて、前記データストリームである前記第2のストリームについて前記同期記号が出現してから次の前記同期記号が出現するまでのデータブロックに対する走査をスキップすることを特徴とする。
また、本発明は、第1格納手段と、第2格納手段と、生成手段と、実行手段とを備え、複数の要素が階層化されて各々含まれる複数の構造化文書データを記憶する構造化文書検索装置で実行される構造化文書検索方法であって、前記第1格納手段が、前記複数の構造化文書データに各々含まれる各要素が構文解析の結果順に配列されたデータストリームを第1記憶領域に格納する第1格納ステップと、前記第2格納手段が、前記複数の構造化文書データに各々含まれ且つ当該構造化文書データを検索する際の索引となる前記要素を構文解析の結果順に並べた少なくとも1つの索引ストリームを第2記憶領域に格納する第2格納ステップと、前記生成手段が、前記構造化文書データを検索するための検索条件に基づいて、前記データストリーム及び前記索引ストリームに対する走査を命じる走査プランを生成する生成ステップと、前記実行手段が、前記走査プランによって命じられた前記データストリーム及び前記索引ストリームのうち少なくとも一方に対する走査を実行する実行ステップとを含み、前記生成ステップは、前記検索条件に基づいて、文書単位で、前記データストリーム及び前記索引ストリームを含む複数のストリームのうち第1のストリームに対する走査を命じ、当該走査の結果に応じて第2のストリームに対する走査を命じる走査プランを生成し、前記第1格納ステップは、固定長のデータブロック毎に配列された前記データストリームについて、前記構造化文書データ毎に先頭の前記データブロックの先頭に同期記号を埋め込んで、当該データストリームを前記第1記憶領域に格納し、前記実行ステップは、前記同期記号が出現してから次の前記同期記号が出現するまでのデータブロックを前記文書単位として前記データストリームに対する走査を実行するものであり、前記走査プランによって命じられた前記第1のストリームに対する走査を文書単位で実行し、前記走査の結果に応じて、前記データストリームである前記第2のストリームについて前記同期記号が出現してから次の前記同期記号が出現するまでのデータブロックに対する走査をスキップすることを特徴とする。
本発明によれば、ディスクI/Oコストやメモリコストの増大を抑制しつつ、検索条件に応じた検索を高速に行うことが可能になる。
以下に添付図面を参照して、この発明にかかる構造化文書検索装置、方法及びプログラムの最良な実施の形態を詳細に説明する。
図1は、本実施の形態にかかる構造化文書管理システムの構成を例示する図である。本システムは、同図に示すように、構造化文書検索装置であるサーバコンピュータ(以下、サーバという)1にLAN(Local Are Network)等のネットワーク2を介して構造化文書入出力装置であるクライアントコンピュータ(以下、クライアント端末という)3が複数台接続されたサーバクライアントシステムである。
図2は、サーバ1及びクライアント端末3のハードウェア構成を例示する図である。サーバ1及びクライアント端末3のハードウェア構成は、一般的なパーソナルコンピュータと同様である。サーバ1及びクライアント端末3は、情報処理を行うCPU(Central Processing Unit)101、BIOSなどを記憶した読出し専用メモリであるROM(Read Only Memory)102、各種データを書換え可能に記憶するRAM(Random Access Memory)103、各種データベースとして機能するとともに各種のプログラムを格納するHDD(Hard Disk Drive)104、記憶媒体110を用いて情報を保管したり外部に情報を配布したり外部から情報を入手するためのCD−ROMドライブ等の媒体駆動装置105、ネットワーク2を介して外部の他のコンピュータと通信により情報を伝達するための通信制御装置106、処理経過や結果等を操作者に表示するCRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)等の表示部107、並びに操作者がCPU101に命令や情報等を入力するためのキーボードやマウス等の入力部108等から構成されており、これらの各部間で送受信されるデータをバスコントローラ109が調停して動作する。
このようなサーバ1及びクライアント端末3では、ユーザが電源を投入するとCPU101がROM102内のローダーというプログラムを起動させ、HDD104よりOS(Operating System)というコンピュータのハードウェアとソフトウェアとを管理するプログラムをRAM103に読み込み、このOSを起動させる。このようなOSは、ユーザの操作に応じてプログラムを起動したり、情報を読み込んだり、保存を行ったりする。OSのうち代表的なものとしては、Windows(登録商標)、UNIX(登録商標)等が知られている。これらのOS上で走る動作プログラムをアプリケーションプログラムと呼んでいる。なお、アプリケーションプログラムは、所定のOS上で動作するものに限らず、後述の各種処理の一部の実行をOSに肩代わりさせるものであってもよいし、所定のアプリケーションソフトやOSなどを構成する一群のプログラムファイルの一部として含まれているものであってもよい。
ここで、サーバ1は、アプリケーションプログラムとして、構造化文書管理プログラムをHDD104に記憶している。この意味で、HDD104は、構造化文書管理プログラムを記憶する記憶媒体として機能する。一方、クライアント端末3は、アプリケーションプログラムとして、構造化文書入出力プログラムをHDD104に記憶している。この意味で、HDD104は、構造化文書入出力プログラムを記憶する記憶媒体として機能する。
また、一般的には、サーバ1及びクライアント端末3のHDD104にインストールされるアプリケーションプログラムは、CD−ROMやDVDなどの各種の光ディスク、各種光磁気ディスク、フレキシブルディスクなどの各種磁気ディスク、半導体メモリ等の各種方式のメディア等の記憶媒体110に記録され、この記憶媒体110に記録された動作プログラムがHDD104にインストールされる。このため、CD−ROM等の光情報記録メディアやFD等の磁気メディア等の可搬性を有する記憶媒体110も、アプリケーションプログラムを記憶する記憶媒体となり得る。さらには、アプリケーションプログラムは、例えば通信制御装置106を介して外部から取り込まれ、HDD104にインストールされても良い。
サーバ1は、OS上で動作する構造化文書管理プログラムが起動すると、この構造化文書管理プログラムに従い、CPU101が各種の演算処理を実行して各部を集中的に制御し各種機能を実現させる。一方、クライアント端末3は、OS上で動作する構造化文書入出力プログラムが起動すると、この構造化文書入出力プログラムに従い、CPU101が各種の演算処理を実行して各部を集中的に制御し各種機能を実現させる。
ここで、クライアント端末3において実現される各種機能について説明する。図3は、サーバ1の機能的構成及びクライアント端末3の機能的構成を例示する図である。同図に示されるように、クライアント端末3は、構造化文書登録部30と、構造化文書検索処理部31とを有する。構造化文書登録部30は、入力部108から入力された構造化文書データやクライアント端末3のHDD104に予め記憶された構造化文書データを、後述するサーバ1の構造化文書のデータベース(構造化文書DB)13に登録するためのものである。この構造化文書登録部30は、登録すべき構造化文書データとともに登録要求をサーバ1に送信する。構造化文書検索処理部31は、ユーザにより入力部108から入力された指示に従って、構造化文書DB13に格納された構造化文書データのうち所望の構造化文書データを検索するための検索条件などが記述されたクエリデータを作成し、当該クエリデータを検索要求としてサーバ1へ送信する。また、構造化文書検索処理部31は、サーバ1から送信された当該検索要求に応じた結果データを受け取り、これを表示部107に表示する。
次に、サーバ1において実現される各種機能について図3を用いて説明する。サーバ1は、格納処理部11と、検索処理部12と、構造化文書DB13とを有する。構造化文書DB13は、例えばHDD104に生成されるデータベースであり、構造化文書DB13には構造化文書データが格納される。図4〜6は、構造化文書DB13に格納される構造化文書データを例示する図である。
構造化文書データを記述するための代表的な言語としてXML(Extensible Markup Language)が挙げられる。図4〜6に示される構造化文書データは、XMLで記述されたものである。XMLでは、文書構造を構成する個々のパーツを要素(エレメント:Element)と呼び、要素はタグ(tag)を使って記述する。具体的には、要素の始まりを示すタグ(開始タグ)と、終わりを示すタグ(終了タグ)の2つのタグでデータを挟み込んで、1つの要素を表現している。なお、開始タグと終了タグで挟み込まれたテキストデータは、当該開始タグと終了タグで表された1つの要素に含まれるテキスト要素(テキストノード)である。また、テキスト要素を挟み込む開始タグ及び終了タグの組を構造要素という。図4に示される文書1は、<書籍>というタグで囲まれた要素のルート要素が存在する。この「書籍」という構造要素は、<タイトル>、<筆者>、<本文>といったタグで囲まれた複数の子要素となる構造要素を包含する。そして、<タイトル>は、「XMLデータベース」というテキスト要素をもつ。構造要素<筆者>は2つ存在している。「服部〜」というテキスト要素を子要素に持った構造要素<筆者>が先頭であり、「田中〜」というテキスト要素を子要素に持った構造要素<筆者>がそれに続く。図5に示される文書2は、<本>いうタグで囲まれた要素のルート要素が存在する。同様に、図6に示される文書3は、<書籍>というタグで囲まれた要素のルート要素が存在する。
また、構造化文書DB13には、構造ガイドデータ領域13aとデータストリーム領域13bと索引ストリーム領域13cとが設けられる。構造ガイドデータ領域13aには、構造ガイドデータが格納される。構造ガイドデータとは、構造化文書DB13に格納された構造化文書データの集合全体に渡る階層構造の要約を示すデータである。データストリーム領域13bには、構造ガイドデータに基づいて構造化文書データから生成されるデータストリームが格納される。索引ストリーム領域13cには、構造化文書データを検索する際の索引となる索引ストリームが格納される。これらの構造ガイドデータ、データストリーム及び索引ストリームの詳細については後述する。
格納処理部11は、クライアント端末3からの登録要求を受けて、クライアント端末3から送信された構造化文書データを構造化文書DB13に格納する。格納処理部11は、格納インターフェイス部20とストリーム変換部21とデータストリーム格納部22と索引ストリーム格納部23とを有する。格納インターフェイス部20は、クライアント端末3から送信された構造化文書データを構文解析した後、ストリーム変換部21を呼び出して、データストリーム及び索引ストリームを生成させる。
ストリーム変換部21は、格納インターフェイス部20が構文解析した構造化文書データについて、構造化文書DB13の構造ガイドデータ領域13aに格納されている構造ガイドデータを参照及び更新することで、当該構造化文書データ中にある階層構造情報をデータストリームに変換する。即ち、ストリーム変換部21は、構造化文書データの構文解析の結果得られる要素の並びとして、構造要素及びテキスト要素を発生順に並べたものをデータストリームとして生成する。要素の発生順とは、構造化文書をルート要素からトラバースするときの結果の順番、即ち構文解析の結果順である。つまり、構造化文書データを親要素から子要素、兄要素から弟要素という要素の順番をさす。
ここでストリーム変換部21がデータストリームを生成する方法の概要について説明する。まず、その生成に用いる構造ガイドデータについて説明する。構造ガイドデータは、階層構造をなしており、以下の条件を保持している。
(a)システムに格納された構造化文書データ集合に現れる全てのパスは、構造ガイドデータに現れる。
(b)構造ガイドデータに現れる全てのパスは、システムに格納された構造化文書データ集合に現れる。
(c)構造ガイドデータに現れるパスは全て一意的である。
図7は、構造ガイドデータの一例を概念的に示す図である。図4に示した構造化文書データを構文解析した結果、構造ガイドデータが生成される。構造ガイドデータは複数のガイドノードとアークとからなる階層構造である。各ガイドノードには、タグ名が記されている。テキスト要素に対しては、「text()」という組み込みタグ名が記されている。また、ルートのガイドノードには「ROOT」というタグ名が設定されている。各ガイドノードには、一意なID(GID)が割り当てられており、G0〜G9までのIDが使われている。新たな構造化文書データが構造化文書DB13に格納される毎に、それまで存在しなかったガイドノード集合が構造化文書DB13の構造ガイドデータ領域13aに追加されることで、構造ガイドデータは漸増的に更新されていく。
データストリームは、構造化文書データをルートから深さ優先で辿って行くときに通過する文書ノードに対応するGIDを並べた配列となる。このように配列された各要素を配列要素という。
図8は、データストリームの一例を概念的に示す図である。このデータストリームの例は、図7に示した構造ガイドデータを使って図4の構造化文書データをGIDの配列に変換したものである。各配列要素は、GIDを使って数値化されている。
E0 「ROOT」に対応する配列要素:(G)0
E1 「書籍」に対応する配列要素:(G)1
E2 「筆者」に対応する配列要素:(G)2
・・・
このように要素を配列してデータストリームを生成することで、2次元的な構造の構造化文書データを1次元の配列データとなるデータストリームにストリーム変換部21は変換する。
ここでストリーム変換部21が構造ガイドデータを更新する方法の概要について説明する。ストリーム変換部21は、新たに格納すべき構造化文書データと、この構造化文書データの格納先のフォルダのGIDを含む登録要求をクライアント端末3から受け取ると、当該構造化文書データの構文解析を行う。なお、クライアント端末3は、格納先のフォルダのGIDをサーバ1に問い合わせて予め取得しているものとする。そして、ストリーム変換部21は、構造化文書データの複数のオブジェクトデータからなる階層構造を解析結果として得て、これをRAM103などのメモリ上に展開する。XML形式の構造化文書データについてはDOM(Document Object Model)形式のオブジェクトデータに展開される。そして、ストリーム変換部21は、解析結果をそのルートから辿ることによって、当該構造化文書データの構造、すなわち、当該構造化文書データ中の各要素に対応する複数のノードと、当該複数のノードからなる構造(Scとする)とを抽出する。そして、ストリーム変換部21は、格納先フォルダのGID(GIDpとする)をキーに構造ガイドデータ領域13aを走査して対応する構造(Spとする)を取得する。その後、ストリーム変換部21は、ScとSpとの照合を行い、Scの構造要素に対応するSpの構造要素があれば、当該Scの構造要素に当該Spの構成要素のGIDを付与し、Scの構造要素に対応するSpの構造要素がなければ、Spに存在せずに、Scに存在する新たな要素に新たなGIDを付与し、Spに当該新たな要素を追加する。また、ストリーム変換部21は、Scの当該新たな要素に当該新たなGIDを付与する。この操作をScの全ての構造要素に対しストリーム変換部21は行う。そして、ストリーム変換部21は、更新したSpを構造ガイドデータ領域13aに格納する。これにより、構造ガイドデータ領域13aに格納される構造ガイドデータの更新がなされる。最後に、ストリーム変換部21は、格納すべき構造化文書データの各要素にGIDを付与する。尚、以上の処理の詳細については例えば特許文献3に示されているためここでは詳細な説明を省略する。
また、ストリーム変換部21は、格納インターフェイス部20が構文解析した構造化文書データについて、事前に設定された設定情報に基づいて、当該構造化文書データ中にあるテキスト要素を索引ストリームに変換する。即ち、ストリーム変換部21は、構造化文書データの構文解析の結果得られる要素のうち、設定情報に合致するテキスト要素の集合を選択して、発生順に並べたものを索引ストリームとして生成する。設定情報は、索引化すべきテキスト要素を指定するものであり、通常は構造化文書データに対するパス指定を使う。図9は、設定情報の一例を示す図である。同図に示されるように、設定情報は、「:」が区切り記号になっているカラム付きのレコード表現である。第1カラムがパス指定を示しており、第2カラムがストリーム番号を示している。例えば、第1レコードは、構造化文書データのルート直下(./)の構造要素<タイトル>の子要素となるテキスト要素を索引化して索引ストリーム1に格納するという指定を意味している。まだ、第2レコードは、ルート直下の構造要素<筆者>の子要素となるテキスト要素を索引化して索引ストリーム2に格納するという指定を意味している。これは、構造化文書データが格納される度に更新するなど自動的に設定することもできるが、ユーザが事前に指定することもある。尚、索引ストリームには文書単位毎に索引となるテキスト要素が含まれる。複数種類のテキスト要素が指定される場合は、ストリーム変換部21は索引ストリームを複数個生成する。
図3の説明に戻る。データストリーム格納部22は、ストリーム変換部21が生成したデータストリームに対して文書単位毎に同期信号SYMCをヘッダ情報に埋め込むと共に文書数を示すブロック数もヘッダ情報に埋め込んで、当該データストリームをデータストリーム領域13bに格納する。索引ストリーム格納部23は、ストリーム変換部21が生成した索引ストリームに対して対応する文書単位毎に同期信号SYMCをヘッダ情報に埋め込んで、当該索引ストリームを索引ストリーム領域13cに格納する。
図10は、以上のようにして、図4〜6に示される構造化文書データから変換されたデータストリーム及び索引ストリームを例示する図である。データストリームは必ず1本である。索引ストリームは図5の設定情報の通り2本存在する。図4〜6に各々示される文書1、文書2及び文書3が順番に格納されている。各ストリームは、128B、1024B、4096Bといった固定長のブロックの並びで構成されている。ここで簡単のため、データストリームの場合はDataBlock[i](i=0、1、2、...)という1次元の配列イメージで参照することにする。索引ストリームの場合は複数存在するので、IndexBlock[j][i](i=0、1、2、....;j=0、1、2、...;jは索引ストリームの本数)という2次元の配列イメージで参照することにする。
データストリームのDataBlock[x]、DataBlock[x+1]には文書1が格納されている。文書1の<タイトル>要素の子要素となるテキスト要素は索引ストリーム1のIndexBlock[1][y]に格納されている。文書1の構造要素<筆者>の子要素となるテキスト要素は索引ストリーム2のIndexBlock[2][z]に格納されている。データストリームのDataBlock[x+2]には文書2が格納されている。文書2の構造要素<タイトル>の子要素となるテキスト要素は索引ストリーム1のIndexBlock[1][y+1]に格納されている。文書2の構造要素<筆者>の子要素となるテキスト要素は索引ストリーム2のIndexBlock[2][z+1]、IndexBlock[2][z+2]に格納されている。データストリームのDataBlock[x+3]には文書3が格納されている。文書3の構造要素<タイトル>の子要素となるテキスト要素は索引ストリーム1のIndexBlock[1][y+2]に格納されている。文書3の構造要素<筆者>の子要素となるテキスト要素は索引ストリーム2のIndexBlock[2][z+3]に格納されている。各文書の先頭にはヘッダ情報があり、このヘッダ情報内にSYNC(S)と呼ばれる同期記号が埋め込まれている。この同期信号により文書単位でデータブロックを区別することができる。その後、<書籍>、<タイトル>、「XMLデータベース」、</タイトル>、...というように出現順に各要素が格納されている。1ブロックでは格納できないので、連続してDataBlock[x+1]にも要素が格納されている。この格納処理はイベントベースのXMLパーサSAX(Simple API for XML)を組み合わせることで実現できる。
図11は、DataBlock[x]とDataBlock[x+1]を具体化した図である。DataBlock[x]のヘッダ情報には上述した同期信号SYNCと本文書のブロック数(2)とが格納されている。尚、データストリーム、索引ストリーム1及び索引ストリーム2を区別する必要がない場合には、これらを単にストリームという。
図3の説明に戻る。検索インターフェイス部24は、クライアント端末3から送信された検索要求を受けて、当該検索要求であるクエリデータを構文解析した後、ストリーム集合走査プラン生成部25を呼び出して走査プランを生成させる。ここでは例えばXQueryにより記述されたクエリデータを取り扱う。
XMLでは、W3Cで提案されているXQuery(XML Query Language)という問合せ言語があり、これに基づいた問合せ記述方法に則っている。XQueryは、FLWR(for-let-where-return)という構文パターンで説明できる。以下に、XQueryの言語仕様を手続き的な観点で説明する。for節の構文は、「for 変数 in 式」である。for節の構文は、式を満足するものを変数に代入してループするという意味を持つ。let節の構文は、「let 変数 := 式」である。let節の構文は、式を満足するものを集約してシーケンスとして変数に代入するという意味を持つ。シーケンスとは、フラットなリストである。where節は、Fで繰り返されるループを制限するものである。where節の構文は、「where 式」である。where節の構文は、式を満足するものだけループをまわし、そうでないものはループをスキップするという意味を持つ。return節は、XQueryを処理した結果をフォーマット化するものである。return節の構文は、「return 式」である。return節の構文は、変数を含む任意のXMLデータを記述することができる。変数の構文は、「$文字列」である。入れ子問い合わせなどで二重宣言された場合を除き、同じ文字列を持つ変数は同一のものと見なされる。XMLデータの要素間の階層条件を指定するオペレータとして、XQueryでは以下のようなものがある。
・“/” 要素間は親子関係であることを示すオペレータ
・“//” 要素間は先祖子孫関係であることを示すオペレータ
・“.” 任意の要素
図12は、以上のようなXQueryにより記述されたクエリデータの一例を示す図である。同図には、検索要求として以下のことを要求するクエリデータ1が示されている。構造化文書DB「ROOT」の階層木の中に<書籍>という構造要素があり、この<書籍>という構造要素の中に<タイトル>という構造要素があり、この<タイトル>という構造要素の中に「XML」というテキスト要素が出現し、この<書籍>という構造要素の中に<筆者>という構造要素があり、この<筆者>という構造要素の中に「服部」というテキスト要素が出現する構造化文書データの<書籍>の一覧を返すことである。
ストリーム集合走査プラン生成部25は、検索インターフェイス部24からの呼び出しに応じて、クエリデータから走査プランを生成する。走査プランを生成する具体的な方法については後述の動作欄で説明する。
さらに、検索インターフェイス部24は、ストリーム集合走査プラン実行部26を呼び出して、ストリーム集合走査プラン生成部25が生成した走査プランを実行させる。その後、検索インターフェイス部24は、詳細条件検査部27を呼び出して最終的な結果データを生成させてこれを例えばRAM103に記憶させる。そして、検索インターフェイス部24は、当該結果データを検索要求に応じた検索結果としてクライアント端末3に送信する。ストリーム集合走査プラン生成部25は、上述した設定情報を参照して、走査プラン構造化文書DB13にアクセスするための手順として走査プランを生成する。上述したように、構造化文書DB13には、データストリームや索引ストリームなどの複数のストリームが存在する。このような複数のストリームをどの手順で走査するかを示す走査プランをストリーム集合走査プラン生成部25は生成する。ストリーム集合走査プラン実行部26は、ストリーム集合走査プラン生成部25が生成した走査プランを実行して結果データを生成する。詳細条件検査部27は、クエリデータで指定された検索条件のうち、ストリーム集合走査プラン生成部25が生成した走査プランだけではチェックできない詳細な検索条件(詳細条件という)に基づいて結果データを検査して、最終的な結果データを生成してこれをRAM103に記憶させる。
(2)動作
<走査プラン生成処理>
次に、本実施の形態にかかるサーバ1の行う処理の手順について説明する。まず、サーバ1が走査プランを生成する処理の手順について図13を用いて説明する。検索インターフェイス部24は、クライアント端末3から送信された検索要求を受け取ると、当該検索要求であるクエリデータを構文解析した後、ストリーム集合走査プラン生成部25を呼び出して走査プランを生成させる。ストリーム集合走査プラン生成部25は、まず、クエリデータからクエリグラフを生成する(ステップS1)。クエリグラフは、タグとタグとの間の関連をツリー形式で表現することで生成することができる。XQueryにより記述されるクエリデータからのクエリグラフは、Yacc(Yet Another Compiler Compiler)などの構文解析ツールを使うことで機械的に生成することができる。このようなクエリグラフの生成は、例えば、特許文献3に示されるパスパターンコンパイル処理と類似処理とにより行うことができる。
図14は、図8に示したクエリデータ1から生成されたクエリグラフを示す模式図である。同図に示すように、クエリグラフとは、クエリデータを構成する条件をグラフで表現したものになっている。図8に示したクエリデータを構成する条件とは、以下の通りである。
・XMLデータの要素間階層条件
−root要素の子孫要素(//)に構造要素<書籍>がある。
−構造要素<書籍>の子要素(/)に構造要素<タイトル>がある。
−構造要素<書籍>の子要素(/)に構造要素<筆者>がある。
・XMLデータのテキスト比較条件
−構造要素<タイトル>のテキスト要素は「XML」を含んでいる(contains)。
−構造要素<筆者>のテキスト要素は「服部」を含んでいる(contains)。
尚、構造化文書DB13上のXMLデータの要素が束縛される変数に相当するものを変数ノードと呼ぶ。これは図14においては丸印で示されている。また、クエリデータで明示的に宣言された変数「$文字列」に相当する変数ノードを軸ノードと呼ぶこれは図14においては二重丸で示されている。また、変数ノード間に対する条件をクエリグラフ述語(以下、述語ノードという)と呼ぶ。これは図14においては菱形で示されている。
次いで、ストリーム集合走査プラン生成部25は、このようなクエリグラフを走査しクエリグラフ述語をチェックすることで、クエリグラフを複数のサブグラフに分解する。分解する観点には以下のようなものがある。
・テキスト比較条件CMPを有するサブグラフ
・要素間階層条件TAGだけで構成されるサブグラフ
図15は、図14に示したクエリグラフを上述の観点から分解したサブグラフを例示する図である。同図に示されるように、ここでは、3つの重なったサブグラフに分解される。それぞれサブグラフA、B、Cと名付ける。
・サブグラフAは、要素間階層条件TAGだけで構成されるサブグラフである。
・サブグラフB,Cは、テキスト比較条件CMPを各々有するサブグラフである。
そして、ストリーム集合走査プラン生成部25は、このように分解した各サブグラフに対してストリームを割り当てる(ステップS2)。ここでは例えば以下のようにサブグラフA〜Cに対して順にデータストリーム、索引ストリーム1及び索引ストリーム2が各々割り当てられる。
・サブグラフAは構造に関するものなので、サブグラフAにはデータストリームが割り当てられる。
・サブグラフBは構造要素<タイトル>に関する比較条件を有するものである。ここでは図9に示した設定情報が参照され、サブグラフBには索引ストリーム1が割り当てられる。
・サブグラフCは構造要素<筆者>に関する比較条件を有するものである。ここでは図9に示した設定情報を参照が参照され、サブグラフCには索引ストリーム2が割り当てられる。
このようにしてストリーム集合走査プラン生成部25は、クエリグラフの各要素を索引ストリームで処理できる部分とデータストリームで処理できる部分とに分類すると共に、設定情報を参照して、サブグラフ毎に各ストリームを割り当てる。
次いで、ストリーム集合走査プラン生成部25は、ストリームのデータサイズや選択率を考慮することで、3つのストリームの走査の順番を決定する(ステップS3)。尚、この決定には様々なヒューリスティックスを用いることができる。最も簡単なものとして、各ストリームのデータサイズの優先順位が挙げられる。この場合例えばデータサイズの小さい順に各ストリームの順位をストリーム集合走査プラン生成部25は決定する。尚、一般的なデータベース技術において、検索条件が索引(ストリーム)に設定されたときに検索条件を満足する要素の数の割合を選択率(SELECTIVITY)と称する。これには区間度数分布情報などの統計データが用いられる。索引が低い選択率を有する場合には、その索引は、データベース表内の比較的少数のレコードを表す。索引が高い選択率を有する場合には、その索引は、データベース表内の比較的多数のレコードを表す。ここでは、事前の統計情報により選択率が索引ストリーム1、索引ストリーム2、データストリームの順番で大きいものとし、この順番を用いる。
次いで、ストリーム集合走査プラン生成部25は、各ストリームに対する走査を命じる走査命令と、サブグラフ間、即ち、各サブグラフが割り当てられたストリーム間の論理関係に応じて各ストリームに対する走査命令を接続する制御命令とを含む走査プランを生成する(ステップS4)。具体的には、ストリーム集合走査プラン生成部25は、ストリーム間の論理関係がAND関係であれば「FILTER」といった制御命令で各ストリームの走査命令を接続し、ストリーム間の論理関係がOR関係であれば「OR」といった制御命令で各ストリームの走査命令を接続して走査プランを生成する。これらの「FILTER」や「OR」といった制御命令は、第1のストリームに対する走査命令に従った走査の結果に応じて第2のストリームに対する走査が実行されるように当該第2のストリームに対する走査命令を接続する制御命令となる。
図16は、クエリデータ1に対してストリーム集合走査プラン生成部25が生成する走査プランを示す図である。この走査プランは、索引ストリーム1に対する走査を命じる走査命令と、索引ストリーム2に対する走査を命じる走査命令と、データストリームに対する走査を命じる走査命令とを含む。各ストリーム間の論理関係はAND関係であるため、これらが「FILTER」といった制御命令で接続されている。走査の手順としては、索引ストリーム1を走査した後、索引ストリーム2を走査し、最後にデータストリームを走査するという手順となる。また段数という概念があり、索引ストリーム1の走査が1段目、索引ストリーム2の走査が2段目ということになる。そして「FILTER」が、上位段数の走査結果を受けて、走査範囲を絞り込むという制御命令を示している。つまり、この走査プランによれば、索引ストリーム1に対する走査命令に従って走査が実行された結果に応じて、制御命令によって当該走査命令に接続される、索引ストリーム2に対する走査命令に従った走査が実行されないことにより、索引ストリーム2に対する不要な走査がスキップされる。また、索引ストリーム2に対する走査命令に従って走査が実行された結果に応じて、制御命令によって当該走査命令に接続される、データストリームに対する走査命令に従った走査が実行されないことにより、データストリームに対する不要な走査がスキップされる。
<走査プラン実行処理>
次に、サーバ1が走査プランを実行する処理の手順について図17を用いて説明する。サーバ1のストリーム集合走査プラン実行部26は、走査プランに従って、ストリームの終端に到達するまで(ステップS20:YES)、文書単位で以下の処理を繰り返し行う。まず、ストリーム集合走査プラン実行部26は、走査プランを実行するためのパラメータとして「N:=1、OP:=SCAN」を設定する(ステップS21)。即ちここでストリーム集合走査プラン実行部26は、走査の対象の段Nを「1段目」に設定し、実行内容として「走査」を設定する。そして、走査の対象となる段Nが最終段でなく(ステップS23:NO)、実行内容が「走査」であり(ステップS24:SCAN)、制御命令が「FILTER」である場合(ステップS25:YES)、ステップS26に進む。ステップS26では、ストリーム集合走査プラン実行部26は、走査対象の段Nのストリームについて、次の同期信号SYNCが出現するまで走査して、走査範囲内における検索条件に該当するものがあるか否かを判定する。即ち、ストリーム集合走査プラン実行部26は、同期信号が出現してから次の同期信号が出現するまでの間のデータブロックを文書単位の走査範囲として走査する。ただし、この間のデータブロックが複数ある場合には、検索条件によっては、全てのデータブロックではなく一部のデータブロックのみ走査すれば良い場合もある。
次いで、ストリーム集合走査プラン実行部26は、ステップS26の走査結果が肯定的である場合(ステップS27:YES)、ストリーム集合走査プラン実行部26は、実行内容として「走査」を設定して、ステップS22に進む。一方、ステップS26の走査結果が否定的である場合(ステップS27:NO)、ストリーム集合走査プラン実行部26は、実行内容として「スキップ」を設定して、ステップS22に進む。ステップS22では、ストリーム集合走査プラン実行部26は、走査プランを実行するためのパラメータとして「N:N+1」を設定する(ステップS22)。即ちここでストリーム集合走査プラン実行部26は、走査の対象の段Nを1つ増加させる。そしてストリーム集合走査プラン実行部26はステップS23以降の処理を行う。
尚、制御命令が「FILER」ではなく(ステップS25:NO)、制御命令が「OR」である場合(ステップS30:YES)、ステップS31に進む。ステップS31では、ストリーム集合走査プラン実行部26は、走査対象の段Nのストリームについて、次の同期信号SYNCが出現するまで走査して、走査範囲内における検索条件に該当するものがあるか否かを判定する。次いで、ストリーム集合走査プラン実行部26は、ステップS31の走査結果が肯定的である場合(ステップS32:YES)、ストリーム集合走査プラン実行部26は、実行内容として「走査」を設定して、上述のステップS22に進む。一方、ステップS31の走査結果が否定的である場合(ステップS32:NO)、ストリーム集合走査プラン実行部26は、現在の走査対象の段Nの次の段のストリームが存在するか否かを判定する(ステップS34)。当該判定結果が否定的である場合、ストリーム集合走査プラン実行部26は、実行内容として「スキップ」を設定して、上述のステップS22に進む。また、ステップS34の判定結果が肯定的である場合には、上述のステップS31に進む。
尚、実行内容が「走査」ではなく「スキップ」である場合(ステップS24:SKIP)、ストリーム集合走査プラン実行部26は、走査対象の段Nのストリームについて、次の同期信号SYNCが出現するまで走査をスキップして(ステップS36)、ステップS22に進む。また、走査の対象の段が最終段を超える場合(ステップS23:YES)、ストリーム集合走査プラン実行部26は、詳細条件に基づいて結果データを検査して、最終的な結果データを生成して、ステップS20に進む。以上のようにして、ストリーム集合走査プラン実行部26は走査プランを実行し、ストリームの終端に到達すると(ステップS20:YES)、その実行を終了する。
ここで、サーバ1が走査を実行する処理の具体例について説明する。図18は、図16に示した走査プランをサーバ1が実行する処理イメージを示す図である。この例ではストリーム集合走査プラン実行部26は、索引ストリーム1に含まれる全てのブロックIndexBlock[1][i](i=0、1、2、...)を走査することになる。
(GS1)まず、ストリーム集合走査プラン実行部26は、走査対象の段として1段目である索引ストリーム1のIndexBlock[1][y]を走査すると、走査範囲内における検索条件として「XML」というテキスト要素が存在するか否かを判定し、ここではこれが存在していると判定する(ステップS21,S23〜S28)。
(GS2)次いで、ストリーム集合走査プラン実行部26は、走査対象の段として2段目である索引ストリーム2のIndexBlock[2][z]を走査すると、走査範囲内における検索条件として「服部」というテキスト要素が存在するか否かを判定し、ここではこれが存在していると判定する(ステップS22,S23〜S28)。
(GS3)次いで、ストリーム集合走査プラン実行部26は、走査対象の段として3段目であるデータストリームのDataBlock[x]を走査して、結果データ、即ち、文書1のデータを得る(ステップS22,S23〜S28)。
その後、詳細条件検査部27が、(GS3)で得られた結果データを詳細条件に基づいて検査して、最終的な結果データを生成してこれをRAM103に記憶させる(ステップS22,S23,S37)。
(GS4)そして、ストリーム集合走査プラン実行部26は、走査対象の段として1段目である索引ストリーム1の走査に戻り、次のブロックIndexBlock[1][y+1]を走査すると、「XML」というテキスト要素が存在していないと判定する(ステップS20〜S21,S23〜S27,S29)。
(GS5)この場合、ストリーム集合走査プラン実行部26は、次に走査対象となる2段目である索引ストリーム2のデータブロックIndexBlock[2][z+1]及びIndexBlock[2][z+2]の走査をスキップする(ステップS22〜S24,S36)。
(GS6)同様に、ストリーム集合走査プラン実行部26は、次に走査対象となる3段目であるデータストリームのデータブロックDataBlock[x+2]の走査をスキップする(ステップS22〜S24,S36)。
(GS7)次いで、ストリーム集合走査プラン実行部26は、走査対象の段として1段目である索引ストリーム1の走査に戻り、次のブロックIndexBlock[1][y+2]を走査すると、「XML」というテキスト要素が存在していると判定する(ステップSS20〜21,S23〜S28)。
(GS8)次いで、ストリーム集合走査プラン実行部26は、走査対象の段として2段目である索引ストリーム2のIndexBlock[2][z+3]を走査すると、「服部」というテキスト要素が存在していると判定する(ステップS22,S23〜S28)。
(GS9)次いで、ストリーム集合走査プラン実行部26は、走査対象の段として3段目であるデータストリームのDataBlock[x+3]を走査して、結果データ、即ち、文書3のデータを得る(ステップS22,S23〜S28)。
その後、詳細条件検査部27が、(GS9)で得られた結果データを詳細条件に基づいて検査して、最終的な結果データを生成してこれをRAM103に記憶させる(ステップS22,S23,S37)。
(GS10)その後、ストリーム集合走査プラン実行部26は、走査対象の段として1段目である索引ストリーム1の走査に戻り、上述の処理を継続する。
以上のようにして、ストリーム集合走査プラン実行部26は、図16に示した走査プランについて、索引ストリーム1に対する走査命令に従って走査を実行した結果に応じて、制御命令によって当該走査命令に接続される、索引ストリーム2に対する走査命令に従った走査を実行しないことにより、索引ストリーム2に対する不要な走査をスキップする。また、ストリーム集合走査プラン実行部26は、索引ストリーム2に対する走査命令に従って走査が実行した結果に応じて、制御命令によって当該走査命令に接続される、データストリームに対する走査命令に従った走査を実行しないことにより、データストリームに対する不要な走査をスキップする。
次に、クエリデータの他の例に基づいて走査プランを生成してこれを実行する場合について説明する。図19は、クエリデータの他の例を示す図である。同図には、検索要求として以下のことを要求するクエリデータ2が示されている。構造化文書DB「ROOT」の階層木の中に<本>という構造要素があり、この<本>という構造要素の中に<タイトル>という構造要素があり、この<タイトル>という構造要素の中に「XML」というテキスト要素が出現し、この<本>という構造要素の中に<筆者>という構造要素があり、この<筆者>という構造要素の中に「服部」というテキスト要素が出現する構造化文書データの<本>の一覧を返すことである。
図20は、図19に示したクエリデータ2に対してストリーム集合走査プラン生成部25が生成する走査プランを示す図である。この走査プランは、データストリームに対する走査命令と、索引ストリーム1に対する走査命令と、索引ストリーム2に対する走査命令とを含み、これらが「FILTER」といった制御命令で接続されている。走査の手順としては、データストリームを走査した後、索引ストリーム1を走査し、最後に索引ストリーム2を走査するという手順となる。つまり、この走査プランによれば、データストリームを走査した結果、索引ストリーム1の不要な走査をスキップし、索引ストリーム2を走査した結果、索引ストリーム2の不要な走査をスキップすることになる。
次に、図20に示した走査プランをサーバ1が実行する処理の概要について図21を道いて説明する。この例ではストリーム集合走査プラン実行部26は、データストリームに含まれる全てのブロックDataBlock[i](i=0、1、2、...)を走査することになる。
(GS1´)まず、ストリーム集合走査プラン実行部26は、走査対象の段として1段目であるデータストリームのIndexBlock[1][x]を走査すると、走査範囲内における検索条件として、「ROOT」の階層木の中に「本」という構造要素が存在するか否かを判定し、ここではこれが存在しないと判定する(ステップS21,S23〜S27,S29)。尚、「本」という構造要素は同一の文書内の要素のうち1番目の要素であるため、同一の文書についてのブロックのうち2番目以降のブロック、ここでは、DataBlock[x+1]を走査する必要はない。
(GS2´)この場合、ストリーム集合走査プラン実行部26は、走査対象の段として2段目である索引ストリーム1のIndexBlock[1][y]の走査をスキップする(ステップS22〜S24,S36)。
(GS3´)同様に、ストリーム集合走査プラン実行部26は、次に走査対象となる3段目である索引ストリーム2のデータブロックIndexBlock[2][z]の走査をスキップする(ステップS22〜S24,S36)。
(GS4´)そして、ストリーム集合走査プラン実行部26は、走査対象の段として1段目であるデータストリームの走査に戻り、次のブロックDataBlock[x+2]を走査すると、「ROOT」の階層木の中に「本」という構造要素が存在すると判定する(ステップSS20〜21,S23〜S28)。
(GS5´)次いで、ストリーム集合走査プラン実行部26は、走査対象の段として2段目である索引ストリーム1のIndexBlock[1][y+1]を走査すると、走査範囲内における検索条件として「XML」というテキスト要素が存在するか否かを判定し、ここではこれが存在していないと判定する(ステップS22〜S27,S29)。
(GS6´)この場合、ストリーム集合走査プラン実行部26は、次に走査対象となる3段目である索引ストリーム2のデータブロックIndexBlock[2][z+1]及びIndexBlock[2][z+2]の走査をスキップする(ステップS22〜S24,S36)。
(GS7´)そして、ストリーム集合走査プラン実行部26は、走査対象の段として1段目であるデータストリームの走査に戻り、次のブロックDataBlock[x+3]を走査すると、「ROOT」の階層木の中に「本」という構造要素が存在しないと判定する(ステップS21,S23〜S27,S29)。
(GS8´)この場合、ストリーム集合走査プラン実行部26は、走査対象の段として2段目である索引ストリーム1のIndexBlock[1][y+2]の走査をスキップする(ステップS22〜S24,S36)。
(GS9´)同様に、ストリーム集合走査プラン実行部26は、次に走査対象となる3段目である索引ストリーム2のデータブロックIndexBlock[2][z+3]の走査をスキップする(ステップS22〜S24,S36)。
(GS10´)その後、ストリーム集合走査プラン実行部26は、走査対象の段として1段目であるデータストリームの走査に戻り、上述の処理を継続する。
以上のようにして、ストリーム集合走査プラン実行部26は、図20に示した走査プランについて、データストリームに対する走査命令に従って走査を実行した結果に応じて、制御命令によって当該走査命令に接続される、索引ストリーム1に対する走査命令に従った走査を実行しないことにより、索引ストリーム1に対する不要な走査をスキップする。また、ストリーム集合走査プラン実行部26は、索引ストリーム1に対する走査命令に従って走査が実行した結果に応じて、制御命令によって当該走査命令に接続される、索引ストリーム2に対する走査命令に従った走査を実行しないことにより、索引ストリーム2に対する不要な走査をスキップする。
また、クエリデータのその他の例に基づいて走査プランを生成してこれを実行する場合について説明する。図22は、クエリデータのその他の例を示す図である。同図には、検索要求として以下のことを要求するクエリデータ3が示されている。構造化文書DB「ROOT」の階層木の中に<書籍>という構造要素があり、この<書籍>という構造要素の中に<タイトル>という構造要素があり、この<タイトル>という構造要素の中に「XML」というテキスト要素が出現するか、又は、この<書籍>という構造要素の中に<筆者>という構造要素があり、この<筆者>という構造要素の中に「服部」というテキスト要素が出現する構造化文書データの<書籍>の一覧を返すことである。
図23は、図22に示したクエリデータ3に対してストリーム集合走査プラン生成部25が生成する走査プランを示す図である。この走査プランは、索引ストリーム1に対する走査命令と、索引ストリーム2に対する走査命令と、データストリームに対する走査命令とを含み、索引ストリーム1に対する走査命令と索引ストリーム2に対する走査命令とが「OR」といった制御命令で接続されている。走査の手順としては、索引ストリーム1の走査と索引ストリーム2の走査とを行った後、データストリームを走査するという手順となる。「OR」は、上位段数の走査結果を受けて、走査範囲を絞り込むという制御命令を示している。上述の「FILTER」と異なるのは、複数の上位段数の走査結果を省略することができる点である。つまり、この走査プランによれば、索引ストリーム1を走査した結果を受けて、索引ストリーム2の走査をスキップすることもある。
次に、図23に示した走査プランをサーバ1が実行する処理の概要について図24を用いて説明する。この例ではストリーム集合走査プラン実行部26は、索引ストリーム1に含まれる全てのブロックIndexBlock[1][i](i=0、1、2、...)を走査することになる。
(GS1”)まず、ストリーム集合走査プラン実行部26は、走査対象の段として1段目である索引ストリーム1のIndexBlock[1][y]を走査すると、走査範囲内における検索条件として「XML」というテキスト要素が存在するか否かを判定し、ここではこれが存在していると判定する(ステップS21,S23〜S28)。
(GS2”)この場合、ストリーム集合走査プラン実行部26は、次に走査対象となる2段目である索引ストリーム2のデータブロックIndexBlock[2][z]の走査をスキップする(ステップS22〜S24,S36)。
(GS3”)次いで、ストリーム集合走査プラン実行部26は、走査対象の段として3段目であるデータストリームのDataBlock[x]を走査して、結果データ、即ち、文書1のデータを得る(ステップS22,S23〜S28)。
その後、詳細条件検査部27が、(GS3”)で得られた結果データを詳細条件に基づいて検査して、最終的な結果データを生成してこれをRAM103に記憶させる(ステップS22,S23,S37)。
(GS4”)そして、ストリーム集合走査プラン実行部26は、走査対象の段として1段目である索引ストリーム1の走査に戻り、次のブロックIndexBlock[1][y+1]を走査すると、「XML」というテキスト要素が存在していないと判定する(ステップS20〜S21,S23〜S27,S29)。
(GS5”)次いで、ストリーム集合走査プラン実行部26は、走査対象の段として2段目である索引ストリーム2のIndexBlockIndexBlock[2][z+1]及びIndexBlock[2][z+2]を走査すると、走査範囲内における検索条件として「服部というテキスト要素が存在するか否かを判定し、ここではこれが存在していないと判定する(ステップS20〜S21,S23〜S27,S29)。
(GS6”)この場合、ストリーム集合走査プラン実行部26は、次に走査対象となる3段目であるデータストリームのデータブロックDataBlock[x+2]の走査をスキップする(ステップS22〜S24,S36)。
(GS7”)そして、ストリーム集合走査プラン実行部26は、走査対象の段として1段目である索引ストリーム1の走査に戻り、次のブロックIndexBlock[1][y+2]を走査すると、「XML」というテキスト要素が存在していると判定する(ステップSS20〜21,S23〜S28)。
(GS8”)この場合、ストリーム集合走査プラン実行部26は、走査対象の段として2段目である索引ストリーム2のIndexBlock[2][z+3]の走査をスキップする(ステップS22〜S24,S36)。
(GS9”)次いで、ストリーム集合走査プラン実行部26は、走査対象の段として3段目であるデータストリームのDataBlock[x+3]を走査して、結果データ、即ち、文書3のデータを得る(ステップS22,S23〜S28)。
その後、詳細条件検査部27が、(GS9”)で得られた結果データを詳細条件に基づいて検査して、最終的な結果データを生成してこれをRAM103に記憶させる(ステップS22,S23,S37)。
(GS10”)その後、ストリーム集合走査プラン実行部26は、走査対象の段として1段目である索引ストリーム1の走査に戻り、上述の処理を継続する。
以上のようにして、ストリーム集合走査プラン実行部26は、図23に示した走査プランについて、索引ストリーム1に対する走査命令に従って走査を実行した結果に応じて、制御命令によって当該走査命令に接続される、索引ストリーム2に対する走査命令に従った走査を実行しないことにより、索引ストリーム2に対する不要な走査をスキップする。また、ストリーム集合走査プラン実行部26は、索引ストリーム1に対する走査命令及び索引ストリーム2に対する走査命令に従って走査が実行した結果に応じて、制御命令によって当該走査命令に接続される、データストリームに対する走査命令に従った走査を実行しないことにより、データストリームに対する不要な走査をスキップする。
以上のように、本実施の形態においては、構造化文書データ本体に相当するデータストリームと文書毎の索引となる索引ストリームとを相互に走査させながら、索引と文書本体との走査範囲を同時に絞り込む。この結果、不必要な走査をスキップすることができるので、構造化文書DBへのアクセス回数を低減させ、効率的な走査を行うことができる。このため、検索の応答性を向上させることができる。
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
上述の実施の形態においては、構造ガイドデータを用いてデータストリーム及び索引ストリームを生成する方法を例示したが、データストリーム及び索引ストリームを生成する方法は上述の例に限定されない。
また、上述の実施の形態においては、索引ストリームの数を2つとしたが、この数に限定されない。
一実施の形態にかかる構造化文書管理システムの構成を例示する図である。 同実施の形態にかかるサーバ1及びクライアント端末3のハードウェア構成を例示する図である。 同実施の形態にかかるサーバ1の機能的構成及びクライアント端末3の機能的構成を例示する図である。 同実施の形態にかかる構造化文書DB13に格納される構造化文書データを例示する図である。 同実施の形態にかかる構造化文書DB13に格納される構造化文書データを例示する図である。 同実施の形態にかかる構造化文書DB13に格納される構造化文書データを例示する図である。 同実施の形態にかかる構造ガイドデータの一例を概念的に示す図である 同実施の形態にかかるデータストリームの一例を概念的に示す図である。 同実施の形態にかかる設定情報の一例を示す図である。 図4〜6に示される構造化文書データから変換されたデータストリーム及び索引ストリームを例示する図である。 同実施の形態にかかるDataBlock[x]とDataBlock[x+1]を具体化した図である。 同実施の形態にかかるクエリデータの一例を示す図である。 同実施の形態にかかるサーバ1が走査プランを生成する処理の手順を示すフローチャートである。 図8に示したクエリデータ1から生成されたクエリグラフを示す模式図である。 図14に示したクエリグラフを上述の観点から分解したサブグラフを例示する図である。 図12に示したクエリデータ1に対してストリーム集合走査プラン生成部25が生成する走査プランを示す図である。 同実施の形態にかかるサーバ1が走査プランを実行する処理の手順を示すフローチャートである。 図16に示した走査プランをサーバ1が実行する処理イメージを示す図である。 同実施の形態にかかるクエリデータの他の例を示す図である。 図19に示したクエリデータ2に対してストリーム集合走査プラン生成部25が生成する走査プランを示す図である。 図20に示した走査プランをサーバ1が実行する処理イメージを示す図である。 同実施の形態にかかるクエリデータのその他の例を示す図である。 図22に示したクエリデータ3に対してストリーム集合走査プラン生成部25が生成する走査プランを示す図である。 図23に示した走査プランをサーバ1が実行する処理イメージを示す図である。
符号の説明
1 サーバ
2 ネットワーク
3 クライアント端末
11 格納処理部
12 検索処理部
13 構造化文書DB
13a 構造ガイドデータ領域
13b データストリーム領域
13c 索引ストリーム領域
20 格納インターフェイス部
21 ストリーム変換部
22 データストリーム格納部
23 索引ストリーム格納部
24 検索インターフェイス部
25 ストリーム集合走査プラン生成部
26 ストリーム集合走査プラン実行部
27 詳細条件検査部
30 構造化文書登録部
31 構造化文書検索処理部
105 媒体駆動装置
106 通信制御装置
107 表示部
108 入力部
109 バスコントローラ
110 記憶媒体

Claims (11)

  1. 複数の要素が階層化されて各々含まれる複数の構造化文書データを記憶する構造化文書検索装置であって、
    前記複数の構造化文書データに各々含まれる各要素が構文解析の結果順に配列されたデータストリームを第1記憶領域に格納する第1格納手段と、
    前記複数の構造化文書データに各々含まれ且つ当該構造化文書データを検索する際の索引となる前記要素を構文解析の結果順に並べた少なくとも1つの索引ストリームを第2記憶領域に格納する第2格納手段と、
    前記構造化文書データを検索するための検索条件に基づいて、前記データストリーム及び前記索引ストリームに対する走査を命じる走査プランを生成する生成手段と、
    前記走査プランによって命じられた前記データストリーム及び前記索引ストリームのうち少なくとも一方に対する走査を実行する実行手段とを備え
    前記生成手段は、前記検索条件に基づいて、文書単位で、前記データストリーム及び前記索引ストリームを含む複数のストリームのうち第1のストリームに対する走査を命じ、当該走査の結果に応じて第2のストリームに対する走査を命じる走査プランを生成し、
    前記第1格納手段は、固定長のデータブロック毎に配列された前記データストリームについて、前記構造化文書データ毎に先頭の前記データブロックの先頭に同期記号を埋め込んで、当該データストリームを前記第1記憶領域に格納し、
    前記実行手段は、前記同期記号が出現してから次の前記同期記号が出現するまでのデータブロックを前記文書単位として前記データストリームに対する走査を実行するものであり、前記走査プランによって命じられた前記第1のストリームに対する走査を文書単位で実行し、前記走査の結果に応じて、前記データストリームである前記第2のストリームについて前記同期記号が出現してから次の前記同期記号が出現するまでのデータブロックに対する走査をスキップする
    ことを特徴とする構造化文書検索装置。
  2. 前記第2格納手段は、固定長のデータブロック毎に配列された前記索引ストリームについて、前記構造化文書データに対応するデータブロック毎にその先頭に同期記号を埋め込んで、当該索引ストリームを前記第1記憶領域に格納し、
    前記実行手段は、前記同期記号が出現してから次の前記同期記号が出現するまでのデータブロックを前記文書単位として前記索引ストリームに対する走査を実行するものであり、前記走査プランによって命じられた前記第1のストリームに対する走査を文書単位で実行し、前記走査の結果に応じて、前記索引ストリームである前記第2のストリームについて前記同期記号が出現してから次の前記同期記号が出現するまでのデータブロックに対する走査をスキップする
    ことを特徴とする請求項1に記載の構造化文書検索装置。
  3. 前記検索条件を示す検索要求であるクエリデータをクライアント装置から取得する取得手段を更に備え、
    前記生成手段は、前記クエリデータを用いて、前記走査プランを生成する
    ことを特徴とする請求項1または2に記載の構造化文書検索装置。
  4. 前記生成手段は、
    前記クエリデータを構文解析して前記検索条件をツリー形式で表したクエリグラフを生成するグラフ生成手段と、
    前記クエリグラフを複数のサブグラフに分解する分解手段と、
    各前記サブグラフに対して、前記データストリーム及び前記索引ストリームを含む複数のストリームのうち少なくとも1つのストリームを割り当てる割当手段と、
    前記サブグラフに対して割当られた各前記ストリームに対する走査を命じる走査命令と、前記サブクラフ間の論理関係に応じて各前記走査命令の手順を決定する制御命令であり、第1のストリームに対する走査命令に従った走査の結果に応じて第2のストリームに対する走査が実行されるように当該第2のストリームに対する前記走査命令を接続する制御命令とを含む走査プランを生成するプラン生成手段とを有する
    ことを特徴とする請求項3に記載の構造化文書検索装置。
  5. 前記割当手段は、各前記ストリームのデータサイズ及び検索条件がストリームに設定されたときに検索条件を満足する要素の数の割合を示す選択率のうち少なくとも一方に基づいて、各前記サブグラフに対して、前記少なくとも1つのストリームを割り当てる
    ことを特徴とする請求項4に記載の構造化文書検索装置。
  6. 前記実行手段は、前記走査プランに含まれる、前記第1のストリームに対する前記走査命令に従って走査を実行した後、前記走査の結果に応じて、前記制御命令によって当該走査命令に接続された、前記第2のストリームに対する前記走査命令に従った走査を実行しないことにより、当該第2のストリームに対する走査をスキップする
    ことを特徴とする請求項4又は5に記載の構造化文書検索装置。
  7. 前記構造化文書データを構文解析し、当該構造化文書データの階層構造の要約を示す構造ガイドデータを用いて、当該構造化文書データに含まれる各要素を構文解析の結果順に配列したデータストリームを生成する第1生成手段を更に備える
    ことを特徴とする請求項1乃至6のいずれか一項に記載の構造化文書検索装置。
  8. 前記構造化文書データを構文解析し、前記構造ガイドデータと、前記複数の要素のうち索引とする要素を指定する設定情報とを用いて、当該構造化文書データに含まれ前記設定情報によって指定された要素を構文解析の結果順に配列した索引ストリームを生成する第2生成手段を更に備える
    ことを特徴とする請求項1乃至7のいずれか一項に記載の構造化文書検索装置。
  9. 前記実行結果に基づいて、前記検索要求に応じた検索結果を出力する出力手段を更に備える
    ことを特徴とする請求項1乃至8のいずれか一項に記載の構造化文書検索装置。
  10. 第1格納手段と、第2格納手段と、生成手段と、実行手段とを備え、複数の要素が階層化されて各々含まれる複数の構造化文書データを記憶する構造化文書検索装置で実行される構造化文書検索方法であって、
    前記第1格納手段が、前記複数の構造化文書データに各々含まれる各要素が構文解析の結果順に配列されたデータストリームを第1記憶領域に格納する第1格納ステップと、
    前記第2格納手段が、前記複数の構造化文書データに各々含まれ且つ当該構造化文書データを検索する際の索引となる前記要素を構文解析の結果順に並べた少なくとも1つの索引ストリームを第2記憶領域に格納する第2格納ステップと、
    前記生成手段が、前記構造化文書データを検索するための検索条件に基づいて、前記データストリーム及び前記索引ストリームに対する走査を命じる走査プランを生成する生成ステップと、
    前記実行手段が、前記走査プランによって命じられた前記データストリーム及び前記索引ストリームのうち少なくとも一方に対する走査を実行する実行ステップとを含み、
    前記生成ステップは、前記検索条件に基づいて、文書単位で、前記データストリーム及び前記索引ストリームを含む複数のストリームのうち第1のストリームに対する走査を命じ、当該走査の結果に応じて第2のストリームに対する走査を命じる走査プランを生成し、
    前記第1格納ステップは、固定長のデータブロック毎に配列された前記データストリームについて、前記構造化文書データ毎に先頭の前記データブロックの先頭に同期記号を埋め込んで、当該データストリームを前記第1記憶領域に格納し、
    前記実行ステップは、前記同期記号が出現してから次の前記同期記号が出現するまでのデータブロックを前記文書単位として前記データストリームに対する走査を実行するものであり、前記走査プランによって命じられた前記第1のストリームに対する走査を文書単位で実行し、前記走査の結果に応じて、前記データストリームである前記第2のストリームについて前記同期記号が出現してから次の前記同期記号が出現するまでのデータブロックに対する走査をスキップする
    ことを特徴とする構造化文書検索方法。
  11. 請求項10に記載の方法をコンピュータに実行させることを特徴とするプログラム。
JP2008247998A 2008-09-26 2008-09-26 構造化文書検索装置、方法及びプログラム Active JP4796108B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008247998A JP4796108B2 (ja) 2008-09-26 2008-09-26 構造化文書検索装置、方法及びプログラム
US12/503,439 US9378301B2 (en) 2008-09-26 2009-07-15 Apparatus, method, and computer program product for searching structured document

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008247998A JP4796108B2 (ja) 2008-09-26 2008-09-26 構造化文書検索装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2010079646A JP2010079646A (ja) 2010-04-08
JP4796108B2 true JP4796108B2 (ja) 2011-10-19

Family

ID=42058580

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008247998A Active JP4796108B2 (ja) 2008-09-26 2008-09-26 構造化文書検索装置、方法及びプログラム

Country Status (2)

Country Link
US (1) US9378301B2 (ja)
JP (1) JP4796108B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102081597A (zh) * 2009-12-01 2011-06-01 鸿富锦精密工业(深圳)有限公司 失效分析报告生成系统及方法
JP2012063868A (ja) 2010-09-14 2012-03-29 Internatl Business Mach Corp <Ibm> 言語処理パーサーを組み合わせて、組み合わせパーサーを生成する方法、並びにそのコンピュータ及びコンピュータ・プログラム
US8935267B2 (en) * 2012-06-19 2015-01-13 Marklogic Corporation Apparatus and method for executing different query language queries on tree structured data using pre-computed indices of selective document paths
CN103827860B (zh) * 2012-09-20 2017-05-17 株式会社东芝 结构化文档管理装置及方法
JP5939583B2 (ja) 2013-12-13 2016-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 抽出装置、データ処理システム、抽出方法および抽出プログラム
US20160299928A1 (en) * 2015-04-10 2016-10-13 Infotrax Systems Variable record size within a hierarchically organized data structure

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5685003A (en) * 1992-12-23 1997-11-04 Microsoft Corporation Method and system for automatically indexing data in a document using a fresh index table
US5530852A (en) * 1994-12-20 1996-06-25 Sun Microsystems, Inc. Method for extracting profiles and topics from a first file written in a first markup language and generating files in different markup languages containing the profiles and topics for use in accessing data described by the profiles and topics
JP2000057163A (ja) 1998-08-12 2000-02-25 Nec Corp 構造化文書データベースシステム
JP3492246B2 (ja) 1999-07-16 2004-02-03 富士通株式会社 Xmlデータ検索処理方法および検索処理システム
US7398201B2 (en) * 2001-08-14 2008-07-08 Evri Inc. Method and system for enhanced data searching
US20040111396A1 (en) * 2002-12-06 2004-06-10 Eldar Musayev Querying against a hierarchical structure such as an extensible markup language document
US7113942B2 (en) * 2003-06-27 2006-09-26 Microsoft Corporation Scalable storage and processing of hierarchical documents
US7917480B2 (en) * 2004-08-13 2011-03-29 Google Inc. Document compression system and method for use with tokenspace repository
JP4037859B2 (ja) * 2004-09-29 2008-01-23 株式会社東芝 全文検索システム及び方法
GB0428365D0 (en) * 2004-12-24 2005-02-02 Ibm Methods and apparatus for generating a parser and parsing a document
US20070136340A1 (en) * 2005-12-12 2007-06-14 Mark Radulovich Document and file indexing system
JP5121146B2 (ja) * 2006-02-22 2013-01-16 株式会社東芝 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法

Also Published As

Publication number Publication date
JP2010079646A (ja) 2010-04-08
US20100082587A1 (en) 2010-04-01
US9378301B2 (en) 2016-06-28

Similar Documents

Publication Publication Date Title
JP5121146B2 (ja) 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法
US7293018B2 (en) Apparatus, method, and program for retrieving structured documents
US7231386B2 (en) Apparatus, method, and program for retrieving structured documents
US9009173B2 (en) Using views of subsets of nodes of a schema to generate data transformation jobs to transform input files in first data formats to output files in second data formats
JP4796108B2 (ja) 構造化文書検索装置、方法及びプログラム
RU2507574C2 (ru) Постраничное разбиение иерархических данных
US20060136452A1 (en) Method of generating database schema to provide integrated view of dispersed data and data integrating system
CA2501608A1 (en) System and method for schemaless data mapping with nested tables
JP4247135B2 (ja) 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法
JP4247108B2 (ja) 構造化文書検索方法、構造化文書検索装置、及びプログラム
JP4045400B2 (ja) 検索装置及び検索方法
JP2008234430A (ja) クエリ処理装置、プログラムおよびクエリ処理方法
JP2005135199A (ja) オートマトン作成方法、および、xmlデータ検索方法、ならびに、xmlデータ検索装置、xmlデータ検索プログラム、および、xmlデータ検索プログラムの記録媒体
CN113704575A (zh) 解析XML与Java文件的SQL方法、装置、设备及存储介质
US8001110B2 (en) Apparatus, method, and computer program product for processing databases
JP4724177B2 (ja) Xmlデータにアクセスするためのインデックス
JP3914081B2 (ja) アクセス権限設定方法および構造化文書管理システム
JP2006127229A (ja) 構造化文書検索システム、構造化文書検索方法及びプログラム
US7451133B2 (en) Executing nested subqueries of parallel table functions in the parallel single cursor model
JP3842572B2 (ja) 構造化文書管理方法および構造化文書管理装置およびプログラム
US8762381B2 (en) Storing multipart XML documents
JP4289022B2 (ja) 構造化文書処理方法及び装置及び構造化文書処理プログラム及び構造化文書処理プログラムを格納した記憶媒体
KR102422439B1 (ko) 시드를 이용한 지식 그래프 생성 방법 및 그 장치
JP4242701B2 (ja) 格納検索装置、格納検索プログラム、および格納検索プログラム記録媒体
JP2004348479A (ja) 検索装置、検索方法、検索プログラム、および検索プログラム記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110301

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

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

R151 Written notification of patent or utility model registration

Ref document number: 4796108

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20140805

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

Free format text: JAPANESE INTERMEDIATE CODE: R313114

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350