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

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

Info

Publication number
JP4146479B2
JP4146479B2 JP2006264835A JP2006264835A JP4146479B2 JP 4146479 B2 JP4146479 B2 JP 4146479B2 JP 2006264835 A JP2006264835 A JP 2006264835A JP 2006264835 A JP2006264835 A JP 2006264835A JP 4146479 B2 JP4146479 B2 JP 4146479B2
Authority
JP
Japan
Prior art keywords
search
candidate
structured document
constraint
index
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
JP2006264835A
Other languages
English (en)
Other versions
JP2008084112A (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 JP2006264835A priority Critical patent/JP4146479B2/ja
Priority to US11/896,267 priority patent/US7822788B2/en
Publication of JP2008084112A publication Critical patent/JP2008084112A/ja
Application granted granted Critical
Publication of JP4146479B2 publication Critical patent/JP4146479B2/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/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Description

この発明は、階層化された論理構造を持つ構造化文書データベースで管理された異なる文書構造の複数の構造化文書を検索する構造化文書検索装置および構造化文書検索方法に関するものである。
近年、XML(eXtensible Markup Language)などで記述された構造化文書情報を記憶・検索する構造化文書データベースが実現されている。構造化文書データベースに対する問合せは、W3C(World Wide Web Consortium)が標準化を進めているXQuery(XML Query)という問合せ言語によって行われることが主流となっている。
XQueryはパス(構造)やキーワード(語彙)を指定した検索が可能であり、非常に高い言語記述能力を持つことに特徴がある。例えば、構造条件に関しては「/*」や「//」などの記号を用いて、構造の曖昧性を含んだ形で検索条件を記述することができる。
XQueryでは、要素や属性などのDOM(Document Object Model)におけるノードレベルの情報を検索対象とする。例えば、特許文献1では、以下の方法により、構造化文書のノードレベルの情報の検索を行う技術が提案されている。
まず、構造化文書をデータベースに格納する際に、対象となる文書のデータ構造を解析し、その構造(ノード)に対する解析情報を語彙索引情報などに埋め込んで索引を作成する。次に、検索時に検索クエリを解析して問合せグラフを作成し、コスト計算をした上でクエリ実行のプランを作成する。そして作成したプランにしたがってクエリを実行し、問合せグラフの構造制約を満たすノードの情報を検索結果として取得する。
このような構造化文書データベース中に格納されるデータは多種に渡り、それらが統一的に管理されるため、結果として構造化文書データベース中には様々なデータ構造(スキーマ)が含まれることになる。XQueryを処理する際はこれら様々なスキーマを有するデータの中から対象候補を「漏れなく」、かつ「高速に」検索(加工)する必要がある。
検索の高速化のためには、従来から(1)特定のパスに対して語彙索引や数値索引を付加する方法、(2)格納対象のデータ構造を解析し、特徴的な構造に対するスキーマ解析情報を抽出する方法などが考えられている。
(1)の方法については、例えば、「/タイトル=“XML"」のような検索を行う場合、<タイトル>タグに対して語彙索引を付加することにより、語彙からの逆引きが行えるため、検索の高速化が期待できる。
(2)の方法については、例えば、<ヘッダ>の子要素として<タイトル>が「必ず」かつ「唯一」存在しているという情報を登録することにより、<ヘッダ>の下に<タイトル>が存在することを検証する構造照合処理コストを低減できるため、検索の高速化が期待できる。
一方、一般的に検索処理でコストを要する部分は、構造照合処理や値照合処理などに代表されるデータ照合処理である。値照合処理とは、検索キーとして指定された語句(値)が含まれることを検証する処理である。
検索最適化処理を考える上で問題となるのは、いかにコストが低いプランを作成するかであるが、コストが高い代表的な処理が上述のデータ照合処理である。これは実際にデータベース中の構造化文書にアクセスする「データスキャン」を行わなければならないからであるが、一般的にデータスキャンは、索引だけの処理と比較して低速である。
これに対し、特許文献2では、構造化文書の構造情報(親子関係や兄弟関係)を予めID化しておいてすべての索引情報に付加することにより、索引だけで構造照合を実行可能とし、データスキャンを極力不要とする技術が提案されている。
特開2001−147933号公報 特開2002−202973号公報
しかしながら、特許文献2などのような索引を利用して検索を高速化する技術では、索引種別が混在する場合に検索処理速度が低下する場合があるという問題があった。
例えば、<ヘッダ>の子要素として<タイトル>と<本文>が存在し、<タイトル>に対しては語彙索引(語彙からその位置を特定できる索引)が付加されているが、<本文>には語彙索引が付いていない場合を考える。この場合に、「/ヘッダ[.//text() = "XML"]」などのような複数のパスを条件に指定されると、<本文>に関しては索引を用いることができないため値照合処理が必要となり、検索処理速度が低下する。
また、例えば、登録時に解析したスキーマ解析情報により、<特許>の下には必ず<タイトル>を含み、かつ唯一であることが判明している場合を考える。この場合に、「/ヘッダ[.//text() = "XML"]」などのような複数のパスを条件に指定されると、<タイトル>に関しては構造照合処理が不要であるが、<本文>に関しては構造照合処理が必要となるため、検索処理速度が低下する。
すなわち、あるパスは索引等を利用可能なためデータスキャンが不要であり高速に処理できるにも関らず、特定のパスに対してはデータスキャンが発生するために、全体として検索処理速度が低下する場合があった。
一般的に検索処理は、検索条件を解析し、解を求める処理順序を決定した後、処理順序に従いデータ制約を満足する中間候補を残す処理を繰り返すことによって実行される。上記問題は、この中間候補を求める際に候補全件に対して厳密に制約チェックを行う点に起因する。
本発明は、上記に鑑みてなされたものであって、厳密な制約チェックを行わずに制約を緩和することにより、検索処理を高速化することができる構造化文書検索装置、構造化文書検索方法および構造化文書検索プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、階層化された論理構造の単位である構造要素に対応するオブジェクトと、前記オブジェクトを識別するオブジェクトIDとを含み、前記論理構造を有する構造化文書情報を記憶する構造化文書記憶手段と、前記構造要素を識別する構造IDと、前記オブジェクトIDとを対応づけた構造索引を記憶する構造索引記憶手段と、前記構造化文書情報に含まれる語彙を識別する語彙IDと、前記オブジェクトIDとを対応づけた語彙索引を記憶する語彙索引記憶手段と、前記構造IDに前記語彙索引が付加されているか否かを表す判別情報を含む前記構造要素に関する構造情報を記憶する構造情報記憶手段と、入力された検索条件に含まれる検索キーを前記検索キーの検索対象となる前記構造IDに対応づけ、前記検索キーを対応づけた前記構造IDである検索対象構造IDと、前記検索条件の検索結果として取得すべき前記構造IDである検索結果構造IDとを階層構造の単位として含み、前記検索対象構造IDと前記検索結果構造IDとの間で満たすべき前記階層構造に関する構造制約を定めた階層型検索条件を生成する条件生成手段と、前記検索対象構造IDのうち、前記語彙索引が付加されていないことを示す前記判別情報が対応づけられた前記検索対象構造IDについて、前記検索対象構造IDに対応づけられた前記オブジェクトIDを前記構造索引記憶手段から取得する第1取得手段と、前記第1取得手段が取得した前記オブジェクトIDに前記検索キーを第1制約条件として対応づけ、前記第1制約条件を対応づけた前記オブジェクトIDを含む前記検索結果の候補を生成する候補生成手段と、生成された前記候補に含まれる前記オブジェクトIDに対応する前記検索対象構造IDに対して、前記階層型検索条件で定めた前記構造制約に適合する前記検索結果構造IDを取得する第2取得手段と、取得した前記検索結果構造IDに対応する前記オブジェクトIDのうち前記第1制約条件を満たす前記オブジェクトIDに対応する前記オブジェクトを前記構造化文書記憶手段から取得する結果取得手段と、を備えたことを特徴とする。
また、本発明は、上記装置を実行することができる構造化文書検索方法および構造化文書検索プログラムである。
本発明によれば、語彙索引が存在しない場合に構造索引によって候補を取得するように制約を緩和することができるため、検索処理を高速化することができるという効果を奏する。
以下に添付図面を参照して、この発明にかかる構造化文書検索装置、構造化文書検索方法および構造化文書検索プログラムの最良な実施の形態を詳細に説明する。
本実施の形態にかかる構造化文書検索装置は、検索条件における構造の制約や値の制約を処理コストが低くなる制約に緩和し、コストが高い処理を実際のデータ取得する段階まで遅延させることで処理速度の高速化を実現するものである。
これは、制約条件を緩和した場合であっても、結果的に候補として同一となる候補に対する処理をスキップすることを目的としている。処理途中に緩和した候補が別の条件により候補から除外されたときや、取得件数を予め指定したときなどに、その候補自体が不要となる場合があるからである。
以下に、本実施の形態にかかる構造化文書検索装置による構造化文書検索処理の概要を示す。まず、入力された検索条件であるXQueryを解析し、データスキャンを極力行わないように制約(値、構造)を緩和した形で検索のプラン(クエリプラン)を生成する。その際、制約を緩和した候補群に対しては緩和した制約(構造、値)から取得処理の優先順位を表す処理優先度を計算し、それぞれの値に付加する。
次に、制約を緩和しなかった候補集合を正確な中間候補とし、それ以外の候補を仮候補として、データ取得段階まで制約を緩和して得られた候補のまま処理を進める。一般的に処理途中の候補はデータベース中で一意に識別されるオブジェクトID(OID)で管理されるが、仮候補に対しては大域的な情報、例えば、正確ではないが大まかな構造情報を付加し、データ結合時には、その時点までに判明している情報でデータ結合処理等を行う。
最後に、実際にデータを取得する時点で初めて仮候補に対する制約を解除し、条件を満たすものだけを解として値を具体化する。この際コスト(ディスクIO等)が最小になるように、緩和した制約を解除する順序を決定することで高速化を実現する。
このように、本実施の形態は、中間段階の解候補としてはノイズを含む状態で判明している候補だけを残しておき、他の制約によって削除できる候補は可能な限り削除することにより、データ取得の段階まで可能な限り高コストの処理を実行しない点に特徴がある。また、本実施の形態は、遅延させた緩和制約条件の中から高速に処理できるように順序を決定できる点に特徴がある。
構造化文書データベースの検索処理では、索引種別が混在する場合や、パス式中の特定構造のみスキーマ解析が実行される場合が多いため、高コストとなる特定の索引種別または特定構造に関する処理を遅延させることは効果的であるといえる。
なお、後述するように順序を決定するための情報として処理優先度を用いるが、処理優先度は検索精度の向上ではなく、検索処理の高速化を主な目的とする情報である。また、緩和した制約は最終的には除去されるため、厳密な候補を検索結果として取得することができる。
図1は、本実施の形態にかかる構造化文書検索装置100の構成を示すブロック図である。同図に示すように、構造化文書検索装置100は、ネットワーク200を介してクライアント300と接続されており、通信部101と、構造化文書記憶部141と、構造情報記憶部142と、構造索引記憶部143と、語彙索引記憶部144と、格納処理部110と、検索処理部120と、結果取得部130と、制約記憶部151と、候補記憶部152とを備えている。
クライアント300は、登録する構造化文書(構造化文書)や、登録済みの構造化文書を対象とする検索条件を構造化文書検索装置100に送信し、検索結果を受信するものである。
ネットワーク200は、クライアント300と構造化文書検索装置100とを接続するもので、例えば、インターネット、有線LAN(Local Area Network)、無線LANなどのあらゆるネットワーク構成を適用することができる。
通信部101は、ネットワーク200を介して、クライアント300から各種処理の要求や登録する構造化文書を受信するとともに、検索結果をクライアント300に送信するものである。
クライアント300から受信する命令には、格納命令、検索命令、取得命令が含まれる。格納命令は、入力された構造化文書を格納する処理の実行を要求する命令である。検索命令は、問い合わせ言語(XQueryなど)を入力として、結果集合を取得するための命令である。結果集合とは、検索結果であるOIDの集合をいう。
取得命令は、結果集合からユーザが指定した構造化文書の実際のデータを取得するための命令である。この際、ユーザは、結果集合中から何件取得するか、または全件取得するかなどといった取得件数の指定を行うことができる。
通信部101が受信した格納命令、検索命令、取得命令は、それぞれ格納処理部110、検索処理部120、結果取得部130に対して通知される。
構造化文書記憶部141は、XMLで記述された構造化文書を記憶する記憶部である。ここで、構造化文書の記述形式について説明する。図2は、XMLで記述された構造化文書の一例を示す説明図である。
同図では、特許に関する情報をXML形式で記述した構造化文書の例が示されている。XMLでは、文書の構造の表現にタグが用いられる。タグには、開始タグと終了タグが存在し、構造化文書の構成要素を開始タグと終了タグで囲むことにより、文書中の文字列(テキスト)の区切りと、そのテキストが構造上いずれの構成要素に属するのかを明確に記述することができる。
なお、XMLでは、タグを使って定義したデータの単位を要素という。例えば、<特許>タグと</特許>タグとを含み、両タグで囲まれたデータが1つの要素を構成する。
また、要素には、省略可能か、繰り返しが可能かなどの付加的な情報を追加するための属性を指定することができる。属性は、開始タグに「<要素名称 属性="属性値">」のような書式で設定する。
また、開始タグとは要素名称を記号「<」、「>」で閉じた書式で記載され、終了タグとは要素名称を記号「</」と「>」で閉じた書式で記載される。開始タグと終了タグとの間には、構造化文書の実情報を表すテキスト、または他の要素(子要素)が設定される。「<特許DB></特許DB>」のようにテキストを含まない構成要素は、簡易記法として「<特許DB/>」のように表すこともできる。
同図に示した文書は、「特許」タグから始まる要素を文書ルート(根)とし、その子要素として「ヘッダ」、「タイトル」、「本文」、「キーワードリスト」、「キーワード」、「内容」タグから始まる要素を有する。また、例えば、「タイトル」タグから始まる要素には「XMLDB」といった、1つのテキスト(文字列)が存在する。
なお、このようなXML形式の構造化文書から、各タグの名称や階層関係、繰り返しの個数などを抽出した情報を構造情報という。また、構造化文書の構造情報を構成する論理的な構造の単位を構造要素という。本実施の形態では、上述の要素、属性、テキストが構造要素となる。
また、同図に示すように、各文書には構造化文書記憶部141内で文書を一意に識別するための文書IDと、文書内で各構造要素を一意に識別する要素IDとが付与されている。なお文書IDと要素IDとを合わせた情報により、構造化文書記憶部141内のすべての要素を一意に識別することができる。以下では、この情報をオブジェクトID(OID)といい、OIDで特定される要素のことをオブジェクトという。
構造情報記憶部142は、上述のようなXML形式の構造化文書から抽出された構造情報を格納するものである。構造情報記憶部142は、構造化文書記憶部141に格納する構造化文書の構造を、構造情報と照合して解析する際に参照される。
図3は、本実施の形態における構造情報記憶部142に格納された構造情報のデータ構造の一例を示す説明図である。同図は、構造情報を木構造で表した例を示している。
同図に示すように、階層化された構造情報の単位である構造要素を木構造のノードとし、各ノードには対応する構造要素を一意に識別するための識別子である構造ID(以下、TID(テンプレートID)という)が付与されている。構造情報は、複数の構造化文書から、構造を表す情報のみを抽出した情報である。したがって、例えば、図2の「キーワード」タグのノードのように、構造化文書内では複数設定されうる情報であっても、構造情報上では1つに集約される。
また、本実施の形態では、統計情報等を利用して適宜スキーマ解析情報が抽出されることを前提としている。スキーマ解析情報とは、構造化文書の構造を定める情報をいう。図3では、例えば、ヘッダとタイトルとは1対1の関係にあること、すなわち、<ヘッダ>の下には必ず<タイトル>が1つ存在するというような統計情報がスキーマ解析情報として保持されていることが示されている。
このような場合は、実際にデータスキャンを行ってOIDを求める必要がなく、大域的な構造情報であるTIDだけで構造に対する制約を解決してOIDを特定できる。スキーマ解析情報は、索引から求めた値に対して構造チェックする場合に有効である。例えば、索引から求めたタイトルの要素IDがE3である場合、親要素であるヘッダは必ず存在し、その要素IDはE2であることを、データスキャンを行わずに求めることができる。
また、同図に示すように、テキスト情報を有するノードに対しては、語彙索引が付加されているか否かを示す判別情報が付与される。同図では、タイトル、本文、内容の各ノードに対して形態素による語彙索引(形態素索引)が付加され、キーワードノードには索引が付加されていないことを表す判別情報が付与された例が示されている。
なお、語彙索引の種別は形態素索引に限られるものではなく、Nグラム索引、数値索引などのあらゆる索引を用いることができる。
構造索引記憶部143は、TIDとOIDとを対応づけた構造索引を記憶するものである。すなわち、構造索引を利用することにより、TIDに対応するOIDのリストを取得することができる。
語彙索引記憶部144は、構造化文書記憶部141に記憶されたすべての構造化文書に含まれる語彙を識別する語彙IDと、OIDとを対応づけた語彙索引を記憶するものである。図4は、語彙索引記憶部144に格納された語彙索引のデータ構造の一例を示す説明図である。
同図に示すように、語彙索引記憶部144は、各語彙の発生順に昇順に付与された語彙の識別子である語彙IDと、語彙の全構造化文書内での発生頻度と、転置ファイル番号とを対応づけた語彙索引を格納している。転置ファイル番号とは、語彙IDに対応する語彙を含む要素に関する情報を含む転置ファイルを一意に識別するための番号をいう。
同図の下部には、転置ファイルのデータ構造の一例が示されている。転置ファイルは、TIDと、文書IDと、要素IDと、発生位置とを対応づけて格納している。
発生位置とは、当該転置ファイルに対応する語彙が、文書IDと要素IDとで識別される構造化文書の要素内で出現する位置を表す情報である。このような転置ファイルを含む語彙索引により、各語彙に対応するオブジェクト(要素)を特定することができる。なお、これら情報に加えてデータから所定の規則に従い算出したハッシュ値などの特徴量を加えるように構成してもよい。
なお、構造化文書記憶部141、構造情報記憶部142、構造索引記憶部143、および語彙索引記憶部144は、HDD(Hard Disk Drive)、光ディスク、メモリカード、RAM(Random Access Memory)などの一般的に利用されているあらゆる記憶媒体により構成することができる。
格納処理部110は、クライアント300から受信した格納命令に従い、構造化文書、構造化文書から抽出した構造情報および索引を格納する処理を実行するもので、スキーマ解析部111と、語彙索引作成部112と、構造索引作成部113と、登録部114とを備えている。
スキーマ解析部111は、通信部101から取得したテキスト形式のデータである構造化文書を構文解析し、DOMのようなオブジェクトツリー形式に展開し、木構造の各ノードを特徴的な構造情報として抽出するものである。以下では、このように抽出された木構造の構造情報を構造テンプレートという。
語彙索引作成部112は、構造化文書のテキスト部分を語彙分割し語彙索引を作成して語彙索引記憶部144に登録するものである。語彙の分割方法としては、語彙索引の種類に応じて形態素解析やNグラム分割などを適用可能であり、いずれの方法を用いるかをユーザが指定する。
構造索引作成部113は、スキーマ解析部111で解析したパス(TID)に対するIODを取得して構造索引として構造索引記憶部143に登録するものである。
通常、語彙を指定した検索では、構造索引を用いるより語彙索引を用いたほうが高速になる場合が多い。図5は、構造索引による検索と語彙索引による検索との比較について説明した模式図である。
同図の上部に示すような検索条件「/タイトル=“XML"」が指定された場合は、構造索引を用いた場合は、まず構造索引から「/タイトル」の候補集合{$1}を求めた後、それらすべての候補に対してデータスキャンを行い、値として“XML"を含むか否かを検証し、条件を満たす[$2]を求める必要がある。
一方、語彙索引を用いる場合は語彙と構造を関連付けた索引を保持しているので、直接「/タイトル=“XML"」を満たす候補集合[$2]を求めることができるので、探索空間を限定して索引だけで処理が行うことができる。このため、語彙索引を用いた検索のほうが構造索引を用いた検索より高速に実行される。
また、構造索引で問題となるのは構造索引の候補数が過大となる場合である。一般的に構造索引は語彙索引と比較して索引情報として付加する情報の数が少ないことから候補数が増大する場合が多い。これを抑止するため、構造索引の情報量を増やすことによって高速化を行う。例えば、候補となる要素値に対する特徴量を計算し、索引情報として新たに追加する。
また、このように特徴量を付加して構造索引を作成する処理を、語彙索引が付加されていないTIDに対応する要素に対してだけ行うことで必要最小限の索引だけを作成するように構成してもよい。
図6は、図2のような構造化文書情報から作成した構造索引の一例を示す説明図である。同図に示すように、TID=T2(タイトル)に対しては語彙索引が付与されているため、文書IDと要素IDとからなるOIDのみをTIDに対応づけた構造索引が生成される。TID=T5(キーワード)に対しては語彙索引が付与されていないため、ハッシュ値計算を行い、算出した値(例えば、1247)を特徴量として付加した構造索引が生成される。
なお、本実施の形態では、ユーザはTIDごとに語彙索引、構造索引を作成するか否かを指定することができる。設定できる索引種別としては、構造索引、語彙索引の他、特定のTIDに対しては索引を付加しないこと、または、特定のTIDに数値が含まれることが多いことが予め判明している場合には数値索引を付加することを指定することも可能である。このようにデータ内容に応じてTIDごとに索引種別を指定可能とすることにより、さらに検索の高速化が実現可能となる。
登録部114は、オブジェクトツリー形式に展開した各ノードに対して親子兄弟関係を付加し、構造化文書記憶部141に格納するものである。なお、スキーマ解析部111で解析された各ノードに対応するオブジェクトに対しては、ユニークなOIDが付加され、構造化文書記憶部141に記憶される。
検索処理部120は、クライアント300から受信した検索命令に従い、入力された検索条件に対して検索処理を実行して結果集合を生成するものであり、検索処理部120は、条件生成部121と、クエリプランニング部122と、クエリ実行部123とを備えている。
なお、検索処理部120に入力される検索条件はXQueryなどの構造化文書に対するクエリ言語であることを前提とする。また、検索処理部120は、特許文献1に記載された方法と同様に、検索条件を解析した内部形式から検索条件を木構造で表したクエリグラフを作成し、クエリグラフに含まれるすべての変数の具体化を目標として、テーブルと呼ばれる変数集合の取り得る値(候補集合)の組み合わせを表すデータを次々と生成することにより検索結果を求めるものである。1つのテーブルを生成する単位処理をオペレータと呼び、各オペレータの結果は、候補集合として候補記憶部152(後述)に保存される。
条件生成部121は、入力された検索条件を構文解析(パージング)し、解析結果としてクエリグラフを生成するものである。この際、各ノードが満たさなければならない構造に対する制約条件を付加する。図7は、クエリグラフの一例を示す説明図である。
同図では、検索条件(クエリ)として、「配下のオブジェクトのテキストに“XML”を含み、かつ配下のタイトルオブジェクトのさらに配下のテキストに“SGML”を含む特許文書に含まれるヘッダオブジェクトを取得し、“<検索結果>”タグで囲った検索結果データを出力する」ことを意味する検索条件が入力された例が示されている。
同図に示すように、クエリグラフは構造情報の各構造要素に対応したノードを含む木構造で表される。例えば、同図のクエリグラフのノード2は、ヘッダタグが対応することを示している。また、例えば、ノード3はタイトルタグが、ノード4はタイトルタグ下のテキスト要素が対応することを示している。
また、クエリグラフの各ノードには、ノードが相互に満たさなければならない構造に関する構造制約が付加される。例えば、クエリグラフのノード4はタイトルタグ下のテキスト要素でなければならないといった制約が構造制約として付加される。この場合、ノード4には、対応する構造要素の候補として、TID=T2の構造要素が取得される。同様に、ノード6に対してはTID=T3の構造要素が、ノード8に対してはTID=T5の構造要素が、ノード12に対してはTID=T8の構造要素が候補として取得される。
構造要素に対する検索条件(以下、検索キー)、すなわち、構造要素に含まれるテキストの値に関する値制約が存在する場合は、当該検索キーを、検索キーの検索対象となる構造要素に対応するノードに対応づける。例えば、ノード4に対応するタイトルタグ下のテキスト要素に対して検索キーとして「contains “SGML”」が対応づけられている。
検索キーが付与されたノードに対応するTIDは、検索キーを満たすか否かを判定する必要があることを意味する。以下では、このようなTIDを検索対象TIDという。また、検索結果として取得するノードに対応するTIDを以下では検索結果TIDという。例えば、同図では、T2、T3、T5、T8が検索対象TIDであり、T1が検索結果TIDである。
このように、条件生成部121は、構造情報記憶部142を参照して、検索条件と構造化文書の大域的な構造情報(TID)を照合してクエリグラフを作成することにより、探索空間を絞り込む処理を実行している。探索空間を絞り込むことによって、索引情報をスキャンする際に不必要な情報をスキップすることができ、高速に検索処理が実行されることが期待される。
図8は、語彙索引により検索した候補集合から候補を絞り込む過程を表した模式図である。同図に示すように、例えば条件生成部121が生成したクエリグラフの構造制約から、候補がTID={T7、T11}に特定されている場合は、語彙索引による候補集合から当該TID以外のTIDを有する候補を除去することで探索空間を限定することができる。
クエリプランニング部122は、クエリグラフから、処理コストが最小になるようなプラン(処理順序)を作成するものである。具体的には、クエリプランニング部122は、コストが高いデータスキャン(ディスクスキャン)を極力回避するように、値制約および構造制約を緩和してプラン生成を行う。
制約の緩和とは、データスキャンが必要な制約を、実際には解ではない候補(ノイズ)を取得する可能性はあるが解を漏れなく取得しうる制約であって、データスキャンが不要となる制約に置き換えることを意味する。
クエリ実行部123は、クエリプランニング部122が作成したプランに従って検索を行って検索結果である結果集合を取得するものであり、値制約処理部124と、第2取得部128とを備えている。
値制約処理部124は、クエリグラフに含まれる制約のうち、値制約を満たす候補を取得する処理を行うものである。具体的には、値制約処理部124は、語彙索引を利用して、クエリグラフに含まれる値制約を満たす候補を取得する処理である索引スキャンオペレータを実行する。値制約処理部124は、第1取得部125と、第3取得部126と、候補生成部127とを備えている。
第1取得部125は、語彙索引が付加されていないTIDに対して、構造索引を用いることにより、値制約を緩和した制約により候補となるOIDを取得するものである。具体的には、第1取得部125は、検索対象TIDに対応するOIDを構造索引記憶部143から取得することにより、取得したOIDを検索結果の候補として取得する。
通常、語彙索引が存在しないTIDに対してはデータスキャンを行って検索キーを満たすOIDを取得する必要がある。これに対し、本実施の形態では、第1取得部125により、単に構造索引からTIDに対応するOIDを取得する。これにより、高コストのデータスキャン処理を回避しつつ、実際の解を含む候補を取得できる。なお、取得したOIDに対しては、最終的に検索キーを満たすOIDに絞り込むために必要な制約条件が候補生成部127(後述)によって付加される。
第3取得部126は、語彙索引が付加されているTIDに対して、語彙索引を用いて値制約を満たす候補を取得するものである。具体的には、第3取得部126は、検索キーに含まれる語彙の語彙IDに対応するOIDを語彙索引記憶部144から取得することにより、値制約を満たすOIDを検索結果の候補として取得する。
候補生成部127は、第1取得部125および第3取得部126が取得したそれぞれの候補を統合して1つの値制約に対する検索結果の候補を生成するものである。具体的には、まず、候補生成部127は、第1取得部125が取得したOIDに対して、検索キーを制約条件として対応づける。次に、候補生成部127は、制約条件を対応づけたOIDと、第3取得部126が取得したOIDとを検索結果の候補として生成する。
なお、候補に対応づけられる制約条件は、制約記憶部151に記憶される。図9は、制約記憶部151に記憶される制約条件のデータ構造の一例を示す説明図である。同図に示すように、制約記憶部151は、制約条件を一意に識別する制約IDと、制約条件の内容を表す制約とを対応づけて格納している。
また、候補生成部127が生成した検索結果の候補は、候補記憶部152に記憶される。図10は、候補記憶部152に記憶される候補のデータ構造の一例を示す説明図である。同図に示すように、候補記憶部152は、文書IDと、TIDと、要素IDと、制約IDと、処理優先度とを対応づけた候補を格納している。
制約IDは、制約記憶部151に記憶されている制約条件を特定するための情報であり、制約条件が付加されていない場合には空欄となる。処理優先度とは、結果取得部130(後述)が検索結果を取得するときの優先順位を表す情報であり、0以上1以下の値を取る。制約が付加されていない候補の取得処理が最優先されるため、制約が付加されていない候補の処理優先度には1が設定される。
なお、制約記憶部151および候補記憶部152は、HDD、光ディスク、メモリカード、RAMなどの一般的に利用されているあらゆる記憶媒体により構成することができるが、検索処理の中間データとして生成される候補や制約条件を記憶するものであるため、高速にアクセス可能なRAM等で構成するのが望ましい。
第2取得部128は、クエリグラフに含まれる制約のうち、構造制約を満たす候補を取得する処理を行うものである。具体的には、第2取得部128は、候補生成部127が生成した候補に対し、構造制約を満たすか否かを確認する処理である構造照合オペレータを実行する。
すなわち、第2取得部128は、候補生成部127が生成した候補に含まれるOIDに対して構造制約を満たすOIDであって、検索結果として取得する検索結果TIDに対応するOIDを取得する。対応するOIDを取得できない候補は、構造制約を満たさない候補としてこの時点で削除される。この際、第2取得部128は、構造制約を緩和した制約により候補となるOIDを取得する。構造制約の緩和の詳細については後述する。
通常、構造照合では、索引から求めた候補集合が構造制約を満たすかどうかを、厳密に実際のデータアクセスを行ってチェックする必要がある。これに対し、本実施の形態では、第2取得部128により構造制約を緩和し、高コストのデータスキャン処理を回避しつつ、実際の解を含む候補を取得できる。
なお、取得したOIDに対しては、最終的に構造制約を満たすOIDに絞り込むために必要な制約条件が第2取得部128によって付加される。また、付加された制約条件は、制約記憶部151に保存される。
結果取得部130は、クライアント300から受信した取得命令に従い、指定された件数の検索結果を取得してクライアント300に送信するものである。取得命令には、結果集合に対して取得すべき件数が含まれる。なお、取得件数は全件であってもよい。結果取得部130は、順序決定部131と、制約解決部132と、結果生成部133とを備えている。
順序決定部131は、検索結果の取得順序を決定するものである。具体的には、順序決定部131は、制約を緩和していない候補を優先的に割り当て、制約を緩和した候補に対しては、処理優先度の高い順に処理を行うように順序を決定する。この際、同一文書中に含まれる候補または同一文書内でより近傍に存在する候補を優先的に処理する。なお、これらの順序決定方法はユーザにより指定できるものとする。
制約解決部132は、値制約および構造制約を緩和することによって付加された制約条件を解決して、各制約を満たす候補を取得するものである。例えば、制約解決部132は、値制約の緩和によって検索キーが対応づけられた候補が存在する場合に、当該候補から検索キーを満たす候補のみを抽出して検索結果の候補として取得する。
結果生成部133は、制約解決部132によって取得された検索結果の候補を参照し、クライアント300に返信すべき文字列データを生成するものである。具体的には、結果生成部133は、候補として取得されたOIDに対応する構造化文書内のオブジェクトを構造化文書記憶部141から取得し、取得したオブジェクトをクライアント300に返信する文字列データとして生成する。
次に、このように構成された本実施の形態にかかる構造化文書検索装置100による構造化文書検索処理について説明する。なお、構造化文書検索処理とは、クライアント300から検索命令を受けて検索処理部120が結果集合を返す処理を指している。図11は、本実施の形態における構造化文書検索処理の全体の流れを示すフローチャートである。
まず、通信部101は、クライアント300から検索条件(検索クエリ)を受信する(ステップS1101)。次に、条件生成部121が、受信した検索クエリを解析し、クエリグラフを生成する(ステップS1102)。
次に、クエリプランニング部122が、クエリグラフを参照して、コストを最小とするプランを作成するクエリプランニング処理を実行する(ステップS1103)。クエリプランニング処理の詳細については後述する。
次に、クエリ実行部123が、作成されたプランに従って検索処理を行うクエリ実行処理を行う(ステップS1104)。クエリ実行処理の詳細については後述する。
次に、通信部101が、クエリ実行処理の検索結果である結果集合をクライアント300に送信し、構造化文書検索処理を終了する(ステップS1105)。
次に、ステップS1103のクエリプランニング処理の詳細について説明する。まず、クエリプランニング処理で考慮されるプランの概要について説明する。図12は、クエリプランニング処理で生成されるプランの一例を示した説明図である。
例えば、「//特許[contains(.//text()、"XML")]」のような検索クエリを考えた場合、クエリプランとして、プラン1:ドキュメントスキャン(データスキャン)してテキスト取得した後、「XML」が含まれる値を照合するプラン(上位からトラバース)と、プラン2:索引スキャンを行い「XML」を含む候補であるポスト情報を取得した後、その親要素に「特許」タグが存在するか否かを構造照合により判断するプラン(下位からトラバース)の2通りのプランが考えられる。
一般的にデータスキャンの個数が増えるほどその処理速度は低下することから、プラン2のほうが低コストである。したがって、プラン2を選択することが望ましい。一方、漏れなくデータを検索することを考慮すると、プラン2を選択するためには、「特許」以下のすべての構造要素に対して索引情報が付加されている必要がある。
すべての構造要素に索引が付加されていない場合は、データスキャンのコストが増大するため、プラン1が選択される可能性もある。しかし、ある一部の構造要素にのみ索引が付与されていない状況では、プラン2を選択したほうが効率的である。本実施の形態では、これを実現するために、上述のような値制約の緩和や構造制約の緩和を行う。制約を緩和してデータスキャン不要とすれば、プラン2が選択される可能性が高くなるためである。
値制約の緩和とは、上述のように、探索すべき構造要素を索引が付与されている構造要素と付与されていない構造要素を分離し、索引が付与されていない構造に対しても仮想的に索引が付与されているものとして索引スキャンオペレータを実行することを意味する。
構造制約の緩和は、一般的には索引スキャンオペレータの後、索引のポスト情報から各候補が構造制約を満たすか否かをチェックする構造照合オペレータにおける処理コストを低減するために利用される。
以下では、プラン2が選択されるような検索条件が入力されたことを前提とし、プラン2を選択する際のクエリプランニング処理について説明する。実際のクエリプランニング処理では、制約を緩和した際に発生するノイズを含めた個数やデータスキャンの個数などを統計情報などから算出して処理コストを計算し、プラン1、プラン2を含むすべてのプランから、最もコストが低いプランが生成される。
次に、ステップS1103のクエリプランニング処理の処理フローについて説明する。図13は、本実施の形態におけるクエリプランニング処理の全体の流れを示すフローチャートである。
まず、クエリプランニング部122は、値制約を満たす候補を取得するプラン生成のために、検索対象TIDの集合(以下、TWという。)を取得する(ステップS1301)。クエリプランニング部122は、クエリグラフから検索キーが対応づけられたTIDを取得することによりTWを取得可能である。
次に、クエリプランニング部122は、TWを、語彙索引が存在するTIDの集合(以下、P1という。)と、語彙索引が存在しないTIDの集合(以下、P2という。)に分離する(ステップS1302)。クエリプランニング部122は、構造情報記憶部142を参照して、各TIDに付与された判別情報によって、語彙索引の有無を判断する。
次に、クエリプランニング部122は、P2が空か否かを判断する(ステップS1303)。空である場合、すなわち、すべてのTIDに語彙索引が付与されている場合は(ステップS1303:YES)、クエリプランニング部122は、語彙索引による制約条件によって候補を求めるプランを作成する(ステップS1306)。語彙索引を用いてデータスキャンせずに候補を求められるため、制約を緩和する必要がないためである。
P2が空でない場合、すなわち、語彙索引が付与されていないTIDが存在する場合は(ステップS1303:NO)、クエリプランニング部122は、P2の各候補の値制約を緩和するプランを作成する(ステップS1304)。具体的には、クエリプランニング部122は、データスキャンを行って値制約を満たす候補を取得するプランではなく、構造索引を満たすだけの候補を取得するプランを作成する。
次に、クエリプランニング部122は、P1の各候補の制約条件と、P2に対してステップS1304で緩和した制約条件とをマージした条件によって候補を求めるプランを生成する(ステップS1305)。これにより、値制約を満たす候補を取得する処理である索引スキャンオペレータのためのプランが作成される。
次に、クエリプランニング部122は、構造制約を緩和するプランを作成する(ステップS1307)。具体的には、クエリプランニング部122は、索引から求めた候補集合が構造制約を満たすか否かを、厳密に実際のデータアクセスを行ってチェックするプランではなく、構造情報上の対応するTIDに置き換えるだけの処理を行うプランを作成する。
このように、構造制約の緩和は無条件にTIDを置き換えるだけの処理であるため、値制約の緩和と異なり、得られた候補集合は実際に存在しないOIDを差す可能性があることに特徴がある。
次に、ステップS1104のクエリ実行処理の詳細について説明する。図14は、本実施の形態におけるクエリ実行処理の全体の流れを示すフローチャートである。
クエリ実行処理では、クエリプランニング処理で作成されたプランに従った検索処理が実行されるが、ここでは、値制約と構造制約が緩和され、上述のプラン2が選択された場合に実行される検索処理について説明する。
まず、第3取得部126が、語彙索引による候補の取得処理を実行する(ステップS1401)。具体的には、第3取得部126は、語彙索引が付加されているTIDについて、TIDに対応づけられた検索キーに含まれる語彙の語彙IDに対応するOIDを、検索結果の候補として語彙索引記憶部144から取得する。
次に、第1取得部125が、値制約を緩和した条件による候補の取得を実行する(ステップS1402)。具体的には、第1取得部125は、語彙索引が付加されていないTIDに対応するOIDを、検索結果の候補として構造索引記憶部143から取得する。
次に、候補生成部127が、第3取得部126および第1取得部125が取得した候補をマージした検索結果の候補を作成する(ステップS1403)。具体的には、候補生成部127は、第1取得部125が取得したOIDについては検索キーを制約条件として対応づけて候補とし、第3取得部126が取得したOIDについては取得したOIDをそのまま検索結果の候補とする。ここまでの処理で、値制約を解決した候補が取得される。
図15は、値制約を解決して取得した候補の一例を示す説明図である。同図は、図2、図3のような情報が構造化文書記憶部141および構造情報記憶部142にそれぞれ記憶され、「//特許[contains(.//text()、"XML")]」という検索条件が入力されたときの値制約の緩和について示したものである。
例えば、文書ID=F1の構造化文書は、図3に示すようにTID=T2については語彙索引が付与されているが、TID=T5については語彙索引が付与されていない。このため、候補6件のうち、候補2、3、5に関しては値制約を緩和した条件(「//特許//text()」)によって構造索引から求めた値(F1:E6、F1:E7、F2:E4)が求められる。
また、図15に示すように、候補2、3、5に対しては、結果取得時に参照する制約条件の制約ID=2が付与されている。この例では、図9に示すような制約と同様に、制約ID=2の制約条件として「contains “XML”」が付与される。
さらに、制約条件を付加した候補2、3、5に対しては、付与した制約条件を具体化するのに必要なコストの見積もり値である処理優先度を付与する。処理優先度の算出方法としては、例えばクエリプランにおける処理の進行度を考慮し、結果を取得するプランに近いほど後戻りが発生した場合のコストが高いことから、処理優先度の値を小さく設定する方法などが適用できる。
このように、クエリ実行時の中間候補に埋め込まれた制約条件は、データ取得要求を受信する時点まで、当該制約条件を満たす候補の検索処理が遅延されることになる。
図14に戻り、第2取得部128が、構造制約を緩和した条件による候補の取得を実行する(ステップS1404)。以下に、第2取得部128による構造制約の緩和の詳細について説明する。図16は、XMLで記述された構造化文書の一例を示す説明図である。
同図に示すような構造化文書に対して、「//ヘッダ[contains(./タイトル/text()、“XML")]」が検索条件として指定された場合、語彙索引から取得した候補集合の要素IDはE3、E13となる。
取得した要素ID等の情報だけでは、検索結果として取得すべき親要素のTIDを取得することは可能であるが(図3の例ではT1)、スキーマ解析情報が抽出されていない場合は、当該親要素の要素IDを求めることはできない。この場合、通常はデータスキャンにより親要素の要素IDを求める必要がある。
本実施の形態では、第2取得部128が、この制約実行を遅延させて、要素IDを不定値(遷移前の値)にしたまま、TIDだけ遷移後の値にすることにより、構造制約を緩和した候補の取得を行う。
ここで、遷移前の値とは、構造制約を解決する前の候補の値をいい、遷移後の値とは、構造制約を解決した後の候補の値をいう。したがって、TIDだけ遷移後の値にするとは、実際には構造制約を満たすか否かをチェックしていないが、構造制約を満たすべき親要素のTIDで無条件に置換することを意味する。
図17は、構造制約を解決して取得した候補の一例を示す説明図である。同図は、図16、図3のような情報が構造化文書記憶部141および構造情報記憶部142にそれぞれ記憶され、「//ヘッダ[contains(./タイトル/text()、“XML")]」という検索条件が入力されたときの構造制約の緩和について示したものである。
この場合、E3やE7に対してT2を親要素のTIDとして有するか否かをチェックし、有する場合に親要素の要素IDを正確に求めることをせずに、遷移前の要素IDと遷移後のTIDを候補として残しておく。そして、制約条件として、「relation[T2、T3]」を付与し、要素IDはそのままとして処理を続行して正確な候補の取得処理をデータ取得時まで遅延させる。
このように、値制約と構造制約を適宜緩和することで、その制約に対するコストを削減することが可能で、結果的に高速に検索処理を実行することが可能となる。
なお、構造制約を緩和した場合も、値制約の緩和と同様に、候補に対して処理優先度が付与される。処理優先度の算出方法としては、例えば親構造を求めるための構造の段数が小さい候補に大きい値を設定する方法や、クエリプランにおける処理の進行度を考慮した方法などが適用できる。
図14に戻り、クエリ実行部123が、候補集合結合処理を実行する(ステップS1405)。候補集合結合処理とは、プラン実行中に生成された中間候補を結合する処理であり、制約を緩和した候補間の結合処理や、重複除去処理を含む。候補集合結合処理の詳細については後述する。
次に、クエリ実行部123が、結合した候補を結果集合として出力し(ステップS1406)、クエリ実行処理を終了する。
次に、ステップS1405の候補集合結合処理の詳細について説明する。図18は、候補集合結合処理の全体の流れを示すフローチャートである。
まず、クエリ実行部123は、結合対象の候補集合A1、A2を取得する(ステップS1801)。次に、クエリ実行部123は、A1、A2からそれぞれ候補を1つずつ取り出し、それぞれC1、C2とする(ステップS1802)。
次に、クエリ実行部123は、C1およびC2の文書IDおよびTIDがそれぞれ一致するか否かを判断し(ステップS1803)、一致する場合は(ステップS1803:YES)、さらにC1、C2がともに制約を緩和した候補か否かを判断する(ステップS1804)。
ともに制約を緩和した候補である場合は(ステップS1804:YES)、クエリ実行部123は、C1、C2を結合し、結合した候補に対して制約緩和情報を引き継ぐ(ステップS1805)。また、クエリ実行部123は、結合した候補を候補集合に残す(ステップS1807)。具体的には、クエリ実行部123は、以下のようにして候補の結合を行う。
まず、クエリ実行部123は、結合する2つの候補を中間処理時に候補記憶部152に記憶したときのアドレスをそれぞれ候補に付与する。図19は、制約緩和した候補を結合する処理の一例を示す説明図である。
同図は、候補集合であるリスト1、リスト2に対する結合作業と、制約緩和条件の指定方法および制約解除の方法の一例を示したものである。なお、リスト1は、「start-with(.//text()、“SGML")」という検索キーに対する候補集合を表し、リスト2は、「contains(.//text()、“XML")」という検索キーに対する候補集合を表す。
リスト1の候補の1つであるレコード5、およびリスト2の候補の1つであるレコード20ともに、制約緩和を行った候補であるため制約IDが付加されているが、両レコードは、文書ID(F1)とTID(T2)とが一致する。したがって、要素IDを不定値にしたまま結合結果としても文書IDとTIDとをそのまま残しておく。この際、結合元になる2つのレコードのアドレス(*1、*2)を残しておくことで、後で制約緩和した候補の具体化を行うことができる。
なお、制約を解除する際には、アドレスが記述されている場合はそれら分岐元のアドレスを辿ることで制約解除を行うことができる。ただし、この処理自体はコストが高いので、制約を解除する順序としての優先度を極力下げるような戦略を取ることが望ましい。このため、同図に示すように結合後のレコードの処理優先度は低く設定されている。
このように、結合処理の場合は、要素IDを未確定としたまま、そのときまでに確定している情報である文書IDとTIDだけで一致するものを結合し、両IDが一致しないものを削除する。未確定な要素に対しても文書IDとTIDで結合処理を行い、一致しない候補をこの段階でフィルタすることで、結果的に要素IDを具体化するという高コストの処理をスキップすることができる。
ステップS1804で、C1、C2がともに制約を緩和した候補でない場合は(ステップS1804:NO)、クエリ実行部123は、要素IDが一致するか否かを判断する(ステップS1806)。
要素IDが一致する場合は(ステップS1806:YES)、一致する候補同士を結合した候補を候補集合に残す(ステップS1807)。
ステップS1803で、C1およびC2の文書IDおよびTIDが一致しないと判断された場合(ステップS1803:NO)、または、ステップS1806で要素IDが一致しないと判断された場合(ステップS1806:NO)、クエリ実行部123は、A1、A2内のすべての候補を処理したか否かを判断する(ステップS1808)。
すべての候補を処理していない場合は(ステップS1808:NO)、クエリ実行部123は、次の候補を取得して処理を繰り返す(ステップS1802)。
すべての候補を処理した場合は(ステップS1808:YES)、クエリ実行部123は、すべての候補集合を処理したか否かを判断する(ステップS1809)。すべての候補集合を処理していない場合は(ステップS1809:NO)、クエリ実行部123は、次の候補集合を取得して処理を繰り返す(ステップS1801)。
すべての候補集合を処理した場合は(ステップS1809:YES)、候補集合結合処理を終了する。
なお、図18では、制約条件を候補内に複数指定する場合の例として、複数の制約緩和候補を結合する場合の例について説明した。制約条件を候補内に複数指定する場合としては、中間候補の生成時に、制約を緩和した候補に対してさらに制約を緩和する場合も考えられる。以下では、この場合の候補の生成処理について説明する。
図20は、制約緩和した候補にさらに制約の緩和を行う処理の一例を示す説明図である。同図は、候補集合であるリスト1に対して構造制約を緩和し、さらに構造制約を緩和した場合の候補の内容の一例を示したものである。
なお、リスト1は、「contains(.//text()、“XML")」という検索キーに対する候補集合を表す。また、同図は、リスト1に対し、親要素にタイトルが存在することを表す構造制約(.//タイトル)と、さらに親要素にヘッダが存在することを表す構造制約(.//ヘッダ)と、を緩和して加えることを示している。
この場合、リスト1に対して、親構造にタイトル(TID=T2)を含むものを求めるが、この段階ではデータスキャンを行わず、遷移先のTID=T2だけを残して制約条件が付加される。図21は、このときの制約条件の一例を示す説明図である。
図20の例に対しては、図21の制約ID=3の制約(relation[T2、T4])が付与され、制約を緩和したあとの候補集合であるリスト2のレコードには、制約ID(=3)が付与される。
その後、さらに親構造にヘッダ(TID=T1)を含むものを求めるが、この段階では、リスト2の条件を引き継ぐために、制約条件として遷移前のアドレス(*1)と、制約条件が付加される。ここでは、図21の制約ID=4の制約(制約ID=3、relation[T1、T2])が付与される。
以上で、検索処理部120による構造化文書検索処理について説明した。構造化文書検索処理では、クエリプランを最後まで実行した結果が候補記憶部152に保存される。この段階では、緩和した制約から求めた候補に対しては制約を解除していないのでノイズを含んだ情報である。クライアント300には結果集合と、この状態での結果件数を返すため、ユーザは取得件数の概略の見積もりを知ることが可能となる。
ユーザは、結果集合を参照し、結果集合から取得する件数、または全件取得することを指定する取得命令を構造化文書検索装置100に送信する。取得命令を受信すると、結果取得部130による結果取得処理が実行される。
結果取得処理は、制約を解除していない候補を具体化し、指定された件数の検索結果を返す処理である。以下に、結果取得処理の具体例について説明する。
まず、順序決定部131が、結果を取得する順序を決定する。図22は、順序決定方法の一例を説明するための模式図である。同図は、結果集合として5件の候補がクライアント300に返信された例を示している。
この結果集合に対し、例えば、ユーザにより結果取得件数として1件が指定された場合は、順序決定部131は、各候補単体での処理優先度の高い(1)候補1のみを含む候補集合2201を優先的に処理することを決定する。
また、例えば、ユーザにより結果取得件数として3件が指定された場合は、順序決定部131は、候補単体の処理優先度は低いが(0.7)、同一文書(文書ID=F3)に含まれる候補をまとめて処理することが可能な候補3、4、5を含む候補集合2202を優先的に処理することを決定する。同一文書内に含まれる候補であれば、データスキャンコストを削減することが可能と判断できるからである。同様に、同一文書内で要素IDが近い候補を優先して処理するように構成してもよい。
順序決定後、緩和した制約を含む候補が存在する場合には、制約解決部132による制約を具体化する処理が実行される。
例えば、図19に示すような値制約を緩和した候補を具体化する場合を考える。なお、制約記憶部151には、図21に示すような制約条件が記憶されているものとする。
この場合、結合後のレコードのアドレス(*1)を参照してリスト1のレコード5の情報を候補記憶部152から読出し、読み出したレコード5の制約の具体化を行う。すなわち、レコード5のOID(<F1、E3>)が、制約ID=1の制約条件である「starts-with "SGML"」を満たすことを確認する。
次に、結合後のレコードのアドレス(*2)を参照してリスト2のレコード20の情報を候補記憶部152から読出し、読み出したレコード20の制約の具体化を行う。すなわち、レコード20のOID(<F1、E7>)が、制約ID=2の制約条件である「contains "XML"」を満たすことを確認する。
そして、OID=<F1、E3>の要素から親要素に辿り、TID=T2となる要素の要素IDを求める。ここでは、例えば、E1が求まったとする。さらに、OID=<F1、E7>の要素から親要素に辿り、TID=T2となる要素の要素IDを求め、E1であったとすれば、解候補としてOID=<F1、E1>が確定する。
この制約解除の途中で、一つでも制約を満たさない候補が存在した場合、その時点で当該候補は解になりえないと判断できるため、処理を中断する。
次に、図20に示すような構造制約を緩和した候補を具体化する場合を考える。なお、制約記憶部151には、図21に示すような制約条件が記憶されているものとする。
この場合、結合後の候補集合であるリスト3のアドレス(*1)を参照してリスト2の情報を候補記憶部152から読出し、読み出したリスト2に関する制約の具体化を行う。すなわち、OID=<F1、E5>が、制約ID=3の制約条件である「relation[T2、T4]」を満たすことを確認する。ここでは、この制約条件を満たす要素ID=E2が取得できたものとする。さらに、OID=<F1、E2>に対して、制約ID=4の制約条件である「relation[T1、T2]」を満たす親要素、すなわち、TID=T1である親要素の要素IDを求める。例えば、E1が求められた場合は、解候補としてOID=<F1、E1>が取得される。
次に、構造化文書検索処理の具体例についてさらに説明する。以下では、図2および図3に示すような情報がそれぞれ構造化文書記憶部141および構造情報記憶部142に記憶されていることを前提として説明する。
図23は、入力された検索条件の一例を示す説明図である。同図の検索条件の左側の条件から、「//ヘッダ//text()」の構造制約、すなわち、「ヘッダ」下のいずれかの構造要素にテキスト情報を有する構造要素が含まれていることを示す構造制約が得られる。この場合、図3に示すような構造情報から、[T2、T3、T5、T8]が構造制約として取得できる。なお、構造制約[T2、T3、T5、T8]とは、解候補がTID=T2、T3、T5、またはT8である必要があることを意味する制約である。
図3に示すように、T5に関しては語彙索引が存在しないため、従来の方法では、構造照合のためのデータスキャンが発生する。本実施の形態では、このような場合に値制約の緩和を実行する。
図24は、この例における値制約の緩和について説明するための模式図である。同図は、図23の検索条件を緩和した検索条件を示している。
「//ヘッダ//キーワード/text()」がTID=T5に対応して制約を緩和した部分であり、この部分に対しては構造索引から候補を求める。その他の語彙索引が存在するTID=T2、T3、T8に対応する「//ヘッダ(タイトル | 本文)/text()」の部分に関しては、語彙索引をそのまま利用して候補を求める。
図25は、この例における構造制約の緩和について説明するための模式図である。同図に示すように、本来、T5の親要素としてT1が存在することをチェックする必要があるが、要素IDを遷移前の状態としたまま、TIDのみをT1に変更することにより、構造制約の緩和を行い、このチェックを回避している。
このように、制約の緩和が可能となると、下位からトラバースする上述のプラン2が選択されやすくなる。図26は、作成されたプランの一例を示す説明図である。同図では、索引スキャンオペレータ、構造照合オペレータを実行後、結合処理を行って(結合処理オペレータ)、データ取得を行うプランが示されている。
通常、構造照合オペレータで、索引スキャンオペレータを行った結果から親構造となる要素IDを特定するためには、実際にデータスキャンを行う必要がある。
図3に示すように、スキーマ解析情報から<ヘッダ>の下には<タイトル>が1対1で存在することが判明している場合は、この部分の構造制約であるTID=T2の候補に対しては、その遷移前の要素ID(E3)から、遷移後の要素ID(E2)をデータスキャンせずに特定できる。
一方、これ以外のTID=T3、T5、T8の候補に関しては、データスキャンが必要となる。本実施の形態では、この構造照合オペレータの段階ではデータスキャンを実行せず、構造制約を緩和する。
例えば、T5からT1への構造チェックに関しては、遷移後の要素IDを不定値にしたまま、TIDだけ遷移後のT1とする。すなわち、この時点では、遷移前の情報である<文書ID、TID、要素ID>=<F1、T5、E5>に対して、遷移後の情報を<F1、T1、E5>とする。また、制約緩和条件として、「relation[T1、T5]」の構造制約条件を付加する。
この候補は遷移後の要素IDが不定なため、ノイズを含む可能性がある候補である。しかし、不定な要素IDを除いた文書IDとTIDだけでも結合処理が行うことができる。例えば、図3に示すような木構造の場合、「//ヘッダ」に対応するTIDとしてT1とT7が存在するが、これらは木の性質を考慮すると「構造上」同一要素ではありえない。すなわち、要素IDを求めなくてもテンプレート番号を見るだけで結合処理が行える場合が存在し、このような場合はデータスキャンコストを削減することができる。
次に、実際のオペレータの処理について説明する。図26に示すプランに対応したオペレータの挙動を以下に示す。
(1) //ヘッダ/text()に“XML"を含む集合を索引から求める。
(2) //ヘッダ/タイトル/text()に“SGML"を含む集合を索引から求める。
(3)(1)で求めた候補集合のうち、親要素にヘッダを含むものを候補として残す。
(4)(2)で求めた候補集合のうち、親要素にヘッダを含むものを候補として残す。
(5)(3)と(4)で取得した候補に対して結合処理を行い、同一IDを持つものだけを候補として残す。
(6) 指定された結果件数に応じてデータを取得する。
次に、索引スキャンオペレータの処理の概要について説明する。図27は、図26の(1)に示す索引スキャンオペレータで求められた候補の一例を示す説明図である。
まず、語彙索引の存在するTID=T2、T3、T8の構造要素に対しては、語彙索引を用いて候補を求める。この場合の解候補はノイズを含まないことが保証される。また、制約条件は不要であり(×)、処理優先度は1が設定される。
語彙索引の存在しないTID=T5の構造要素に対しては、“XML"の値を含むという値制約を緩和し、候補集合を構造索引から求める。この場合はノイズを含むので、処理優先度に1ではない値、例えば、0.9を設定する。
緩和した候補それぞれに対して求められた条件は、制約記憶部151に保存される。図28は、このときの制約記憶部151の一例を示す説明図である。この例では、制約を緩和した部分は、当該OIDが“XML"を含むか、という部分であるので、この条件(contains "XML")に制約ID=1を付加して制約記憶部151に保存する。
図29は、図26の(2)に示す索引スキャンオペレータで求められた候補の一例を示す説明図である。この場合は、検索対象となるTID=T2、T8ともに語彙索引が存在し、ノイズとなる候補が存在しないことから、語彙索引で求めた結果をそのまま候補集合とする。
図30は、図26の(3)に示す構造照合オペレータで求められた候補の一例を示す説明図である。
まず、(1)で求めた結果に対して親要素として「ヘッダ」に対応する構造要素であるTID=T1またはT7が存在するか否かをチェックし、存在する場合にその要素IDを求める。この場合、ノイズを含まないものから処理を実行する。
さらに、この例では、スキーマ解析情報からT1とT2とは1対1の関係にあり、要素IDとして固定値が割り当てられていることが判明しているので、このスキーマ解析情報を有するTIDを優先的に処理する。これら条件のうち一つでも制約を満足するものがあれば結果的に他の制約を解除せずに解候補と見なせるからである。
例えば、<F1、T2、E2>に関してはデータスキャンを実行せずに、スキーマ解析情報よりヘッダの要素IDがE1であることが分かる。すなわち、データスキャン不要で解候補として<F1、T1、E1>を求めることができる。
要素ID=E5に関してもE1は一意に定まることになるので結果的にはこの部分のデータスキャンは不要となる。<F2、T2、E2>も同様にデータスキャンなしで要素IDを特定できる。
<F4、T3、E3>に関してはスキーマ解析情報が存在しないので、ヘッダとなる要素IDを求めるためには構造情報を緩和する。すなわち、親要素がT1となる必要があるので、TIDのみを置換して<F4、T1、E3>を候補とするとともに、制約情報として、制約ID=2:relation[T1、T5]を付与する。
図31は、このときの制約記憶部151の一例を示す説明図である。同図では、制約ID=2として構造制約を緩和したときの制約条件が追加された例が示されている。
図32は、図26の(4)に示す構造照合オペレータで求められた候補の一例を示す説明図である。
この場合は、スキーマ解析情報より、T5とT1、T8とT7が1対1に対応することが判明しているため、データスキャンなしで要素IDを特定できる。すなわち、この場合は無条件にE1を候補として残すことができる。
図33は、図26の(5)に示す結合処理オペレータで求められた候補の一例を示す説明図である。
結合処理オペレータでは、構造照合オペレータの結果に対して同じOIDを有する候補だけを残す処理を行う。結合処理オペレータでも、ノイズのない候補、すなわち、制約を緩和していない候補を優先して処理を開始する。
同図に示すように、構造照合オペレータの結果のうち、最初の2件の候補は、<F1、T1、E1>、および、<F2. T1、E1>であり、OIDが一致するので候補として残す。また、3番目の候補について、(3)の構造照合オペレータから得られた<F3、T1、E5>は制約を緩和して得た値であるのでOIDとしては不定である。一方、(4)の構造照合オペレータから得られた<F3、T7、E1>は確定値である。
したがって、OIDレベルでは結合処理は行うことができないが、図3に示すような構造情報の木構造の性質を考慮すると、T1とT7とが同一要素であることはありえないので候補から除外する。すなわち、厳密なOIDを求めなくても異なる値であることを、構造テンプレート等を使った大域的な情報で判断することができ、解候補を絞り込むことが可能となる。
4番目の候補に関しては、この時点では上記のような判別が行えないため、OIDを未定義な状態のまま残す。この場合は<F4、T1、E3>の候補に関してのみOIDが不定値であり、制約ID=2の制約条件だけを解決すればよい。
以上のような検索処理により、3件の候補が得られたことになるが、従来の方法では計算時間を要する部分であったデータスキャン処理をすべてスキップしてきたために、検索処理時間を大幅に削減することが可能となる。また、この時点で残った解候補集合は、ノイズは含む可能性があるが、検索漏れが存在しないという特徴を有する。
検索処理により得られた候補の件数は、検索結果の概算件数としてクライアント300側に提示される。ユーザはこの件数をもとに所望する取得件数を設定した取得命令の送信や、検索条件をさらに絞込んだ検索命令の送信などを行うことができる。
検索処理で得られた解候補はノイズを含んでいる可能性があるほか、データの具体値(OID)が求まっていないので、結果取得処理では正確な値を求める必要がある。例えば、上述の例では、3件の候補のうち、F1、F2に関してはOIDとして正しい解候補であるが、F4に関しては不確かさを含んでいる。したがって、3件目の候補の具体値を取得する際にはここまでの処理で付加された制約条件から正確な解を復元する。
候補数が指定された取得件数を超えている場合は、制約を解決する処理を省略できる場合がある。例えば、ユーザが取得件数として2件を指定した場合、F1、F2を取得した時点で処理を打ち切ることができる。これにより、処理負荷の高い制約解決処理を回避して高速に検索結果を返すことが可能となる。
最後に、図26の(6)データ取得処理について説明する。図34は、データ取得処理で求められた候補の一例を示す説明図である。
制約を解除する際には、上述のように処理優先度が高い候補を優先して処理を行うが、この例では不定値を含む候補は<F4、T1、E3>だけであるため、この候補に関する制約を解除する。
OIDが不定な値に関してはその制約を緩和した段階で制約条件を付加しており、この例では、図31に示すような制約ID=2の制約条件「制約ID=1、relation[T1、T5]」が付加されている。
制約ID=1の制約条件は、図31に示すように、「contains "XML"」であるため、結果としてこの候補に対する制約条件は、「contains "XML" かつ relation[T1、T5]」である。そこで、この条件を満たすOIDを取得するためにデータスキャンを行う。すなわち、<F4、T1、E3>のOIDに対応するデータを取得し、“XML"を含むか否かをチェックする。ここで、仮に"XML"を含まないことが判明した場合は、その時点で処理を打ち切ってよい。
“XML"を含む場合は、その候補から親要素を辿り、TID=T1を満たすOIDが存在するか否かをチェックし、その値を取得する。例えば、E1を取得できた場合は、<F4、T1、E1>が求める解候補として確定される。
このように、本実施の形態にかかる構造化文書検索装置では、語彙索引が存在しない場合等であっても、検索条件における構造制約や値制約を緩和してデータスキャンを回避することにより、検索処理を高速化することが可能となる。
また、データ取得件数が指定されている場合は、制約を緩和していない候補を優先して処理することができるため、処理負荷の高い制約解除処理を回避し、データ取得処理のレスポンスタイムを飛躍的に向上させることが可能となる。
図35は、本実施の形態にかかる構造化文書検索装置のハードウェア構成を示す説明図である。
本実施の形態にかかる構造化文書検索装置は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、HDD(Hard Disk Drive)、CD(Compact Disc)ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバス61を備えており、通常のコンピュータを利用したハードウェア構成となっている。
本実施の形態にかかる構造化文書検索装置で実行される構造化文書検索プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、本実施の形態にかかる構造化文書検索装置で実行される構造化文書検索プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施の形態にかかる構造化文書検索装置で実行される構造化文書検索プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
また、本実施の形態の構造化文書検索プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
本実施の形態にかかる構造化文書検索装置で実行される構造化文書検索プログラムは、上述した各部(通信部、格納処理部、検索処理部、結果取得部)を含むモジュール構成となっており、実際のハードウェアとしてはCPU51(プロセッサ)が上記記憶媒体から構造化文書検索プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
以上のように、本発明にかかる構造化文書検索装置、構造化文書検索方法および構造化文書検索プログラムは、索引種別が混在する構造化文書などを検索する構造化文書検索装置、構造化文書検索方法および構造化文書検索プログラムに適している。
本実施の形態にかかる構造化文書検索装置の構成を示すブロック図である。 XMLで記述された構造化文書の一例を示す説明図である。 構造情報記憶部に格納された構造情報のデータ構造の一例を示す説明図である。 語彙索引記憶部に格納された語彙索引のデータ構造の一例を示す説明図である。 構造索引による検索と語彙索引による検索との比較について説明した模式図である。 構造索引の一例を示す説明図である。 クエリグラフの一例を示す説明図である。 候補を絞り込む過程を表した模式図である。 制約記憶部に記憶される制約条件のデータ構造の一例を示す説明図である。 候補記憶部に記憶される候補のデータ構造の一例を示す説明図である。 本実施の形態における構造化文書検索処理の全体の流れを示すフローチャートである。 プランの一例を示した説明図である。 本実施の形態におけるクエリプランニング処理の全体の流れを示すフローチャートである。 本実施の形態におけるクエリ実行処理の全体の流れを示すフローチャートである。 値制約を解決して取得した候補の一例を示す説明図である。 XMLで記述された構造化文書の一例を示す説明図である。 構造制約を解決して取得した候補の一例を示す説明図である。 候補集合結合処理の全体の流れを示すフローチャートである。 制約緩和した候補を結合する処理の一例を示す説明図である。 制約緩和した候補にさらに制約の緩和を行う処理の一例を示す説明図である。 制約条件の一例を示す説明図である。 順序決定方法の一例を説明するための模式図である。 入力された検索条件の一例を示す説明図である。 値制約の緩和について説明するための模式図である。 構造制約の緩和について説明するための模式図である。 作成されたプランの一例を示す説明図である。 索引スキャンオペレータで求められた候補の一例を示す説明図である。 制約記憶部の一例を示す説明図である。 索引スキャンオペレータで求められた候補の一例を示す説明図である。 構造照合オペレータで求められた候補の一例を示す説明図である。 制約記憶部の一例を示す説明図である。 構造照合オペレータで求められた候補の一例を示す説明図である。 結合処理オペレータで求められた候補の一例を示す説明図である。 データ取得処理で求められた候補の一例を示す説明図である。 本実施の形態にかかる構造化文書検索装置のハードウェア構成を示す説明図である。
符号の説明
51 CPU
52 ROM
53 RAM
54 通信I/F
61 バス
100 構造化文書検索装置
101 通信部
110 格納処理部
111 スキーマ解析部
112 語彙索引作成部
113 構造索引作成部
114 登録部
120 検索処理部
121 条件生成部
122 クエリプランニング部
123 クエリ実行部
124 値制約処理部
125 第1取得部
126 第3取得部
127 候補生成部
128 第2取得部
130 結果取得部
131 順序決定部
132 制約解決部
133 結果生成部
141 構造化文書記憶部
142 構造情報記憶部
143 構造索引記憶部
144 語彙索引記憶部
151 制約記憶部
152 候補記憶部
200 ネットワーク
300 クライアント
2201、2202 候補集合

Claims (18)

  1. 階層化された論理構造の単位である構造要素に対応するオブジェクトと、前記オブジェクトを識別するオブジェクトIDとを含み、前記論理構造を有する構造化文書情報を記憶する構造化文書記憶手段と、
    前記構造要素を識別する構造IDと、前記オブジェクトIDとを対応づけた構造索引を記憶する構造索引記憶手段と、
    前記構造化文書情報に含まれる語彙を識別する語彙IDと、前記オブジェクトIDとを対応づけた語彙索引を記憶する語彙索引記憶手段と、
    前記構造IDに前記語彙索引が付加されているか否かを表す判別情報を含む前記構造要素に関する構造情報を記憶する構造情報記憶手段と、入力された検索条件に含まれる検索キーを前記検索キーの検索対象となる前記構造IDに対応づけ、前記検索キーを対応づけた前記構造IDである検索対象構造IDと、前記検索条件の検索結果として取得すべき前記構造IDである検索結果構造IDとを階層構造の単位として含み、前記検索対象構造IDと前記検索結果構造IDとの間で満たすべき前記階層構造に関する構造制約を定めた階層型検索条件を生成する条件生成手段と、
    前記検索対象構造IDのうち、前記語彙索引が付加されていないことを示す前記判別情報が対応づけられた前記検索対象構造IDについて、前記検索対象構造IDに対応づけられた前記オブジェクトIDを前記構造索引記憶手段から取得する第1取得手段と、
    前記第1取得手段が取得した前記オブジェクトIDに前記検索キーを第1制約条件として対応づけ、前記第1制約条件を対応づけた前記オブジェクトIDを含む前記検索結果の候補を生成する候補生成手段と、
    生成された前記候補に含まれる前記オブジェクトIDに対応する前記検索対象構造IDに対して、前記階層型検索条件で定めた前記構造制約に適合する前記検索結果構造IDを取得する第2取得手段と、
    取得した前記検索結果構造IDに対応する前記オブジェクトIDのうち前記第1制約条件を満たす前記オブジェクトIDに対応する前記オブジェクトを前記構造化文書記憶手段から取得する結果取得手段と、
    を備えたことを特徴とする構造化文書検索装置。
  2. 前記検索対象構造IDのうち、前記語彙索引が付加されていることを示す前記判別情報が対応づけられた前記検索対象構造IDについて、前記検索対象構造IDに対応づけられた前記検索キーに含まれる前記語彙の前記語彙IDに対応する前記オブジェクトIDを前記語彙索引記憶手段から取得する第3取得手段をさらに備え、
    前記候補生成手段は、前記第1取得手段が取得した前記オブジェクトIDに前記検索キーを第1制約条件として対応づけ、前記第1制約条件を対応づけた前記オブジェクトIDと前記第3取得手段が取得した前記オブジェクトIDとを含む前記検索結果の候補を生成すること、
    を特徴とする請求項1に記載の構造化文書検索装置。
  3. 前記候補生成手段は、前記オブジェクトIDに対応する前記検索対象構造IDを含む前記候補を生成し、
    前記第2取得手段は、さらに前記候補に含まれる前記検索対象構造IDを取得した前記検索結果構造IDに置換し、前記構造制約を第2制約条件として前記オブジェクトIDに対応づけること、
    を特徴とする請求項1に記載の構造化文書検索装置。
  4. 前記候補生成手段は、前記第1取得手段が取得した前記オブジェクトIDに、前記結果取得手段が前記オブジェクトを取得するときの優先順位を表す優先度をさらに対応づけた前記候補を生成し、
    前記結果取得手段は、前記優先度が大きい前記オブジェクトIDに対応する前記オブジェクトを、前記優先度が小さい前記オブジェクトIDに対応する前記オブジェクトより優先して取得すること、
    を特徴とする請求項1に記載の構造化文書検索装置。
  5. 前記候補生成手段は、複数の前記検索キーに対する複数の前記候補のうち、先に取得する前記候補に含まれる前記オブジェクトIDに対し、後に取得する前記候補に含まれる前記オブジェクトIDより大きい前記優先度を対応づけた前記候補を生成すること、
    を特徴とする請求項4に記載の構造化文書検索装置。
  6. 前記第2取得手段は、前記第2制約条件を対応づけた前記オブジェクトIDに、前記結果取得手段が前記オブジェクトを取得するときの優先順位を表す優先度をさらに対応づけ、
    前記結果取得手段は、前記優先度が大きい前記オブジェクトIDに対応する前記オブジェクトを、前記優先度が小さい前記オブジェクトIDに対応する前記オブジェクトより優先して取得すること、
    を特徴とする請求項3に記載の構造化文書検索装置。
  7. 前記第2取得手段は、前記検索対象構造IDから前記検索結果構造IDまでの階層数が小さい前記オブジェクトIDに対し、前記検索対象構造IDから前記検索結果構造IDまでの階層数が大きい前記オブジェクトIDより大きい前記優先度を対応づけること、
    を特徴とする請求項6に記載の構造化文書検索装置。
  8. 前記第2取得手段は、複数の前記検索キーに対する複数の前記候補のうち、先に取得する前記候補に含まれる前記オブジェクトIDに対し、後に取得する前記候補に含まれる前記オブジェクトIDより大きい前記優先度を対応づけること、
    を特徴とする請求項6に記載の構造化文書検索装置。
  9. 前記構造化文書記憶手段は、前記構造化文書情報を識別する文書IDと前記構造化文書情報内で前記オブジェクトを識別する要素IDとを含む前記オブジェクトIDと、前記オブジェクトと、を対応づけて記憶し、
    前記構造索引記憶手段は、前記構造IDと、前記文書IDと前記要素IDとを含む前記オブジェクトIDと、を対応づけた前記構造索引を記憶し、
    前記語彙索引記憶手段は、前記語彙IDと、前記文書IDと前記要素IDとを含む前記オブジェクトIDと、を対応づけた前記語彙索引を記憶し、
    前記候補生成手段は、前記階層型検索条件にAND条件で結合された複数の前記検索キーが含まれる場合に、前記検索キーのそれぞれに対する複数の前記候補から、前記オブジェクトIDに含まれる前記文書IDと、前記オブジェクトIDに対応する前記構造IDとが共通する前記オブジェクトIDを取得し、取得した前記オブジェクトIDを含む前記候補を生成すること、
    を特徴とする請求項1に記載の構造化文書検索装置。
  10. 前記候補を記憶する候補記憶手段をさらに備え、
    前記候補生成手段は、取得した前記オブジェクトIDのそれぞれに前記第1制約条件が対応づけられている場合に、前記候補記憶手段における複数の前記候補を記憶した位置を示す位置情報を前記オブジェクトIDに対応づけた前記候補を取得すること、
    を特徴とする請求項9に記載の構造化文書検索装置。
  11. 前記結果取得手段は、前記候補に前記位置情報が含まれる場合に、前記候補記憶手段の前記位置情報で示される位置から前記候補を取得し、取得した前記候補に含まれる前記第1制約条件を満たす前記オブジェクトIDに対応する前記オブジェクトを取得すること、
    を特徴とする請求項10に記載の構造化文書検索装置。
  12. 前記結果取得手段は、前記第1制約条件が対応づけられていない前記オブジェクトIDを、前記第1制約条件が対応づけられた前記オブジェクトIDより優先して取得すること、
    を特徴とする請求項1に記載の構造化文書検索装置。
  13. 前記結果取得手段は、前記第2制約条件が対応づけられていない前記オブジェクトIDを、前記第2制約条件が対応づけられた前記オブジェクトIDより優先して取得すること、
    を特徴とする請求項3に記載の構造化文書検索装置。
  14. 前記結果取得手段は、前記第1制約条件が対応づけられた前記オブジェクトIDを含む複数の前記候補を取得する場合に、複数の前記候補に含まれる前記オブジェクトが互いに同一の前記構造化文書情報内に含まれる複数の前記候補を、複数の前記候補に含まれる前記オブジェクトが互いに異なる前記構造化文書情報内に含まれる複数の前記候補より優先して取得すること、
    を特徴とする請求項1に記載の構造化文書検索装置。
  15. 前記結果取得手段は、前記第2制約条件が対応づけられた前記オブジェクトIDを含む複数の前記候補を取得する場合に、複数の前記候補に含まれる前記オブジェクトが互いに同一の前記構造化文書情報内に含まれる複数の前記候補を、複数の前記候補に含まれる前記オブジェクトが互いに異なる前記構造化文書情報内に含まれる複数の前記候補より優先して取得すること、
    を特徴とする請求項3に記載の構造化文書検索装置。
  16. ネットワークを介して接続された端末装置から前記検索条件を受信し、受信した前記検索条件に対して前記候補生成手段が生成した前記候補の件数を前記端末装置に送信する通信手段をさらに備えたこと、
    を特徴とする請求項1に記載の構造化文書検索装置。
  17. 階層化された論理構造の単位である構造要素に対応するオブジェクトと、前記オブジェクトを識別するオブジェクトIDとを含み、前記論理構造を有する構造化文書情報を構造化文書記憶手段に記憶する構造化文書記憶ステップと、
    前記構造要素を識別する構造IDと、前記オブジェクトIDとを対応づけた構造索引を構造索引記憶手段に記憶する構造索引記憶ステップと、
    前記構造化文書情報に含まれる語彙を識別する語彙IDと、前記オブジェクトIDとを対応づけた語彙索引を語彙索引記憶手段に記憶する語彙索引記憶ステップと、
    前記構造IDに前記語彙索引が付加されているか否かを表す判別情報を含む前記構造要素に関する構造情報を構造情報記憶手段に記憶する構造情報記憶ステップと、
    条件生成手段によって、入力された検索条件に含まれる検索キーを前記検索キーの検索対象となる前記構造IDに対応づけ、前記検索キーを対応づけた前記構造IDである検索対象構造IDと、前記検索条件の検索結果として取得すべき前記構造IDである検索結果構造IDとを階層構造の単位として含み、前記検索対象構造IDと前記検索結果構造IDとの間で満たすべき前記階層構造に関する構造制約を定めた階層型検索条件を生成する条件生成ステップと、
    第1取得手段によって、前記検索対象構造IDのうち、前記語彙索引が付加されていないことを示す前記判別情報が対応づけられた前記検索対象構造IDについて、前記検索対象構造IDに対応づけられた前記オブジェクトIDを前記構造索引記憶手段から取得する第1取得ステップと、
    候補生成手段によって、前記第1取得ステップが取得した前記オブジェクトIDに前記検索キーを第1制約条件として対応づけ、前記第1制約条件を対応づけた前記オブジェクトIDを含む前記検索結果の候補を生成する候補生成ステップと、
    第2取得手段によって、生成された前記候補に含まれる前記オブジェクトIDに対応する前記検索対象構造IDに対して、前記階層型検索条件で定めた前記構造制約に適合する前記検索結果構造IDを取得する第2取得ステップと、
    結果取得手段によって、取得した前記検索結果構造IDに対応する前記オブジェクトIDのうち前記第1制約条件を満たす前記オブジェクトIDに対応する前記オブジェクトを前記構造化文書記憶手段から取得する結果取得ステップと、
    を備えたことを特徴とする構造化文書検索方法。
  18. 階層化された論理構造の単位である構造要素に対応するオブジェクトと、前記オブジェクトを識別するオブジェクトIDとを含み、前記論理構造を有する構造化文書情報を構造化文書記憶手段に記憶する構造化文書記憶手順と、
    前記構造要素を識別する構造IDと、前記オブジェクトIDとを対応づけた構造索引を構造索引記憶手段に記憶する構造索引記憶手順と、
    前記構造化文書情報に含まれる語彙を識別する語彙IDと、前記オブジェクトIDとを対応づけた語彙索引を語彙索引記憶手段に記憶する語彙索引記憶手順と、
    前記構造IDに前記語彙索引が付加されているか否かを表す判別情報を含む前記構造要素に関する構造情報を構造情報記憶手段に記憶する構造情報記憶手順と、
    入力された検索条件に含まれる検索キーを前記検索キーの検索対象となる前記構造IDに対応づけ、前記検索キーを対応づけた前記構造IDである検索対象構造IDと、前記検索条件の検索結果として取得すべき前記構造IDである検索結果構造IDとを階層構造の単位として含み、前記検索対象構造IDと前記検索結果構造IDとの間で満たすべき前記階層構造に関する構造制約を定めた階層型検索条件を生成する条件生成手順と、
    前記検索対象構造IDのうち、前記語彙索引が付加されていないことを示す前記判別情報が対応づけられた前記検索対象構造IDについて、前記検索対象構造IDに対応づけられた前記オブジェクトIDを前記構造索引記憶手段から取得する第1取得手順と、
    前記第1取得手順が取得した前記オブジェクトIDに前記検索キーを第1制約条件として対応づけ、前記第1制約条件を対応づけた前記オブジェクトIDを含む前記検索結果の候補を生成する候補生成手順と、
    生成された前記候補に含まれる前記オブジェクトIDに対応する前記検索対象構造IDに対して、前記階層型検索条件で定めた前記構造制約に適合する前記検索結果構造IDを取得する第2取得手順と、
    取得した前記検索結果構造IDに対応する前記オブジェクトIDのうち前記第1制約条件を満たす前記オブジェクトIDに対応する前記オブジェクトを前記構造化文書記憶手段から取得する結果取得手順と、
    をコンピュータに実行させる構造化文書検索プログラム。
JP2006264835A 2006-09-28 2006-09-28 構造化文書検索装置、構造化文書検索方法および構造化文書検索プログラム Active JP4146479B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006264835A JP4146479B2 (ja) 2006-09-28 2006-09-28 構造化文書検索装置、構造化文書検索方法および構造化文書検索プログラム
US11/896,267 US7822788B2 (en) 2006-09-28 2007-08-30 Method, apparatus, and computer program product for searching structured document

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006264835A JP4146479B2 (ja) 2006-09-28 2006-09-28 構造化文書検索装置、構造化文書検索方法および構造化文書検索プログラム

Publications (2)

Publication Number Publication Date
JP2008084112A JP2008084112A (ja) 2008-04-10
JP4146479B2 true JP4146479B2 (ja) 2008-09-10

Family

ID=39262215

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006264835A Active JP4146479B2 (ja) 2006-09-28 2006-09-28 構造化文書検索装置、構造化文書検索方法および構造化文書検索プログラム

Country Status (2)

Country Link
US (1) US7822788B2 (ja)
JP (1) JP4146479B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2031520A1 (en) * 2007-09-03 2009-03-04 Software Ag Method and database system for pre-processing an XQuery
JP5379372B2 (ja) * 2007-11-15 2013-12-25 キヤノン株式会社 データ圧縮装置、データ伸長装置およびデータ圧縮方法
US8176084B2 (en) * 2007-11-26 2012-05-08 International Business Machines Corporation Structure based storage, query, update and transfer of tree-based documents
US8145674B2 (en) * 2007-11-26 2012-03-27 International Business Machines Corporation Structure based storage, query, update and transfer of tree-based documents
JP5215929B2 (ja) * 2009-04-24 2013-06-19 株式会社日立製作所 データ処理方法およびデータ処理システム
US8959097B2 (en) * 2010-03-12 2015-02-17 International Business Machines Corporation Privacy-preserving method for skimming of data from a collaborative infrastructure
CN101968807A (zh) * 2010-10-15 2011-02-09 北京思在信息技术有限责任公司 一种内容检索的方法及装置
JP5100820B2 (ja) * 2010-11-25 2012-12-19 株式会社東芝 問合せ式変換装置、方法およびプログラム
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
JP2018010505A (ja) * 2016-07-14 2018-01-18 ルネサスエレクトロニクス株式会社 検索装置および半導体装置
US11416487B2 (en) * 2020-09-22 2022-08-16 Microsoft Technology Licensing, Llc Data-driven checkpoint selector

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3887867B2 (ja) * 1997-02-26 2007-02-28 株式会社日立製作所 構造化文書の登録方法
US6493705B1 (en) * 1998-09-30 2002-12-10 Canon Kabushiki Kaisha Information search apparatus and method, and computer readable memory
US6584459B1 (en) * 1998-10-08 2003-06-24 International Business Machines Corporation Database extender for storing, querying, and retrieving structured documents
US6405211B1 (en) * 1999-07-08 2002-06-11 Cohesia Corporation Object-oriented representation of technical content and management, filtering, and synthesis of technical content using object-oriented representations
JP3754253B2 (ja) 1999-11-19 2006-03-08 株式会社東芝 構造化文書検索方法、構造化文書検索装置及び構造化文書検索システム
JP2001167087A (ja) * 1999-12-14 2001-06-22 Fujitsu Ltd 構造化文書検索装置,構造化文書検索方法,構造化文書検索用プログラム記録媒体および構造化文書検索用インデックス作成方法
JP3632643B2 (ja) 2000-10-25 2005-03-23 松下電器産業株式会社 構造化文書管理装置
US6826566B2 (en) * 2002-01-14 2004-11-30 Speedtrack, Inc. Identifier vocabulary data access method and system
EP1686499B1 (en) * 2002-06-28 2010-06-30 Nippon Telegraph and Telephone Corporation Selection and extraction of information from structured documents

Also Published As

Publication number Publication date
JP2008084112A (ja) 2008-04-10
US7822788B2 (en) 2010-10-26
US20080082526A1 (en) 2008-04-03

Similar Documents

Publication Publication Date Title
JP4146479B2 (ja) 構造化文書検索装置、構造化文書検索方法および構造化文書検索プログラム
JP4314221B2 (ja) 構造化文書記憶装置、構造化文書検索装置、構造化文書システム、方法およびプログラム
JP4189416B2 (ja) 構造化文書管理システム及びプログラム
US6853992B2 (en) Structured-document search apparatus and method, recording medium storing structured-document searching program, and method of creating indexes for searching structured documents
JP3842577B2 (ja) 構造化文書検索方法および構造化文書検索装置およびプログラム
US7664773B2 (en) Structured data storage method, structured data storage apparatus, and retrieval method
JP2005525659A (ja) 構造化コンテンツ、準構造化コンテンツ、および非構造化コンテンツを検索する装置および方法
KR101083563B1 (ko) 데이터베이스 관리 방법 및 시스템
US8898555B2 (en) Apparatus, method, and computer program product for managing structured documents
US8082492B2 (en) Structured-document management apparatus, search apparatus, storage method, search method and program
US7519574B2 (en) Associating information related to components in structured documents stored in their native format in a database
JP2006185408A (ja) データベース構築装置及びデータベース検索装置及びデータベース装置
JP2008171181A (ja) 構造化データ検索装置
JP4247108B2 (ja) 構造化文書検索方法、構造化文書検索装置、及びプログラム
JP4237813B2 (ja) 構造化文書管理システム
US8171040B2 (en) Method and system for navigation of a data structure
JP2003281149A (ja) アクセス権限設定方法および構造化文書管理システム
JP3632643B2 (ja) 構造化文書管理装置
JP2008243075A (ja) 構造化文書管理装置及び方法
JP3709890B2 (ja) 文字列検索装置
JP4013632B2 (ja) Xmlフォーマットデータ重複排除方法及び装置及びプログラム及びコンピュータ読み取り可能な記録媒体
JP5374456B2 (ja) 文書検索装置の動作方法およびこれをコンピュータに実行させるためのコンピュータプログラム
JP2008209996A (ja) 検索索引作成装置・検索索引作成方法及び検索索引作成プログラム
JP2004310249A (ja) Xmlデータの検索方法及び検索装置、並びにプログラムおよびプログラムを記録した記録媒体
JP4334450B2 (ja) 構造化文書検索装置及び構造化文書検索方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080327

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

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

R151 Written notification of patent or utility model registration

Ref document number: 4146479

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120627

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130627

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313114

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350