(57)【要約】【課題】要素毎に、その要素に適した種別の索引を構築することにより、良好な更新検索性能を維持しながら検索の厳密性を維持することができるようにする。【解決手段】データ検索部１６内の検索式処理部は、外部から与えられる検索式を解析して検索条件を抽出し、その検索条件に合致する検索結果の候補の集合を取得する。索引管理部１５内の値抽出部は、構造化文書ＤＢ２１に格納された構造化文書に含まれる各要素毎に、当該要素に対して適用された検索条件の履歴を取得する。索引管理部１５内の索引種別決定部は、索引を付与すべき、構造化文書に含まれる各要素毎に、当該要素に対して適用された検索条件の履歴において最も多い検索種別に基づいて索引種別を決定する。索引管理部１５内の索引構築部は、索引種別決定部によって決定された索引種別の索引を構築して、Ｎグラム索引ＤＢ２２、単語索引ＤＢ２３またはＢ木索引ＤＢ２４に格納する。【選択図】      図１
2008198237.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書格納手段に格納された構造化文書の検索を高速化するために、構造化文書の索引を構築して索引格納手段に格納する構造化文書管理システムにおいて、
索引を付与すべき、構造化文書に含まれる各要素毎に、Ｎグラム索引及び形態素解析による単語索引を含む複数の索引種別から、当該要素に基づいて索引種別を決定する索引種別決定手段と、
前記索引種別決定手段によって前記索引種別として前記単語索引が決定された場合、当該単語索引を構築するために対応する要素の値を形態素解析し、その解析結果に複数通りの解釈を持つ表記が含まれる場合、単語索引に代えて、Ｎグラム索引を構築して前記索引格納手段に格納する索引構築手段と
を具備することを特徴とする構造化文書管理システム。
【請求項２】
前記索引構築手段は、前記索引種別決定手段によって前記索引種別として前記単語索引が決定された場合、当該単語索引を構築するために対応する要素の値を形態素解析し、その解析結果に、意味は同じであるが表記が異なる単語が含まれている場合、いずれかの表記に統一して単語索引を構築することを特徴とする請求項１記載の構造化文書管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化文書格納手段に格納された構造化文書の検索を高速化するために、構造化文書の索引を構築して索引格納手段に格納するのに好適な、構造化文書管理システムに関する。
【背景技術】
【０００２】
近年、ＸＭＬ(Extensible Markup Language)に代表される、論理構造を有する構造化文書が普及している。構造化文書は、一般にディスク（ディスクドライブ）に配置されたデータベースに蓄積して利用される。
【０００３】
また、構造化文書の普及に伴い、１つまたは複数の構造化文書が蓄積されたデータベースから、ユーザの指定する検索条件に合致した文書または要素、属性、値などの情報を検索する情報検索システムが種々開発されている。この種の情報検索システムでは、検索対象の文書、更には文書内の要素や値などに、索引が付与されるのが一般的である（例えば、特許文献１参照）。
【０００４】
情報検索システムにおける構造化文書の検索では、構造、値またはそれらの組み合わせによる検索が行われる。この検索に適用される索引技術として、例えばＮグラム（Ｎ−ｇｒａｍ）を用いた索引技術（Ｎグラム索引技術）と、形態素解析を用いた索引技術（形態素索引技術）とが知られている。
【０００５】
Ｎグラム索引技術：
この技術では、文字列（値）の先頭から１文字ずつずらしながら、当該文字列を順にＮ文字（Ｎグラム）に区切り、この区切りにより生成された、それぞれＮ文字以下の文字列毎に索引（索引レコード）が作成される。これにより、例えばＮ＝２で、値が“あいうえお”の場合であれば、“あ”／“あい”／“いう”／“うえ”／“えお”／“お”の６種類の索引（索引レコード）が作成される。この索引に対して、例えば“うえお”の部分文字列を含む値を検索する場合、まず索引をもとに、“うえ”と“えお”の位置を探索して、当該“うえ”と“えお”を含む文書と文書内の位置を特定し、それらが含まれる値の共通集合を検索結果の候補とする。
【０００６】
形態素解析索引技術：
この技術では、値（文字列）から単語が抽出される。文字列を単語に区切る方法としては“形態素解析”が知られている。抽出された単語毎に、索引（索引レコード）が作成される。これにより、例えば“本日は晴天なり”の値に対しては、“本日”／“晴天”の２つの単語が抽出されて、それぞれ索引として作成される。この索引に対して、例えば“晴天”の部分文字列を検索する場合、まず索引をもとに“晴天”の位置を探索して、当該“晴天”を含む文書と文書内の位置を特定して検索結果の候補とする。
【特許文献１】特開２００３−３０２３５（段落００３０乃至００５３、特に段落００４４、図５）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述した従来の情報検索システムで適用される索引技術、例えばＮグラムを用いた索引技術においては、索引量の増加を招き、総索引のサイズが、実装によっては原文サイズの１０倍を超える巨大なものとなることがある。この場合、文書更新に伴う索引更新のディスク更新量が増え、更新性能が劣化する。また、検索においても、検索内容によっては索引探索のために必要なディスク参照量が増え、参照性能（検索性能）も劣化する。更に索引サイズが巨大なため、それを納めるだけの大きなディスク容量を準備する必要がある。
【０００８】
一方、形態素解析を用いた索引技術においては、形態素解析で抽出されないような文字列を検索条件とすることはできないことから、厳密な検索は行うことができない。前述の例では、「“なり”を含む値を取得する」といった検索が要求された場合、正しい結果を得ることができない。
【０００９】
通常のアプリケーションで使用される検索は、厳密な検索が必要な場合（前者）と、若干厳密性が損なわれても構わないか、もしくは意味を持つ単語以外での検索が必要ない場合（後者）の２種類に大別される。前者の検索には、Ｎグラムによる索引技術が必要となるが、後者の検索には形態素解析による索引技術でも十分である。
【００１０】
また本発明者は、検索全般について考えた場合、厳密な検索で対象とするのは、題目やキーワード、人名、地名といったコンテンツの属性や書誌情報に分類されるようなデータであり、一般に文字列長は短い場合が多いことを認識するに至った。このようなデータは、記述の仕方にルールがあるのが一般的である。これに対し、例えば書誌の本文といったコンテンツの本体に分類されるデータは、一般に文字列長は長い。このように、書誌本文のような長大なデータでタグで細かく意味付けされていないようなデータは、厳密な検索や単語にならない文字列での検索が意味を持たない場合が多い。
【００１１】
本発明は上記事情を考慮してなされたものでその目的は、要素毎に、その要素に適した種別の索引を構築することにより、良好な更新検索性能を維持しながら検索の厳密性を維持することができる、構造化文書管理システムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の１つの観点によれば、構造化文書格納手段に格納された構造化文書の検索を高速化するために、構造化文書の索引を構築して索引格納手段に格納する構造化文書管理システムが提供される。このシステムは、外部から与えられる検索式を解析して検索条件を抽出し、その検索条件に合致する検索結果の候補の集合を取得する検索式処理手段と、前記構造化文書格納手段に格納された構造化文書に含まれる各要素毎に、当該要素に対して適用された前記検索式処理手段によって抽出された検索条件の履歴を取得する検索履歴取得手段と、索引を付与すべき、構造化文書に含まれる各要素毎に、前記検索履歴取得手段によって取得された、当該要素に対して適用された検索条件の履歴において最も多い検索種別に基づいて索引種別を決定する索引種別決定手段と、前記索引種別決定手段によって前記各要素毎に決定された索引種別に基づいて、当該要素に対応する当該決定された索引種別の索引を構築して前記索引格納手段に格納する索引構築手段とを備える。
【００１３】
上記したように、個々の要素に対して過去に適用された検索条件の履歴から、その検索条件を処理するのに適した索引種別を要素毎に選択して、その索引種別の索引を構築する構成とすることで、検索性能の向上を図ることができる。ここでは、例えば、完全一致型の検索条件の適用が多い場合は完全一致型の検索条件の処理に適したＢ木索引を選択的に構築し、部分一致型の検索条件の適用が多い場合には部分一致型の検索条件の処理に適したＮグラム索引、或は形態素解析による単語索引といった全文検索用索引を選択的に構築すると良い。
【００１４】
また、要素の名前から、その要素に対して適用される可能性の高い検索条件が推定可能であることに着目し、その推定される検索条件を処理するのに適した索引種別を要素毎に選択して、その索引種別の索引を構築する構成とすることでも、検索性能の向上を図ることができる。例えば、「日付」の要素名を持つ要素の値には完全一致型または大小比較型の検索条件の指定が予測されるためＢ木索引を選択的に構築し、「本文」の要素名を持つ要素の値には部分一致型の検索条件の指定が予想されるためＮグラム索引や形態素解析による単語索引といった全文検索用索引を選択的に構築すると良い。
【００１５】
また、構造化文書の構造（スキーマ）の指定の一部としてデータ型が与えられている場合は、要素の値のデータ型に応じて、そのデータ型を処理するのに適した索引種別の索引を構築する構成とすることでも、検索性能の向上を図ることができる。ここでは、例えば、数値型であれば数値型Ｂ木索引を選択的に構築し、バイナリ型であれば索引を構築しないことを選択し、文字列型であれば全文検索用索引を選択的に構築すると良い。  
また、本発明の別の観点によれば、構造化文書格納手段に格納された構造化文書の検索を高速化するために、構造化文書の索引を構築して索引格納手段に格納する構造化文書管理システムが提供される。このシステムは、索引を付与すべき、構造化文書に含まれる各要素毎に、Ｎグラム索引及び形態素解析による単語索引を含む複数の索引種別から、当該要素に基づいて索引種別を決定する索引種別決定手段と、前記索引種別決定手段によって前記索引種別として前記単語索引が決定された場合、当該単語索引を構築するために対応する要素の値を形態素解析し、その解析結果に複数通りの解釈を持つ表記が含まれる場合、単語索引に代えて、Ｎグラム索引を構築して前記索引格納手段に格納する索引構築手段とを備える。
【発明の効果】
【００１６】
本発明によれば、検索に要求される厳密性は要素に依存することに着目し、要素毎に、その要素に適した種別の索引を構築することにより、良好な更新検索性能を維持しながら検索の厳密性を維持することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の一実施形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係る情報検索システムの構成を示すブロック図である。この情報検索システムは、主として、データベース管理システム（Data Base Management System：ＤＢＭＳ）１０と、構造化文書データベース（構造化文書ＤＢ）２１と、Ｎグラム索引データベース（Ｎグラム索引ＤＢ）２２と、単語索引データベース（単語索引ＤＢ）２３と、Ｂ木（Ｂ＊Ｔｒｅｅ）索引データベース（Ｂ木索引ＤＢ）２４と、設定ファイル２５と、索引種別辞書２６と、ログファイル２７とを備えている。構造化文書ＤＢ２１と、Ｎグラム索引ＤＢ２２、単語索引ＤＢ２３及びＢ木索引ＤＢ２４の各索引ＤＢと、設定ファイル２５と、索引種別辞書２６と、ログファイル２７とは、ＤＢＭＳ１０からアクセス可能なデータ格納手段としての図示せぬディスクドライブ（ディスク）に置かれている。
【００１８】
構造化文書ＤＢ２１は、少なくとも１つの構造化文書（例えば、複数の構造化文書）の文書データを格納するのに用いられる。Ｎグラム索引ＤＢ２２は、Ｎグラム索引技術（Ｎグラム索引方式）で作成された索引レコード（Ｎグラム索引）を格納するのに用いられ、単語索引ＤＢ２３は、形態素解析索引技術（形態素解析索引方式）で作成された索引レコード（単語索引）を格納するのに用いられる。Ｂ木索引ＤＢ２４は、キーの値とデータ自身との関係を保持する索引レコードに、索引レコードを効率的に検索するための階層的なインデックスレコード情報を付与することでＢ木を構成し、格納するのに用いられる。
【００１９】
設定ファイル２５は、各要素の値の長さ（値長）から、その値の検索に適した索引の種別を決定するのに必要な文字列長閾値を予め設定しておくのに用いられる。索引種別辞書２６は、構造化文書に含まれる各要素について、その要素の値を検索するのに適した索引種別（つまり索引方式）を設定するのに用いられる。ここでは、索引種別辞書２６は、各要素の名前毎に、その名前（要素名）と、その要素名の要素の値を検索するのに適した索引種別とを組にして保持するのに用いられる。つまり索引種別辞書２６は、各要素の要素名に対応付けて、その要素名の要素の値を検索するのに適した索引種別を保持するのに用いられる。ログファイル２７は、構造化文書ＤＢ２１に格納された構造化文書に含まれている、各要素の値をログ情報として蓄積するのに用いられる。なお、ログファイル２７に、各要素の値の長さ（値長）がログ情報として蓄積される構成であっても構わない。
【００２０】
ＤＢＭＳ１０は、構造化文書ＤＢ２１、Ｎグラム索引ＤＢ２２、単語索引ＤＢ２３及びＢ木索引ＤＢ２４の各ＤＢ（データベース）を管理する構造化文書管理システムである。ＤＢＭＳ１０は、アクセス処理部１１と、構造化文書管理部１２と、検索エンジン１３とから構成される。ＤＢＭＳ１０は、計算機システムにインストールされたデータベース管理のためのソフトウェアプログラム（データベース管理プログラム）を当該計算機システム（内のＣＰＵ）が読み取って実行することにより実現される。このプログラムは、コンピュータで読み取り可能な記憶媒体（フロッピー（登録商標）ディスクに代表される磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤに代表される光ディスク、フラッシュメモリに代表される半導体メモリ等）に予め格納して頒布可能である。また、このプログラムが、ネットワークを介してダウンロード（頒布）されても構わない。
【００２１】
アクセス処理部１１は、図１の情報検索システムを利用するクライアント（クライアント端末）からの種々のＤＢアクセス要求を処理する。このクライアントが、図１の情報検索システムを実現する計算機の端末、または当該計算機とネットワークを介して接続された端末のいずれであっても構わない。アクセス処理部１１は、アプリケーション３０からの更新要求を受け付けて構造化文書管理部１２に対して当該更新要求の示す更新処理（データ更新及び索引更新）を行わせる。ここでのデータ更新及び索引更新は、それぞれ新規データの格納及び索引の構築（作成）を含むものとする。また以降の説明では、索引の更新（再構築）を索引の構築で代表させることもある。アクセス処理部１１はまた、アプリケーション３０からの検索要求を受け付けて、検索エンジン１３に対して当該検索要求の示す情報検索を行わせる。
【００２２】
構造化文書管理部１２は、データ更新部１４と索引管理部１５とから構成される。データ更新部１４は、アプリケーション３０からの更新要求に応じて、構造化文書ＤＢ２１を対象とする更新処理を行う。索引管理部１５は、アプリケーション３０からの更新要求に応じて、Ｎグラム索引ＤＢ２２、単語索引ＤＢ２３またはＢ木索引ＤＢ２４に格納すべき索引の構築を管理する。この索引の構築には、説明の煩雑さを避けるため、Ｎグラム索引ＤＢ２２、単語索引ＤＢ２３またはＢ木索引ＤＢ２４に格納されている索引の更新（再構築）の概念も含まれているものとする。索引管理部１５は、Ｎグラム索引ＤＢ２２、単語索引ＤＢ２３またはＢ木索引ＤＢ２４のいずれを対象とする索引の構築を行うかを、設定ファイル２５、索引種別辞書２６またはログファイル２７の内容に基づいて決定する。
【００２３】
検索エンジン１３は、データ検索部１６と索引参照部１７とから構成される。データ検索部１６は、アプリケーション３０からの検索要求に応じて、構造化文書ＤＢ２１から検索要求に合致した構造化文書または構造化文書中の要素の値を検索する。このときデータ検索部１６は、検索条件を索引参照部１７に渡すことにより、その検索条件に合致した構造化文書または構造化文書中の要素の位置の集合（検索結果の候補の集合）を当該索引参照部１７から受け取る。
【００２４】
図２は、図１中の構造化文書管理部１２の構成を、各ＤＢ２１〜２４等と関連付けて示すブロック図である。構造化文書管理部１２は前記したように、データ更新部１４と索引管理部１５とから構成される。索引管理部１５は、文字列長閾値決定部１５１と、値抽出部１５２と、索引構築制御部１５３と、索引構築部１５４とから構成される。
【００２５】
文字列長閾値決定部１５１は、データ更新部１４によるデータ更新の対象となる文書（部分文書）中の要素の値の長さ（値長）から、その値の検索に適した索引の種別を決定するのに必要な文字列長閾値を決定する。文字列長閾値決定部１５１は、第１の閾値決定モードでは、設定ファイル２５に設定されている文字列長閾値をそのまま目的の文字列長閾値として決定する。また文字列長閾値決定部１５１は、第２の閾値決定モードでは、構造化文書ＤＢ２１に格納されている各構造化文書に含まれる各要素の値長の統計情報（分布）から、文字列長閾値を決定する。各要素の値長の情報は、ログファイル２７に蓄積されている。
【００２６】
値抽出部１５２は、データ更新部１４によるデータ更新の対象となる文書（部分文書）中の要素の値と、当該文書中の位置とを抽出する。索引構築制御部１５３は、第１の索引種別決定モードでは、値抽出部１５２によって抽出された要素の値の長さと、文字列長閾値決定部１５１によって決定された文字列長閾値とから、その値の検索に適した索引の種別（索引方式）を決定する。この第１の索引種別決定モードでは、索引構築時に、過去にログ情報に蓄積した各要素の値長の統計と閾値によって、格納される構造化文書の構造（スキーマ）の各要素に対して今後構築する索引の種別を予め決定しても良い。索引構築制御部１５３はまた、第２の索引種別決定モードでは、値抽出部１５２によって抽出された要素の名前と、索引種別辞書２６とをもとに、その名前（要素名）の要素に適した索引の種別（索引方式）を決定する。索引構築制御部１５３は、索引構築部１５４を制御して、上記抽出された要素の値の検索に適した種別の索引を構築させる。索引構築制御部１５３は、索引の構築時には、対応する要素の値をログ情報としてログファイル２７に蓄積する。
【００２７】
索引構築部１５４は、グラム（Ｇｒａｍ）分割部１５５と、Ｎグラム索引更新部１５６と、形態素解析部１５７と、単語索引更新部１５８と、Ｂ木索引更新部１５９とを含む。グラム分割部１５５は、索引構築制御部１５３から要素の値と位置の情報を受けて、その値をＮグラムに分割してグラム列を作成する。Ｎグラム索引更新部１５６は、作成されたグラム列と位置の情報とから、Ｎグラム索引ＤＢ２２を対象としてＮグラム索引を構築する。形態素解析部１５７は、索引構築制御部１５３から要素の値と位置の情報を受けて、その値（文字列）を形態素解析して単語を抽出する。単語索引更新部１５８は、抽出された単語と位置の情報とから、単語索引ＤＢ２３を対象として単語索引を構築する。Ｂ木索引更新部１５９は、索引構築制御部１５３から要素の値と位置の情報を受けて、Ｂ木索引ＤＢ２４を対象としてＢ木索引を構築する。
【００２８】
図３は、図１中の検索エンジン１３の構成を、各ＤＢ２１〜２４等と関連付けて示すブロック図である。検索エンジン１３は前記したように、データ検索部１６と索引参照部１７とから構成される。
【００２９】
データ検索部１６は、検索式処理部１６１とデータ参照部１６２とを含む。検索式処理部１６１は、アプリケーション３０からの検索要求の示す検索式を解析して、検索に必要な条件（つまり検索条件）を抽出し、その検索条件に合致する検索結果の候補の集合（構造化文書または構造化文書中の要素の位置の集合）を取得する。検索式処理部１６１はまた、検索結果の候補をデータ参照部１６２により構造化文書ＤＢ２１から参照させる。
【００３０】
索引参照部１７は、索引管理部１５中の文字列長閾値決定部１５１と同様の文字列長閾値決定部１７１と、索引参照制御部１７２と、グラム分割部１７３と、Ｎグラム索引検索部１７４と、形態素解析部１７５と、単語索引検索部１７６と、Ｂ木索引検索部１７７とを含む。索引参照制御部１７２は、検索式処理部１６１から与えられる検索条件に含まれている文字列の長さと文字列長閾値決定部１７１によって決定される文字列長閾値とから、参照すべき索引の種別を判別する。索引参照制御部１７２は、判別された索引種別に対応する、グラム分割部１７３、形態素解析部１７５またはＢ木索引検索部１７７に検索条件を渡して、対応する索引を参照させる。グラム分割部１７３は、検索条件に含まれる文字列をＮグラムに分割してグラム列を作成する。Ｎグラム索引検索部１７４は、作成されたグラム列に対応するＮグラム索引レコードをＮグラム索引ＤＢ２２から検索し、その位置の情報を索引参照制御部１７２に返す。形態素解析部１７５は、検索条件に含まれる文字列を形態素解析して単語を抽出する。単語索引検索部１７６は、抽出された単語に対応する単語索引レコードを単語索引ＤＢ２３から検索し、その位置の情報を索引参照制御部１７２に返す。Ｂ木索引検索部１７７は、検索条件に含まれる文字列に対応するＢ木索引レコードをＢ木索引ＤＢ２４から検索し、その位置の情報を索引参照制御部１７２に返す。
【００３１】
図４は、図２中の索引構築制御部１５３の構成を示すブロック図である。この索引構築制御部１５３は、値長計算部１５３ａと、比較部１５３ｂと、索引種別決定部１５３ｃとを含む。値長計算部１５３ａは、値抽出部１５２によって抽出された要素の値の長さ（値長）を算出する。比較部１５３ｂは、比較部１５３ｂによって算出された値長を文字列長閾値決定部１５１によって決定された文字列長閾値とを比較する。索引種別決定部１５３ｃは、索引種別決定モードに固有の索引種別決定処理を行う。本実施形態では、第１の索引種別決定モードと第２の索引種別決定モードの２種類が用意されている。索引種別決定部１５３ｃは、第１の索引種別決定モードの場合、比較部１５３ｂの比較結果に応じて、対応する要素の値に適用する索引種別を決定する。また、第２の索引種別決定モードの場合には、索引種別決定部１５３ｃは、対応する要素の名前（要素名）で索引種別辞書２６を参照することにより、その要素名の要素の値に適用する索引種別を決定する。
【００３２】
次に、図１の情報検索システムにおける索引更新処理について、索引管理部１５の動作を中心に、図５のフローチャートを参照して説明する。まず、ユーザの操作に従って、クライアント端末上のアプリケーション３０から図１の情報検索システムに対して、データ追加、或はデータの上書き等の更新要求が送られたものとする。この更新要求は、ＤＢＭＳ１０内のアクセス処理部１１で受け付けられる。するとアクセス処理部１１は、アプリケーション３０からの更新要求を構造化文書管理部１２内のデータ更新部１４に通知する。
【００３３】
データ更新部１４は、通知された更新要求に従い、当該更新要求で指定されるデータ（文書データ）を構造化文書ＤＢ２１に新たに格納する処理、或は当該更新要求で指定されるデータ（文書データまたは部分文書データ）で構造化文書ＤＢ２１の対応するデータを更新する処理を行う。同時にデータ更新部１４は、そのデータ（文書データまたは部分文書データ）を構造化文書ＤＢ２１内の格納位置の情報と共に索引管理部１５内の値抽出部１５２へ渡す。
【００３４】
値抽出部１５２は、データ更新部１４から渡されたデータから索引を付与すべき構造化文書の要素値を全て抽出する。この要素値の抽出には、構造化文書がＸＭＬであれば、例えばＸＭＬパーサを使用できる。値抽出部１５２は、データ更新部１４から渡されたデータから抽出された全ての要素値を、構造化文書ＤＢ２１内の格納位置の情報と共に索引構築制御部１５３へ渡す。
【００３５】
索引構築制御部１５３は、索引種別モードを判定する（ステップＳ１）。もし、索引種別モードとして第１の索引種別モードが指定されているならば、索引構築制御部１５３は文字列長閾値決定部１５１に対して文字列長閾値を決定することを要求する。すると文字列長閾値決定部１５１は、閾値決定モードを判定する（ステップＳ２）。
【００３６】
もし、閾値決定モードとして第１の閾値決定モードが指定されているならば、文字列長閾値決定部１５１は、設定ファイル２５に設定されている文字列長閾値を読み込んで、その閾値を索引構築制御部１５３が使用する文字列長閾値として決定する（ステップＳ３）。これに対し、閾値決定モードとして第２の閾値決定モードが指定されているならば、文字列長閾値決定部１５１は、ログファイル２７に保存されているログ情報から、構造化文書ＤＢ２１に格納された構造化文書に含まれている、各要素の値長の分布（統計情報）を算出する（ステップＳ４）。そして文字列長閾値決定部１５１は、各要素の値長の分布から、索引構築制御部１５３が使用する文字列長閾値を決定する（ステップＳ５）。このように第２の閾値決定モードでは、構造化文書ＤＢ２１に格納された構造化文書に含まれている各要素に適した文字列長閾値が動的に決定される。本実施形態では、上記分布において、要素数を２等分する値長が文字列長閾値として決定される。しかし、文字列長閾値の決定の仕方は、これに限るものではない。
【００３７】
閾値決定モードは、アクセス処理部１１からの問い合わせに従うユーザの操作に応じて、アプリケーション３０から指定可能である。また、索引種別モードも、ユーザの操作に応じて、アプリケーション３０から指定可能である。更に、閾値決定モード、或は索引種別モードを、データベースの属性として予め保持することも可能である。本実施形態では、索引種別モードとして第１の索引種別モードが指定された場合に、閾値決定モードが有効となる。
【００３８】
文字列長閾値決定部１５１によって決定された文字列長閾値は、索引構築制御部１５３へ渡される。索引構築制御部１５３内の値長計算部１５３ａは、値抽出部１５２によって抽出された各要素の値毎に、その値の長さ、即ち値長を算出する。索引構築制御部１５３内の比較部１５３ｂは、値長計算部１５３ａによって算出された各要素の値長毎に、その値長を文字列長閾値決定部１７１によって決定された文字列長閾値と比較する。そして比較部１５３ｂは、各要素の値長毎の比較結果を索引構築制御部１５３内の索引種別決定部１５３ｃへ渡す。なお、値長計算部１５３ａ及び比較部１５３ｂが、第１の索引種別モードが指定されている場合だけ動作する構成であっても構わない。
【００３９】
索引種別決定部１５３ｃは、第１の索引種別モードが指定されている場合、比較部１５３ｂの比較結果に応じて、値抽出部１５２によって抽出された各要素の値毎に、その値に最適な索引種別を決定する。ここでは索引種別決定部１５３ｃは、要素の値の長さが文字列長閾値を超えているならば（ステップＳ６）、その値に最適な索引種別として単語索引を決定する（ステップＳ７）。この場合、索引種別決定部１５３ｃは、対応する要素の値と構造化文書ＤＢ２１内の格納位置の情報との組を、形態素解析部１５７へ渡す（ステップＳ８）。これに対し、要素の値の長さが文字列長閾値以下であるならば（ステップＳ６）、索引種別決定部１５３ｃは、その値に最適な索引種別としてＮグラム索引を決定する（ステップＳ９）。この場合、索引種別決定部１５３ｃは、対応する要素の値と構造化文書ＤＢ２１内の格納位置の情報との組をグラム分割部１５５へ渡す（ステップＳ１０）。
【００４０】
グラム分割部１５５は、索引種別決定部１５３ｃから要素の値（文字列）と格納位置の情報を渡された場合、当該要素の値（文字列）をＮグラム（長さＮの語彙）に分割してグラム列（Ｎグラムの集合）を作成する。グラム分割部１５５は、作成されたグラム列と格納位置の情報をＮグラム索引更新部１５６へ渡す。Ｎグラム索引更新部１５６は、グラム列を構成する各グラムを、それぞれ格納位置の情報と組にして、それぞれＮグラム索引（Ｎグラム索引レコード）として、Ｎグラム索引ＤＢ２２に登録またはＮグラム索引ＤＢ２２内の対応する索引レコードを追加する。即ちＮグラム索引更新部１５６は、Ｎグラム索引ＤＢ２２を対象としてＮグラム索引を構築する。
【００４１】
一方、形態素解析部１５７は、索引種別決定部１５３ｃから要素の値（文字列）と格納位置の情報を渡された場合、当該要素の値（文字列）を形態素解析して単語を抽出する。形態素解析部１５７は、抽出された単語の集合（単語集合）と格納位置の情報を単語索引更新部１５８へ渡す。単語索引更新部１５８は、単語集合中の各単語を、それぞれ格納位置の情報と組にして、それぞれ単語索引（単語索引レコード）として、単語索引ＤＢ２３に登録または当該単語索引ＤＢ２３内の対応する索引レコードを追加する。即ち単語索引更新部１５８は、単語索引ＤＢ２３を対象として単語索引を構築する。
【００４２】
上記したように本実施形態においては、図１の情報検索システムの索引種別モードとして第１の索引種別モードが指定されている場合（ステップＳＳ１）、値抽出部１５２によって抽出された各要素の値毎に、その値の長さに応じて、その長さに最適な索引種別が決定される（ステップＳ６，Ｓ７，Ｓ９）。ここでは、値の長さが文字列長閾値以下であるならば、つまり値長が短いならば、その値（文字列）からＮグラム索引の集合が生成されて、Ｎグラム索引ＤＢ２２を対象とするＮグラム索引の構築が行われる。これに対して、値の長さが文字列長閾値を超えているならば、つまり値長が長いならば、その値（文字列）から、単語索引の集合が生成されて、単語索引ＤＢ２３を対象とする単語索引の構築が行われる。
【００４３】
このように本実施形態では、第１の索引種別モードが指定されている場合、値長の短い要素値だけをＮグラム索引の構築の対象としている。このため、Ｎグラム索引の短所である、データ量が膨大となるのを防止しながら、Ｎグラム索引の長所である厳密な検索に対応できる。また、第１の索引種別モードが指定されている場合、値長の長い要素値は、単語索引の構築の対象としている。このため、値長の長い要素値をＮグラム索引の構築の対象とする場合に比べて、データ量が膨大となるのを防止できる。しかも、値長が長い要素値は、一般に厳密な検索や単語にならない文字列での検索が意味を持たない場合が多い。このため、値長が長い要素値を単語索引の構築の対象としても、当該単語索引の短所である、厳密な検索には向かないことによる不具合の発生を防止できる。
【００４４】
一方、第２の索引種別モードが指定されている場合（ステップＳ１）、索引種別決定部１５３ｃは、値抽出部１５２によって抽出された各要素毎に、その要素の名前、つまり要素名をキーにして索引種別辞書２６を参照することで（ステップＳ１１）、その要素名に対応して予め定められている索引種別を決定する（ステップＳ１２）。ここで、例えば「日付」の要素名を持つ要素の値には、完全一致型または大小比較型の検索条件の指定が予測（推定）される。この完全一致型または大小比較型の検索条件の処理にはＢ木索引が適していることが知られている。また、「本文」の要素名を持つ場合は、部分一致型の検索条件の指定が予測される。この部分一致型の検索条件の処理には全文検索用索引、例えばＮグラム索引または単語索引（つまり形態素解析による索引）が適していることが知られている。そこで、本実施形態の索引種別辞書２６では、「日付」の要素名と組をなす索引種別としてＢ木索引が用いられ、「本文」の要素名と組をなす索引種別として全文検索用索引、例えばＮグラム索引が用いられる。このＮグラム索引に代えて、単語索引を用いることも可能である。また、「本文」の要素名と組をなす索引種別としてＮグラム索引及び単語索引の２つを用い、上記第１の索引種別モードが指定されている場合と同様に、対応する要素の値長に応じて、当該Ｎグラム索引及び単語索引の一方が、実際に適用される索引種別として決定される構成とすることも可能である。
【００４５】
索引種別決定部１５３ｃは、上記ステップＳ１２で決定された索引種別がＢ木索引の場合（ステップＳ１３）、対応する要素の値と構造化文書ＤＢ２１内の格納位置の情報との組をＢ木索引更新部１５９へ渡す（ステップＳ１４）。Ｂ木索引更新部１５９は、この要素の値と位置の情報を受けて、Ｂ木索引ＤＢ２４を対象としてＢ木索引を構築する。また索引種別決定部１５３ｃは、対応する要素の値と上記格納位置の情報との組を、ステップＳ１２で決定された索引種別が単語索引であれば形態素解析部１５７へ渡し（ステップＳ８）、Ｎグラム索引であればグラム分割部１５５へ渡す（ステップＳ１０）。
【００４６】
ところで、形態素解析部１５７が要素の値（文字列）を形態素解析した結果に、例えば「東京都」と「東」「京都」のように、２通り（複数通り）の解釈を持つ表記が含まれることがある。この場合、索引構築部１５４では、検索の漏れを防ぎ検索精度の劣化を防止するために、単語索引に代えて、Ｎグラム索引を構築するようにしても構わない。これに対し、形態素解析結果に１通りの解釈を持つ表記しか含まれない場合には、そのまま形態素解析を利用した単語索引を構築すればよい。
【００４７】
この他、上述の「東京都」と「東」「京都」のように、２通り（複数通り）の解釈を持つ表記が含まれる場合に、これらの表記「東京都」「東」「京都」の全てを単語索引としても良い。
【００４８】
また、要素の値（文字列）を形態素解析した結果に、意味は同じであるが表記が異なる単語が含まれている場合（例えば「呼び出し」と「呼びだし」など）には、いずれかの表記に統一して、単語索引とすると良い。この場合、検索処理時にも、検索対象の単語の表記を統一してから検索すれば良い。
【００４９】
次に、図１の情報検索システムにおける検索処理について説明する。まず、ユーザの操作に従って、クライアント端末上のアプリケーション３０から図１の情報検索システムに対して、データの検索要求が送られたものとする。この検索要求は、ＤＢＭＳ１０内のアクセス処理部１１で受け付けられる。するとアクセス処理部１１は、アプリケーション３０からの検索要求を検索エンジン１３内のデータ検索部１６に通知する。
【００５０】
データ検索部１６内の検索式処理部１６１は、通知された検索要求の指定する検索式を解析して要素値に関する検索条件（要素値検索条件）を抽出し、その要素値検索条件となる文字列を索引参照部１７内の索引参照制御部１７２へ渡す。また検索式処理部１６１は、上記検索式から、要素値以外の検索条件、例えば構造検索条件も抽出する。
【００５１】
一方、索引参照部１７内の文字列長閾値決定部１７１は、索引種別モードとして第１の索引種別モードが指定されている場合、索引管理部１５内の文字列長閾値決定部１５１と同様の手順で文字列長閾値を決定して、その文字列長閾値を索引参照制御部１７２へ渡す。
【００５２】
索引参照制御部１７２は、索引種別モードとして第１の索引種別モードが指定されている場合、検索式処理部１６１から渡された、要素値検索条件となる文字列に適合する索引種別を、当該文字列の長さと文字列長閾値決定部１７１から渡された文字列長閾値とに基づいて決定する。即ち索引参照制御部１７２は、要素値検索条件となる文字列の長さが閾値を超える場合は形態素解析部１７５へ当該文字列を与える。これに対して、要素値検索条件となる文字列の長さが閾値を超えない場合には、当該文字列を含む要素の値長は閾値を超えているかも知れないし、或は超えていないかもしれないことから、索引参照制御部１７２は、グラム分割部１７３及び形態素解析部１７５の両方へ当該文字列を与える。
【００５３】
グラム分割部１７３は、索引更新時のグラム分割部１５５と同様の動作により、要素値検索条件となる文字列をＮグラムに分割してグラム列を生成し、そのグラム列をＮグラム索引検索部１７４へ渡す。形態素解析部１７５も、索引更新時の形態素解析部１５７と同様の動作により、要素値検索条件となる文字列から単語を抽出して、抽出された単語の集合を単語索引検索部１７６へ渡す。
【００５４】
Ｎグラム索引検索部１７４は、グラム分割部１７３から渡された各グラム（語彙）でＮグラム索引ＤＢ２２を検索し、全てのグラム（語彙）を持つ文書の構造化文書ＤＢ２１内格納位置を求める。つまりＮグラム索引検索部１７４は、各グラム（語彙）の検索で得られる構造化文書ＤＢ２１内格納位置の集合について、全ての集合からそれぞれ構造化文書ＤＢ２１内格納位置を選択し入力グラム列の隣接関係を満たすかどうかを検査して、隣接関係を満たした場合は、その先頭のグラムの構造化文書ＤＢ２１内格納位置を検索結果の集合として保持する。そしてＮグラム索引検索部１７４は、得られた構造化文書ＤＢ２１内格納位置の集合をＮグラム索引検索結果として索引参照制御部１７２へ返答する。
【００５５】
一方、単語索引検索部１７６は、形態素解析部１７５から渡された各単語で単語索引ＤＢ２３を検索し、全ての単語を持つ文書の構造化文書ＤＢ２１内格納位置を求める。つまり単語索引検索部１７６は、各単語の検索で得られる構造化文書ＤＢ２１内格納位置の集合を単語索引検索結果として索引参照制御部１７２へ返答する。
【００５６】
次に、索引種別モードとして第２の索引種別モードが指定されている場合、索引参照制御部１７２は、検索式処理部１６１から渡された、要素値検索条件となる文字列に適合する索引種別を、索引更新時の索引構築制御部１５３（内の索引種別決定部１５３ｃ）と同様の動作により、索引種別辞書２６に従って決定する。索引参照制御部１７２は、索引種別としてＢ木索引を決定した場合、要素値検索条件となる文字列をＢ木索引検索部１７７へ渡す。Ｂ木索引検索部１７７は、索引参照制御部１７２から渡された文字列でＢ木索引ＤＢ２４を検索し、Ｂ木の木構造のルートノードからリーフノードへ向けて、検索対象キーの大小関係をもとに順次ノードを辿り、リーフノードに到達したらリーフノードに含まれる検索対象キーに対応する構造化文書ＤＢ２１内格納位置を全て求める。索引種別としてＮグラム索引または単語索引が決定された場合の動作は、上記第１の索引種別モードが指定されている場合と同様である。
【００５７】
索引参照制御部１７２は、Ｎグラム索引検索部１７４、単語索引検索部１７６及びＢ木索引検索部１７７のうち検索に用いたものから得られた各索引検索結果の集合から、もしそれが複数であればＯＲ演算を行って重複を削除した上で、索引検索結果の候補集合として、構造化文書ＤＢ２１内格納位置の集合を検索式処理部１６１に返答する。検索式処理部１６１は、索引参照制御部１７２から返された候補集合に基づき、データ参照部１６２へ構造化文書ＤＢ２１内の各格納位置の情報を渡す。データ参照部１６２は、検索式処理部１６１から渡された構造化文書ＤＢ２１内の各格納位置の情報に基づいて、それぞれ対応する構造化文書を特定して、当該検索式処理部１６１に返答する。検索式処理部１６１は、データ参照部１６２から返されたそれぞれの構造化文書を対象に、検索式から抽出された要素値以外の検索条件（構造検索条件）に合致しているか、更には指定の要素値が正しく含まれているかを確認する。そして検索式処理部１６１は、検索式に合致する構造化文書の集合を結果集合として、アクセス処理部１１を経由してアプリケーション３０に返答する。
【００５８】
上記実施形態では、幾つかのモードと、そのモードに対応した索引種別決定機能、或は文字列長閾値決定機能とが用意されている。しかし、この種のモードを用意せずに、ある特定の索引種別決定機能、或は文字列長閾値決定機能のみが用意される構成であっても構わない。
【００５９】
また、上記実施形態では、ログファイル２７には、構造化文書ＤＢ２１に格納された構造化文書に含まれている各要素の値が、索引の構築時に索引構築制御部１５３によって蓄積される。しかし、特定の種別の検索条件、例えば完全一致型の検索条件に合致した構造化文書に含まれている要素の値のみがログファイル２７に蓄積される構成としても良い。この場合、ログファイル２７に蓄積された、完全一致型の検索条件に合致した構造化文書に含まれている要素の値の長さに基づいて、文字列長閾値を決定することで、上記実施形態と比べて索引種別の決定に一層適した文字列長閾値を決定できる。なお、完全一致型の検索条件に合致した構造化文書は、検索式処理部１６１によって確認されるため、当該構造化文書に含まれている要素の値をログファイル２７に蓄積する処理は、当該検索式処理部１６１に行わせると良い。
【００６０】
また、個々の要素に対して適用された検索条件を当該要素に対応付けて、例えば検索式処理部１６１がログファイル２７に蓄積する構成としても良い。この場合、索引構築制御部１５３内の索引種別決定部１５３ｃは、値抽出部１５２によって抽出された要素に対応付けてログファイル２７に蓄積されている検索式の履歴、即ち当該要素に対して過去に適用された検索条件の履歴に基づいて、その要素の値に適した索引種別を決定することが可能となる。例えば、ある要素に対して適用された検索条件として、完全一致型の検索条件が最も多い場合、その完全一致型の検索条件の処理に適したＢ木索引を、当該要素に適用する索引種別として決定すると良い。また、部分一致型の検索条件が最も多く適用された要素に対しては、部分一致型の検索条件の処理に適した、Ｎグラム索引または単語索引に代表される全文検索用索引を適用すると良い。これにより、検索性能を向上できる。
【００６１】
さて、要素の値のデータ型によっても、その要素に適した索引の種別は異なる。そこで、構造化文書の構造（スキーマ）の指定の一部としてデータ型が与えられている場合は、要素の値のデータ型に応じて、そのデータ型を処理するのに適した索引の種別が、例えば索引種別決定部１５３ｃによって決定される構成とすることでも、検索性能を向上できる。ここでは、例えば数値型であれば数値型のＢ木索引を、文字列型であれば全文検索用索引を、それぞれ対応する要素に適用すると良い。また、バイナリ型は、対応する要素を索引構築の対象外とすると良い。
【００６２】
また、特定の要素に対する検索条件として、複数の異なる検索条件が適用されることがある。そこで複数の異なる検索条件の各々に適した索引種別を索引種別決定部１５３ｃが決定して、その種別の索引を、同一の要素の値に対して索引構築部１５４によってそれぞれ構築させておき、検索時に検索条件が与えられた場合に、その検索条件の処理に適した索引を索引参照制御部１７２が選択する構成とすることも可能である。例えば、同一の要素の値に対して適用される検索条件に部分一致型の検索条件と大小比較型の検索条件とが混在するような場合には、全文検索用索引だけでは大小比較を行うことはできないし、Ｂ木索引では部分一致検索を行うことはできない。このような場合に、上記要素に対して全文検索用索引とＢ木索引の両方を構築しておき、部分一致検索の場合には全文検索用索引を、大小比較の場合にはＢ木索引を、それぞれ選択して使用するならば、両方の検索条件を高速に処理できる。
【００６３】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００６４】
【図１】本発明の一実施形態に係る情報検索システムの構成を示すブロック図。
【図２】図１中の構造化文書管理部１２の構成を、各ＤＢ２１〜２４等と関連付けて示すブロック図。
【図３】図１中の検索エンジン１３の構成を、各ＤＢ２１〜２４等と関連付けて示すブロック図。
【図４】図２中の索引構築制御部１５３の構成を示すブロック図。
【図５】図１の情報検索システムにおける索引更新処理の手順を示すフローチャート。
【符号の説明】
【００６５】
１０…データベース管理システム（ＤＢＭＳ、構造化文書管理システム）、１２…構造化文書管理部、１３…検索エンジン、１４…データ更新部、１５…索引管理部、１６…データ検索部、１７…索引参照部、２１…構造化文書データベース（構造化文書格納手段）、２２…Ｎグラム索引データベース（索引格納手段）、２３…単語索引データベース（索引格納手段）、２４…Ｂ木索引データベース（索引格納手段）、２５…設定ファイル（設定手段）、２６…索引種別辞書（索引種別格納手段）、２７…ログファイル、１５１，１７１…文字列長閾値決定部、１５２…値抽出部、１５３…索引構築制御部、１５３ａ…値長計算部、１５３ｂ…比較部、１５３ｃ…索引種別決定部、１５４…索引構築部、１６１…検索式処理部、１７２…索引参照制御部（索引選択手段）。
【図１】
2008198237.tif 000003
【図２】
2008198237.tif 000004
【図３】
2008198237.tif 000005
【図４】
2008198237.tif 000006
【図５】
2008198237.tif 000007