(57)【要約】【課題】  バイナリ形式の構造化文書に対するより高速な検索処理を実現するための技術を提供すること。【解決手段】  検索式変換部１１２は、構造化文書１４２に対する検索式を構成するそれぞれのノードを、ボキャブラリ一覧表１４１を用いて対応するインデックスに変換することで、この検索式を変換する。文書解析部１１９は、構造化文書１４２を構成するそれぞれのノードに対応するインデックスを、ボキャブラリ一覧表１４１を用いて特定する。検索式評価部１１５は、変換後の検索式に該当する構造化文書１４２中の一部を、変換後の検索式中に記されているそれぞれのインデックスと、文書解析部１１９が特定したそれぞれのノードに対応するインデックスと、を用いて検索する。【選択図】  図１
2010250449.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書中に使用可能なそれぞれのノードと、それぞれのノードに固有のインデックスと、が登録されているテーブルを保持する手段と、
バイナリ形式で記述されている検索対象構造化文書を取得する手段と、
前記検索対象構造化文書に対する検索式を取得する取得手段と、
前記検索式を構成するそれぞれのノードを、前記テーブルを用いて対応するインデックスに変換することで、前記検索式を変換する変換手段と、
前記検索対象構造化文書を構成するそれぞれのノードに対応するインデックスを、前記テーブルを用いて特定する特定手段と、
前記変換手段による変換後の検索式に該当する前記検索対象構造化文書中の一部を、前記変換手段による変換後の検索式中に記されているそれぞれのインデックスと、前記特定手段が特定した前記検索対象構造化文書中のそれぞれのノードに対応するインデックスと、を用いて検索する検索手段と、
前記検索手段による検索結果を出力する手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記検索対象構造化文書は、ISOのFast Infoset、W3CのEfficient XML Interchange仕様で定義されたバイナリＸＭＬ形式の構造化文書であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記検索式はＷ３ＣのＸＰａｔｈ言語で記述されており、
前記変換手段は、前記取得手段が取得した検索式をロケーションステップ毎に分割し、それぞれのロケーションステップ毎に対応するインデックスを前記テーブルから取得し、それぞれのロケーションステップを対応するインデックスとセットにしたテーブルを変換後の検索式として求めることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
更に、
前記テーブルを前記検索対象構造化文書が取得された後に作成する作成手段を備えることを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
バイナリ形式で記述されている検索対象構造化文書を取得する工程と、
前記検索対象構造化文書に対する検索式を取得する取得工程と、
構造化文書中に使用可能なそれぞれのノードと、それぞれのノードに固有のインデックスと、が登録されているテーブルを用いて、前記検索式を構成するそれぞれのノードを対応するインデックスに変換することで、前記検索式を変換する変換工程と、
前記検索対象構造化文書を構成するそれぞれのノードに対応するインデックスを、前記テーブルを用いて特定する特定工程と、
前記変換工程による変換後の検索式に該当する前記検索対象構造化文書中の一部を、前記変換工程による変換後の検索式中に記されているそれぞれのインデックスと、前記特定工程で特定した前記検索対象構造化文書中のそれぞれのノードに対応するインデックスと、を用いて検索する検索工程と、
前記検索工程による検索結果を出力する工程と
を備えることを特徴とする情報処理方法。
【請求項６】
コンピュータを、請求項１乃至４の何れか１項に記載の情報処理装置が有する各手段として機能させるためのコンピュータプログラム。
【請求項７】
請求項６に記載のコンピュータプログラムを格納した、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バイナリ形式で記述された構造化文書に対する検索技術に関するものである。
【背景技術】
【０００２】
構造化文書を記述する言語として、標準化団体であるW3Cが仕様を策定しているXML言語がある。XML言語を使用することにより、要素、属性、名前空間などの構成部品（ノード）を使って構造化された文書を記述することがでる。
【０００３】
XML言語で記述された文書はテキスト形式であるが、同じ文書をバイナリ形式で表現するバイナリXML技術と呼ばれる技術がある。代表的な形式としては、ITU-Tで標準化されているFast infoset (ITU-T X.891)形式（非特許文献１）や、W3Cで仕様策定中のEfficient XML Interchange形式がある。これらのバイナリXML技術では、ボキャブラリテーブル、ノードのデータ型情報を使用して、テキスト形式のXML言語で記述された文書をより小さいサイズで表現することができる。
【０００４】
一方、XML形式の文書において特定の部分を指定し、検索や抽出を行う技術として、W3Cで仕様が策定されているXML Path Language (XPath)仕様がある（非特許文献２）。XPath仕様では、XML形式の文書を要素、属性、テキストなどのノードで構成されるツリー構造と考え、検索式をロケーションステップと呼ばれる文字列として記述する。
【０００５】
ロケーションステップは、ノードを指定する軸とノードテスト、ノードの値などで絞り込み条件を指定する述語で構成される。述語には、「テキストノードがもつ文字列データが、特定の文字列と一致する」などの文字列比較の条件を指定することが可能である。また、この述語記述における文字列比較を高速化する技術が既に提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２４９７７３号公報
【非特許文献】
【０００７】
【非特許文献１】ITU-T Rec. X.891 | ISO/IEC 24824-1 (Fast Infoset)
【非特許文献２】XML Path Language (XPath) Version 1.0 W3C Recommendation 16 November 1999
【発明の概要】
【発明が解決しようとする課題】
【０００８】
バイナリXML形式の構造化文書の一部を利用するプログラムは、テキストXML形式の構造化文書と同様、XPathで記述した検索式を、XMLパーサなどXML文書を解析するプログラムに指定して抽出することができた。XPathで記述された検索式では、要素、属性などのノードの名前がテキストで記述されている。そのため、XML文書を解析するプログラムは、バイナリXML形式の場合もテキストXML形式の場合と同様、解析結果のノードの名前と検索式内のノードの名前を文字列比較することで、条件の一致・不一致を検査する。
【０００９】
このように、XPathで記述された検索式でバイナリXML形式の構造化文書を検索する処理では、多数の文字列比較処理を行う必要があり、これは計算コストが高い。バイナリXML形式を使うプログラムは、一般に解析処理の高速化を一つの目的としている。
【００１０】
本発明は以上の問題に鑑みて成されたものであり、バイナリ形式の構造化文書に対するより高速な検索処理を実現するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。即ち、構造化文書中に使用可能なそれぞれのノードと、それぞれのノードに固有のインデックスと、が登録されているテーブルを保持する手段と、バイナリ形式で記述されている検索対象構造化文書を取得する手段と、前記検索対象構造化文書に対する検索式を取得する取得手段と、前記検索式を構成するそれぞれのノードを、前記テーブルを用いて対応するインデックスに変換することで、前記検索式を変換する変換手段と、前記検索対象構造化文書を構成するそれぞれのノードに対応するインデックスを、前記テーブルを用いて特定する特定手段と、前記変換手段による変換後の検索式に該当する前記検索対象構造化文書中の一部を、前記変換手段による変換後の検索式中に記されているそれぞれのインデックスと、前記特定手段が特定した前記検索対象構造化文書中のそれぞれのノードに対応するインデックスと、を用いて検索する検索手段と、前記検索手段による検索結果を出力する手段とを備えることを特徴とする。
【発明の効果】
【００１２】
本発明の構成によれば、バイナリ形式の構造化文書に対するより高速な検索処理を実現することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態に係る情報処理装置としての文書検索装置のハードウェア構成例を示すブロック図である。
【図２】バイナリＸＭＬ形式の構造化文書１４２をテキストＸＭＬ形式として記述した構造化文書の構成例を示す図である。
【図３】ボキャブラリ一覧表１４１の構成例を示す図である。
【図４】図２に示したテキストＸＭＬ形式の構造化文書を、ボキャブラリ一覧表１４１を用いて、バイナリＸＭＬ形式の一仕様であるFast Infoset形式に変換した構造化文書１４２の構成例を示す図である。
【図５】図２に示したテキストＸＭＬ形式の構造化文書を、ボキャブラリ一覧表１４１を用いて、バイナリＸＭＬ形式の一仕様であるFast Infoset形式に変換した構造化文書１４２の構成例を示す図である。
【図６】Ｗ３ＣのＸＰａｔｈ言語で記述された検索式と、この検索式をインデックスを用いて変換した結果を示す図である。
【図７】文書検索装置１００が行う構造化文書１４２に対する検索処理のフローチャートである。
【図８】ステップＳ７０７における処理の詳細を示すフローチャートである。
【図９】本発明の第２の実施形態に係る情報処理装置としての文書検索装置９００のハードウェア構成例を示すブロック図である。
【図１０】文書検索装置９００が構造化文書１４２について行う検索処理のフローチャートである。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１５】
［第１の実施形態］
図１は、本実施形態に係る情報処理装置としての文書検索装置のハードウェア構成例を示すブロック図である。図１には、以下の説明において主要な構成を示しており、本実施形態で説明する技術を実現可能な装置の構成は、図１に示した構成に限らない。
【００１６】
図１に示す如く、文書検索装置１００は、ＣＰＵ１３０、メモリ１１０、を有している。更に、文書検索装置１００には、ケーブルを介して記憶装置１４０が接続されており、文書検索装置１００はこのケーブルを介して記憶装置１４０に対して読み書きを行うことができる。
【００１７】
記憶装置１４０は、ハードディスクドライブ装置に代表される、大容量情報記憶装置である。記憶装置１４０には、検索対象としてのバイナリ形式の構造化文書１４２（検索対象構造化文書）、構造化文書１４２中（検索対象構造化文書中）に登場するノード毎にその名称とインデックスとが登録されているボキャブラリ一覧表１４１、が格納されている。
【００１８】
構造化文書１４２についてはより詳しくは、ISOのFast Infoset、W3CのEfficient XML Interchange仕様で定義されたバイナリＸＭＬ形式の構造化文書である。また、ノードとは、構造化文書１４２を構成する要素、属性等の文書単位を指す。なお、ボキャブラリ一覧表１４１に登録可能なノードの名称は、構造化文書１４２中に使用されているノードの名称に加え、一般に構造化文書中で使用可能なノードであれば、そのようなノードの名称とインデックスとを登録しても良い。
【００１９】
図３は、ボキャブラリ一覧表１４１の構成例を示す図である。３０２は、構造化文書１４２中に登場するそれぞれのノードの名称が登録されている領域、３０１は、それぞれのノードに固有（構造化文書１４２中で固有）のインデックスが登録されている領域である。即ち、ボキャブラリ一覧表１４１には、ノードの名称と、このノードに固有のインデックスのセット（エントリ）が、それぞれのノードについて登録されている。
【００２０】
図２は、バイナリＸＭＬ形式の構造化文書１４２をテキストＸＭＬ形式として記述した構造化文書の構成例を示す図である。図４，５は、図２に示したテキストＸＭＬ形式の構造化文書を、ボキャブラリ一覧表１４１を用いて、バイナリＸＭＬ形式の一仕様であるFast Infoset形式に変換した構造化文書１４２の構成例を示す図である。
【００２１】
Fast Infoset形式では、構造化文書は、各ノードの開始、終了を表すバイナリ表現の記号と、各ノードの値を表すバイナリ列で表現される。図４、５では、説明のため、それらのバイナリ表現を以下のように記述している。
【００２２】
[ノードの開始記号（パラメータ）]ノードの値
[ノードの終了記号]
Fast Infosetでは、ボキャブラリ一覧表１４１を使って、ノードの名称をインデックスに置き換えることができるが、インデックス化せず、ノード名をそのまま記述することも可能である。図４は、完全にノードの名称がインデックスに置き換えられた構造化文書の構成例、図５は、一部にノードの名称が残されている構造化文書の構成例を示している。
【００２３】
記憶装置１４０に格納されている構造化文書１４２、ボキャブラリ一覧表１４１はそれぞれ、ＣＰＵ１３０による制御に従って適宜メモリ１１０にロードされ、ＣＰＵ１３０による処理対象となる。
【００２４】
メモリ１１０は、ＲＡＭに代表される、読み書き可能なメモリであり、以下に説明する各部がコンピュータプログラムの形態でもって格納されている。なお、メモリ１１０に格納されているものとして説明する以下の各部は、記憶装置１４０に格納されていても良く、その場合であっても、動作時にはＣＰＵ１３０による制御に従ってメモリ１１０にロードされることになる。
【００２５】
検索式変換要求受付部１１１は、アプリケーションプログラム等を介して、構造化文書１４２に対する検索式を取得する。これにより検索式変換要求受付部１１１は、この検索式を変換するための要求（変換要求）を取得したことになる。
【００２６】
インデックス取得部１１３は、ボキャブラリ一覧表１４１に登録されているインデックスを取得し、検索式変換部１１２に供給する。検索式変換部１１２は、検索式変換要求受付部１１１が検索式を取得した場合には、この検索式を、インデックス取得部１１３から供給されたインデックスを用いて変換する。
【００２７】
検索要求受付部１１８は、アプリケーションプログラム等を介して、構造化文書１４２に対する検索式を取得することで、検索要求を取得する。なお、この検索式は、検索式変換部１１２が変換したものである。
【００２８】
文書読込部１２０は、構造化文書１４２を読み出す。文書解析部１１９は、文書読込部１２０が読み出した構造化文書１４２を解析し、構造化文書１４２中に記されているそれぞれのノードを特定する。
【００２９】
ノード名変換部１１７は、文書解析部１１９が構造化文書１４２を解析した結果、名称がインデックスに置き換えられていないノードが構造化文書１４２から見つけた場合には、ボキャブラリ一覧表１４１を参照し、この名称を対応するインデックスに変換する。
【００３０】
ノードイベント通知部１１６は、文書解析部１１９による解析結果をイベントとして検索式評価部１１５に通知する。検索式評価部１１５は、検索要求受付部１１８が取得した検索式の評価を、ノードイベント通知部１１６から受けたイベントに基づいて行う。検索結果通知部１１４は、検索式評価部１１５による評価結果を出力（通知）する。
【００３１】
なお、メモリ１１０には、これ以外にも、既知の情報として以下に説明するものも登録されている。また、メモリ１１０は、ＣＰＵ１３０が各種の処理を実行する際に用いるワークエリアも有する。即ち、メモリ１１０は、各種のエリアを適宜提供することができる。
【００３２】
次に、文書検索装置１００が行う構造化文書１４２に対する検索処理について、同処理のフローチャートを示す図７を用いて以下に説明する。なお、以下では説明上、メモリ１１０に格納されているものとして上述した各部を処理の主体とする。しかし、上述の通り、メモリ１１０に格納されているこれら各部は何れもコンピュータプログラムの形態でもってメモリ１１０に格納されており、ＣＰＵ１３０がこれらのコンピュータプログラムを実行するので、実際には、ＣＰＵ１３０が処理の主体である。
【００３３】
先ず、ステップＳ７０１では、検索式変換要求受付部１１１は、検索式と、ボキャブラリ一覧表の名称（本実施形態ではボキャブラリ一覧表１４１のファイル名）と、をアプリケーションプログラム等から取得することで、検索要求を取得する。なお、検索式とボキャブラリ一覧表１４１のファイル名の取得形態については特に限定するものではない。そして、ステップＳ７０２では、検索式変換要求受付部１１１は、取得したボキャブラリ一覧表１４１のファイル名と、検索式と、を後段の検索式変換部１１２に送出する。
【００３４】
次に、ステップＳ７０３では、検索式変換部１１２は、ステップＳ７０２で検索式変換要求受付部１１１から受けた検索式中に記されているそれぞれのノードの名称を抽出する。そして検索式変換部１１２は、抽出したそれぞれのノードの名称を、同じくステップＳ７０２で検索式変換要求受付部１１１から受けたボキャブラリ一覧表１４１のファイル名と共に、後段のインデックス取得部１１３に送出する。
【００３５】
次に、ステップＳ７０４では、インデックス取得部１１３は、検索式変換部１１２から受けたボキャブラリ一覧表１４１の名称を用いて記憶装置１４０からボキャブラリ一覧表１４１を特定する。そして特定したボキャブラリ一覧表１４１を参照し、検索式変換部１１２から受けたそれぞれのノードの名称に対応するインデックスを、このボキャブラリ一覧表１４１から取得する。そしてインデックス取得部１１３は、この取得した「それぞれのノードの名称に対応するインデックス」を検索式変換部１１２に返す。
【００３６】
次に、ステップＳ７０５では、検索式変換部１１２は、インデックス取得部１１３から受けたそれぞれのインデックスを用いて、検索式変換要求受付部１１１から受けた検索式を変換する。ここで、インデックスを用いた検索式の変換について説明する。
【００３７】
図６は、Ｗ３ＣのＸＰａｔｈ言語で記述された検索式と、この検索式をインデックスを用いて変換した結果を示す図である。図６（ａ）には、「／ｂｏｏｋｌｉｓｔ／ｂｏｏｋ／ｔｉｔｌｅ」という検索式を示している。
【００３８】
検索式変換要求受付部１１１がこのような検索式を取得し、後段の検索式変換部１１２に送出した場合、検索式変換部１１２は先ず、Ｗ３ＣのＸＰａｔｈ言語で記述されたこの検索式を、ロケーションステップという検索単位に分割する。図６（ａ）の場合、この検索式を「ｂｏｏｋｌｉｓｔ」、「ｂｏｏｋ」、「ｔｉｔｌｅ」という３つのロケーションステップに分割する。ここで、ロケーションステップは、軸とよばれる構造化文書内のノードの検索方向、ノードテストとよばれるノードの種類の指定、述語とよばれる絞り込みのための選択条件、から構成される。
【００３９】
従って検索式変換部１１２は、図３に例示したボキャブラリ一覧表１４１を参照した場合には次のように動作する。即ち、ロケーションステップ毎に、ノードテストの値である文字列（ｂｏｏｋｌｉｓｔ、ｂｏｏｋ、ｔｉｔｌｅ）に対応するインデックス(EII)を、ボキャブラリ一覧表１４１から取得する。そして検索式変換部１１２は、それぞれのロケーションステップについて、取得したインデックスを用いて図６（ｂ）に例示するテーブル形式の情報を、変換後の検索式として作成する。
【００４０】
図６（ｂ）において、領域６０１には、それぞれのロケーションステップに固有の番号（ロケーションステップ番号）が登録されている。ロケーションステップ番号は、検索順番を示すものである。領域６０２には、それぞれのロケーションステップの軸が登録されている。領域６０３には、それぞれのロケーションステップのノードテストの値が登録されている。領域６０４には、それぞれのロケーションステップの述語が登録されている。
【００４１】
図６（ｃ）には、「／／ｂｏｏｋ／ｐｒｉｃｅ［ｎｕｍｂｅｒ（）＞２０００］」という検索式を示している。検索式変換要求受付部１１１がこのような検索式を取得し、後段の検索式変換部１１２に送出した場合、検索式変換部１１２は先ず、Ｗ３ＣのＸＰａｔｈ言語で記述されたこの検索式を、ロケーションステップという検索単位に分割する。図６（ｃ）の場合、この検索式を「ｂｏｏｋ」、「ｐｒｉｃｅ」という２つのロケーションステップに分割する。
【００４２】
そして検索式変換部１１２は、図３に例示したボキャブラリ一覧表１４１を参照した場合には、次のように動作する。即ち、ロケーションステップ毎に、ノードテストの値である文字列（book、ｐｒｉｃｅ）に対応するインデックス(EII)を、このボキャブラリ一覧表１４１から取得する。そして検索式変換部１１２は、それぞれのロケーションステップについて、取得したインデックスを用いて図６（ｄ）に例示するテーブル形式の情報を、変換後の検索式として作成する。
【００４３】
図６（ｄ）において、領域６１１には、それぞれのロケーションステップのロケーションステップ番号が登録されている。領域６１２には、それぞれのロケーションステップの軸が登録されている。領域６１３には、それぞれのロケーションステップのノードテストの値が登録されている。領域６１４には、それぞれのロケーションステップの述語が登録されている。
【００４４】
なお、図６では、変換対象の文字列として要素ノードの要素名のみを対象としているが、Fast Infoset形式では、属性名、名前空間URI、名前空間プレフィックスなどの文字列もボキャブラリ一覧表で管理することができる。これにより、検索式のロケーションステップに、要素ノード以外の属性ノード、名前空間ノードに関する記述があった場合も、同様な変換を行うことができる。そして検索式変換部１１２は、変換した検索式を、検索式変換要求受付部１１１に送出する。
【００４５】
図７に戻って、次に、ステップＳ７０６では、検索式変換要求受付部１１１は、検索式変換部１１２から受けた変換済みの検索式を出力する。出力先については特に限定するものではないが、この検索式は後に検索のためにユーザが本装置に対して入力するものであるので、ユーザが取り扱い可能に記憶装置１４０やメモリ１１０に保持しておくことが好ましい。
【００４６】
次に、ステップＳ７０７では、この変換済みの検索式を用いて、構造化文書１４２において該当する一部を検索するための処理を行う。図８は、ステップＳ７０７における処理の詳細を示すフローチャートである。
【００４７】
先ず、本装置のユーザは、不図示のキーボードやマウスを用いて、本装置に対して、検索式と、この検索式を用いて検索する対象の構造化文書のファイル名と、ボキャブラリ一覧表のファイル名と、を入力する。
【００４８】
従って、ステップＳ８０１では、検索要求受付部１１８は、この入力されたそれぞれを取得する。なお、本実施形態では、入力された検索式は、上記ステップＳ７０１〜ステップＳ７０６による処理でもって変換された検索式である。また、入力された構造化文書のファイル名は、構造化文書１４２のファイル名であるとする。また、入力されたボキャブラリ一覧表のファイル名は、ボキャブラリ一覧表１４１のファイル名であるとする。
【００４９】
次に、ステップＳ８０２では、検索要求受付部１１８は、入力された検索式を、検索式評価部１１５に送出する。次に、ステップＳ８０３では、検索要求受付部１１８は、入力されたボキャブラリ一覧表１４１のファイル名、構造化文書１４２のファイル名を、文書解析部１１９に送出する。そして、ステップＳ８０４〜ステップＳ８１７の処理を、構造化文書１４２を構成するそれぞれの部分について行う。
【００５０】
ステップＳ８０５では、文書解析部１１９は、検索要求受付部１１８から受けた構造化文書１４２のファイル名を文書読込部１２０に送出するので、文書読込部１２０は、このファイル名で特定される構造化文書１４２において次の部分を読み出す。本ステップにおける処理を最初に実行する場合には、構造化文書１４２において最初の部分を読み出す。なお、「次の部分」とは、例えば、文書読込部１２０が、文書読み込み用のバッファ領域に格納することができる構造化文書の未読部分のことである。
【００５１】
なお、本ステップにおいて読み出す部分がもうない場合には、処理はステップＳ８０６を介して終了する。一方、次の部分の読み出しに成功した場合には、処理はステップＳ８０６を介してステップＳ８０７に進む。
【００５２】
次に、ステップＳ８０７では、文書解析部１１９は、文書読込部１２０が読み出した部分を解析し、次のノードを抽出する。そして、ステップＳ８０８では、文書解析部１１９は、この抽出したノードを参照し、インデックスに変換されているか否かを判断する。なお、インデックスに変換されている場合には、Fast Infosetでは、図４、図５の要素開始の記号（EII）に記述されているので、この記述があるか否かをステップＳ８０８で判断すればよい。
【００５３】
係る判断の結果、インデックスに変換されている場合には処理はステップＳ８０９に進む。一方、インデックスに変換されていない場合には、処理はステップＳ８１３に進む。
【００５４】
ステップＳ８１３では、文書解析部１１９は、検索要求受付部１１８から受けたボキャブラリ一覧表１４１のファイル名と、ステップＳ８０７において抽出したノードの名称と、をノード名変換部１１７に送出する。
【００５５】
ステップＳ８１４では、ノード名変換部１１７は、文書解析部１１９から受けたファイル名で特定されるボキャブラリ一覧表１４１を参照し、同じく文書解析部１１９から受けたノードの名称に対応するインデックスを特定する。そしてノード名変換部１１７は、この特定したインデックスを文書解析部１１９に送出する。
【００５６】
次に、ステップＳ８０９では、文書解析部１１９は、ステップＳ８０７において抽出したノードのノード情報と、このノードのインデックスと、をノードイベント通知部１１６に送出する。なお、ノード情報とは、要素の名前空間定義、要素内容として定義されている文字列データの内容、親要素、属性の値などを指す。ノードイベント通知部１１６は、文書解析部１１９から受けた情報をイベントとして検索式評価部１１５に送出する。
【００５７】
次に、ステップＳ８１０では、検索式評価部１１５は、ステップＳ８０２において検索要求受付部１１８から受けた検索式と、ノードイベント通知部１１６を介して文書解析部１１９から受けたインデックスと、を比較することで、検索処理を行う。例えば検索式評価部１１５は、ステップＳ８０２で図６（ａ）に示した検索式を受け、ステップＳ８０９で１，２，３の順でインデックスを受けた場合、このインデックスのノードが検索対象としてヒットした（検索式に記述された条件を満たした）と判断する。
【００５８】
ステップＳ８１０における比較の結果、検索式に記述された条件を満たしたと判断した場合には、処理はステップＳ８１１を介してステップＳ８１５に進む。一方、検索式に記述された条件は満たしていないと判断した場合には、処理はステップＳ８１１を介してステップＳ８１７に進み、次の部分について以降の処理を行う。
【００５９】
ステップＳ８１５では、検索式評価部１１５は、検索にヒットしたノードのノード情報を、検索結果通知部１１４に送出する。そしてステップＳ８１６では、検索結果通知部１１４は、検索式評価部１１５から受けたノード情報から、検索結果通知イベントを作成し、作成した検索結果通知イベントを出力する。この出力先については特定に限定するものではないが、例えば、文書検索装置１００が有する不図示の表示装置上にこのノード情報を表示するようなアプリケーションプログラムに対して、この検索結果通知イベントを送出するようにしても良い。
【００６０】
なお、検索式が図６（ａ）、（ｃ）に示すようにXPathで記述されていた場合、その検索結果は、ノードの集合、真偽（ブール）値、数値、文字列のいずれかのデータ型になる。検索結果通知イベントの形式については、本装置のユーザと検索結果通知部１１４との間の事前の取り決めによる。例えば、Ｃ言語で記述されたプログラムの場合、本装置のユーザが定義した関数を検索式評価部１１５が呼び出し、検索結果のデータ型の戻り値として受け渡すなどの方法が考えられる。
【００６１】
［第２の実施形態］
第１の実施形態では、ボキャブラリ一覧表１４１は、予め作成され、記憶装置１４０に保持されておいた。しかしながら、Fast Infoset形式などでは、構造化文書１４２の解析時に、あらかじめスキーマ定義などから作成したボキャブラリ一覧表を参照せず、動的にボキャブラリ一覧表を生成しながら解析することが可能である。
【００６２】
本実施形態では、第１の実施形態に係る文書検索装置１００に、ボキャブラリ一覧表１４１を作成するための構成を加えたものを説明する。図９は、本実施形態に係る情報処理装置としての文書検索装置９００のハードウェア構成例を示すブロック図である。図９に示す如く、文書検索装置９００は、図１に示した構成に、ボキャブラリ一覧表１４１を生成するためのボキャブラリ一覧表生成部９１４を加えた構成を有する。なお、図９において図１に示した構成用件と同じ構成用件については同じ参照番号を付けており、その説明は省略する。
【００６３】
図１０は、文書検索装置９００が構造化文書１４２について行う検索処理のフローチャートである。先ず、ステップＳ１００１では、検索式変換要求受付部１１１は、検索式と、構造化文書１４２のファイル名と、をアプリケーションプログラム等から取得することで、検索要求を取得する。なお、検索式と構造化文書１４２のファイル名の取得形態については特に限定するものではない。そしてステップＳ１００２では、検索式変換要求受付部１１１は、取得した構造化文書１４２のファイル名を、後段のボキャブラリ一覧表生成部９１４に送出する。
【００６４】
次に、ステップＳ１００３では、ボキャブラリ一覧表生成部９１４は、検索式変換要求受付部１１１から受けたファイル名を文書読込部１２０に送出するので、文書読込部１２０は、このファイル名で特定される構造化文書１４２を読み出す。そして文書読込部１２０は、この読み出した構造化文書１４２をボキャブラリ一覧表生成部９１４に送出する。
【００６５】
次に、ステップＳ１００４では、ボキャブラリ一覧表生成部９１４は、構造化文書１４２を解析し、要素ノード、属性ノード、名前空間ノードなどのノード定義を取得する。次に、ステップＳ１００５では、ボキャブラリ一覧表１４１は、要素ノードや属性ノードのノード名、名前空間ノードの名前空間URIや名前空間プレフィックスを、ボキャブラリ一覧表１４１に登録する。
【００６６】
次に、ステップＳ１００６では、ボキャブラリ一覧表生成部９１４は、ステップＳ１００５において作成したボキャブラリ一覧表１４１のファイル名を発行し、発行したファイル名を、検索式変換要求受付部１１１に送出する。ステップＳ１００７以降の各ステップについては、図７のステップＳ７０２以降の各ステップと同じであるので、説明は省略する。
【００６７】
以上の各実施形態により、検索式を使って、バイナリXML技術などで圧縮された構造化文書内の特定の部分を検索する際の文字列比較処理を少なくすることが可能になる。その結果、圧縮された構造化文書の、特定の部分の検索、抽出処理を高速化する。この効果は、検索式に、要素名・属性名など多数のノード名が記述されているとき、および検索対象の文書サイズが大きいときに特に効果がある。
【００６８】
［その他の実施形態］
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムをコンピュータ（またはＣＰＵやＭＰＵ）が読出し実行することによっても、達成される。この場合、プログラムは図示したフローの手順を実現するためのものを含む。
【図１】
2010250449.tif 000003
【図２】
2010250449.tif 000004
【図３】
2010250449.tif 000005
【図４】
2010250449.tif 000006
【図５】
2010250449.tif 000007
【図６】
2010250449.tif 000008
【図７】
2010250449.tif 000009
【図８】
2010250449.tif 000010
【図９】
2010250449.tif 000011
【図１０】
2010250449.tif 000012