説明

構造化文書管理システム及びプログラム

【課題】複数のタグの値による検索を高速に行うのに適した索引管理を実現する。
【解決手段】ドキュメント管理部52は、文字列結合索引データの作成を指示するための外部から与えられる索引作成要求であって、作成された文字列結合索引データが付与されるタグを指定する索引作成要求に基づき、XML文書格納部421に新たに格納されるまたは既に格納されているXML文書から当該索引作成要求で指定されたタグを検出する。索引管理部54は、ドキュメント管理部52によって検出されたタグを有するXML文書に含まれている当該タグ以下に出現する複数のテキストノードの値を連結して索引化し、当該タグに付与される文字列結合索引データとして索引格納部422に格納する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、構造化文書を検索するのに用いられる索引を管理する構造化文書管理システム及びプログラムに関する。
【背景技術】
【0002】
XML(Extensible Markup Language)形式の文書、つまりXML文書に代表される構造化文書では、タグと呼ばれる文字列で階層的な構造が表現される。具体的には、1組のタグ(開始タグ及び終了タグの組)によってテキストを囲むことによって、当該テキストが構造化される。開始タグから終了タグまでの文字列はタグを含めて要素と呼ばれ、開始タグ及び終了タグで囲まれた文字列は、要素の内容と呼ばれる。構造化文書(XML文書)は木構造によって表現することが可能である。構造化文書の木構造において、構造化文書の要素に対応するノードは要素ノード、要素の内容(値)がテキストの場合の当該要素の内容に対応するノードはテキストノードと呼ばれる。テキストノードはテキストのみから構成される。つまりテキストノード=テキストノードの値=テキストである。
【0003】
また、データベースサーバ上で動作するデータベース管理システム(Database Management System: DBMS)を始めとする、多数の構造化文書を管理し、大規模な検索処理を行うシステム(構造化文書管理システム)においては、例えば特許文献1または2に記載されているように、索引(インデックス)を用いて検索速度を向上させる手法が適用されている。
【0004】
構造化文書中のデータ(値)による検索を高速化するために索引を付与する場合、検索対象となることの多い「要素ノード単位」に行われるのが一般的である。例えば、
<住所>
<都道府県>東京都</都道府県>
<市町村>府中市武蔵台</市町村>
<番地>一丁目一番地十五</番地>
</住所>
のようなデータを含むXML文書に対して、「住所に"東京都府中市"が含まれる」という条件で検索する場合を想定する。
【0005】
この場合、クライアント端末から構造化文書検索管理システムに対して与えられる検索要求の示す検索文字列(クエリ)は「/住所[都道府県/text()="東京都"AND[contains(市町村/text(),"府中市")]」となる。このようなクエリに対するXML文書検索を高速化するために、パス「/住所/都道府県」及びパス「/住所/市町村」でそれぞれ特定される要素ノード(<都道府県>タグ及び<市町村>タグ)に対して索引が作成・付与される。
【特許文献1】特開2000−207409号
【特許文献1】特開2006−172268号
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかし、要素ノード単位で作成される索引を利用してXML文書検索の高速化を図る場合には<住所>タグ内に含まれるタグの自由度が制限される。例えば、図4に示される2つの文書#1及び#2
文書#1:
<住所>
<都道府県>東京都</都道府県>
<市町村>府中市武蔵台</市町村>
<番地>一丁目一番地十五</番地>
</住所>
文書#2:
<住所>
<都道府県>東京都</都道府県>
<区>港区</区>
<市町村>芝浦</市町村>
<番地>一丁目一番地一</番地>
</住所>
に対して作成される索引を利用したXML文書検索で、東京都に対してのみ<市町村>タグに加えて<区>タグを利用する場合を想定する。具体的には、「住所に"東京都港区芝浦"が含まれる」という条件で検索するものとする。この場合、クエリは「/住所[都道府県/text()="東京都" AND 区/text()="港区"AND[contains(市町村/text(),"芝浦")]」となり、条件の値だけでなくクエリそのものも書き換える必要が生じる。
【0007】
一方、XML文書の階層構造を指定するXPathと呼ばれるパス形式を用いて、例えば「/住所[contains(.,"東京都港区芝浦")]」と記述することにより、目的の検索を実現することが可能である。しかし、要素ノード単位で索引が作成される従来技術では、該当する索引が存在しないため、個々のXML文書内をサーチして、条件に合致する文書かを確認する必要がある。このため、高速な検索を実現することは難しい。
【0008】
また、要素ノード単位で作成された索引を利用して検索を行う場合、<都道府県>タグに付与された索引でヒットした結果と、<市町村>タグに付与された索引でヒットした結果と、<区>タグに付与された索引でヒットした結果が、同一文書に含まれているかどうかANDマージ処理を行う必要がある。このため、いずれか1つ、もしくは全ての索引での検索で大量のデータがヒットするようなケースでは、ANDマージ処理で検索の高速性が損なわれるおそれがある。
【0009】
本発明は上記事情を考慮してなされたものでその目的は、複数のタグの値による検索を高速に行うのに適した索引管理を実現できる構造化文書管理システム及びプログラムを提供することにある。
【課題を解決するための手段】
【0010】
本発明の1つの観点によれば、複数の構造化文書を管理する構造化文書管理システムが提供される。このシステムは、複数の構造化文書を格納する構造化文書格納手段と、前記構造化文書格納手段に格納されている構造化文書を検索するのに用いられる索引データを格納する索引格納手段と、文字列結合索引データの作成を指示するための外部から与えられる索引作成要求であって、作成された文字列結合索引データが付与されるタグを指定する索引作成要求に基づき、前記構造化文書格納手段に新たに格納されるまたは既に格納されている構造化文書から当該索引作成要求で指定されたタグを検出するタグ検出手段と、前記タグ検出手段によって検出されたタグを有する前記構造化文書に含まれている当該タグ以下に出現する複数のテキストノードの値を連結して索引化し、当該タグに付与される文字列結合索引データとして前記索引格納手段に格納する索引管理手段とを具備する。
【発明の効果】
【0011】
本発明によれば、構造化文書の指定されたタグ以下に出現する複数のテキストノード、特に階層が異なる要素ノードの要素の値である複数のテキストノードの値を連結して、当該指定されたタグの索引(文字列結合索引)として管理することができる。したがって、この文字列結合索引を利用することにより、タグを跨ったデータを条件とした検索を高速化できると共に、ヒット件数が多い場合でも性能劣化を防ぐことができる。
【発明を実施するための最良の形態】
【0012】
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る構造化文書管理システムを含むクライアント−サーバシステムのハードウェア構成を示すブロック図である。クライアント−サーバシステムは、主として、データベースサーバ(データベースサーバコンピュータ)10と、複数のクライアント端末とから構成される。複数のクライアント端末はクライアント端末20を含む。クライアント端末20上では、データベースサーバ10を利用するアプリケーション(アプリケーションプログラム)が動作する。クライアント端末20を含む複数のクライアント端末は、ローカルエリアネットワーク(LAN)のようなネットワーク30を介してデータベースサーバ10と接続されている。なお、図1にはクライアント端末20以外のクライアント端末は省略されている。
【0013】
データベースサーバ10は、ハードディスクドライブのような外部記憶装置40と接続されている。この外部記憶装置40は、データベース管理プログラム41及びXMLデータベース42を格納する。
【0014】
データベース管理プログラム41は、データベースサーバ10によるXMLデータベース42の管理、及びクライアント端末からの検索要求に基づく検索処理に用いられる。XMLデータベース42は構造化文書であるXML文書(XML文書データ)を格納する構造化文書データベースである。XMLデータベース42には、当該データベース42に格納されるXML文書に基づいて作成される索引等も格納される。
【0015】
本実施形態では、データベースサーバ10及び外部記憶装置40によって構造化文書管理システム50が実現される。
【0016】
図2は構造化文書管理システム50の主として機能構成を示すブロック図である。構造化文書管理システム50は、XMLデータベース42に加えて、コマンド管理部51、ドキュメント管理部52、検索エンジン53、索引管理部54及びデータベース操作部55を含む。本実施形態において、これらの各部51乃至55は、図1のデータベースサーバ10が外部記憶装置40に格納されているデータベース管理プログラム41を読み込んで実行することにより実現されるものとする。このプログラム41は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム41が、ネットワーク30を介してデータベースサーバ10にダウンロードされても構わない。
【0017】
XMLデータベース42には、XML文書格納部421、索引格納部422及び索引設定管理テーブル格納部423が確保されている。XML文書格納部421は、複数のXML文書(XML文書データ)を格納するのに用いられる。索引格納部422は、XML文書格納部421に新たに格納されるまたは既に格納されているXML文書に基づいて作成される索引(索引データ)を格納するのに用いられる。索引設定管理テーブル格納部423は、索引格納部422に格納されるべき索引の作成を管理する索引設定管理テーブル424を格納するのに用いられる。
【0018】
コマンド管理部51は、クライアント端末からネットワーク30を介して与えられる各種のコマンド(要求)を受け付けて当該コマンドの種別を判別し、その判別結果に応じてドキュメント管理部52、検索エンジン53及び索引管理部54のいずれかに当該コマンドの指定する処理を実行させる。ドキュメント管理部52は、XMLデータベース42内のXML文書格納部421にXML文書を登録する登録処理など、XML文書格納部421におけるXML文書の管理を司る。
【0019】
検索エンジン53は、クライアント端末からの検索要求に従い、当該検索要求で指定される検索条件に合致するXML文書をXMLデータベース42内の索引格納部422に格納されている索引を利用してXML文書格納部421から検索する。索引管理部54は、XML文書格納部421に格納されているXML文書を検索するのに用いられる索引を管理する。この索引の管理は、索引の作成、作成された索引の索引格納部422への格納を含む。索引管理部54は、索引格納部422から索引を検索する索引検索部56を含む。なお、索引検索部56が索引管理部54から独立に設けられていても構わない。データベース操作部55は、ドキュメント管理部52、検索エンジン53及び索引管理部54がXMLデータベース42をアクセスするためのインタフェースとして機能する。
【0020】
次に、本実施形態の動作について、(1)索引設定処理、(2)文書登録処理、(3)文書検索処理を例に、順に説明する。
【0021】
(1)索引設定処理
まず、索引設定処理について図3のフローチャートを参照して説明する。
今、クライアント端末20上では、当該端末20から構造化文書管理システム50を利用するためのアプリケーションが動作しているものとする。このような状態において、ユーザは構造化文書管理システム50上で複数のテキストノードを跨った検索が必要な場合、クライアント端末20を操作して、当該複数のテキストノードの値をそれぞれ要素の内容として含む要素ノードを下位ノードとするノード(タグ)を指定する。そしてユーザはクライアント端末20を操作して、XML文書(の階層構造)上で、指定されたノード(指定ノード)以下に出現する、例えば全てのテキストノードの値(テキスト)を連結して索引(文字列結合索引)を作成することを指示する索引作成要求をクライアント端末20から発行させる。指定ノードは、テキスト連結による索引作成の起点となると共に、作成された索引が設定(付与)されるノードである。
【0022】
クライアント端末20は、上述のユーザの操作を受けて、指定ノードの情報を含む索引作成要求(索引作成コマンド)をネットワーク30を介してデータベースサーバ10に発行する(ステップS1)。この索引作成要求は、データベースサーバ10(構造化文書管理システム50)のコマンド管理部51で受け取られる。本実施形態では、指定ノードは、XML文書の階層構造上のルートノードから当該指定ノードへのパス(構造情報)によって表される。
【0023】
コマンド管理部51は、クライアント端末20からの索引作成要求(つまりユーザによって指定された外部からの索引作成要求)を受け取ると、当該要求を解析する。コマンド管理部51は、この要求(コマンド)解析結果に基づき、ドキュメント管理部52、検索エンジン53及び索引管理部54の中から、当該要求を処理すべき機能部として索引管理部54を選択し、当該索引管理部54にクライアント端末20からの索引作成要求を渡す(ステップS2)。
【0024】
索引管理部54は、コマンド管理部51から渡された索引作成要求に基づき、新規の索引作成に必要な索引設定情報を生成して索引設定管理テーブル424に追加し、しかる後に当該索引作成要求に対する応答(例えば索引作成の正常終了通知)をコマンド管理部51に返す(ステップS3)。索引設定情報は、索引作成要求によって指示された索引を作成する際に参照される情報であり、その詳細については後述する。なお、索引設定管理テーブル424のコピーをデータベースサーバ10のメモリ(図示せず)上に置いて、当該索引設定管理テーブル424のコピー上で索引設定情報の追加登録・参照を行うならば、索引設定管理テーブル424へのアクセスを高速に行うことができる。
【0025】
コマンド管理部51は、索引管理部54からの応答を、ネットワーク30を介してクライアント端末20に返す(ステップS4)。即ち、索引作成要求に対する応答が、索引管理部54からクライアント端末20に当該索引作成要求とは逆向きの経路を辿って返される。
【0026】
図4は、XML文書格納部421に既に格納されている、或いは新たに格納される2つのXML文書#1及び#2の例を示す。図5は、図4に示されるXML文書#1及び#2を木構造で表現した例を示す。
【0027】
図5において、“root”で示されるノード500は、XML文書#1及び#2のルート(root)ノードである。rootノードの子ノード(つまりrootノード下のノード)は、XML文書#1及び#2の<住所>タグを含む要素(つまり要素名が「住所」の要素)に対応する要素ノード510及び520である。要素ノード510及び520を、住所ノード510及び520と呼ぶこともある。図5では、rootノード及び要素ノードは楕円で表され、テキストノードは矩形で表されている。
【0028】
ノード510の子ノードは、XML文書#1のそれぞれ<都道府県>タグ、<市町村>タグ及び<番地>タグを含む要素に対応する要素ノード511,512及び513である。要素ノード511,512及び513を、それぞれ都道府県ノード511、市町村ノード512及び番地ノード513と呼ぶこともある。
【0029】
ノード520の子ノードは、XML文書#2のそれぞれ<都道府県>タグ、<区>タグ、<市町村>タグ及び<番地>タグを含む要素に対応する要素ノード521,522,523及び524である。要素ノード521,522,523及び524を、それぞれ都道府県ノード521、区ノード522、市町村ノード523及び番地ノード524と呼ぶこともある。
【0030】
ノード511,512及び513の子ノードは、それぞれ<都道府県>タグ、<市町村>タグ及び<番地>タグを含む要素の内容(値)であるテキスト「東京都」,「府中市武蔵台」及び「一丁目一番地十五」に対応するテキストノード511T,512T及び513Tである。ノード521,522,523及び524の子ノードは、それぞれ<都道府県>タグ、<区>タグ、<市町村>タグ及び<番地>タグを含む要素の内容であるテキスト「東京都」,「港区」,「芝浦」及び「一丁目一番地一」に対応するテキストノード521T,522T,523T及び524Tである。
【0031】
本実施形態において、索引作成要求で指定されたノード(指定ノード)が<住所>タグを含む要素に対応する要素ノード510及び520であるものとする。この要素ノード510及び520へのパスは、「/住所」で表される。パス「/住所」に含まれている「/」は、この例のようにパスの先頭に位置している場合、rootノードを示す。
【0032】
図6(a)は、索引作成要求で指定されたノード(指定ノード)へのパスが「/住所」の場合に、索引管理部54による索引設定情報追加後の索引設定管理テーブル424の一例を示す。この索引設定管理テーブル424の各エントリの情報(索引設定情報)は、図6(a)に示すように、設定パス及び索引種別の情報を含む。ここでは、設定パスとして指定ノードへのパス「/住所」を、索引種別として「文字列結合索引」をそれぞれ含む索引設定情報が索引設定管理テーブル424に格納されている。「文字列結合索引」とは、索引設定情報に当該「文字列結合索引」と対をなして設定されているパスによって指定されるノード(タグ)以下に出現する複数のテキストノードの値(テキスト)を出現順に連結することによって作成される索引である。本実施形態では、設定索引設定管理テーブル424に登録されている索引設定情報(中の索引種別)によって示される種別の索引は、次に述べるようにXML文書の登録時に作成される。
【0033】
(2)文書登録処理、
次に、文書登録処理について図7のフローチャートを参照して説明する。
今、ユーザによるクライアント端末20の操作に従い、当該端末20からデータベースサーバ10に対して新たにXML文書を登録することを指示する文書登録要求(文書登録コマンド)が発行されたものとする(ステップS11)。この登録要求は、データベースサーバ10(構造化文書管理システム50)のコマンド管理部51で受け取られる。
【0034】
コマンド管理部51は、クライアント端末20からの文書登録要求を受け取ると、当該要求を解析する。コマンド管理部51は、この要求(コマンド)解析結果に基づき、当該要求を処理すべき機能部としてドキュメント管理部52を選択し、当該ドキュメント管理部52にクライアント端末20からの文書登録要求を渡す(ステップS12)。
【0035】
ドキュメント管理部52は、コマンド管理部51から渡された文書登録要求に従い、当該要求で指定された新たに登録されるべきXML文書を先頭から順に解析しながら(ステップS13)、索引設定管理テーブル424に登録されている索引設定情報中の設定パスで指定されるタグを含む要素(要素ノード)を検出するタグ検出手段として機能する。そしてドキュメント管理部52は、解析された情報が、上記設定パスで指定される要素、つまり索引の付与(設定)が指定されている要素(要素ノード)であるかをチェックする(ステップS14)。もし、解析された情報が索引の付与が指定されている要素中の情報(開始タグ、テキスト、終了タグ等)であるならば(ステップS14)、ドキュメント管理部52は、索引設定管理テーブル424に登録されている索引設定情報のうち、その要素へのパスの情報を含む索引設定情報から索引種別情報を取り出して、当該索引種別情報が「文字列結合索引」を示しているかを判定する(ステップS15)。
【0036】
もし、索引種別情報が「文字列結合索引」を示していないならば、ドキュメント管理部52は解析された情報に対して通常の処理(従来と同様の処理)を行う。これに対して、索引種別情報が「文字列結合索引」を示しているならば、ドキュメント管理部52は解析された情報の種類、即ち解析された情報が開始タグ(索引の付与が指定されている要素の開始タグ)、テキストまたは終了タグ(索引の付与が指定されている要素の終了タグ)のいずれであるかを判別する(ステップS16)
解析された情報が開始タグの場合、ドキュメント管理部52は文字列連結を開始する(ステップS17)。解析された情報がテキストの場合、ドキュメント管理部52は当該テキスト(文字列)を例えばデータベースサーバ10のメモリに確保されている文字列連結領域内で連結する処理を実行する(ステップS18)。解析された情報が終了タグの場合、ドキュメント管理部52は索引管理部54を起動して、その時点において文字列連結領域内で連結されている文字列による索引化を当該索引管理部54に行わせる(ステップS19)。
【0037】
このように本実施形態においては、クライアント端末20からの索引作成要求で指定されたノード(タグ)を含むXML文書の登録時に、当該指定されたノード(指定ノード)へのパスの情報を含む索引設定情報に基づき、当該XML文書の指定ノード(パス)に対して索引(文字列結合索引)が作成される。この索引設定情報に基づいて索引を作成することは、当該索引設定情報の生成に用いられた索引作成要求に基づいて索引を作成することと等価である。但し本実施形態のように、索引設定情報に基づいて索引を作成する手法を適用することにより、クライアント端末20からの索引作成要求を記憶しておき、新たにXML文書を登録する毎に当該索引作成要求を解析して、その解析結果に基づいて索引を作成する手法と比べて、索引作成の高速化を図ることができる。
【0038】
なお、XML文書格納部421に既に登録されているXML文書(例えばユーザによって指定された既登録のXML文書)を対象に、当該XML文書の指定ノード(パス)に対して索引の作成が行われても良い。即ち、ユーザの操作に応じてクライアント端末20からデータベースサーバ10(構造化文書管理システム50)に対して既登録のXML文書を指定して、当該指定されたXML文書の指定ノード(パス)に対して索引の作成を行わせることも可能である。
【0039】
ドキュメント管理部52は、ステップS17,S18またはS19が実行されるとステップS20に進む。ドキュメント管理部52はまた、解析された情報が索引作成が指定されている要素中の情報でないと判定された場合(ステップS14)にもステップS20に進む。このステップS20において、ドキュメント管理部52は、解析された情報をXMLデータベース42のXML文書格納部421に格納するドキュメント格納処理を実行する。
【0040】
ドキュメント管理部52は、ステップS20を実行すると、クライアント端末20からの文書登録要求で指定されたXML文書(ドキュメント)の登録が終了したかを判定する(ステップS21)。もし、指定されたXML文書の登録が終了していないならば、ドキュメント管理部52はステップS14に戻り、指定されたXML文書中の次に解析された情報が索引作成が指定されている要素中の情報であるかを判定する。以下、同様にして、ドキュメント管理部52は索引作成が指定されている要素中の開始タグを判別した後、当該要素中の終了タグを判別するまでの間に現れる文字列(テキスト)を出現順に全て連結する。そして索引作成が指定されている要素中の終了タグが判別されると、その時点までに連結されている文字列が索引管理部54によって索引化される(ステップS19)。この索引化によって作成される文字列結合索引(索引データ)は索引格納部422に格納される。この文字列結合索引は、索引促成要求によって指定されたノード(要素ノード)に対する(付与される)索引として管理される。索引の形式として例えばB木またはハッシュが適用可能であるが、他の形式でも構わない。
【0041】
ドキュメント管理部52は、指定されたXML文書の登録処理を終了(完了)すると(ステップS21)、文書登録要求に対する応答(例えば文書登録の正常終了通知)をコマンド管理部51に返す(ステップS22)。コマンド管理部51は、ドキュメント管理部52からの応答を、ネットワーク30を介してクライアント端末20に返す(ステップS23)。即ち、文書登録要求に対する応答が、ドキュメント管理部52からクライアント端末20に当該索引作成要求とは逆向きの経路を辿って返される。
【0042】
図8は、図6(a)の索引設定管理テーブル424に登録されている「パス=/住所」及び「索引種別=文字列結合」を指定する索引設定情報に従って、図5の木構造で示される2つの文書#1及び#2(図4参照)のパス「/住所」に対して作成された索引(文字列結合索引)を、当該木構造と対応付けて示す。
【0043】
図8から明らかなように、文書#1のパス「/住所」で指定される要素名が「住所」の要素ノード(つまり、「住所」ノードまたは<住所>タグ)以下のテキストノードは、テキストノード511T,512T及び513Tであり、その値(テキスト)は、それぞれ「東京都」,「府中市武蔵台」及び「一丁目一番地十五」である。この場合、図8に示されるように、これらのテキスト(文字列)が全て連結された索引(文字列結合索引)530が、パス「/住所」(「住所」ノードまたは<住所>タグ)に対する索引として作成される。
【0044】
同様に、文書#1のパス「/住所」で指定される要素名が「住所」の要素ノード(つまり、「住所」ノードまたは<住所>タグ)以下のテキストノードは、テキストノード521T,522T,523T及び524Tであり、その値(テキスト)は、それぞれ「東京都」,「港区」,「芝浦」及び「一丁目一番地一」である。この場合、図8に示されるように、これらのテキスト(文字列)が全て連結された索引(文字列結合索引)540がパス「/住所」(「住所」ノードまたは<住所>タグ)に対する索引として作成される。
【0045】
図9は、作成された文字列結合索引(索引データ)の索引格納部422における配列(索引データ配列)のデータ構造の一例を示す。図9に示す索引データ配列内の各索引データは、ノード位置、都道府県ノード下のノード(都道府県ノードの子ノード)の値(テキスト)、区ノード下のノードの値、市町村ノード下のノードの値及び番地ノード下のノードの値の各情報から構成される。ノード位置の情報は、XML文書格納部421に格納されている該当するXML文書中のノード、即ち索引設定管理テーブル424に登録されている索引設定情報中のパスによって指定されるノード(タグ)の格納位置、例えばXML文書格納部421における相対的な格納位置を示す。
【0046】
索引データを構成する各ノードの値(テキスト)は、都道府県ノード下のノード、区ノード下のノード、市町村ノード下のノード及び番地ノード下のノードの順番で連結される。但し、文書#1に関しては、区ノード下のノードの値は存在しないため、都道府県ノード下のノード、市町村ノード下のノード及び番地ノード下のノードの順番で連結される。
【0047】
(3)文書検索処理
次に、文書検索処理について図10のフローチャートを参照して説明する。
今、ユーザによるクライアント端末20の操作に従い、当該端末20からデータベースサーバ10に対してXML文書を検索することを指示する検索要求が発行されたものとする(ステップS31)。この検索要求は、データベースサーバ10(構造化文書管理システム50)のコマンド管理部51で受け取られる。
【0048】
コマンド管理部51は、クライアント端末20からの検索要求を受け取ると、当該要求を解析する。コマンド管理部51は、この要求解析結果に基づき、当該要求を処理すべき機能部として検索エンジン53を選択し、当該検索エンジン53にクライアント端末20からの検索要求を渡す(ステップS32)。
【0049】
検索エンジン53は、コマンド管理部51から渡された検索要求の示す検索文字列(クエリ、検索条件)を解析して(ステップS33)、文字列結合索引が付与されている要素ノード(タグ)への、当該要素ノード(タグ)を跨ったデータでの検索が含まれるかを判定する(ステップS34)。検索エンジン53は、この条件に合致していると判定した場合、索引管理部54の索引検索部56に対して、該当する要素ノードに付与された索引(文字列結合索引)を検索させる(ステップS35)。これに対し、上記の条件に合致しない検索要求の場合、検索エンジン53は通常の検索処理を実行する(ステップS36)。
【0050】
索引管理部54の索引検索部56に文字列結合索引を検索させた場合、その検索の結果は、当該索引検索部56から検索エンジン53に返される。検索エンジン53は、索引検索部56による文字列結合索引の検索結果を取得すると、当該文字列結合索引に従ってXML文書格納部421に格納されているXML文書を検索して、そのXML文書検索結果を取得する(ステップS37)。コマンド管理部51は、検索エンジン53によって取得されたXML文書検索結果を受け取って、クライアント端末20に返す(ステップS38)。
【0051】
さて、本実施形態で適用される文字列結合索引の作成手法によれば、その作成原理から明らかなように、従来技術においてXML文書の末端の要素ノード単位で作成される索引を検索した際に、当該末端の要素ノードに付与された索引でヒットした結果が同一文書に含まれているかどうかを確認するためのANDマージ処理に相当する処理が、既に文字列結合索引作成時に実行されていることと等価である。したがって、本実施形態のように、索引管理部54の索引検索部56によって検索された文字列結合索引を用いてXML文書を検索することにより、ANDマージ処理が不要となるため、ヒット件数が多い場合でも性能劣化を防ぐことができる。
【0052】
ここで、文字列結合索引を用いたXML文書検索の具体例について説明する。ここでは検索要求で示されるクエリとして、「/住所[contains(.,"東京都港区芝浦")]」が用いられるものとする。この場合、図9の索引データ配列の例では、"東京都港区芝浦"を含む文字列結合索引「東京都港区芝浦一丁目一番地一」及び文書#2の住所ノード(住所タグ)の位置(XML文書格納部421内の位置)が、索引検索部56によって取得される。文字列結合索引「東京都港区芝浦一丁目一番地一」は、文書#2の住所ノード以下に出現する全てのテキストノードの値(テキスト)を出現順に結合することによって作成されたものである。したがって、文書#2の住所ノード(住所タグ)の位置は、「住所に"東京都港区芝浦"が含まれる」XML文書(文書#2)の住所ノード(住所タグ)を特定する。検索エンジン53は、この住所ノードの位置から「住所に"東京都港区芝浦"が含まれる」XML文書を検索することができる。
【0053】
上述したように本実施形態においては、XML文書で指定ノード以下に出現する全てのテキストノードの値(テキスト)を連結して索引(文字列結合索引)が作成される。図11はこの索引作成をモデル化して示す。図11において、A,B,C,D,E及びXは、あるXML文書を木構造で表した場合の要素ノード(タグ)を示し、文字列「ああ」、「いい」、「うう」、「ええ」及び「おお」は、それぞれ要素ノードD,D,D,E及びXの要素の値(に対応するテキストノードの値)を示す。楕円で囲まれた要素ノードAは、文字列結合索引が付与されるノード(指定ノード)である。図11の例では、ノードA以下に出現する全てのテキスト(文字列)「ああ」、「いい」、「うう」、「ええ」及び「おお」を連結することによって文字列結合索引が作成される。
【0054】
[第1の変形例]
次に、上記実施形態の第1の変形例について説明する。
上記実施形態では、指定ノード(タグ)以下に出現する全てのテキストノード(の値)が連結される。しかし、一部のテキストノードだけを検索条件として利用するような場合、その部分だけを索引化することにより、索引のボリュームが削減され、つまり外部記憶装置40の記憶領域の中で索引格納部422の占める領域が少なくて済み、且つ検索の高速化が期待される。そこで第1の変形例の特徴は、指定ノード以下に出現する全てのテキストノードのうちの一部の複数のテキストノード(の値)だけを連結して索引化する点にある。
【0055】
図12は第1の変形例で適用される索引作成をモデル化して示す。図12には、図11と同一の木構造が示されている。図12の例では、要素ノードD,D,D,E及びXのうち、矩形で囲まれた要素ノードD,D及びDの要素の値(に対応するテキストノードの値)である、文字列「ああ」、「いい」及び「うう」だけを連結することによって、要素ノード(タグ)Aの索引(文字列結合索引)が作成される。
【0056】
第1の変形例では、このような文字列結合索引の作成のために、クライアント端末20から構造化文書管理システム50に与えられる索引作成要求により、指定ノード(タグ)を指し示す要素ノードAへのパス(設定パス)に加えて、指定ノード(タグ)以下に出現する全てのテキストノードのうち、索引化(結合)されるべきテキストノードが指定される。ここでは、指定ノードから索引化されるべきテキストノードの親ノードへの相対パス(結合対象パス)によって、索引化されるべきテキストノードが指定される。
【0057】
図12の例では、索引作成要求により、設定パスとして要素ノードAへのパスが指定されると共に、結合対象パスとして、当該要素ノードAからの相対パス「B/C/D」が指定される。索引管理部54は、この索引作成要求を受けた場合、ノードA以下に出現する全てのテキストノードのうち、当該ノードAからの相対パス「B/C/D」によって示されるノード下のテキストノードが、索引化(結合)されるべきテキストノードとして指定されているものと判断する。そして索引管理部54は、索引設定管理テーブル424に索引作成要求に対応する索引設定情報を登録する(図3ステップS3)。
【0058】
第1の変形例では、最大2個の結合対象パスが指定可能であるものとする。そこで、索引設定管理テーブル424に登録される索引設定情報は、図6(a)に示す設定パス及び索引種別の情報に加えて、2つの結合対象パス#1及び#2の情報を含む。結合対象パスとして「B/C/D」が指定されている上記の例では、設定パスとして指定ノードAへのパスが、索引種別として「文字列結合索引」が、そして例えば結合対象パス#1として「B/C/D」がそれぞれ設定された索引設定情報が、索引管理部54によって索引設定管理テーブル424に登録される。ドキュメント管理部52は、この索引設定情報に基づき、索引種別が文字列結合索引の場合には、設定パスで指定されるノードA以下に出現する全てのテキストノードのうち、結合対象パス#1、つまりノードAからの相対パス「B/C/D」によって示されるノード下のテキストノード(の値)だけを連結することができる。第1の変形例における連結の順番は、結合対象パス#1によって示されるノード下のテキストノード→結合対象パス#2によって示されるノード下のテキストノードとなる。1つの結合対象パス#i(i=1,2)によって複数のノードが示される場合、そのノード下のテキストノードを連結する順番は、出現順となる。
【0059】
次に、索引作成要求により、要素ノードD下のテキストノードに加えて、要素ノードE下のテキストノードも索引化されるべきテキストノードとすることが指定されているものとする。この場合、設定パスとして指定ノードAへのパスが、索引種別として「文字列結合索引」が、結合対象パス#1として「B/C/D」が、そして結合対象パス#2として「B/C/E」がそれぞれ設定された索引設定情報が、索引管理部54によって索引設定管理テーブル424に登録される。ドキュメント管理部52は、この索引設定情報に基づき、索引種別が文字列結合索引の場合、設定パスで指定されるノードA以下に出現する全てのテキストノードのうち、結合対象パス#1、つまりノードAからの相対パス「B/C/D」によって示されるノード下のテキストノード、及び結合対象パス#2、つまりノードAからの相対パス「B/C/E」によって示されるノード下のテキストノードだけを連結することができる。
【0060】
もし、索引作成要求により、上記実施形態のようにノードA以下に出現する全てのテキストノードを索引化することが指定されている場合、索引管理部54は索引設定情報の結合対象パス#1及び#2の欄に何も設定しない。この場合、ドキュメント管理部52は、索引設定情報により結合対象パス#1及び#2が指定されていないとして、上記実施形態と同様に、設定パスで指定されるノードA以下に出現する全てのテキストノード(の値)を連結する。
【0061】
図6(b)は、第1の変形例で適用される索引設定管理テーブル424の一例を示す。この図6(b)に示す索引設定管理テーブル424の各エントリの情報(索引設定情報)は、設定パス及び索引種別の情報に加えて、結合対象パス#1及び#2の情報を含む。図6(b)において、設定パス及び索引種別としてそれぞれ「/住所」及び「文字列結合索引」が設定されている索引設定情報には、結合対象パス#1及び#2としてそれぞれ「住所ノードからの相対パス「都道府県」及び「市町村」が設定されている。
【0062】
ドキュメント管理部52は例えばXML文書の登録特に、上述の索引設定情報に基づき、設定パス「/住所」で指定される住所ノード以下に出現する全てのテキストのうち、結合対象パス#1及び#2として索引設定情報に設定されている住所ノードからの相対パス「都道府県」及び「市町村」によってそれぞれ指定される都道府県ノード及び市町村ノードの値(つまり都道府県ノード下のテキストノードの値であるテキスト及び市町村ノード下のテキストノードの値であるテキスト)を結合する。
【0063】
図13は、図5の木構造で示される文書#1及び#2の登録時に、図6(b)の索引設定管理テーブル424に登録されている上述の索引設定情報に基づいて、パス「/住所」に対して作成された索引(文字列結合索引)を当該木構造と対応付けて示す。ここでは、文書#1に関しては、「住所」ノード以下に出現するテキストの値のうち、都道府県ノードの値「東京都」と市町村ノードの値「府中市武蔵台」とが連結された索引531が「住所」ノードに対する索引として作成される。同様に、文書#2に関しては、「住所」ノード以下に出現するテキストの値のうち、都道府県ノードの値「東京都」と市町村ノードの値「芝浦」とが連結された索引541が「住所」ノードに対する索引として作成される。
【0064】
なお、索引設定情報に含められる結合対象パスの数は2個に限るものではなく、Nを1以上の任意の整数であるとすると、N個としても良い。
【0065】
[第2の変形例]
次に上記実施形態の第2の変形例について説明する。この第2の変形例の特徴は、クライアント端末20からの索引作成要求により、索引化の対象となるテキストノードの優先順位(連結する順序)が指定されている場合に、その指定された優先順位に基づいて索引化の対象となるテキストノードを順序付けして管理する点にある。
【0066】
図14は、XML文書の一例を木構造で表した図である。図中の楕円または矩形はそれぞれノードを表している。楕円で表されたノードには名前があり、楕円の中に書かれた“root”などの文字列はノード名である。一方、図中の矩形で示した末端のノードは、そのノードの親ノード(要素ノード)の要素の値(“f1”などの値)を持つテキストノードであり、“text”という固定ノード名を持つ。図14に示すXML文書の例では、ノード名が“name”のノード下、つまり“name”ノード下に、“first”ノード及び“second”ノードの対が存在する。
【0067】
第2の変形例では、索引設定管理テーブル424に、設定パスとして“name”ノードへのパス(/name)を含み、索引種別として文字列結合索引を示す情報を含む索引設定情報が登録されているものとする。この索引設定情報は、結合対象パス#1及び#2として、それぞれ“name”ノードからの相対パス「first」及び「second」を含むものとする。第2の変形例では、作成される文字列結合索引データの配列(索引データ配列)において、結合対象パス#1で指定される“first”ノード下の“text”ノードの値が、結合対象パス#2で指定される“second”ノード下の“text”ノードの値よりも優先される。これにより、各索引データは、索引データ配列において、当該索引データに含まれる“first”ノード下の“text”ノードの値によってソートされる。そのため第2の変形例では、索引設定管理テーブル424に登録される索引設定情報に、結合対象パス#1で指定される“first”ノード下の“text”ノードの値が索引データ配列において優先されることを示す情報が含まれている。
【0068】
図15は、図14に示す木構造のXML文書の登録時における上述の索引設定情報に基づく文字列結合索引作成により、索引格納部422に格納される索引データ配列のデータ構造例を示す。この図15に示す索引データ配列における各索引データは、“name”ノードの位置情報と、当該“name”ノード下で対をなす“first”ノード及び“second”ノードの両ノード下の“text”ノードの値とからなる。ここでは、“second”ノードよりも優先順位の高い“first”ノード下の“text”ノードの値で、各索引データが例えば昇順にソートされている。また、“first”ノード下の“text”ノードの値が等しい索引データは、second”ノード下の“text”ノードの値に基づいて更にソートされている。
【0069】
このため図15に示す索引データ配列では、“first”ノード下の“text”ノードの値“f1”を含む索引データが、索引データ配列における配列番号(索引データ配列番号)が小さい領域にまとまって配置され、“first”ノード下の“text”ノードの値“f2”(但し、f2>f1)を含む索引データが、索引データ配列における配列番号が大きい領域にまとまって配置されている。一方、“second”ノード下の“text”ノードの値“s1”を含む索引データ、及び“second”ノード下の“text”ノードの値“s2”を含む索引データは、索引データ配列内で分散して配置されている可能性が高い。
【0070】
次に、図15に示す索引(索引データ配列)を対象とする(図10のステップS35に相当する)索引検索処理の手順について図16のフローチャートを参照して説明する。
【0071】
まず索引管理部54の索引検索部56は、クライアント端末20からの検索要求の示すクエリによって指定される目的の値を持つ索引データ配列内の索引データのうち、配列番号が最小の位置に格納されている索引データを検索して、その配列番号を変数iに代入する(ステップS41)。次に索引検索部56は、索引データ配列のi番目の要素(索引データ)が上記クエリによって指定される検索条件を満たしているかを判定する(ステップS42)。
【0072】
もし、索引データ配列のi番目の索引データが検索条件を満たしている場合、索引検索部56は当該i番目の索引データに含まれているノード位置情報を検索結果としてデータベースサーバ10のメモリに格納する(ステップS43)。次に索引検索部56は、変数iを1インクリメントして、索引データ配列内の次の(隣接する)索引データの位置(索引データ配列番号)を指定する(ステップS44)。そして索引検索部56は、インクリメント後の変数iによって指定される索引データ配列内の索引データを対象に、検索条件を満たしているかを判定する(ステップS42)。
【0073】
第2の変形例においては、name”ノード下で対をなす“first”ノード及び“second”ノードのうちの“first”ノードが優先され、当該“first”ノード下の“text”ノードの値で、各索引データが昇順にソートされている。このため、“first”ノード下のノードの値が等しい索引データ同士は索引データ配列内で隣接している。よって、「“first”下のノードの値が“f1”と一致する。」あるいは「“first”下のノードの値が“f1”以上で且つ“f2”以下である。」といった特定の検索条件の検索処理を高速に処理することができる。このような例では、索引データ配列のi番目の索引データが検索条件を満たしていないと判定されたならば(ステップS42)、最早検索条件を満たす索引データは存在しないことから、索引検索部56は直ちに索引検索処理を終了することができる。つまり第2の変形例においては、無用な索引検索が繰り返されるのを防止できる。
【0074】
これに対し、「“second”ノード下のノードの値がある文字列と一致する。」といった検索処理はヒットする索引データが索引データ配列内で分散している可能性があるため、探索範囲が広くなり高速に処理することができない。このような検索を高速化するためには、別途、“second”ノードを“first”ノードに優先させて新たな索引を設定すれば良い。
【0075】
[第3の変形例]
次に、上記実施形態の第3の変形例について説明する。
XML文書によっては、ノードの構造だけでは値の型を特定できないことがある。検索条件で値の型が指定されている場合、このようなXML文書を高速に検索することは難しい。第3の変形例の特徴は、クライアント端末20からの索引作成要求に従う索引作成時に、ノードの値を当該要求で指定された型に変換する点にある。
【0076】
図17は、ノードの構造だけでは値の型を特定できないXML文書の一例を木構造で表した図である。図17のXML文書では、“data”ノード下に“type”ノード及び“value”ノードの対が存在する。“type”ノード下の“text”ノードは“数量”、“品名”、“出荷日”など、種類を表す値を持つ。
【0077】
これに対し、“type”ノードと対をなす“value”ノードの下の“text”ノードは、“type”ノードの値に応じた値を持つ。例えば、“type”ノード下の“text”ノードの値が“数量”ならば“value”ノード下の“text”ノードの値は整数値となる。また、“type”ノード下の“text”ノードの値が“品名”ならば“value”ノード下の“text”ノードの値は文字列となる。同様に、“type”ノード下の“text”ノードの値が“出荷日”ならば“value”ノード下の“text”ノードの値は日付となる。
【0078】
図17に示すXML文書の特徴はノードの構造だけでは値の型を特定できないことである。つまり、パス「/data/value」で指定される“value”ノード下の“text”ノードという構造を表す情報だけでは、当該“text”ノードの値が例えば整数値、文字列、日付のいずれの型であるか判別できない。
【0079】
第3の変形例では、索引作成要求で、索引用の型が指定され、その型を指定する情報(型指定情報)が当該索引作成要求に応じて索引設定管理テーブル424に登録される索引設定情報に含められる。そして、索引設定情報に基づく索引作成時に、対象となる“text”ノードの値が型指定情報に従って指定された型の値に変換される。
【0080】
以下、索引管理部54による索引作成時の型変換処理について図18のフローチャートを参照して説明する。ここでは、クライアント端末20からの索引作成要求で、設定パスとして「/data」が指定され、結合対象パス#1及び#2としてそれぞれ「type」及び「value」が指定され、更に“value”ノード下の“text”ノードの型として整数値が指定されているものとする。
【0081】
今、図17に示すXML文書の中から、結合対象パス#2によって指定されている“value”ノード下のtext”ノードの情報(値)が検出されたものとする。また、この“value”ノード下のtext”ノードの値の型として、整数値、文字列及び日付のうちの整数値が指定されているものとする。なお、値の型は、この3種に限るものではなく、例えば浮動小数点なども適用可能である。
【0082】
さて、“value”ノード下のtext”ノードの値の型として整数値が指定されている場合、索引管理部54は、ドキュメント管理部52によって検出された“value”ノード下のtext”ノードの値を、指定された型、つまり整数値に変換可能であるかを判定する(ステップS51)。
【0083】
もし、“value”ノードと対をなす“type”ノードの値が「数量」である場合、“value”ノード下のtext”ノードの値は整数値を表す文字列である。このような場合、索引管理部54は検出された“value”ノード下のtext”ノードの値を指定された型(つまり整数値)へ変換することが可能であると判定する(ステップS51)。
【0084】
次に索引管理部54は、検出された“value”ノード下のtext”ノードの値を指定された型の値に変換する(ステップS52)。ここでは、整数値を示す文字列が整数値に変換される。索引管理部54は、型変換後のtext”ノードの情報(値)を索引データ配列に追加する(ステップS53)。
【0085】
これに対し、“value”ノード下のtext”ノードの値が品名や日付を表す文字列である場合、索引管理部54は検出された“value”ノード下のtext”ノードの値を指定された型である整数値へ変換することができないと判定する(ステップS51)。この場合、索引管理部54は検出された“value”ノード下のtext”ノードの情報を索引データ配列に追加するのを抑止する(ステップS54)。
【0086】
このようにして、索引データ配列には、“value”ノード下の“text”ノードの値を数値(整数値)として扱う索引データのみが設定される。また、“value”ノードを“type”ノードに優先させるならば、索引データ配列内では、索引データが、文字列の辞書順などではなく、“value”ノード下の“text”ノードの値の数値としての大小関係に基づいて整列(ソート)される。また、索引データ内では“value”ノード下の“text”ノードの値が文字列としてではなく数値(整数値)として保持される。つまり、“text”ノードの型情報を利用して索引内部でのデータ保持方法を最適なものにできる。このため、索引データのデータ量が文字列の場合と比較して小さくなり、索引全体のデータ量を削減することができる。
【0087】
このように整列された索引データを用いて、例えば「“type”ノード下の“text”ノードの値が“数量”であり、且つ、“value”ノード下の“text”ノードの値が20以上25以下である」といった条件で検索を行うものとする。上記したように、索引データは“value”ノード下の“text”ノードの値の数値としての大小関係に基づいて整列されている。このため、ヒットする索引データは索引データ配列内で近接しており、高速に検索処理を行うことができる。
【0088】
このように第3の変形例においては、索引作成用に指定された型に基づいて、指定された型へ変換可能なノード情報のみを型変換して索引データ配列へ登録することにより、索引のデータ量を削減するとともに、検索速度を向上させることができる。更に、ノードの構造情報だけではノードの値の型を特定できないようなXML文書の検索においても、検索速度を向上させる効果がある。
【0089】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、上記実施形態またはその変形例では、構造化文書としてXML文書を例にとって説明したが、これに限るものではない。本発明は、例えば、SGML(Standard Generalized Markup Language)文書のようなXML文書以外の構造化文書にも同様に適用できる。
【0090】
また、上記実施形態またはその変形例では、クライアント端末20がネットワーク30を介して構造化文書管理システム50のデータベースサーバ10に接続されている。しかし、クライアント端末20が直接に構造化文書管理システム50のデータベースサーバ10に接続されていても構わない。また、クライアント端末20上で動作するのと同様のアプリケーションがデータベースサーバ10上で動作する構成とすることにより、当該データベースサーバ10が有するキーボード、ディスプレイ等をクライアント端末20のように用いても、つまりデータベースサーバ10をクライアント端末に兼用しても構わない。
【0091】
また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除しても良い。
【図面の簡単な説明】
【0092】
【図1】本発明の一実施形態に係る構造化文書管理システムを含むクライアント−サーバシステムのハードウェア構成を示すブロック図。
【図2】図1に示される構造化文書管理システムの主として機能構成を示すブロック図。
【図3】同実施形態における索引設定処理の手順を示すフローチャート。
【図4】2つのXML文書の例を示す図。
【図5】図4に示される2つのXML文書を木構造で表現した例を示す図。
【図6】索引設定管理テーブルの例を示す図であり、同図(a)は同実施形態で適用される索引設定管理テーブルの例を示し、同図(b)は同実施形態の第1の変形例で適用される索引設定管理テーブルの例を示す。
【図7】同実施形態における文書登録処理の手順を示すフローチャート。
【図8】図6(a)の索引設定管理テーブルに登録されている索引設定情報に従って、図5の木構造で示される2つの文書のパス「/住所」に対して作成された索引を、当該木構造と対応付けて示す図。
【図9】同実施形態で作成される索引データ配列のデータ構造の一例を示す図。
【図10】同実施形態における文書検索処理の手順を示すフローチャート。
【図11】同実施形態で適用される索引作成をモデル化して示す図。
【図12】同実施形態の第1の変形例で適用される索引作成をモデル化して示す図。
【図13】上記第1の変形例において、図6(b)の索引設定管理テーブルに登録されている索引設定情報に従って、図5の木構造で示される2つの文書のパス「/住所」に対して作成された索引を、当該木構造と対応付けて示す図。
【図14】同実施形態の第2の変形例で適用されるXML文書の一例を木構造で表した図。
【図15】上記第2の変形例で作成される索引データ配列のデータ構造の一例を示す図。
【図16】上記第2の変形例における索引検索処理の手順を示すフローチャート。
【図17】同実施形態の第3の変形例で適用されるXML文書の一例を木構造で表しす図。
【図18】上記第3の変形例における索引作成時の型変換処理の手順を示すフローチャート。
【符号の説明】
【0093】
10…データベースサーバ、20…クライアント端末、30…ネットワーク、40…外部記憶装置、41…データベース管理プログラム、42…XMLデータベース、51…コマンド管理部、52…ドキュメント管理部(タグ検出手段)、53…検索エンジン(構造化文書検索手段)、54…索引管理部、55…データベース操作部、56…索引検索部、421…XML文書格納部(構造化文書格納手段)、422…索引格納部、423…索引設定管理テーブル格納部、424…索引設定管理テーブル。

【特許請求の範囲】
【請求項1】
複数の構造化文書を管理する構造化文書管理システムにおいて、
複数の構造化文書を格納する構造化文書格納手段と、
前記構造化文書格納手段に格納されている構造化文書を検索するのに用いられる索引データを格納する索引格納手段と、
文字列結合索引データの作成を指示するための外部から与えられる索引作成要求であって、作成された文字列結合索引データが付与されるタグを指定する索引作成要求に基づき、前記構造化文書格納手段に新たに格納されるまたは既に格納されている構造化文書から当該索引作成要求で指定されたタグを検出するタグ検出手段と、
前記タグ検出手段によって検出されたタグを有する前記構造化文書に含まれている当該タグ以下に出現する複数のテキストノードの値を連結して索引化し、当該タグに付与される文字列結合索引データとして前記索引格納手段に格納する索引管理手段と
を具備することを特徴とする構造化文書管理システム。
【請求項2】
外部から与えられる検索要求の示す検索条件を満たす文字列結合索引データを前記索引格納手段から検索する索引検索手段と、
前記索引検索手段によって検索された文字列結合索引データを利用して構造化文書検索を行う構造化文書検索手段と
を更に具備することを特徴とする請求項1記載の構造化文書管理システム。
【請求項3】
前記索引管理手段は、前記索引作成要求が、当該要求で指定されるタグ以下に出現する全てのテキストノードのうち索引化の対象とすべき複数のテキストノードを指定する情報を含む場合、当該指定する情報で指定された複数のテキストノードの値だけを連結して索引化することを特徴とする請求項1記載の構造化文書管理システム。
【請求項4】
前記索引管理手段は、前記索引作成要求が、索引化の対象とすべき複数のテキストノードの優先順位を指定する情報を含む場合、構造化文書毎に作成されて前記索引格納手段に格納される文字列結合索引データを、当該索引格納手段内で、当該優先順位が高いテキストノードの値を優先させて整列させることを特徴とする請求項3記載の構造化文書管理システム。
【請求項5】
前記索引管理手段は、前記索引作成要求が、索引化の対象とすべきテキストノードの値の型を指定する情報を含み、且つ索引化の対象とすべきテキストノードの値を示す文字列を指定された型の値に変換可能である場合に限り、当該指定された型の値への変換を行って、その変換後のテキストノードの値を前記索引格納手段に追加することを特徴とする請求項3記載の構造化文書管理システム。
【請求項6】
構造化文書格納手段に格納されている複数の構造化文書、及び前記構造化文書格納手段に格納されている構造化文書を検索するのに用いられ、索引格納手段に格納されている索引データを管理する管理するデータベースサーバに、
文字列結合索引データの作成を指示するための外部から与えられる索引作成要求であって、作成された文字列結合索引データが付与されるタグを指定する索引作成要求を受け付けるステップと、
前記索引作成要求に基づき、前記構造化文書格納手段に新たに格納されるまたは既に格納されている構造化文書から当該索引作成要求で指定されたタグを検出するステップと、
前記検出されたタグを有する前記構造化文書に含まれている当該タグ以下に出現する複数のテキストノードの値を連結して索引化し、当該タグに付与される文字列結合索引データとして前記索引格納手段に格納するステップと
実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate