JP4489029B2 - 構造化文書検索システムおよび構造化文書検索方法 - Google Patents

構造化文書検索システムおよび構造化文書検索方法 Download PDF

Info

Publication number
JP4489029B2
JP4489029B2 JP2006024540A JP2006024540A JP4489029B2 JP 4489029 B2 JP4489029 B2 JP 4489029B2 JP 2006024540 A JP2006024540 A JP 2006024540A JP 2006024540 A JP2006024540 A JP 2006024540A JP 4489029 B2 JP4489029 B2 JP 4489029B2
Authority
JP
Japan
Prior art keywords
character string
partial character
search
document
document management
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
JP2006024540A
Other languages
English (en)
Other versions
JP2007206945A (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 JP2006024540A priority Critical patent/JP4489029B2/ja
Priority to US11/669,304 priority patent/US20070185845A1/en
Publication of JP2007206945A publication Critical patent/JP2007206945A/ja
Application granted granted Critical
Publication of JP4489029B2 publication Critical patent/JP4489029B2/ja
Expired - Fee Related 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/83Querying
    • G06F16/835Query processing
    • G06F16/8373Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/123Storage facilities
    • 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/131Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Description

この発明は、大量の構造化文書を階層化された論理構造を持つ構造化文書データベース群で分散配置して管理する構造化文書検索システムおよび構造化文書検索方法に関するものである。
近年、情報技術の進歩により、莫大な量の情報が容易に入手できるようになった。その一方で必要な情報が大量のデータに埋没し、十分に活用できないという弊害も発生している。情報が大量に存在しても、それをうまく活用できなければ意味がない。情報には、1つの書式に統一された情報もあれば、全く書式のない自由書式の情報も数多く存在する。
これらの情報を統一的に扱うための中核技術として期待されている技術がXML(Extensible Markup Language)である。XMLは柔軟な拡張性と連携性を備えた標準のドキュメント記述言語であり、主要ベンダーからのサポートも約束されている。XMLのような構造化文書は、(1)階層的な構造をもつ、(2)同じパスの構造要素が文書内に繰り返し発生しうる、(3)部分文書の文字列は長大データになりうる、という特徴を持つ。
一方、格納されたデータを取り出す手段として、各種の問合せ言語が存在する。RDB(Relational Database)の分野では、問合せ言語としてSQL(Structured Query Language)が存在する。XMLの分野では、問合せ言語としてXQuery(XML Query Language)が策定されている。XQueryは、XMLデータをデータベースのように扱うための問合せ言語である。構造要素の値に関する条件や階層構造に関する条件に合致するデータ集合の取り出しを行うことができる。また、パスの正規表現により、“「文書」タグの子孫のどこかに存在する「コメント」タグ”といった曖昧な階層構造に関する条件も指定できる。
構造化文書では、データを取り出す対象は必ずしも構造化文書全体ではなく、局所的であることが多い。また、書誌情報と本体情報とからなる構造化文書の場合、書誌情報は多数の利用者から読取り専用でアクセスされるが、本体情報は一部の利用者から更新のためにアクセスされるというように、文書内の部分の相違によりアクセスパターンが異なることもある。
一方、一般に文書検索時に特定のディスクへのアクセスが集中するとレスポンスタイムが極端に遅くなることが知られている。このため、構造化文書へのアクセスパターンやアクセス頻度の偏りを考慮して、大量の構造化文書を文書単位だけでなく、文書内の部分木単位で分割配置することで、問合せ処理を効率化する技術が提案されている。
例えば、非特許文献1では、構造化文書を水平分割および垂直分割する方法をXPathと呼ばれる問合せ式で定義し、分割された文書をRepository Guideと呼ばれる索引づけられた構造情報で管理することを前提とし、アクセス頻度を考慮して構造化文書を分割することで検索処理の高速化を実現している。
中尾伸章他、「アクセス頻度を考慮したXML文書分割方式の提案」(DEWS2004 5A−i5)
しかしながら、非特許文献1の方法では、問合せの結果データを取得する際、対象となるデータが複数のディスクに分散して格納されている場合に、接続部分のノード群同士の結合処理の負担が大きくなるという問題があった。
具体的には、非特許文献1の方法では、1個以上の部分文書の候補を求めた上で、接続部分にあたるノード群同士について構造結合を行うことで、実際に必要となる部分文書を絞り込む。その後、分割された部分文書同士を結合する。構造化文書は同じパスの構造要素が文書内に繰り返し発生するので、接続部分の上位と下位の部分文書は多数になりうる。このため、上位と下位の組合せの数が膨大になる場合があり、結合処理の負担が大きくなる。
そこで、分割された部分文書の接続部分について、下位ノードへのリンクを表すノードIDを上位ノードに保持する技術も提案されている。この技術では、対象となるデータが複数のディスクに分散して格納されている場合であっても、リンクを辿ることで接続部分の上位ノードから下位ノードに直接アクセスして、問合せの結果データを生成することができる。このため、構造結合を行う必要がなく、非特許文献1のような問題が発生しない。
ところが、このようなリンクを辿る方法では、リンク先の装置で検索した部分文書をリンク元の装置に順次転送するため、重複したデータ転送が発生するという問題があった。特に、分割数が多く、リンクの数が多いほど、重複したデータ転送が発生する。
例えば、文書が上位ノード、中位ノード、下位ノードの3つに分割され、2つのリンクが設定されているとする。この場合、下位ノードを格納した装置から転送した検索結果は、中位ノードを格納した装置で検索した結果に結合され、さらに上位ノードを格納した装置に転送される。すなわち、下位ノードを格納した装置から転送した検索結果は、2度データ転送が行われることになる。
本発明は、上記に鑑みてなされたものであって、予め定められた部分構造を分散配置して格納した構造化文書を検索する際のデータ転送量を削減し、高速な検索を実現することができる構造化文書検索システムおよび構造化文書検索方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、構造化文書を分散して格納する複数の文書管理装置と、前記複数の文書管理装置とネットワークで接続され、前記複数の文書管理装置から構造化文書を検索する検索装置と、前記複数の文書管理装置と前記検索装置とにネットワークで接続され、構造化文書の検索要求を前記検索装置に送信するクライアント装置と、を備えた構造化文書検索システムであって、前記文書管理装置は、構造化文書の論理的な構造の単位である構造要素のうち予め定められた前記構造要素に対応する構造化文書の部分文字列を格納する文書記憶手段と、前記検索装置または他の文書管理装置から前記部分文字列の取得要求を受信する要求受信手段と、前記要求受信手段が受信した前記取得要求に基づき、前記文書記憶手段から前記部分文字列を取得し、取得した前記部分文字列に含まれる情報であって、前記取得した前記部分文字列の一部が他の文書管理装置に格納されていることを示す情報に基づき、前記取得した前記部分文字列の一部が他の文書管理装置に格納されているか否かを判断する第1の結果データ取得手段と、前記第1の結果データ取得手段が前記部分文字列の一部が他の文書管理装置に格納されていると判断した場合に、前記部分文字列の一部についての前記取得要求を、前記部分文字列の一部を格納していると判断された他の文書管理装置に送信する第1の要求送信手段と、前記取得した前記部分文字列を前記検索装置に送信する第1の結果送信手段と、を備え、前記検索装置は、前記構造要素を一意に識別する構造IDと、前記構造要素に対応する前記部分文字列を格納する前記文書管理装置を一意に識別する装置IDとを対応づけて記憶する構造情報記憶手段と、前記クライアント装置から前記検索要求を受信する検索要求受信手段と、前記検索要求受信手段が受信した前記検索要求を満たす前記構造要素の前記構造IDを前記構造情報記憶手段から取得する検索手段と、前記検索手段が取得した前記構造IDに対応する前記文書管理装置の前記装置IDを前記構造情報記憶手段から取得する第2の結果データ取得手段と、前記第2の結果データ取得手段が取得した前記装置IDで識別される前記文書管理装置に、前記取得要求を送信する第2の要求送信手段と、前記文書管理装置から前記部分文字列を受信する部分文字列受信手段と、前記部分文字列受信手段が複数の前記文書管理装置のそれぞれから前記部分文字列を受信した場合に、受信した複数の前記部分文字列を相互に結合し、結合した文書を前記クライアント装置に送信する第2の結果送信手段と、を備えたことを特徴とする。
また、本発明は、構造化文書を分散して格納する複数の文書管理装置と、前記複数の文書管理装置とネットワークで接続され、前記複数の文書管理装置から構造化文書を検索する検索装置と、前記複数の文書管理装置と前記検索装置とにネットワークで接続され、構造化文書の検索要求を前記検索装置に送信するクライアント装置と、を備えた構造化文書検索システムにおける構造化文書検索方法であって、前記検索装置が、前記クライアント装置から前記検索要求を受信する検索要求受信ステップと、前記検索装置が、構造化文書の論理的な構造の要素である構造要素を一意に識別する構造IDと、前記構造要素に対応する前記部分文字列を格納する前記文書管理装置を一意に識別する装置IDとを対応づけて記憶する構造情報記憶手段から、前記検索要求受信手段が受信した前記検索要求を満たす前記構造要素の前記構造IDを取得する検索ステップと、前記検索装置が、前記検索ステップが取得した前記構造IDに対応する前記文書管理装置の前記装置IDを前記構造情報記憶手段から取得する第2の結果データ取得ステップと、前記検索装置が、前記第2の結果データ取得ステップが取得した前記装置IDで識別される前記文書管理装置に、前記取得要求を送信する第2の要求送信ステップと、前記文書管理装置が、前記検索装置または他の文書管理装置から前記部分文字列の取得要求を受信する要求受信ステップと、前記文書管理装置が、前記要求受信ステップが受信した前記取得要求に基づき、前記構造要素のうち予め定められた前記構造要素に対応する構造化文書の部分文字列を格納する文書記憶手段から前記部分文字列を取得し、取得した前記部分文字列に含まれる情報であって、前記取得した前記部分文字列の一部が他の文書管理装置に格納されていることを示す情報に基づき、前記取得した前記部分文字列の一部が他の文書管理装置に格納されているか否かを判断する第1の結果データ取得ステップと、前記文書管理装置が、前記第1の結果データ取得ステップが前記部分文字列の一部が他の文書管理装置に格納されていると判断した場合に、前記部分文字列の一部についての前記取得要求を、前記部分文字列の一部を格納していると判断された他の文書管理装置に送信する第1の要求送信ステップと、前記文書管理装置が、前記取得した前記部分文字列を前記検索装置に送信する第1の結果送信ステップと、前記検索装置が、前記文書管理装置から前記部分文字列を受信する部分文字列受信ステップと、前記検索装置が、前記部分文字列受信ステップが受信した前記部分文字列が複数存在する場合に、複数の前記部分文字列を相互に結合し、結合した文書を前記クライアント装置に送信する第2の結果送信ステップと、を備えたことを特徴とする。
本発明によれば、分散配置された部分文書の検索結果を、配置された装置から検索要求を行った装置に直接転送することができる。このため、重複したデータ転送の発生を低減し、高速な検索を実現することができる。
以下に添付図面を参照して、この発明にかかる構造化文書検索システムおよび構造化文書検索方法の最良な実施の形態を詳細に説明する。
本実施の形態にかかる構造化文書検索システムは、複数の文書管理装置に分散配置された部分文書の検索結果を、各文書管理装置から検索要求を行う検索装置に直接転送することにより検索処理の高速化を実現するものである。
本実施の形態では、XMLにより記述された構造化文書を、XQueryにより記述された問合せデータを用いて検索する例について説明する。
図1は、本実施の形態にかかる構造化文書検索システム10の構成を示すブロック図である。同図に示すように、構造化文書検索システム10は、検索装置100と、文書管理装置200a、200b、200c(以下、文書管理装置200という。)と、ネットワーク300と、クライアント400とを備えている。
クライアント400は、構造化文書の検索要求を送信するものであり、通常のPC(Personal Computer)などにより構成される。クライアント400は、XQueryで記述された検索要求を検索装置100に送信する。
ネットワーク300は、検索装置100と、文書管理装置200と、クライアント400とを接続するネットワークであり、インターネットやVPNなどのあらゆるネットワーク形態により構成することができる。
なお、クライアント400と検索装置100とを接続するネットワークと、文書管理装置200と検索装置100とを接続するネットワークを別のネットワークで構成してもよい。
検索装置100は、文書管理装置200から構造化文書を検索するものである。本実施の形態では、検索装置100内にも構造化文書を分散して格納するため、検索装置100内から構造化文書を検索する場合もある。
なお、以下では1つの検索装置100が存在し、当該検索装置100により構造化文書の検索処理が実行されるものとして説明するが、複数の検索装置100を備え、各検索装置100から検索処理を実行可能とするように構成してもよい。以下では、同図に示すように、検索装置100の名称を装置X、文書管理装置200a、200b、200cの名称をそれぞれ装置A、装置B、装置Cと呼ぶ場合がある。
検索装置100は、格納処理部110と、第2検索処理部120と、分割配置設定部130と、構造情報記憶部140と、構造化文書記憶部150と、索引情報記憶部160とを備えている。
構造情報記憶部140は、XML形式の構造化文書から抽出された構造情報を格納するものである。
ここで、本実施の形態で扱われるXML形式の構造化文書について説明する。図2は、XML形式の構造化文書の一例を示した説明図である。
同図に示すように、XML形式の構造化文書は、<header>タグ内の書誌情報と、<body>タグ内の本体情報とに分けられる場合が多い。また、同図の<section>タグまたは<comment>タグのように、同一文書内に繰り返し格納される情報も含まれる。
なお、XMLでは、タグを使って定義したデータの単位をエレメントという。例えば、<document>タグと</document>タグとを含み、両タグで囲まれたデータが1つのエレメントを構成する。
また、エレメントには、省略可能か、繰り返しが可能かなどの付加的な情報を追加するための属性を指定することができる。同図では、commentエレメントの属性としてname属性が指定された例が示されている。
また、エレメントの中の開始タグと終了タグで囲まれた情報の内容を、以下ではテキストという。例えば、同図のdateエレメントのうち、“20050711”がテキストに該当する。
構造情報はこのようなXML形式の構造化文書から、各タグの名称や階層関係、繰り返しの個数などを抽出した情報である。なお、本実施の形態では、上述のエレメント、属性、テキストが、構造化文書の構造情報を構成する要素を示す構造要素となる。
図3は、図2に示す構造化文書から抽出された構造情報の一例を示す説明図である。図3は、構造情報を木構造で表したものであり、楕円形のノードはエレメントに対応するノード(以下、エレメントノードという)、四角形のノードは属性に対応するノード(以下、属性ノードという。)、六角形のノードはテキストに対応するノード(以下、テキストノードという)を意味する。
なお、以下では、ノードとは、一般的な木構造における節を表す用語として用いる。したがって、図3のように構造情報を木構造で表した場合には、構造要素がノードとなる。また、後述するように構造化文書を木構造で表した場合には、構造化文書の一部である部分文字列がノードとなる。
図3に示すように、構造要素には構造要素を一意に識別する識別子であるTIDが割当てられる。図3では、例えば、パス「/document」の「document」タグに対応した構造要素にTID1、パス「/document/header」の「header」タグに対応した構造要素にTID2、パス「/document/header/title」の「title」タグに対応した構造要素にTID3が割り当てられている。
パス「/document/body/section」の「section」タグは構造化文書に2つ含まれるが、同一パスの構造要素は1つに縮約されてTID10が割当てられる。また、構造が異なる複数の構造化文書については、構造情報の重ね合わせにより、全ての構造化文書を包含する、汎化した構造情報を形成する。
なお、二重線で囲まれたノードは、分割対象の構造要素であることを示している。図3の例では、パス「/document」、「/document/body」、「/document/body/section/comment」の3つが分割対象の構造要素であり、それぞれ装置A、装置B、装置Cに分散して格納することが示されている。
次に、構造情報記憶部140に格納された構造情報について説明する。図4は、構造情報記憶部140に格納された構造情報のデータ構造の一例を示す説明図である。同図の例は、図2に示す構造化文書から抽出された構造情報を表している。
図4では、ツリーの親子関係、兄弟関係などの木構造における構造要素間の関係の他に、分割配置に関する情報と、構造化文書内における頻度情報を保持した例が示されている。
図4に示すように、構造情報は、TIDと、構造要素の名称を表すシンボル名と、長男に相当する構造要素のTIDと、次弟に相当する構造要素のTIDと、配置位置と、フラグメントルートフラグと、最大フラグメント数とを対応づけて格納している。
ここで、フラグメントとは、各装置に分散して配置するために分割した部分木をいい、フラグメントルートとは、当該分割した部分木のルートとなる構造要素をいう。また、フラグメントルートフラグとは、構造要素がフラグメントルートであるか否かを表す情報をいう。すなわち、フラグメントルートフラグが1である構造要素は、構造化文書の分割対象となり、異なる装置に分割して配置されることを意味する。
最大フラグメント数とは、各フラグメント以下に存在するフラグメントの最大数を表す情報である。例えば、図2に示す構造化文書に対しては、後述する図7の装置Bにおけるbodyエレメント(b1−1)に示すようにcommentエレメントが3個存在するため(エレメント701、702、703)、構造化文書記憶部150に記憶されているほかの構造化文書のbodyエレメント内のcommentエレメントの個数が3以下であれば、最大フラグメント数は3となる。図4では、bodyエレメント以下のcommentエレメントが4である他の構造化文書が存在したため、フラグメント数が4に設定されている例が示されている。
最大フラグメント数は、分割したフラグメントが構造化文書内で出現する頻度を表す情報であるので、構造化文書内の頻度情報という。
図4では、例えば、TID1のノードについては、ツリーの親子、兄弟関係の情報として、シンボル名は「document」、長男としてTID2と関係していることが示されている。また、分割配置に関する情報として、配置位置は装置Aであり、「フラグメントルートフラグが1」であるため、分割対象の構造要素であることが示されている。また、構造化文書内における頻度情報として、最大繰り返し数が1、当該ノード以下の構造化文書あたりのフラグメント数が1であることが示されている。
なお、構造情報は文書情報や索引情報に比べ更新頻度はかなり少ないと考えられる。したがって、オンラインで更新があるようなシステムであっても、構造情報を各装置のメモリ上に格納し、一貫性を保ちながら共有することが可能である。
構造化文書記憶部150は、XML形式の構造化文書を格納するものである。図5、図6は、構造化文書記憶部150に格納された構造化文書のデータ構造の一例を示す説明図である。
同図に示すように、構造化文書記憶部150は、構造化文書を木構造で表し、木構造の各ノードに、当該各ノードを一意に識別するためのIDを割り当てて格納している。
なお、図5の構造化文書1は、図2の構造化文書のうち「document」、「header」、「body」、「section」、「comment」タグに対応するノードにIDを割当てた木構造を表している。実際には、構造化文書1には、図2に示す構造化文書の他のタグの内容も格納されている。例えば、ID=h1−1のノード下には、「title」タグ、「author」タグ、「date」タグも含まれる。
また、図6の構造化文書2は図2の構造化文書とは別の構造化文書に対応する木構造を表している。構造化文書2は、例えば、「body」タグ内に「section」タグが4個含まれる構造化文書であることを示している。
なお、図5および図6では、1つの構造化文書を1つの装置上に格納した場合のデータ構造の例を示している。1つの構造化文書を複数の装置上に分散して格納する場合は、図5および図6のような木構造を分割した部分木であるフラグメントを、各装置上に分散して格納する。
図7は、複数の装置上の構造化文書記憶部150に格納された構造化文書のデータ構造の一例を示す説明図である。同図は、構造化文書1と構造化文書2を、図4に示すような構造情報の設定にしたがって、装置A、装置B、装置Cの3台の装置に分散配置した状態を示している。
図4では、TID1〜8までの構造要素を装置Aに格納することが設定されている。したがって、図7に示すように、構造化文書1のノードIDがd1−1(documentタグに対応)およびh1−1(headerタグに対応)の構造要素と、構造化文書2のノードIDがd2−1およびh2−1の構造要素とが装置Aに格納される。
また、図4に示すように、TID=2の構造要素の次弟はTID=9の構造要素(bodyタグに対応)であるが、TID=9の構造要素の配置位置は装置Bであるため、他の装置に格納されていることを示す接続情報であるリンクを設定する。例えば、図7のリンク60に示すように、装置名とノードIDとを対応づけたリンクを、TID=9の構造要素に対応するノードの変わりに、ノードIDがh1−1のノードに設定する。
これにより、分散配置された構造要素間の親子関係、兄弟関係を保持することができる。すなわち、ノードIDがh1−1のノードの次弟が、装置Bに存在し、ノードIDがb1−1であることが分かる。
なお、リンクの形成方法は上記例に限られるものではなく、装置名の代わりに構造情報で管理されているTIDを設定するように構成してもよい。各装置から検索装置100(装置X)上の構造情報記憶部140を参照可能なので、対象ノードのTIDに対応する配置位置を特定することができる。
索引情報記憶部160は、構造化文書の検索を高速化するための索引を格納するものである。図8は、索引情報記憶部160に格納された索引のデータ構造の一例を示す説明図である。
同図は、構造化文書内に格納されているテキストの検索を高速化するための索引の例を示している。同図に示すように、索引は、格納されている情報を表す要素値と、格納場所の表すノードIDとを対応づけている。
なお、索引のデータ構造はこれに限られるものではなく、構造化文書の検索を高速化するためのものであれば従来から用いられているあらゆる索引を適用することができる。また、構造化文書の構造要素の検索を高速化するための索引を格納するように構成してもよい。
なお、構造情報記憶部140、構造化文書記憶部150、索引情報記憶部160は、HDD(Hard Disk Drive)、光ディスク、メモリカード、RAM(Random Access Memory)などの一般的に利用されているあらゆる記憶媒体により構成することができる。
格納処理部110は、構造化文書の構造化文書記憶部150への格納処理を行うものであり、構造抽出部111と、文書分割部112と、文書送信部113と、文書登録部114と、索引登録部115とを備えている。
構造化文書の格納処理は2つのフェーズに分けられる。第1フェーズでは、入力された構造化文書から文書の構造情報を抽出して構造情報記憶部140に記憶するとともに、構造情報を参照して構造化文書を分割し、分割した構造化文書を各文書管理装置200に送信する処理が実行される。第1フェーズは、構造抽出部111と、文書分割部112と、文書送信部113とにより実行される。
第2フェーズは、原則として各文書管理装置200上の格納処理部110で実行されるものである。第2フェーズでは、分割された構造化文書を構造化文書記憶部150に格納するとともに、索引情報を索引情報記憶部160に格納する処理が実行される。第2フェーズは、文書登録部114と、索引登録部115とにより実行される。
構造抽出部111は、構造化文書から文書を構成する構造要素を抽出するものであり、XMLの場合は、例えばDOM(Document Object Model)にしたがってオブジェクトツリーを作成する方法などの従来から用いられているあらゆる方法を適用することができる。
また、構造抽出部111は、構造情報記憶部140に既に記憶されている構造情報に含まれない新規の構造情報を抽出した場合は、当該新規構造情報を構造情報記憶部140に格納する。
文書分割部112は、構造情報記憶部140に記憶されている構造情報を参照して入力された構造化文書を分割するものである。構造情報の詳細については後述する。
文書送信部113は、文書分割部112により分割された構造化文書を、構造情報記憶部140に記憶されている構造情報に含まれる配置位置の情報に従い、各文書管理装置200に送信するものである。なお、分割した構造化文書を検索装置100内の構造化文書記憶部150に記憶する場合、文書送信部113は、検索装置100の文書登録部114に対して分割された構造化文書を送信する。
文書登録部114は、文書送信部113により送信された構造化文書を構造化文書記憶部150に格納するものである。
索引登録部115は、構造化文書の検索を高速化するための索引を生成し、生成した索引を索引情報記憶部160に記憶するものである。上述のように、索引のデータ構造は従来から用いられているあらゆる構造を適用できるため、適用する索引に応じたあらゆる索引の生成方法を利用することができる。
第2検索処理部120は、構造化文書記憶部150に格納された構造化文書の検索処理を行うものであり、データ通信部121と、検索部122と、ラベル管理部123と、第2結果データ取得部124を備えている。
データ通信部121は、クライアント400または外部装置である各文書管理装置200との間のデータの送受信を行うものであり、検索要求受信部121aと、第2要求送信部121bと、部分文字列受信部121cと、第2結果送信部121dと、要求受信部121eとを備えている。
検索要求受信部121aは、クライアント400から送信された問合せデータを受信するものである。
第2要求送信部121bは、外部の装置上に格納された部分文字列が存在する場合に、当該外部の装置に対して部分文字列を取得するためのコマンドを送信するものである。
部分文字列受信部121cは、外部装置である各文書管理装置200から送信された部分文字列を受信するものである。
第2結果送信部121dは、後述する結果データ生成部128が、部分文字列受信部121cにより受信された各部分文字列を結合して生成した結果データを、問合せ要求元のクライアント400に対して送信するものである。
要求受信部121eは、外部の装置から送信された部分文字列を取得するためのコマンドを受信するものである。
検索部122は、クライアント400から受信したXQuery形式の問合せデータに合致する部分文字列のルートノードのノードIDの集合を求めるものである。
具体的には、検索部122は、まず問合せデータを構文解析して問合せグラフを作成する。次に、問合せグラフから問合せ処理に必要となる構造を抽出し、抽出した構造を利用して構造化文書記憶部150および索引情報記憶部160を参照し、問合せデータに合致する部分文字列のルートノードのノードIDを取得する。
図9は、問合せデータの一例を示す説明図である。同図に示す問合せデータは、“構造化文書DB「db1」の階層木の中に「document」という構造要素以下に存在する「comment」タグの「name」属性の値が「田中」と等しい「document」の一覧を求めよ。”という条件を表している。
このような問合せデータにより、「document」タグの構造要素のノードIDが0個以上求められる。また、このような形式の問合せデータを利用すると、構造化文書単位や部分文書単位で結果データを取得すること、および、1個以上の部分文書を寄せ集めて新たな形式の構造化文書を生成することが可能である。
ラベル管理部123は、取得対象となる構造要素以下の部分文字列に関する頻度情報に従い、各フラグメントに該当する文字列データを管理するためのラベルのサイズを算出し、算出したサイズのラベルを作成するものである。ラベルサイズの算出方法、ラベルの形式については後述する。
第2結果データ取得部124は、構造情報記憶部140に格納された構造情報を参照し、ラベル管理部123が作成したラベルを使用して検索結果である結果データを取得するものである。具体的には、検索部122が取得したノードID下のノードが、自装置の構造化文書記憶部150に存在する場合は、当該構造化文書記憶部150から該当するノードを結果データとして取得する。また、第2結果データ取得部124は、検索部122が取得したノードID下に外部装置へのリンクが設定されている場合には、当該外部装置に対して結果データの取得を要求する処理を実行する。
分割配置設定部130は、利用者の指示により、構造化文書の分割対象となる構造要素、分割されたフラグメントが配置される位置に関する情報を設定し、構造情報記憶部140に記憶された構造情報を更新するものである。具体的には、分割配置設定部130は、図4に示すような構造情報のうち、配置位置とフラグメントルートフラグとを利用者が設定できるようにする。これにより、分割する構造要素をどのように分割して配置するかを利用者が指定できる。
文書管理装置200a、200b、200cは、構造化文書を分散して格納し、検索装置100からの要求に応じて格納した構造化文書の検索処理を実行するものである。
文書管理装置200a、200b、200cはすべて同じ構成を備えている。以下では、必要がある場合を除いて、文書管理装置200a、200b、200cをまとめて単に文書管理装置200という。なお、構造化文書検索システム10は、少なくとも1つの文書管理装置200を備えていればよい。また、文書管理装置200の個数は3つに限られるものではない。
文書管理装置200は、格納処理部110と、第1検索処理部220と、構造化文書記憶部150と、索引情報記憶部160とを備えている。
このように、文書管理装置200は、分割配置設定部130と、構造情報記憶部140とを備えていない点が、検索装置100と異なる。構造情報は各文書管理装置200に分散配置された構造化文書全体の構造の情報を格納するものであり、検索装置100内で一元管理しているからである。
また、文書管理装置200は、第2検索処理部120に代わり第1検索処理部220が備えられている点が検索装置100と異なる。
図10は、第1検索処理部220の構成を示すブロック図である。同図に示すように、第1検索処理部220は、データ通信部221と、ラベル管理部123と、第1結果データ取得部224を備えている。
データ通信部221は、クライアント400または外部装置である各文書管理装置200との間のデータの送受信を行うものであり、第1要求送信部221bと、第1結果送信部221dと、要求受信部121eと、を備えている。
第1検索処理部220は、検索装置100の第2検索処理部120と異なり、検索要求受信部121a、および部分文字列受信部121cを備えていない。これらは、クライアント400との間のデータ送受信を行うものだからである。また、第1検索処理部220は、検索装置100の第2検索処理部120と異なり検索部122を備えていない。検索部122は、クライアント400から受信した問合せデータを参照して、各文書管理装置200に部分文字列の取得を要求する前提となるルートノードのノードIDの取得を行うものだからである。
なお、文書管理装置200がクライアント400から問合せデータを受付け、検索結果を返すように構成する場合は、第1検索処理部220内に検索要求受信部121a、部分文字列受信部121c、および検索部122を含むように構成してもよい。
また、第1要求送信部221b、要求受信部121e、ラベル管理部123、および第1結果データ取得部224の機能は、それぞれ検索装置100の第2検索処理部120内の第2要求送信部121b、要求受信部121e、ラベル管理部123、および第2結果データ取得部124の機能と同様であるのでその説明を省略する。
第1結果送信部221dは、他の装置から受信した部分文字列取得のためのコマンドに応じて取得した部分文字列を、返信先の装置に送信するものである。返信先の装置は、取得のためのコマンド内で指定される。本実施の形態では、原則として検索装置100が返信先の装置として指定される。
図1で、文書管理装置200に含まれる格納処理部110、構造化文書記憶部150、および索引情報記憶部160の構成および機能は、検索装置100と同様であるので、その説明を省略する。
次に、このように構成された本実施の形態にかかる構造化文書検索システム10による構造化文書格納処理について説明する。構造化文書格納処理は、後述する構造化文書検索処理の前提として、構造化文書を分散して格納する処理である。
図11は、本実施の形態における構造化文書格納処理の全体の流れを示すフローチャートである。
まず、構造抽出部111が、構造情報記憶部140に格納された構造情報を参照して、クライアント400から入力された構造化文書の入力データから構造要素を抽出する(ステップS1101)。
この際、構造情報記憶部140に格納された構造情報に含まれない新規の構造要素が存在する場合は、当該新規の構造要素の情報を構造情報に追加し、構造情報記憶部140を更新する。
次に、文書分割部112が、構造情報記憶部140の構造情報を参照し、構造情報のフラグメントルートフラグが1である構造要素を取得する(ステップS1102)。例えば、図5の構造化文書1を格納する場合、図4に示すような構造情報から、パス「/document」、「/document/body」、「/document/body/section/comment」の3つの構造要素を取得することができる。
次に、文書分割部112は、取得した構造要素をルートとするフラグメントを生成する(ステップS1103)。次に、文書分割部112は、各フラグメントのルートとなる構造要素にユニークなノードIDを付与する(ステップS1104)。
次に、文書分割部112は、ルートとなる構造要素と接続関係にある構造要素とのリンクを設定する(ステップS1105)。例えば、図5に示すような構造化文書1を格納する場合、装置Bに格納するフラグメントのルートノードであるノードID=b1−1のノードに対し、装置Aに格納する構造要素であるノードID=h1−1のノードとのリンクを設定する。これにより、図7のリンク60に示すようなリンクが設定される。
次に、文書送信部113は、構造情報の配置位置で示される装置に各フラグメントを送信する(ステップS1106)。例えば、図4のような構造情報を前提とすると、ルートノードがノードID=d1−1のフラグメントは、装置Aに送信される。同様に、ルートノードがノードID=b1−1のフラグメントは、装置Bに送信され、ルートノードがノードID=c1−1のフラグメントは、装置Cに送信される。
この後、各文書管理装置200(装置A、装置B、装置C)では、以下の処理により構造化文書の格納処理が実行される。
まず、文書登録部114が、送信されたフラグメントを構造化文書記憶部150に格納する(ステップS1107)。次に、索引登録部115が、送信されたフラグメントの索引を作成し、索引情報記憶部160に格納し(ステップS1108)、構造化文書格納処理を終了する。
次に、このように構成された本実施の形態にかかる構造化文書検索システム10による構造化文書検索処理について説明する。図12は、本実施の形態における構造化文書検索処理の全体の流れを示すフローチャートである。
まず、検索要求受信部121aが、クライアント400から送信された問合せデータを受信する(ステップS1201)。次に、検索部122が、問合わせデータで示された検索条件を満たすフラグメントのルートノードのノードID(以下、ルートノードIDという。)を取得する(ステップS1202)。
例えば、図9に示すような問合せデータを受信した場合、図2に示すような構造化文書が条件を満たすため、図2に対応する図5の構造化文書1のルートノードID=d1−1が取得される。
次に、ラベル管理部123が、検索結果のデータを管理するための情報であるラベルのサイズを算出する(ステップS1203)。ラベルは、原則として以下の(1)式により算出する。
ラベルサイズ(bit)
=Σレベルiのフラグメントのラベルサイズ
=Σlog2(max(レベルiのフラグメントの最大フラグメント数)+2) ・・・(1)
ここで、レベルとは、分割の深さを表す情報をいう。具体的には、レベルとは、取得するフラグメント全体のルートノードから、分割するフラグメントに達するまでの分割の回数を表す情報である。
例えば、図5の構造化文書1を取得する場合、ノードID=b1−1をルートノードとするフラグメントは、構造化文書1を1回分割して生成されるものであるため、レベルは1となる。また、ノードID=c1−1をルートノードとするフラグメントは、構造化文書1を2回分割して生成されるものであるため、レベルは2となる。なお、構造化文書1全体のフラグメントのレベルは0である。
また、maxとは、同じレベルのフラグメントが複数存在する場合に、算出した値の最大値を求めることを意味する。このように、各レベルで最大のラベルサイズを確保しておくことにより、同じレベルの複数の部分木の取得処理が同一のラベルで処理することができる。
なお、2を加算するのは、まず起点に対して0を割り当てるために+1のサイズが必要となり、さらにレベルiのフラグメントはフラグメント数のレベル(i+1)のフラグメントで区切られるために、(フラグメント数+1)のサイズが必要となるからである。
図13は、ラベルサイズの算出例を示した説明図である。同図は、図5に示すような構造化文書1の検索結果を管理するためのラベルのサイズを算出した例を示している。
レベル0のフラグメント、すなわち、構造化文書1全体のフラグメントの最大フラグメント数は、図4に示すように、1である。したがって、レベル0のフラグメントのラベルサイズは、log2(1+2)=2となる。同様に、レベル1および2のフラグメントのラベルサイズは、それぞれ3、1となる。
ラベルは、このようにして算出されたサイズのbitデータを有する情報である。ラベルは、さらにレベル単位に分割され、各レベルで、後述する部分文字列取得処理により取得された部分文字列ごとに1つの値が割り当てられる。この際、構造化文書の木構造に従った順序で1を加算した値が割り当てられるため、各文書管理装置200から部分文字列を受信した検索装置100は、ラベルの値を参照して適切に部分文字列を並べ替え、結果データである構造化文書を生成することができる。
ステップS1203でラベルサイズを算出した後、ラベル管理部123は、算出したサイズのラベルを作成し、初期値である0で初期化する(ステップS1204)。
次に、第2結果データ取得部124は、ステップS1202で取得した、検索条件を満たすフラグメントのルートノードIDの構造要素が存在する文書管理装置200の装置名を構造情報記憶部140から取得する(ステップS1205)。例えば、ルートノードID=d1−1のノードのシンボル名は「document」であるため、構造情報記憶部140から配置位置として装置Aを取得することができる。
次に、第2要求送信部121bは、取得した装置に対して、部分文字列取得処理を要求するパラメタを指定したコマンドを送信する(ステップS1206)。パラメタには、起点ラベル、レベル、取得対象ID、返信装置名が含まれる。
起点ラベルとは、部分文字列取得処理で値を加算する基となるラベルをいう。原則として、現在処理しているラベル(以下、カレントラベルという。)が、次の部分文字列取得処理で用いる起点ラベルとなる。
取得対象IDとは、部分文字列取得処理で取得する部分文字列を表す木構造のルートノードIDをいう。
返信装置名とは、文書管理装置200が取得した部分文字列を返信する装置の装置名を表す情報である。原則として検索装置100の名称(装置X)を設定するが、複数の検索装置100を備える場合は、部分文字列取得処理を要求した検索装置100の装置名を設定する。
例えば、図5の構造化文書1を取得する場合、第2要求送信部121bは、装置Aに対し、起点ラベル=カレントラベル、レベル=0、取得対象ID=d1−1、返信装置名=装置Xが設定されたコマンドを送信する。
ステップS1206で部分文字列取得処理を要求するコマンドを送信した後、コマンドを受信した文書管理装置200で、部分文字列取得処理が実行される(ステップS1207)。部分文字列取得処理の詳細については後述する。
部分文字列取得処理を要求するコマンドの送信後、検索装置100の部分文字列受信部121cは、すべての部分文字列を受信するまで待機する(ステップS1208)。
すべての部分文字列を受信した場合、第2結果データ取得部124は、ラベルの値の小さい順に受信した部分文字列を結合し、結果データを生成する(ステップS1209)。
次に、第2結果送信部121dが、生成した結果データを問合せ要求元のクライアント400に対して送信し(ステップS1210)、構造化文書検索処理を終了する。
次に、ステップS1206の部分文字列取得処理について説明する。図14は、本実施の形態における部分文字列取得処理の全体の流れを示すフローチャートである。
まず、要求受信部121eが、部分文字列取得処理の要求元から、起点ラベル、レベル、取得対象ID、返信装置名を取得する(ステップS1401)。
次に、ラベル管理部123が、取得した起点ラベル、レベルを、それぞれカレントラベル、カレントレベルに設定する(ステップS1402)。カレントレベルとは、現在処理している部分文字列に対応するフラグメントのレベルをいう。
次に、ラベル管理部123が、カレントラベルのうち、カレントレベルに対応する部分のbit列に1を加算する(ステップS1403)。
次に、第1結果データ取得部224が、取得対象ID以下のノードを順に取得する(ステップS1404)。例えば、図7のように分散配置された構造化文書のうち、装置Aに格納されたノードID=d1−1が取得対象IDに指定された場合、ノードID=d1−1、ノードID=h1−1のように木構造の親子関係および兄弟関係を辿ってノードを順に取得する。
次に、第1結果データ取得部224は、別の装置上に存在するノードへのリンクが取得されたか否かを判断する(ステップS1405)。例えば、図7のノードID=h1−1のノードの次のノードとして、同図に示すようなリンク60が取得された場合、別の装置上に存在するノードへのリンクが取得されたと判断する。
別の装置上に存在するノードへのリンクが取得された場合(ステップS1405:YES)、第1結果データ取得部224は、ここまでに取得したノードの文字列とカレントラベルとを対応づけ、結果データに追加する(ステップS1406)。なお、実際には取得した文字列の文字列バッファ内のオフセットの情報を、カレントラベルと対応づけて結果データに追加する。
次に、第1要求送信部221bは、リンクで指定された別の装置に対し、部分文字列取得処理を要求するパラメタを指定したコマンドを送信する(ステップS1407)。ここでは、起点ラベル=カレントラベル、レベル=カレントレベル+1、取得対象ID=リンクに指定されたノードID、返信装置名=検索装置100の装置名(装置X)を指定する。
部分文字列取得処理の要求を受信した別の装置上では、部分文字列取得処理が再帰的に実行される(ステップS1408)。
ステップS1405で、別の装置上に存在するノードへのリンクが取得されなかった場合は(ステップS1405:NO)、第1結果データ取得部224は、すべてのノードを処理したか否かを判断し(ステップS1409)、すべてのノードを処理していない場合は(ステップS1409:NO)、カレントレベルに1加算して処理を繰り返す(ステップS1403)。
すべてのノードを処理した場合(ステップS1409:YES)、第1結果データ取得部224は、ここまでに取得したノードの文字列とカレントラベルとを対応づけ、結果データに追加する(ステップS1410)。
次に、第1結果送信部221dは、返信装置に対して結果データを送信し(ステップS1411)、部分文字列取得処理を終了する。
次に、本実施の形態にかかる構造化文書検索システム10による構造化文書検索処理の具体例について説明する。図15、図16は、構造化文書検索処理において各装置間で送受信されるコマンドの一例を示す説明図である。また、図17、図18、図19は、構造化文書検索処理において各装置で検索される検索結果の一例を示す説明図である。
以下では、図5および図6に示すような構造化文書1および構造化文書2が、図7に示すように各装置に分散して格納されている状態で、図4の構造情報を用いてノードID=d1−1であるノード以下の結果データを取得する場合を例として説明する。
まず、検索装置100のラベル管理部123では、図13に示すようなラベルサイズが6bitのラベルを作成し、0で初期化する(ステップS1204)。ノードID=d1−1のノードは装置Aに格納されているため、図15のコマンド20に示すようなコマンドを装置Aに対して送信する(ステップS1206)。
装置A上で部分文字列取得処理が実行され(ステップS1207)、カレントレベルが0であることから、レベル0に対応する部分のbit列に1を加算する(ステップS1403)。これにより、カレントラベルは状態30に示すような値となる。
この後、ノードID=d1−1のノード以下のノードを順に読出し、図17に示す文字列40が取得される(ステップS1404)。さらにノードを読み出すと、別の装置Bに存在するノードID=b1−1に対するリンクが取得される(ステップS1405:YES)。
このため、図17に示すように、文字列40を示すオフセットと、カレントラベルである“0100000”とを結果データに追加する(ステップS1406)。
なお、結果データは、結果表と文字列バッファとから成る。図17に示す例では、結果データは2つの文字列から構成され、それぞれ「0100000」、「1000000」というラベルを有する。ラベルと文字列とは、文字列バッファ内のオフセットで対応づけられる。前者のオフセットは「offset0」、後者のオフセットは「offset1」である。
この後、リンクに指定された別の装置Bに対し、図15に示すようなコマンド21を送信する(ステップS1407)。
すべてのノードを処理していないため(ステップS1409:NO)、bit列に1を加算してカレントラベルを状態31のように更新した後(ステップS1403)、第1結果データ取得部224は、文字列41を取得する(ステップS1404)。
その結果、すべてのノードが処理されたため(ステップS1409:YES)、結果データに状態31のカレントラベルと文字列41とを追加し(ステップS1410)、返信装置Xに対し、結果データを送信する(ステップS1411)。
このように、装置A上では、装置Bに対して送信するコマンド21の前後の2つのカレントラベルに対応してそれぞれ図17に示すような2つの部分文字列が取得される。
同様の処理で、装置Bでは図16に示すようなコマンド22、コマンド23、コマンド24を装置Cに送信するとともに、各コマンドの送信前後に設定される4つのカレントラベルに対応してそれぞれ図18に示すような4つの部分文字列が取得される。
また、装置Cでは、装置Bから送信された3つのコマンドに対応して、それぞれ3回の部分文字列取得処理が実行され、図19に示すような3つの部分文字列が取得される。
このようにして取得された図17、図18、図19の各部分文字列をラベルの値の小さい順に並べると、取得結果となるべき図2と同じ文字列が形成される。
なお、各装置から得られる部分文字列群はラベルの値の小さい順に並んでいるので、全ての部分文字列をラベルの値の小さい順に並べるコストは小さい。また、結果データ取得の起点となる装置Xに転送される部分文字列のサイズは従来と変わらない。したがって、装置Xの処理負担が過大となることはないと考えられる。
次に、従来技術と比較した本実施の形態にかかる構造化文書検索システム10の利点について説明する。図20は、従来の方法により検索処理を実行した際に送信されるデータの一例を示す説明図である。また、図21は、図20と同じ条件の検索処理を実行した際に送信されるデータの一例を示す説明図である。
ここでは、「body」タグ以下を除いた「document」タグ以下の部分木、「comment」タグ以下を除いた「body」タグ以下の部分木、「comment」タグ部分が、それぞれ1600Byte、4000Byte、160Byteのデータサイズであると仮定する。
従来の方法では、各装置で取得された部分文字列は、隣接するレベルの装置に転送される。例えば、装置Cで取得された「comment」タグの部分文字列は、装置Bに転送される。また、装置Bは、装置B上で取得された部分文字列に、装置Cから転送された部分文字列を結合し、装置Aに転送する。このように、各装置で取得された部分文字列が順次結合され、最終的に装置Xに検索結果である部分文字列が転送される。
したがって、図20に示すように、装置Cから装置Bへのデータ転送量は(160+480+160)Byte=800Byte、装置Bから装置Aへのデータ転送量は4800Byte、装置Aから装置Xへのデータ転送量は6400Byteとなり、合計12000Byteとなる。
一方、本実施の形態の方法では、各装置で取得された部分文字列は、部分文字列取得要求元である装置Xに直接転送される。したがって、装置Aから装置Xへのデータ転送量は1600Byte、装置Bから装置Xへのデータ転送量は4000Byte、装置Cから装置Xへのデータ転送量は800Byteとなり、合計6400Byteとなる。
したがって、従来の方法に比較すると5600Byteのデータ転送量の削減が実現されている。なお、レベルが大きいフラグメントのデータサイズが大きいほど、データ転送量削減の効果は大きくなる。
また、各装置上で部分文字列を結合する際に行われる文字列のコピー処理も不要となるため、検索処理全体のスループットが向上する。
さらに、返信装置を特定の装置に固定化することができる場合は、返信装置に対する返信用のネットワーク回線を、専用回線かつ単方向通信とするように構成してもよい。これにより、双方向通信に比べ、より高速なデータ転送を実現できる。
このように、本実施の形態にかかる構造化文書検索システムでは、複数の文書管理装置に分散配置された部分文書の検索結果を、各文書管理装置から検索要求を行う検索装置に直接転送することができる。このため、重複したデータ転送の発生を低減し、高速な検索を実現することができる。
また、各文書管理装置で検索結果の中継を行わないため、必要以上のデータコピーが発生せず、より高速な検索が可能となる。また、結果データを必要とする装置を固定化できる場合には、専用回線と単方向のデータ転送を適用することにより、双方向のデータ転送に比べ高速な転送を実現することができる。この結果、高速な検索が実現可能となる。
以上のように、本発明にかかる構造化文書検索システムおよび構造化文書検索方法は、XMLなどの構造化文書を複数の装置に分散配置して管理するシステムに適している。
本実施の形態にかかる構造化文書検索システムの構成を示すブロック図である。 XML形式の構造化文書の一例を示した説明図である。 構造化文書から抽出された構造情報の一例を示す説明図である。 構造情報記憶部に格納された構造情報のデータ構造の一例を示す説明図である。 構造化文書記憶部に格納された構造化文書のデータ構造の一例を示す説明図である。 構造化文書記憶部に格納された構造化文書のデータ構造の一例を示す説明図である。 複数の装置上の構造化文書記憶部に格納された構造化文書のデータ構造の一例を示す説明図である。 索引情報記憶部に格納された索引のデータ構造の一例を示す説明図である。 問合せデータの一例を示す説明図である。 第1検索処理部の構成を示すブロック図である。 本実施の形態における構造化文書格納処理の全体の流れを示すフローチャートである。 本実施の形態における構造化文書検索処理の全体の流れを示すフローチャートである。 ラベルサイズの算出例を示した説明図である。 本実施の形態における部分文字列取得処理の全体の流れを示すフローチャートである。 構造化文書検索処理において各装置間で送受信されるコマンドの一例を示す説明図である。 構造化文書検索処理において各装置間で送受信されるコマンドの一例を示す説明図である。 構造化文書検索処理において各装置で検索される検索結果の一例を示す説明図である。 構造化文書検索処理において各装置で検索される検索結果の一例を示す説明図である。 構造化文書検索処理において各装置で検索される検索結果の一例を示す説明図である。 従来の方法により検索処理を実行した際に送信されるデータの一例を示す説明図である。 検索処理を実行した際に送信されるデータの一例を示す説明図である。
符号の説明
10 構造化文書検索システム
100 検索装置
110 格納処理部
111 構造抽出部
112 文書分割部
113 文書送信部
114 文書登録部
115 索引登録部
120 第2検索処理部
121 データ通信部
121a 検索要求受信部
121b 第2要求送信部
121c 部分文字列受信部
121d 第2結果送信部
121e 要求受信部
122 検索部
123 ラベル管理部
124 第2結果データ取得部
130 分割配置設定部
140 構造情報記憶部
150 構造化文書記憶部
160 索引情報記憶部
200 文書管理装置
220 第1検索処理部
221 データ通信部
221b 第1要求送信部
221d 第1結果送信部
224 第1結果データ取得部
300 ネットワーク
400 クライアント
701、702、703 エレメント
20、21、22、23、24 コマンド
30、31 状態
40、41 文字列
60 リンク

Claims (10)

  1. 構造化文書を分散して格納する複数の文書管理装置と、前記複数の文書管理装置とネットワークで接続され、前記複数の文書管理装置から構造化文書を検索する検索装置と、前記複数の文書管理装置と前記検索装置とにネットワークで接続され、構造化文書の検索要求を前記検索装置に送信するクライアント装置と、を備えた構造化文書検索システムであって、
    前記文書管理装置は、
    構造化文書の論理的な構造の単位である構造要素のうち予め定められた前記構造要素に対応する構造化文書の部分文字列を格納する文書記憶手段と、
    前記検索装置または他の文書管理装置から前記部分文字列の取得要求を受信する要求受信手段と、
    前記要求受信手段が受信した前記取得要求に基づき、前記文書記憶手段から前記部分文字列を取得し、取得した前記部分文字列に含まれる情報であって、前記取得した前記部分文字列の一部が他の文書管理装置に格納されていることを示す情報に基づき、前記取得した前記部分文字列の一部が他の文書管理装置に格納されているか否かを判断する第1の結果データ取得手段と、
    前記第1の結果データ取得手段が前記部分文字列の一部が他の文書管理装置に格納されていると判断した場合に、前記部分文字列の一部についての前記取得要求を、前記部分文字列の一部を格納していると判断された他の文書管理装置に送信する第1の要求送信手段と、
    前記取得した前記部分文字列を前記検索装置に送信する第1の結果送信手段と、を備え、
    前記検索装置は、
    前記構造要素を一意に識別する構造IDと、前記構造要素に対応する前記部分文字列を格納する前記文書管理装置を一意に識別する装置IDとを対応づけて記憶する構造情報記憶手段と、
    前記クライアント装置から前記検索要求を受信する検索要求受信手段と、
    前記検索要求受信手段が受信した前記検索要求を満たす前記構造要素の前記構造IDを前記構造情報記憶手段から取得する検索手段と、
    前記検索手段が取得した前記構造IDに対応する前記文書管理装置の前記装置IDを前記構造情報記憶手段から取得する第2の結果データ取得手段と、
    前記第2の結果データ取得手段が取得した前記装置IDで識別される前記文書管理装置に、前記取得要求を送信する第2の要求送信手段と、
    前記文書管理装置から前記部分文字列を受信する部分文字列受信手段と、
    前記部分文字列受信手段が複数の前記文書管理装置のそれぞれから前記部分文字列を受信した場合に、受信した複数の前記部分文字列を相互に結合し、結合した文書を前記クライアント装置に送信する第2の結果送信手段と、
    を備えたことを特徴とする構造化文書検索システム。
  2. 前記文書記憶手段は、木構造で表された構造化文書のうち予め定められた部分木である前記部分文字列を格納し、
    前記第2の要求送信手段は、前記第2の結果データ取得手段が取得した前記装置IDで識別される前記文書管理装置に、構造化文書全体の木構造のルートノードに対する前記部分文字列のルートノードの階層の深さの情報を含む階層情報と、前記取得要求とを対応づけて送信し、
    前記第1の結果送信手段は、前記第1の結果データ取得手段が取得した前記部分文字列と、前記階層情報とを対応づけて前記検索装置に送信し、
    前記第2の結果送信手段は、送信された前記部分文字列が複数存在する場合に、前記階層情報に基づき、前記深さが小さい前記部分文字列が前記深さが大きい前記部分文字列より上位階層となるように複数の前記部分文字列を相互に結合して前記クライアント装置に送信することを特徴とする請求項1に記載の構造化文書検索システム。
  3. 前記第1の結果送信手段は、前記第1の結果データ取得手段が取得した前記部分文字列と、取得した順序を示す順序情報を含む前記階層情報とを対応づけて前記検索装置に送信し、
    前記第2の結果送信手段は、送信された前記部分文字列が複数存在する場合に、前記順序情報を含む前記階層情報に基づき、前記深さが小さい前記部分文字列が前記深さが大きい前記部分文字列より上位階層となるように複数の前記部分文字列を相互に結合し、同一階層の前記部分文字列に対しては、先に取得した前記部分文字列を後に取得した前記部分文字列より前に結合して前記クライアント装置に送信することを特徴とする請求項2に記載の構造化文書検索システム。
  4. 前記構造情報記憶手段は、前記構造要素を一意に識別する構造IDと、前記構造要素に対応する前記部分文字列を格納する前記文書管理装置を一意に識別する装置IDと、構造化文書内に前記部分文字列が出現する個数を示す頻度情報とを対応づけて記憶し、
    前記第2の要求送信手段は、前記構造情報記憶手段に記憶された前記頻度情報に基づき、前記階層情報のサイズを決定することを特徴とする請求項3に記載の構造化文書検索システム。
  5. 前記文書記憶手段は、前記部分文字列の一部が他の文書管理装置に格納されている場合に、前記部分文字列の一部が格納されている前記文書管理装置の前記装置IDと前記部分文字列の一部のルートノードを一意に識別するノードIDとを含む情報である接続情報を、前記部分文字列の一部を含む前記部分文字列と対応づけて格納し、
    前記第1の要求送信手段は、前記第1の結果データ取得手段が取得した前記部分文字列が前記接続情報と対応づけられている場合に、前記接続情報に含まれる前記装置IDに対応する前記文書管理装置に、前記接続情報に含まれる前記ノードIDで識別されるノードをルートノードとする前記部分文字列の取得要求を送信することを特徴とする請求項2に記載の構造化文書検索システム。
  6. 前記文書記憶手段は、前記部分文字列の一部が他の文書管理装置に格納されている場合に、前記部分文字列の一部に対応する前記構造要素の前記構造IDと前記部分文字列の一部のルートノードを一意に識別するノードIDとを含む情報である接続情報を、前記部分文字列の一部を含む前記部分文字列と対応づけて格納し、
    前記第1の要求送信手段は、前記第1の結果データ取得手段が取得した前記部分文字列が前記接続情報と対応づけられている場合に、前記接続情報に含まれる前記構造IDに対応づけられた前記装置IDを前記構造情報記憶手段から取得し、取得した前記装置IDに対応する前記文書管理装置に、前記接続情報に含まれる前記ノードIDで識別されるノードをルートノードとする前記部分文字列の取得要求を送信することを特徴とする請求項2に記載の構造化文書検索システム。
  7. 前記第2の要求送信手段は、前記検索装置に情報を送信する際に用いる情報である送信情報を含む前記取得要求を前記第2の結果データ取得手段が取得した前記装置IDで識別される前記文書管理装置に送信し、
    前記第1の結果送信手段は、前記取得要求に含まれる前記送信情報に基づき、取得した前記部分文字列を前記検索装置に送信することを特徴とする請求項1に記載の構造化文書検索システム。
  8. 前記第1の結果送信手段は、前記検索装置に対して単方向に情報を送信する前記ネットワークの通信回線を用いて、前記第1の結果データ取得手段が取得した前記部分文字列を前記検索装置に送信することを特徴とする請求項1に記載の構造化文書検索システム。
  9. 前記文書記憶手段は、XML(Extensible Markup Language)で記述された構造化文書のうち予め定められた部分である部分文字列を格納することを特徴とする請求項1に記載の構造化文書検索システム。
  10. 構造化文書を分散して格納する複数の文書管理装置と、前記複数の文書管理装置とネットワークで接続され、前記複数の文書管理装置から構造化文書を検索する検索装置と、前記複数の文書管理装置と前記検索装置とにネットワークで接続され、構造化文書の検索要求を前記検索装置に送信するクライアント装置と、を備えた構造化文書検索システムにおける構造化文書検索方法であって、
    前記検索装置が、前記クライアント装置から前記検索要求を受信する検索要求受信ステップと、
    前記検索装置が、構造化文書の論理的な構造の要素である構造要素を一意に識別する構造IDと、前記構造要素に対応する前記部分文字列を格納する前記文書管理装置を一意に識別する装置IDとを対応づけて記憶する構造情報記憶手段から、前記検索要求受信手段が受信した前記検索要求を満たす前記構造要素の前記構造IDを取得する検索ステップと、
    前記検索装置が、前記検索ステップが取得した前記構造IDに対応する前記文書管理装置の前記装置IDを前記構造情報記憶手段から取得する第2の結果データ取得ステップと、
    前記検索装置が、前記第2の結果データ取得ステップが取得した前記装置IDで識別される前記文書管理装置に、前記取得要求を送信する第2の要求送信ステップと、
    前記文書管理装置が、前記検索装置または他の文書管理装置から前記部分文字列の取得要求を受信する要求受信ステップと、
    前記文書管理装置が、前記要求受信ステップが受信した前記取得要求に基づき、前記構造要素のうち予め定められた前記構造要素に対応する構造化文書の部分文字列を格納する文書記憶手段から前記部分文字列を取得し、取得した前記部分文字列に含まれる情報であって、前記取得した前記部分文字列の一部が他の文書管理装置に格納されていることを示す情報に基づき、前記取得した前記部分文字列の一部が他の文書管理装置に格納されているか否かを判断する第1の結果データ取得ステップと、
    前記文書管理装置が、前記第1の結果データ取得ステップが前記部分文字列の一部が他の文書管理装置に格納されていると判断した場合に、前記部分文字列の一部についての前記取得要求を、前記部分文字列の一部を格納していると判断された他の文書管理装置に送信する第1の要求送信ステップと、
    前記文書管理装置が、前記取得した前記部分文字列を前記検索装置に送信する第1の結果送信ステップと、
    前記検索装置が、前記文書管理装置から前記部分文字列を受信する部分文字列受信ステップと、
    前記検索装置が、前記部分文字列受信ステップが受信した前記部分文字列が複数存在する場合に、複数の前記部分文字列を相互に結合し、結合した文書を前記クライアント装置に送信する第2の結果送信ステップと、
    を備えたことを特徴とする構造化文書検索方法。
JP2006024540A 2006-02-01 2006-02-01 構造化文書検索システムおよび構造化文書検索方法 Expired - Fee Related JP4489029B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006024540A JP4489029B2 (ja) 2006-02-01 2006-02-01 構造化文書検索システムおよび構造化文書検索方法
US11/669,304 US20070185845A1 (en) 2006-02-01 2007-01-31 System and method for searching in structured documents

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006024540A JP4489029B2 (ja) 2006-02-01 2006-02-01 構造化文書検索システムおよび構造化文書検索方法

Publications (2)

Publication Number Publication Date
JP2007206945A JP2007206945A (ja) 2007-08-16
JP4489029B2 true JP4489029B2 (ja) 2010-06-23

Family

ID=38335212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006024540A Expired - Fee Related JP4489029B2 (ja) 2006-02-01 2006-02-01 構造化文書検索システムおよび構造化文書検索方法

Country Status (2)

Country Link
US (1) US20070185845A1 (ja)
JP (1) JP4489029B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7908286B2 (en) * 2004-12-08 2011-03-15 Oracle International Corporation Techniques for providing XQuery access using web services
JP4212615B2 (ja) 2006-09-28 2009-01-21 株式会社東芝 構造化文書検索システム、構造化文書検索方法、検索装置、および文書管理装置
JP4854542B2 (ja) * 2007-02-27 2012-01-18 株式会社東芝 文書検索システム及び文書検索方法
US20090089275A1 (en) * 2007-10-02 2009-04-02 International Business Machines Corporation Using user provided structure feedback on search results to provide more relevant search results
US8176084B2 (en) * 2007-11-26 2012-05-08 International Business Machines Corporation Structure based storage, query, update and transfer of tree-based documents
JP5038939B2 (ja) * 2008-03-03 2012-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報検索システム、方法及びプログラム
US20110252313A1 (en) * 2008-12-19 2011-10-13 Ray Tanushree Document information selection method and computer program product
JP5434500B2 (ja) * 2009-11-13 2014-03-05 富士ゼロックス株式会社 木構造処理装置及びプログラム
JP5402667B2 (ja) * 2010-01-21 2014-01-29 富士通株式会社 構成情報管理装置、分散情報管理システム、分散情報管理方法および分散情報管理プログラム
JP5480034B2 (ja) * 2010-06-24 2014-04-23 インターナショナル・ビジネス・マシーンズ・コーポレーション 構造化文書の木構造を分割するための方法、プログラムおよびシステム
JP5172931B2 (ja) 2010-10-25 2013-03-27 株式会社東芝 検索装置、検索方法および検索プログラム
US9535949B2 (en) 2014-03-28 2017-01-03 International Business Machines Corporation Dynamic rules to optimize common information model queries

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2242158C (en) * 1997-07-01 2004-06-01 Hitachi, Ltd. Method and apparatus for searching and displaying structured document
JP2001167087A (ja) * 1999-12-14 2001-06-22 Fujitsu Ltd 構造化文書検索装置,構造化文書検索方法,構造化文書検索用プログラム記録媒体および構造化文書検索用インデックス作成方法
JP4045400B2 (ja) * 2001-08-24 2008-02-13 富士ゼロックス株式会社 検索装置及び検索方法
US7370061B2 (en) * 2005-01-27 2008-05-06 Siemens Corporate Research, Inc. Method for querying XML documents using a weighted navigational index

Also Published As

Publication number Publication date
US20070185845A1 (en) 2007-08-09
JP2007206945A (ja) 2007-08-16

Similar Documents

Publication Publication Date Title
JP4489029B2 (ja) 構造化文書検索システムおよび構造化文書検索方法
US7386567B2 (en) Techniques for changing XML content in a relational database
US11030243B2 (en) Structure based storage, query, update and transfer of tree-based documents
KR100372584B1 (ko) 데이터처리방법 및 시스템 및 그 처리프로그램을 기록한계산기판독이 가능한 기록매체
US7024425B2 (en) Method and apparatus for flexible storage and uniform manipulation of XML data in a relational database system
JP4516566B2 (ja) Xml文書とリレーショナルデータと間のマッピングにおける階層情報の保持
JP5407043B2 (ja) バイナリにエンコードされたxmlデータの効率的な区分的アップデート
US20050125419A1 (en) Search processing system, its search server, client, search processing method, program, and recording medium
US8145674B2 (en) Structure based storage, query, update and transfer of tree-based documents
EP1536349A1 (en) Search system, search server, client, search method, program, and recording medium
CN101216824B (zh) 一种将树型结构数据库发布为分布式xml数据库的方法
JP2001325290A (ja) 文書ファイル検索システム
JP4854542B2 (ja) 文書検索システム及び文書検索方法
JP2000348038A (ja) 半構造データベースのためのデータ格納装置および方法
JP2006127235A (ja) 構造化文書管理システム、構造化文書管理方法及びプログラム
JP4212615B2 (ja) 構造化文書検索システム、構造化文書検索方法、検索装置、および文書管理装置
JP2013142983A (ja) 情報処理装置、情報検索装置、および、プログラム
JP2019003501A (ja) 情報処理装置、情報処理方法、及びプログラム
JP2001282856A (ja) インデックス作成方法、インデックス表示方法、インデックス検索方法及びインデックス作成装置
JP4568267B2 (ja) 構造化文書検索システム及びデータベース管理プログラム
JP2004348485A (ja) 構造化文書処理方法及び装置及び構造化文書処理プログラム及び構造化文書処理プログラムを格納した記憶媒体
US20130305137A1 (en) Document generation system and method for generating a document
AU2007229359B2 (en) Method and apparatus for flexible storage and uniform manipulation of XML data in a relational database system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091005

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

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

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4489029

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140409

Year of fee payment: 4

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

LAPS Cancellation because of no payment of annual fees