(57)【要約】【課題】近傍検索にかかる処理を効率的に行うことが可能な文書検索装置、方法及びプログラムを提供する。【解決手段】検索対象となる複数の文字列と、当該文字列間の距離に関する条件を指示する近傍条件と、を含んだ検索クエリに基づいて、各文字列を部分文字列に分割し、各部分文字列について取得した索引情報から、各部分文字列が前記近傍条件に適合するための出現位置の有効範囲を指示した近傍検索プランに適合した索引情報を用いて、前記近傍条件を満たすか否かの判定を行う。【選択図】        図１６
2008243074.tif 000002
【特許請求の範囲】
【請求項１】
複数の文書を記憶する文書記憶手段と、
検索対象となる複数の文字列と、当該文字列間の距離に関する条件を指示する近傍条件と、を含んだ検索クエリの入力を受け付ける入力手段と、
前記文字列から部分文字列を生成する分割手段と、
前記部分文字列毎に、前記文書中に出現する出現頻度を算出する頻度算出手段と、
前記出現頻度に応じて、前記部分文字列毎の検索処理順序を決定する順序決定手段と、
前記検索クエリに含まれた複数の文字列及び近傍条件に基づいて、前記各部分文字列が当該近傍条件に適合するための出現位置の有効範囲を指示した近傍検索プランを、前記検索処理順序に応じた順序で生成するプラン生成手段と、
前記複数の文書から、前記検索処理順序に応じた順序で前記部分文字列を検索し、該当する文書の識別情報と、当該文書中における前記部分文字列の出現位置とを索引情報として順次取得する索引取得手段と、
前記索引情報に含まれた部分文字列の出現位置が、前記近傍検索プランに指示された有効範囲に適合するか否かを判定し、適合した索引情報を候補情報として取得する候補取得手段と、
前記各候補情報に含まれた前記部分文字列の出現位置に基づいて、連続した複数の部分文字列からなる文字列間の距離を導出し、前記近傍条件で指示された距離を満たすか否かを判定する判定手段と、
を備えたことを特徴とする文書検索装置。
【請求項２】
前記順序決定手段は、前記出現頻度の低い順に前記部分文字列の検索処理順序を決定することを特徴とする請求項１に記載の文書検索装置。
【請求項３】
前記プラン生成手段は、検索処理対象となった前記部分文字列が、前記近傍検索プラン生成済みの部分文字列と同じ文字列に所属すると判定した場合、これら部分文字列の開始位置間の距離を前記有効範囲として設定することを特徴とする請求項１に記載の文書検索装置。
【請求項４】
前記プラン生成手段は、検索処理対象となった前記部分文字列が、前記近傍検索プラン生成済みの部分文字列と異なる文字列に所属すると判定した場合、前記近傍条件で指示された距離に応じた値を前記有効範囲として設定することを特徴とする請求項１に記載の文書検索装置。
【請求項５】
前記プラン生成手段は、前回処理対象となった部分文字列と今回処理対象となった部分文字列との出現位置の前後関係に応じて、前記近傍検索プランを複数生成することを特徴とする請求項４に記載の文書検索装置。
【請求項６】
前記候補取得手段は、前記索引情報が取得される毎に、前回取得した候補情報に基づいて、当該索引情報が有効範囲に適合するか否かを判定することを特徴とする請求項１に記載の文書検索装置。
【請求項７】
前記候補取得手段は、前記検索クエリに含まれる各文字列と一致する連続した複数の部分文字列を、前記候補情報として夫々取得することを特徴とする請求項６に記載の文書検索装置。
【請求項８】
検索対象となる複数の文字列と、当該文字列間の距離に関する条件を指示する近傍条件と、を含んだ検索クエリの入力を受け付ける入力工程と、
前記文字列から部分文字列を生成する分割工程と、
前記部分文字列毎に、前記文書中に出現する出現頻度を算出する頻度算出工程と、
前記出現頻度に応じて、前記部分文字列毎の検索処理順序を決定する順序決定工程と、
前記検索クエリに含まれた複数の文字列及び近傍条件に基づいて、前記各部分文字列が当該近傍条件に適合するための出現位置の有効範囲を指示した近傍検索プランを、前記検索処理順序に応じた順序で生成するプラン生成工程と、
前記複数の文書から、前記検索処理順序に応じた順序で前記部分文字列を検索し、該当する文書の識別情報と、当該文書中における前記部分文字列の出現位置とを索引情報として順次取得する索引取得工程と、
前記索引情報に含まれた部分文字列の出現位置が、前記近傍検索プランに指示された有効範囲に適合するか否かを判定し、適合した索引情報を候補情報として取得する候補取得工程と
前記各候補情報に含まれた前記部分文字列の出現位置に基づいて、連続した複数の部分文字列からなる文字列間の距離を導出し、前記近傍条件で指示された距離を満たすか否かを判定する判定工程と、
を含むことを特徴とする文書検索方法。
【請求項９】
複数の文書を記憶及び管理するコンピュータに、
検索対象となる複数の文字列と、当該文字列間の距離に関する条件を指示する近傍条件と、を含んだ検索クエリの入力を受け付ける入力機能と、
前記文字列から部分文字列を生成する分割機能と、
前記部分文字列毎に、前記文書中に出現する出現頻度を算出する頻度算出機能と、
前記出現頻度に応じて、前記部分文字列毎の検索処理順序を決定する順序決定機能と、
前記検索クエリに含まれた複数の文字列及び近傍条件に基づいて、前記各部分文字列が当該近傍条件に適合するための出現位置の有効範囲を指示した近傍検索プランを、前記検索処理順序に応じた順序で生成するプラン生成機能と、
前記複数の文書から、前記検索処理順序に応じた順序で前記部分文字列を検索し、該当する文書の識別情報と、当該文書中における前記部分文字列の出現位置とを索引情報として順次取得する索引取得機能と、
前記索引情報に含まれた部分文字列の出現位置が、前記近傍検索プランに指示された有効範囲に適合するか否かを判定し、適合した索引情報を候補情報として取得する候補取得機能と
前記各候補情報に含まれた前記部分文字列の出現位置に基づいて、連続した複数の部分文字列からなる文字列間の距離を導出し、前記近傍条件で指示された距離を満たすか否かを判定する判定機能と、
を実現させることを特徴とする文書検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大量の電子文書から、検索条件に適合する文書を取得する文書検索装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来より、検出したい文書に関連するキーワードを与えることで、大量の電子文書から当該キーワードを含む文書を検索する文書検索装置が用いられている。また、上記した複数のキーワードとともに、これらキーワードの位置関係を指定した近傍検索条件を用いることが広く行われている。従来、これら文書の検索について、より目的に合った文書を取得するための種々の技術が提案されている。
【０００３】
例えば、特許文献１では、検索処理装置の機能の一つとして、検出したキーワードの位置や距離が、近傍条件に適合するか否かを比較判定する方法が開示されており、圧縮ファイルに複数のキーワードが含まれているか否かを判定後、本文スキャンにより距離の判定を行うようになっている。また、特許文献２では、キーワードの位置情報と所定の検索条件との適合判定に関し、検索条件に適合した照合結果を検索結果として出力し、以後の検索処理を中止するという技術が提案されている。
【０００４】
【特許文献１】特許第３０９９２９８号公報
【特許文献２】特開２００４−１５７６２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の技術では、検索対象である文書の中に検索キーワードが含まれているだけでなく、他のキーワードとの位置関係及び距離を計算し判定する必要があるため、例えば複数キーワードのＡＮＤ検索と比べて検索処理にかかるコストが高くなるという問題がある。また、大量の文書全てについて近傍検索を行うため、検索処理件数が膨大となり、処理に要する時間が増加、即ち検索処理にかかるコストが高くなるという問題がある。
【０００６】
また、近傍検索処理に必要な位置情報取得処理を考えた場合、文書や文書の圧縮情報をスキャンする方法や、転置ファイルを用いた索引方式が挙げられるが、大量文書を対象とする場合には、前者の方法では処理コストの限界がある。ここで、転置ファイルを用いた索引方式とは、文書の文字列を所定のルールに従って部分文字列に分割し、部分文字列毎に当該部分文字列に含まれた各語が文書セットどの位置に出現したかを予めに記録しておき、検索する際には、検索キーワードをこれら部分文字列に関して索引から元の位置情報を取得する方式である。
【０００７】
上記索引方式では大量文書を対象とした場合、索引情報も大量になるため、大容量のハードディスクなどに記録する場合にはハードディスクの処理効率を考慮に入れる必要がある。一般的にハードディスクの読み出し処理は連続実行が効率的といえる。つまり、文書毎に部分文字列の索引を取得する手順よりも、部分文字列毎に索引を取得し同文書に含まれているか確認するほうが効率的である。
【０００８】
また、特許文献２に記載の技術において、索引方式との併用を考えると、近傍検索判定を行うために全てのキーワードの位置情報を前の方から順に必要とするため、処理の効率が低下する可能性がある。また、索引処理終了後に特許文献２の技術を用いる場合、大量の文書中に存在するキーワードの位置情報の取得処理が無駄な位置情報の分も実行されてしまい、適合パターンが発見された時点で、他の候補の検索処理を行わないと言う利点を活用することができない。更に、全てのキーワードの夫々について索引情報を保持し、一括して近傍検索処理にかけることになるため、索引情報を保持しておくメモリ量が近傍検索の直前には膨大になる恐れがある。
【０００９】
本発明は、上記に鑑みてなされたものであって、近傍検索にかかる処理を効率的に行うことが可能な文書検索装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明は、複数の文書を記憶する文書記憶手段と、検索対象となる複数の文字列と、当該文字列間の距離に関する条件を指示する近傍条件と、を含んだ検索クエリの入力を受け付ける入力手段と、前記文字列から部分文字列を生成する分割手段と、前記部分文字列毎に、前記文書中に出現する出現頻度を算出する頻度算出手段と、前記出現頻度に応じて、前記部分文字列毎の検索処理順序を決定する順序決定手段と、前記検索クエリに含まれた複数の文字列及び近傍条件に基づいて、前記各部分文字列が当該近傍条件に適合するための出現位置の有効範囲を指示した近傍検索プランを、前記検索処理順序に応じた順序で生成するプラン生成手段と、前記複数の文書から、前記検索処理順序に応じた順序で前記部分文字列を検索し、該当する文書の識別情報と、当該文書中における前記部分文字列の出現位置とを索引情報として順次取得する索引取得手段と、前記索引情報に含まれた部分文字列の出現位置が、前記近傍検索プランに指示された有効範囲に適合するか否かを判定し、適合した索引情報を候補情報として取得する候補取得手段と前記各候補情報に含まれた前記部分文字列の出現位置に基づいて、連続した複数の部分文字列からなる文字列間の距離を導出し、前記近傍条件で指示された距離を満たすか否かを判定する判定手段と、を備える。
【００１１】
また、本発明は、検索対象となる複数の文字列と、当該文字列間の距離に関する条件を指示する近傍条件と、を含んだ検索クエリの入力を受け付ける入力工程と、前記文字列から部分文字列を生成する分割工程と、前記部分文字列毎に、前記文書中に出現する出現頻度を算出する頻度算出工程と、前記出現頻度に応じて、前記部分文字列毎の検索処理順序を決定する順序決定工程と、前記検索クエリに含まれた複数の文字列及び近傍条件に基づいて、前記各部分文字列が当該近傍条件に適合するための出現位置の有効範囲を指示した近傍検索プランを、前記検索処理順序に応じた順序で生成するプラン生成工程と、前記複数の文書から、前記検索処理順序に応じた順序で前記部分文字列を検索し、該当する文書の識別情報と、当該文書中における前記部分文字列の出現位置とを索引情報として順次取得する索引取得工程と、前記索引情報に含まれた部分文字列の出現位置が、前記近傍検索プランに指示された有効範囲に適合するか否かを判定し、適合した索引情報を候補情報として取得する候補取得工程と前記各候補情報に含まれた前記部分文字列の出現位置に基づいて、連続した複数の部分文字列からなる文字列間の距離を導出し、前記近傍条件で指示された距離を満たすか否かを判定する判定工程と、を含む。
【００１２】
また、本発明は、複数の文書を記憶及び管理するコンピュータに、複数の文書を記憶及び管理するコンピュータに、検索対象となる複数の文字列と、当該文字列間の距離に関する条件を指示する近傍条件と、を含んだ検索クエリの入力を受け付ける入力機能と、前記文字列から部分文字列を生成する分割機能と、前記部分文字列毎に、前記文書中に出現する出現頻度を算出する頻度算出機能と、前記出現頻度に応じて、前記部分文字列毎の検索処理順序を決定する順序決定機能と、前記検索クエリに含まれた複数の文字列及び近傍条件に基づいて、前記各部分文字列が当該近傍条件に適合するための出現位置の有効範囲を指示した近傍検索プランを、前記検索処理順序に応じた順序で生成するプラン生成機能と、前記複数の文書から、前記検索処理順序に応じた順序で前記部分文字列を検索し、該当する文書の識別情報と、当該文書中における前記部分文字列の出現位置とを索引情報として順次取得する索引取得機能と、前記索引情報に含まれた部分文字列の出現位置が、前記近傍検索プランに指示された有効範囲に適合するか否かを判定し、適合した索引情報を候補情報として取得する候補取得機能と前記各候補情報に含まれた前記部分文字列の出現位置に基づいて、連続した複数の部分文字列からなる文字列間の距離を導出し、前記近傍条件で指示された距離を満たすか否かを判定する判定機能と、を実現させる。
【発明の効果】
【００１３】
本発明によれば、検索クエリに含まれた各文字列にかかる部分文字列の索引情報のうち、近傍条件に適合しない索引情報を当該索引情報の取得時に除外することができるため、最終的に近傍条件と比較を行う索引情報の件数を抑えることが可能となり、近傍検索にかかる処理を効率的に行うことができる。また、事前に検索処理順序を決定し、当該検索処理順序に応じた近傍検索プランを生成することで、より最適な検索処理手順で近傍検索を行うことが可能となるため、近傍検索をより効率的に行うことができる。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、文書処理装置、方法及びプログラムの最良な実施形態を詳細に説明する。
【００１５】
図１は、文書検索装置１００のハードウェア構成を示した図である。図１に示すとおり、文書検索装置１００は、ＣＰＵ１０１、操作部１０２、表示部１０３、ＲＯＭ１０４、ＲＡＭ１０５、文書記憶部１０６、通信部１０７等を備える。
【００１６】
ＣＰＵ１０１は、ＲＡＭ１０５の所定領域を作業領域として、ＲＯＭ１０４に予め記憶された各種制御プログラムとの協働により各種処理を実行し、文書検索装置１００を構成する各部の動作を統括的に制御する。
【００１７】
また、ＣＰＵ１０１は、ＲＯＭ１０４に予め記憶された所定のプログラムとの協働により、後述する部分文字列分割部１１、索引頻度情報取得部１２、処理順序判定部１３、近傍検索プラン生成部１４、索引処理部１５及び近傍条件判定部１６（図２参照）の各機能部を実現させる。なお、各機能部の動作については後述する。
【００１８】
操作部１０２は、各種入力キー等を備え、ユーザから操作入力された情報を入力信号として受け付け、その入力信号をＣＰＵ１０１に出力する。
【００１９】
表示部１０３は、ＬＣＤ等により構成され、ＣＰＵ１０１からの表示信号に基づいて、各種情報を表示する。なお、表示部１０３は、操作部１０２と一体的にタッチパネルを構成する態様としてもよい。
【００２０】
ＲＯＭ１０４は、文書検索装置１００の制御にかかるプログラムや各種設定情報等を書き換え不可能に記憶する。
【００２１】
ＲＡＭ１０５は、ＳＤＲＡＭ等の記憶手段であって、各種データを書換え可能に記憶する性質を有していることから、ＣＰＵ１０１の作業エリアとして機能し、バッファ等の役割を果たす。
【００２２】
文書記憶部１０６は、磁気的又は光学的に記録可能な記録媒体を有し、各文書を識別するための文書ＩＤ（ＤＩＤ）と、文書とを対応付けて記憶している。
【００２３】
通信部１０７は、ネットワークを通じ外部の機器との間で通信を行うインターフェースであって、外部機器から送信された各種情報をＣＰＵ１０１に出力し、また、ＣＰＵ１０１から出力される各種情報を外部機器へと送信する。
【００２４】
図２は、文書検索装置１００の機能的構成を示したブロック図である。図２に示したように、文書検索装置１００は、部分文字列分割部１１、索引頻度情報取得部１２、処理順序判定部１３、近傍検索プラン生成部１４、索引処理部１５、近傍条件判定部１６等を有している。
【００２５】
部分文字列分割部１１は、検索クエリにて指定された全てのキーワードついて、Ｎ−Ｇｒａｍ方式や、形態素解析による単語単位の分割方式等により、部分文字列に分割する。
【００２６】
ここで、検索クエリとは、文書記憶部１０６に記憶された文書から、特定のキーワードを含んだ文書を検索するための検索条件であって、ユーザから操作部１０２を介して又は通信部１０７を介して入力される情報である。ここで、検索クエリには、検索対象となる複数のキーワードが含まれており、また、これらキーワード間の位置関係に関する条件を指示した近傍条件が含まれているものとする。
【００２７】
図３−1から図３−４は、検索クエリの例を示した図である。図３−1から図３−４に示したように、検索クエリには、複数のキーワード（“検索クエリ”、“ＸＭＬ”等）と、これらキーワードの位置関係に関する条件を指示する近傍条件（distance  at  most  7  letters等）と、が含まれている。
【００２８】
近傍条件には、キーワード間の距離やキーワードの出現順序等、位置関係に関する所定の条件が定義される。ここで、キーワード間の距離の単位は任意であり、例えば、文字数や単語数、更には文の数や、段落の数としてもよく、この条件は、どのような単位で索引の位置情報を保持しているかに依存する。なお、図３−1から図３−４では文字数（letters）を単位にした例を示している。
【００２９】
図３−１の検索クエリに含まれる近傍条件「distance  at  most  Ｎ  letters（Ｎは任意の整数）」は、指定されたキーワード間の距離が、Ｎ文字以内であることを条件とするものである。即ち、図３−１の検索クエリは、３つのキーワード「検索クエリ」、「ＸＭＬ」、「索引ファイル」の間が夫々７文字以内であることを検索条件としている。
【００３０】
また、図３−２の検索クエリに含まれる近傍条件「distance  exactly  Ｎ  letters（Ｎは任意の整数）」は、指定されたキーワード間の距離が、丁度Ｎ文字であることを条件とするものである。即ち、図３−２の検索クエリは、３つのキーワード「検索クエリ」、「ＸＭＬ」、「索引ファイル」の間の距離が夫々７文字丁度であることを検索条件としている。
【００３１】
また、図３−３の検索クエリに含まれる近傍条件「window  Ｎ  letters（Ｎは任意の整数）」は、指定されたキーワードが、Ｎ文字以内に出現することを条件とするものである。即ち、図３−３の検索クエリは、３つのキーワード「検索クエリ」、「ＸＭＬ」、「索引ファイル」の全てが、３０文字以内に出現することを検索条件としている。
【００３２】
また、図３−４の検索クエリに含まれる近傍条件「distance  at  most  Ｎ  letters  ordered（Ｎは任意の整数）」は、指定されたキーワードが、Ｎ文字以内に出現し、且つ、指定したキーワードの順番通りに出現することを条件とするものである。即ち、図３−４の検索クエリは、３つのキーワード「検索クエリ」、「ＸＭＬ」、「索引ファイル」の間が７文字以内で、且つ、このキーワードの順番通りに出現することを検索条件としている。なお、以上４つの検索クエリ例を挙げたが、その指示内容は、上記例に限らないものとする。
【００３３】
図２に戻り、索引頻度情報取得部１２は、部分文字列分割部１１により分割された部分文字列について、当該部分文字列が検索対象となった文書中に出現する頻度を算出し、後述する出現頻度情報を生成する。
【００３４】
処理順序判定部１３は、索引頻度情報取得部１２により算出された出現頻度に応じ、各部分文字列の検索処理順序を決定する。具体的には、出現頻度の低い部分文字列から順に検索処理順序を決定する。
【００３５】
近傍検索プラン生成部１４は、検索クエリに含まれた複数のキーワード及び近傍条件に基づいて、各部分文字列が近傍条件に適合するための出現位置の有効範囲を指示した近傍検索プランを、前記検索処理順序に応じた順序で生成する。
【００３６】
索引処理部１５は、処理順序判定部１３により決定された検索処理順序に応じた順序で部分文字列を検索し、該当する文書の識別情報と、当該文書中における部分文字列の出現位置とを索引情報として順次取得する。また、索引処理部１５は、索引情報の取得の際に近傍検索プランに基づいて後述する固定位置による判定又は領域による判定を行い、適合した索引情報を最終的な近傍条件判定の候補として保持する。
【００３７】
近傍条件判定部１６は、索引処理部１５で絞り込まれた後述する候補に基づいて、指示された近傍条件を満たすか否かの最終的な判定を行い、該当した候補を検索結果として出力する。
【００３８】
以下、文書検索装置１００の動作について説明する。図４は、文書検索装置１００で行われる近傍条件判定処理の手順を示したフローチャートである。
【００３９】
図４に示したように、近傍条件判定処理はステップＳ１１〜ステップＳ１６の各工程を有している。ステップＳ１１〜ステップＳ１５の各ステップで、検索クエリの解析と検索処理実施の準備処理を行い、最終的な近傍条件の判定をステップＳ１６で行う。
【００４０】
以下、図４を参照して、本近傍条件判定処理の詳細を説明する。まず、部分文字列分割部１１は、検索クエリに含まれた各キーワードを、予め定めた方法で部分文字列に分割する（ステップＳ１１）。ここで、部分文字列に分割する方法は、検索対象となる文書の索引を作成する際に用いた方法を用いることが好ましく、例えば、Ｎ−Ｇｒａｍ方式や、形態素解析による単語単位の分割方式等を利用することができる。
【００４１】
例えば、図３−１から図３−４の検索クエリで指示されたキーワードに対し、Ｎ−Ｇｒａｍを用いて２、３Ｇｒａｍで分割する場合には、「検索クエリ」は「検索」と「クエリ」、「索引ファイル」は「索引」と「引フ」と「ァイル」等に分割される。なお、「ＸＭＬ」は３Ｇｒａｍに当たるため、分割は行われず、この状態で部分文字列とみなされるものとする。分割境界はこの通りでなくても問題なく、また、別のＧｒａｍ数を設定して分割も行っても良い。
【００４２】
続いて、索引頻度情報取得部１２は、ステップＳ１１の処理で生成された部分文字列毎の索引を文書記憶部１０６から取得し、この取得結果から各部分文字列が検索対象の文書中に出現する頻度を算出した後、当該出現頻度を表す出現頻度情報を生成する（ステップＳ１２）。なお、部分文字列毎の索引の取得は、公知の技術を用いることが可能であるものとする。
【００４３】
図５に出現頻度情報の一例を示す。図５に示したように、出現頻度情報には、各キーワードと、これらキーワードを分割して生成した部分文字列と、各々の部分文字列の出現頻度とが関係づけて格納されている。また、索引頻度情報取得部１２は、上記した部分文字列と、出現頻度とともに、各部分文字列のオフセットを対応付けて格納する。
【００４４】
ここで、オフセットとは、一のキーワード中における部分文字列の出現位置を示した情報であって、自己の部分文字列が所属するキーワードの先頭を「０」とし、この先頭からの文字数で表される。例えば、部分文字列「検索」は、キーワード「検索クエリ」の先頭に出現するため、オフセットは「０」となる。また、部分文字列「クエリ」は、キーワード「検索クエリ」の先頭から数えて２文字目に出現するため、オフセットは「２」となる。この出現頻度情報及びオフセットは、近傍検索処理において、各部分文字列が属するキーワードの判定等、部分文字列間の関係についての判断の基となる。なお、図５の出現頻度情報に含まれる「検索処理順序」については後述する。
【００４５】
図４に戻り、処理順序判定部１３は、ステップＳ１２の処理で生成された出現頻度情報に含まれる各部分文字列の出現頻度に応じ、頻度の少ない部分文字列から検索処理が行われるように、検索処理順序を決定する（ステップＳ１３）。ここで決定された検索処理順序は、図５の出現頻度情報に示した「検索処理順序」のように、各部分文字列と対応付けて格納される。
【００４６】
例えば、図５に示した出現頻度情報の場合、出現頻度が小さい順に検索処理順序を定めたとすると、「引フ」が最も出現頻度が低いため、検索処理順序は最初となる。このように、検索処理順序を決定することで、比較回数が最小となるため、文書の検索に係る処理コストを抑えることができる。
【００４７】
また、ステップＳ１１での分割手法によっては、同じキーワードから異なる複数の部分文字列集合が生成される場合がある。このような場合には、索引頻度情報の取得後に、頻度が少ない部分文字列を含む部分文字列集合を選択することが好ましい。即ち、頻度情報を比較して、処理コストが少なくなる可能性が高いパターンを選ぶことが好ましい。
【００４８】
図６は、出現頻度情報の他の態様を示したものである。ここでは、キーワード「索引ファイル」の部分文字列と出現頻度を夫々示しており、キーワード「索引ファイル」を構成するための部分文字列の組合せが、２種類できた例を示している。ここで、組合せ１は、０．２ｋ個と最も出現頻度が少ない部分文字列を含むため、絞り込み効果が高く処理コストが抑えられると考えられるため、「組合せ１」を選択することが好ましい。なお、図６において、「ｋ」、「Ｍ」は出現頻度の単位を表し、それぞれキロ＝１０＾３、メガ＝１０＾６を意味している。
【００４９】
図４に戻り、近傍検索プラン生成部１４では、検索クエリで指示された近傍条件に応じて、各部分文字列の有効範囲を求めるための拡張量を導出し、後段の索引処理時にて行う索引情報の絞り込みのための処理プランを、近傍検索プランとして生成する（ステップＳ１４）。以下、図７を参照して、ステップＳ１４の近傍検索プラン生成処理について説明する。
【００５０】
図７は、ステップＳ１４の近傍検索プラン生成処理の手順を示したフローチャートである。ここで、近傍検索プラン生成部１４は、処理順序判定部１３によりステップＳ１３で求められた部分文字列の検索処理順序に応じた順序で、各部分文字列を順次処理対象とする。また、近傍検索プラン生成部１４は、出現頻度情報（図５参照）のオフセット値に基づいて、処理対象となった部分文字列と、前回処理対象となった部分文字列との関係を判定し、その判定結果に応じて後述する近傍検索プランを生成する。
【００５１】
なお、検索処理順序の最初の部分文字列については、比較対象となる部分文字列が存在しないため、近傍検索プラン生成部１４は、処理対象としての設定は行うが、後述するステップＳ１４０２〜Ｓ１４１９までの処理は施さず、部分文字列の順番をカウントするカウンタ「ｉ」の値に１を加算し（ステップＳ１４０１）、２番目の部分文字列を処理の対象とする。なお、本処理の開始時において、カウンタｉの初期値は１（ｉ＝１）であるものとする。
【００５２】
次に、近傍検索プラン生成部１４は、検索処理順序の二つ目以降の部分文字列について、プラン生成済の部分文字列と同じキーワードに所属するものか否かを判定する（ステップＳ１４０２）。ここで、近傍検索プラン生成部１４は、処理済の部分文字列の中に、対象とする部分文字列と同じキーワードに含まれる部分文字列があると判定した場合には（ステップＳ１４０２；Ｙｅｓ）、同キーワードに含まれるプラン生成済の部分文字列を、出現頻度情報から取得する（ステップＳ１４０３）。そして、近傍検索プラン生成部１４は、固定位置による比較方法を設定する（ステップＳ１４０４）。
【００５３】
ここで、固定位置による比較方式とは、部分文字列の出現位置に対して、加算や減算を行うオフセットの値や、検索クエリで指定された距離（文字間隔）分の間隔を開けてキーワードを並べた場合の部分文字列の距離を有効範囲とする方式である。
【００５４】
次いで、近傍検索プラン生成部１４は、キーワードにおける各部分文字列の開始位置のオフセットを出現頻度情報（図５参照）から読み出し、同キーワードの部分文字列間の距離を導出する（ステップＳ１４０５）。そして、近傍検索プラン生成部１４は、導出した値を有効範囲とし、ステップＳ１４０４で設定した比較方法と対応付け近傍検索プランとして保持する（ステップＳ１４１８）。
【００５５】
一方、ステップＳ１４０２において、近傍検索プラン生成部１４は、プラン生成済の部分文字列と同じキーワードに所属しないと判定した場合には（ステップＳ１４０２；Ｎｏ）、続いて検索クエリの近傍条件に「distance exactly」と、語順指定（ordered）とが含まれているか否かを判定する（ステップＳ１４０６）。
【００５６】
ここで、近傍検索プラン生成部１４は、検索クエリの近傍条件に「distance exactly」と語順指定とが含まれていると判定した場合には（ステップＳ１４０６；Ｙｅｓ）、前回の処理対処とした部分文字列を取得した後（ステップＳ１４０７）、固定位置による比較方法を設定する（ステップＳ１４０８）。
【００５７】
続いて、近傍検索プラン生成部１４は、近傍条件で指示された語順に応じ、指定された距離分の間隔を空けてキーワードを並べた場合の部分文字列の距離を算出し（ステップＳ１４０９）。そして、近傍検索プラン生成部１４は、算出した値を後の比較処理に用いる有効範囲とし、ステップＳ１４０８で設定した比較方法と対応付け近傍検索プランとして保持する（ステップＳ１４１８）。
【００５８】
また、ステップＳ１４０６において検索クエリの近傍条件に「distance exactly」が含まれ、且つ、語順指定が含まれる場合以外では（ステップＳ１４０６；Ｎｏ）、近傍検索プラン生成部１４は、処理済みの部分文字列から最も短いキーワードの部分文字列を取得し（ステップＳ１４１０）、領域による比較方法を設定する（ステップＳ１４１１）。
【００５９】
領域による比較方式の場合、既に取得した部分文字列の位置を元に、正負の方向に対し、夫々対象とする部分文字列が取り得る範囲（領域拡張量）を有効範囲とする。そしてその有効範囲に対象とする部分文字列の位置が含まれている場合のみ索引情報を候補として追加することになる。有効範囲は取得済の部分文字列の位置を始点として拡張量を正負の方向にそれぞれ拡張して求める。拡張量は近傍条件によって求め方が異なり、これを事前に求めておくことで、索引処理時の有効範囲判定処理コストを軽くすることができる。
【００６０】
次いで、近傍検索プラン生成部１４は、検索クエリの近傍条件を参照し、比較する部分文字列の関係を考慮して、正負の方向について、夫々比較の必要性の是非を判定する（ステップＳ１４１２）。ここで、負の方向について比較が必要と判定した場合には（ステップＳ１４１２；Ｙｅｓ）、負の方向についての比較の際に必要となる領域拡張量を算出する（ステップＳ１４１３）。ステップＳ１４１３での領域拡張量の算出については後述する。
【００６１】
また、正の方向についての比較が必要と判定した場合には（ステップＳ１４１４；Ｙｅｓ）、正の方向についての比較の際に必要となる領域拡張量を算出する（ステップＳ１４１５）。ステップＳ１４１５での領域拡張量の算出については後述する。
【００６２】
ここで、正負方向の比較処理における必要性の是非は、出現順指定とキーワードの位置関係に基づいて判定される。具体的には、図８に示した比較処理判定テーブルに基づいて判定される。なお、図８は、比較処理判定テーブルの一例を示した図である。
【００６３】
図８に示したように、語順指定「ｏｒｄｅｒｅｄ」が指定された場合には、近傍検索プラン生成部１４は、部分文字列を含むキーワードが検索クエリで指定された順番を確認し、比較元部分文字列（ｐｒｅｖ）が、対象としている部分文字列（ｃｕｒｒｅｎｔ）よりも前に指定されていれば、負の方向の比較処理のみが必要と判断し、正の方向への比較処理は不要と判断する。
【００６４】
また、比較元部分文字列（ｐｒｅｖ）が、処理対象としている部分文字列（ｃｕｒｒｅｎｔ）よりも後に指定されていれば、正の方向の比較処理のみが必要と判断し、負の方向への比較処理は不要と判断する。また、語順指定「ｒｅｖｅｒｓｅ」が指定された場合には、「ｏｒｄｅｒｅｄ」の条件と逆となるよう制御する。なお、検索クエリに語順指定が含まれていないと判定した場合には、正負の両方向に対して、比較処理を行うものとする。
【００６５】
複数のキーワードにかかる部分文字列がプラン生成済の場合、それら部分文字列の出現位置の前後関係によっては、比較方法のタイプが複数考えられる。このような場合、近傍検索プラン生成部１４は、導出する有効範囲をより厳密にするために、１つの部分文字列に対し複数タイプのプランを生成するものとする。そのため、ステップＳ１４１６にて、近傍検索プラン生成部１４は、他のタイプの比較方法にて近傍検索プランを生成するか否かを判断する（ステップＳ１４１６）。
【００６６】
ステップＳ１４１６において、近傍検索プラン生成部１４は、部分文字列の出現位置の前後関係に基づいて、生成しないと判断した場合には（ステップＳ１４１６；Ｎｏ）、これまでに算出した正と負双方の領域拡張量のＡＮＤを有効範囲とし、ステップＳ１４１１で設定した比較方法と対応付け近傍検索プランとして保持する（ステップＳ１４１８）。
【００６７】
ここで、ステップＳ１４１３、ステップＳ１４１５で算出される領域拡張量の具体的な算出方法例について説明する。まず近傍検索プラン生成部１４は、後述する基本拡張量を求め、始点となる部分文字列と索引取得対象となる部分文字列に基づいて、この基本拡張量を後述する補正処理により調整し、最終的な領域拡張量を求める。なお、後述する基本拡張量は、検索クエリに依存して導出されるため、部分文字列の何番目の処理においても共通の値となる。
【００６８】
上述した領域拡張量は、負と正の方向では算出方法が異なっている。具体的に、基本拡張量の算出方法は、図９に示した基本拡張量判定テーブルに基づいて設定される。図９に示したように、基本拡張量の導出方法は、近傍条件によって異なっている。例えば、近傍条件が「ｄｉｓｔａｎｃｅ  ａｔ  ｍｏｓｔ」又は「ｄｉｓｔａｎｃｅ  ｅｘａｃｔｒｙ」の場合には、基本拡張量として下記の様にキーワードの文字列長の合計と、近傍条件で指定された距離に対しキーワード数から１を減算した値を積算した値との和が、基本拡張量となる。また、近傍条件が「ｗｉｎｄｏｗ」の場合には、この近傍条件で指定された距離が基本拡張量となる。
【００６９】
まず、負の方向に拡張する場合の補正処理を説明する。負の方向に拡張を行う場合、基本拡張量から確定文字列長と始点文字列補正値との二つを減じたものが拡張量となる。ここで、確定文字列長とは、処理対象の部分文字列のキーワードにおけるオフセットを意味する。つまりオフセットが０ならば確定文字列長は０であり、部分文字列がキーワードの３文字目から開始する場合はオフセットが２で確定文字列長も２となる。これはそのキーワードが基本拡張量の最も左端に位置する場合において、部分文字列がとりうる領域がオフセット分少なくなるためである。
【００７０】
また、始点文字列補正値とは、処理済部分文字列が最も左に位置すると想定して拡張量を算出する際に、基本拡張量から省くことができるそれ自体の文字列長を意味する。処理済の部分文字列のキーワードが１つだけの場合は、始点文字列補正値は（キーワード長−処理済の部分文字列オフセット）である。処理済の部分文字列のキーワードが複数ある場合で、前述したタイプ毎のプランを生成する場合には、夫々のキーワードの処理済部分文字列について算出する。また、タイプ毎のプランを生成しない場合には、処理済キーワードのうち最も短いものを選択することとしてもよい。
【００７１】
次に正の方向に拡張する場合の補正処理を説明する。正の方向に拡張を行う場合、基本拡張量から、必ず１文字分を減じ、更に確定文字列長と、最小最右端部分文字列長から１を減算した値（最小最右端部分文字列長−１）と、を減じる。ここで、確定文字列長は処理済部分文字列のうち、最も左端に来るキーワードの部分文字列であり、処理済部分文字列のキーワードが１つならばそれが対象となる。また、最小最右端部分文字列長とは、「引ファイル」から正の方向に最も遠い位置で適合する部分文字列の文字長を意味する。
【００７２】
また、キーワードが複数ある場合には、タイプ毎に算出してもよいし、キーワード長が最も短いものを対象として求めることとしてもよい。また（最小最右端部分文字列長−１）の最小最右端部分文字列は、未処理キーワードの最も短い部分文字列を対象に算出することとしてもよい。
【００７３】
図７に戻り、ステップＳ１４１６において、他のタイプの比較方法について生成を行うと判断した場合には（ステップＳ１４１６；Ｙｅｓ）、この新たな比較方法に関する情報を、後述するＴＹＰＥ定義テーブル（図１４参照）に格納し（ステップＳ１４１７）、ステップＳ１４１２の処理へと再び戻る。
【００７４】
ステップＳ１４１８において、近傍検索プラン生成部１４は、導出された有効範囲と、当該有効範囲の導出に係る比較方法とを対応付けた近傍検索プランを、後述する検索プランテーブル（図１３参照）に順次格納した後（ステップＳ１４１８）、全ての部分文字列について本近傍検索プラン生成処理を施したか否かを判定する（ステップＳ１４１９）。
【００７５】
ここで、未処理の部分文字列が存在すると判定した場合には（ステップＳ１４１９；Ｎｏ）、ステップＳ１４０１に再び戻り、ステップＳ１３で決定された検索処理順序に応じて、次の部分文字列を処理対象とする。
【００７６】
一方、ステップＳ１４１９において、全ての部分文字列について本処理を施したと判定した場合には（ステップＳ１４１９；Ｙｅｓ）、図４のステップＳ１５へと移行する。
【００７７】
以下、上記したステップＳ１４の近傍検索プラン生成処理の具体的な動作を、図３−１に示した検索クエリの例を用いて説明する。
【００７８】
まず、近傍検索プラン生成部１４は、ステップＳ１３にて決定された検索処理順序に基づき、最初の部分文字列「引フ」を処理対象とした後、２番目の部分文字列「ァイル」を処理対象とする。ここで、近傍検索プラン生成部１４は、ステップＳ１４０２において部分文字列「ァイル」が、先に処理した部分文字列「引フ」と同じキーワードの部分文字列であり、「引フ」に連続する部分文字列であると判定するため（ステップＳ１４０２；Ｙｅｓ）、ステップＳ１４０３〜ステップＳ１４０５の一連の処理により、近傍検索プランを導出する。
【００７９】
この近傍検索プランの生成時において、近傍検索プラン生成部１４は、出現頻度情報に格納されたオフセット値に基づいて、「引フ」の先頭位置の２文字後に「ァイル」が続くと判断し、その有効範囲（固定値）を２とする。つまり、この近傍検索プランによれば、後述する検索処理時での部分文字列「ァイル」の索引取得時に、その位置が「引フ」の先頭位置＋固定値（２）と一致するか否かの絞込（判定）処理を実施し、一致する場合のみ部分文字列「ァイル」が、索引情報として保持されることになる。
【００８０】
次に、近傍検索プラン生成部１４は、ステップＳ１３にて決定された検索処理順序に基づき、３番目の部分文字列「ＸＭＬ」を処理対象とする。ここで、近傍検索プラン生成部１４は、ステップＳ１４０２及びステップＳ１４０６において、部分文字列「ＸＭＬ」が、取得済の部分文字列「引ファイル」とは異なるキーワードであると判定し（ステップＳ１４０２；Ｎｏ）、且つ、近傍条件が「distance  exactly」と語順指定（ordered）で指示されていない（ステップＳ１４０６；Ｎｏ）と判定するため、ステップＳ１４１０〜ステップＳ１４１７の一連の処理により、近傍検索プランを導出する。
【００８１】
上記したように、領域による位置判定の場合、近傍検索プラン生成部１４は、取得済の部分文字列の位置を元に、正負の方向にそれぞれ対象とする部分文字列が取り得る範囲を拡張し、その範囲を有効範囲として取得する。
【００８２】
例えば、図３−１の検索クエリ例の場合、隣り合うキーワードの間の距離が７文字以内という近傍条件が指示されているため、基本拡張量は、図１０に示すように「２８」となる。ここで、基本拡張量は上述したとおり、全ての検索キーワードの文字列長の和に、キーワード間の間隔の数と近傍条件で指示された距離との積（すなわち（キーワード数−１）×距離）を足すことで求められる値である。
【００８３】
近傍検索プラン生成部１４は、基本拡張量を既に取得した部分文字列を始点とし、正負の方向に、近傍条件に応じた値を拡張することで補正を行い、この際の正負の拡張量を夫々求める。
【００８４】
部分文字列「ＸＭＬ」を索引取得対象とする場合、拡張量算出の概念図は図１１のようになる。「引ファイル」の位置は取得済であるため、まず基本拡張量を負の方向に拡張する場合を考える。隣り合うキーワードが７文字以内という条件から、「ＸＭＬ」が「引ファイル」より負の方向に取り得る位置の範囲は、始点を「引ファイル」の末尾にしたところから、負の方向に基本拡張量分だけ拡張した領域となる。即ち、図１１に示したとおり、負の方向に「引ファイルの」先頭位置の前から２３文字目という最小値への領域拡張量が求まる。
【００８５】
次に、正の方向への拡張は、拡張量を先ほどとは反対方向に向け、その始点は既に取得済の部分文字列の最小位置すなわち「引ファイル」の先頭位置とする。なお、正の方向への拡張を行う場合、考慮すべき事項が三点ある。
【００８６】
一つ目は、正の方向に拡張する場合は必ず、部分文字列が構成するキーワードの始点を、当該部分文字列の始点とすることである。例えば、部分文字列「引ファイル」の場合には、その始点をキーワード「索引ファイル」の始点までずらすため、基本拡張量から１を減ずる。
【００８７】
二つ目は、基本拡張量の正の方向への拡張する際の始点についてある。正の方向の場合は必ず、部分文字列が構成するキーワードの始点を基本拡張量の始点とし、この基本拡張量の始点から、処理対象となる部分文字列の先頭位置までの差分値を基本拡張量から減算した位置を拡張量の開始点とする。例えば、図１１に示した部分文字列「引ファイル」が、キーワード「索引ファイル」の構成要素として成立するため、即ち検索クエリに適合するためには必ず、文字「索」が「引ファイル」の１つ前の位置にあるべきである。そのため、拡張量の開始点は「引ファイル」の１つ前の位置にあるべきであるため、基本拡張量の始点から文字「索」分の１を減じることになる。
【００８８】
三つ目は、基本拡張量から更に、「最小最右端部分文字列長−１」を減じる点である。ここで、最小最右端部分文字列長は、処理対象となる部分文字列から正の方向に最も遠い位置で適合する部分文字列の文字長である。例えば、正方向の基本拡張量の最右端は「２６」であるが、「ＸＭＬ」が基本拡張量の最右端に出現する場合、その末尾が「２６」であり、通常位置情報として用いている先頭位置は「２４」となる。つまり「ＸＭＬ」の末尾２文字分の領域は取りえないので、基本拡張量の末尾方向から２減じる。このようにして正方向への拡張量は「２４」と求まる。
【００８９】
このように、３番目の部分文字列「ＸＭＬ」の場合には、領域による比較方法を行うことと拡張量としての有効範囲とを指示した情報を、近傍検索プランとして対応付けて保持する。
【００９０】
次いで、近傍検索プラン生成部１４は、ステップＳ１３にて決定された検索処理順序に応じた順序で、次の部分文字列「クエリ」を処理対象とする。近傍検索プラン生成部１４は、ステップＳ１４０２及びステップＳ１４０６において、取得済の部分文字列とは異なる新たなキーワードの部分文字列と判定し（ステップＳ１４０２；Ｎｏ）、且つ、近傍条件に「distance  exactly」と語順指定（ordered）とが含まれていない（ステップＳ１４０６；Ｎｏ）と判定するため、ステップＳ１４１０〜ステップＳ１４１７の一連の処理により、近傍検索プランを導出する。
【００９１】
この際に、正負の領域拡張量とともに処理タイプを決定する。なぜなら、処理するキーワードの数が３つ以上になった際に、基本拡張量の始点が場合によって異なる為である。具体的には、図３−１の検索クエリの場合、「引ファイル」と「ＸＭＬ」とのどちらが先に出現するかにより、領域拡張量が異なることになる。なお、処理タイプの決定は、必須の処理ではなく、双方の領域拡張量のＡＮＤを算出しこの値を用いることで、この処理を省くことができる。
【００９２】
以下、図１２を参照して、部分文字列「クエリ」に係る基本拡張量の補正について説明する。図１２ではＴＹＰＥ：ＡとＢの二種類があり、それぞれ「ＸＭＬ」が先に出現した場合と、「引ファイル」が先に出現した場合の処理タイプを表している。
【００９３】
両処理タイプにおいても、負の方向の場合には、後に出現した部分文字列の末尾を始点とし、また、正の方向の場合には、先に出現した部分文字列の先頭を始点とする。これら始点に基づいて、確定文字列長の補正、正の方向の場合のみ基本拡張量−１と、最小最右端部分文字列長−１の補正を行う。
【００９４】
なお、処理済みのキーワードが３つ以上ある場合は、ＴＹＰＥのパターン数は増加することになるが、その際には、既知の文字列の出現位置のうち最も大きい部分文字列と最も小さい部分文字列とを夫々始点とするものとする。このように、４番目の部分文字列「クエリ」の場合には、ＴＹＰＥ：Ａの場合（２１、２５）、Ｂの場合（２３、２４）が領域拡張量、即ち有効範囲となる。
【００９５】
また、次に処理される部分文字列「索引」及び、更にその次の部分文字列「検索」は、２番目に処理された部分文字列「ァイル」と同様に、処理済みの部分文字列と所属するキーワードが同一である。そのため、元のキーワードの位置情報に基づいて、固定位置による方法により、近傍検索プランを導出する。
【００９６】
上記の処理により導出された近傍検索プランが格納される近傍検索テーブルの一例を図１３に示す。また、上記したＴＹＰＥが定義されたＴＹＰＥ定義テーブルを図１４に示す。これら、近傍検索テーブル及びＴＹＰＥ定義テーブルが、近傍検索プラン生成処理での出力となる。
【００９７】
図１４のＴＹＰＥ定義テーブルにおいて、ＴＹＰＥの「０」と「１」のフラグは、上記したＡとＢの２種類の処理タイプを夫々表している。また、拡張量算出始点は、図１２で説明したとおり、負方向と正方向で異なっており、ここでは、ＴＹＰＥ：Ａ、すなわちＴＹＰＥ：０の負の方向の領域拡張量を求める際は始点を１、反対に、正の方向の拡張量を求める際は始点を０としている。なお、この始点の値は、複数のキーワードの候補となる位置情報リストの配列番号を意味している。
【００９８】
例えば、図１０の場合、ＴＹＰＥ：Ａの領域の最小値を算出する際の始点は「引ファイル」、即ち、近傍検索プラン生成処理時に、最初の部分文字列「引ファ」にかかる文字列（キーワード）である。このような場合、近傍検索プラン生成部１４は、始点となる「引ファイル」を第０キーワードと設定する。なお、次に処理する部分文字列「ァイル」は同じ第０キーワードに関係するため、特段の処理は施さないものとする。次に、３番目の部分文字列「ＸＭＬ」にかかる文字列（キーワード）は「ＸＭＬ」であるため、この「ＸＭＬ」を第１キーワードと設定する。
【００９９】
このように、近傍検索プラン生成部１４は、ＴＹＰＥ定義テーブルへの格納時において、領域拡張量の算出始点を記録することになるため、上記した第０キーワード、第１キーワードの夫々に対応する配列番号０、１をＴＹＰＥ定義テーブルに格納する。なお、配列番号として格納する値は、対応する文字列との関係が一意に判別することが可能であれば、他のルールに基づいて番号を割り振ることとしてもよい。例えば、検索クエリにて指示されたキーワードの指定順序を用いることとしてもよい。
【０１００】
図４に戻り、索引処理部１５は、ステップＳ１４の近傍検索プラン生成処理で生成された近傍検索プラン（テーブル）に従い、索引情報の検索処理を実行する（ステップＳ１５）。以下、図１５を参照して、ステップＳ１５の検索処理について説明する。
【０１０１】
図１５は、検索処理の手順を示したフローチャートである。まず、索引処理部１５は、ステップＳ１３にて決定された検索処理順序に基づき、最初の部分文字列についての索引情報を文書記憶部１０６の文書から検索し、該当する索引情報を取得する（ステップＳ１５１）。ここで、取得される索引情報には、部分文字列が出現する文書のＤＩＤと、当該文書中における出現位置を示した位置情報ＰＯＳが少なくとも含まれているものとする。
【０１０２】
次いで、索引処理部１５は、ステップＳ１３にて決定された検索処理順序に基づき、次の部分文字列を処理対象とすると、この部分文字列についての索引情報を文書記憶部１０６の文書から検索し、該当する索引情報を取得する（ステップＳ１５２）。続いて、索引処理部１５は、今回処理分の近傍検索プランを近傍検索プランテーブルから参照し、この近傍検索プランに指示された検索方法と、有効範囲と、ＴＹＰＥとに基づいて、前回及び今回取得した索引情報の絞り込みを行い（ステップＳ１５３）、適合した索引情報を、候補情報として取得する（ステップＳ１５４）。
【０１０３】
続いて、索引処理部１５は、全ての部分文字列について、本検索処理を施したか否かを判定し、未処理の部分文字列が存在すると判定した場合には（ステップＳ１５５；Ｎｏ）、ステップＳ１５２に戻り、次の部分文字列を処理対象とする。
【０１０４】
一方、ステップＳ１５５において、全ての部分文字列について本検索処理を施したと判定した場合には（ステップＳ１５５；Ｙｅｓ）、図７のステップＳ１６へと移行する。
【０１０５】
以下、上記した検索処理の具体的な処理例を、図１３に示した近傍検索プランに基づいて説明する。まず、索引処理部１５は、ステップＳ１３にて決定された検索処理順序に基づき、最初の部分文字列「引フ」の索引情報を文書記憶部１０６の文書から検索する（検索処理順序１）。ここで、図１６（１）は、部分文字列「引フ」について取得された索引情報の一例を示している。
【０１０６】
次に、索引処理部１５は、次の部分文字列「ァイル」についての索引情報を文書記憶部１０６の文書から検索する。なお、図１６（２）は、部分文字列「ァイル」について取得された索引情報の一例を示している。ここで、索引処理部１５は、部分文字列「ァイル」についての索引情報を取得した際に、今回の検索処理（検索処理順序２）に対応する近傍検索プランを近傍検索プランテーブルから読み出し、当該近傍検索プランに指示された検索方法と、有効範囲とに基づいて索引情報の絞り込みを行う。
【０１０７】
具体的に、索引処理部１５は、検索方法が「固定」であることから、今回の処理分に対応する近傍検索プランで指示された有効範囲「２」に基づき、前回処理対象となった部分文字列「引フ」の索引情報のうちＤＩＤが同一で、且つ、「ＰＯＳ＋２」となるものが、部分文字列「引フ」と「ァイル」とが連続するための条件と判断し、この条件に該当する索引情報を部分文字列「ァイル」の索引情報から抽出する。
【０１０８】
例えば、部分文字列「引フ」についての最初の索引情報が（ＤＩＤ＝１、ＰＯＳ＝２３）であるため、索引処理部１５は、部分文字列「引フ」に、部分文字列「ァイル」が連続するための条件として、（ＤＩＤ＝１、ＰＯＳ＝２５）を導出する。
【０１０９】
そのため、索引処理部１５は、部分文字列「ァイル」の索引情報から、（ＤＩＤ＝１、ＰＯＳ＝２５）を検索し、この（ＤＩＤ＝１、ＰＯＳ＝２５）に該当する索引情報を特定すると、この特定した索引情報を抽出し候補情報として保持する。なお、索引処理部１５は、「引フ」にかかる全ての索引情報について、上記同様の処理を行い、「ァイル」の索引情報から（ＤＩＤ＝１、ＰＯＳ＝９４）、（ＤＩＤ＝１、ＰＯＳ＝１３４）、（ＤＩＤ＝４、ＰＯＳ＝６９）、（ＤＩＤ＝４、ＰＯＳ＝３８０）を夫々特定し、これら索引情報を抽出し絞込情報として保持する。ここで、図１６（３）は、部分文字列「引フ」と「ァイル」とが連続するという条件を満たした索引情報、即ち「引ファイル」についての候補情報の一例を示している。
【０１１０】
次に、索引処理部１５は、検索処理順序に応じて、三つ目の部分文字列「ＸＭＬ」についての索引情報を文書記憶部１０６の文書から検索する。図１６（４）は、部分文字列「ＸＭＬ」について取得された索引情報の一例を示している。ここで、索引処理部１５は、部分文字列「ＸＭＬ」についての索引情報を取得した際に、今回の検索処理（検索処理順序３）に対応する近傍検索プランを近傍検索プランテーブルから読み出し、当該近傍検索プランに指示された検索方法（領域）と、有効範囲（負方向に２３、正方向に２４）とに基づいて、索引情報の絞り込みを行う。
【０１１１】
具体的に、索引処理部１５は、検索方法が「合成」であることから、前回取得された「引ファイル」の索引情報を基準とし、部分文字列「ＸＭＬ」の索引情報が、近傍条件に適合するための条件（適合条件）が、「引ファイル」の各索引情報のＰＯＳに「２３」を減算及び「２４」を加算したもの、即ち、（ＤＩＤ、「引ファイル」のＰＯＳ−２３≦「ＸＭＬ」のＰＯＳ≦「引ファイル」のＰＯＳ＋２４）であると判断する。
【０１１２】
例えば、「引ファイル」にかかる最初の索引情報は（ＤＩＤ＝１、ＰＯＳ＝２３）である。これに対して部分文字列「ＸＭＬ」が近傍条件に適合する可能性のある有効範囲は負方向に２３、正方向に２４であるため、「引ファイル」を元に算出した索引情報の適合条件は（ＤＩＤ＝１、ＰＯＳ＝０〜４７）となる。
【０１１３】
そのため、索引処理部１５は、「ＸＭＬ」にかかる索引情報のうち、「引ファイル」にかかる各索引情報に基づいて、上記適合条件に適合するものを順次抽出し、適合する「引ファイル」の候補情報（索引情報）と対応付けて、「引ファイル」と「ＸＭＬ」との候補情報として保持する（図１６（５）参照）。ここで得られた候補情報は、近傍条件を満たす「引ファイル」と「ＸＭＬ」との索引情報の組み合わせ、即ち「引ファイル」＆＆「ＸＭＬ」についての候補情報を意味している。
【０１１４】
具体的に、索引処理部１５は、上述した適合条件は（ＤＩＤ＝１、ＰＯＳ＝０〜４７）に対し、図１６（４）中の索引情報（ＤＩＤ＝１、ＰＯＳ＝２９）が適合すると判定し、この検索情報を抽出する。この際、索引処理部１５は、「引ファイル」の出現位置が「ＸＭＬ」の出現位置より前か後ろかを、位置情報（ＰＯＳ）に基づいて判別し、このＴＹＰＥ種別を絞込情報に対応付けて保持する。図１６（５）では、ＴＹＰＥ種別を０もしくは１で表している。これは、近傍検索処理プランで述べたＴＹＰＥに相当し、後の部分文字列処理判定を行う際に用いる。
【０１１５】
また、索引処理部１５は、適合条件は（ＤＩＤ＝１、ＰＯＳ＝０〜４７）について、図１６（４）中の他の索引情報についても同様の比較を行うが、何れの索引情報の値も（ＤＩＤ＝１、ＰＯＳ＝０〜４７）より大きく、該当する索引情報が存在しないため、「引ファイル」の索引情報について次の値に処理を移す。
【０１１６】
次いで索引処理部１５は、「引ファイル」に係る検索情報のうち（ＤＩＤ＝１、ＰＯＳ＝１３２）について比較を行う。この場合、適合条件（ＤＩＤ＝１、ＰＯＳ＝１０９〜１５６）に該当する「ＸＭＬ」は（ＤＩＤ＝１、ＰＯＳ＝１２８）及び（ＤＩＤ＝１、ＰＯＳ＝１４４）となる。このように複数の候補が発生した場合には、両者を候補として追加し、更に夫々該当するＴＹＰＥを付与するものとする。以後同様に、「引ファイル」の位置情報（ＰＯＳ）を元に、同じ文書で領域判定に適合する候補を取得する。
【０１１７】
図１６（５）は、「引ファイル」と「ＸＭＬ」について取得された索引情報の一例を示している。なおここで、「Ｋ１」、「Ｋ２」は、夫々異なる部分文字列（キーワード）に係る索引情報であることを意味している。なお、図１６（５）では、Ｋ１が「引ファイル」に対応し、Ｋ２が「ＸＭＬ」に対応する。
【０１１８】
次に、索引処理部１５は、検索処理順序に応じて、四つ目の部分文字列「クエリ」についての索引取得を文書記憶部１０６の文書から検索する（検索処理順序４）。なお、図１６（６）は、部分文字列「クエリ」について取得された索引情報の一例を示している。ここで、索引処理部１５は、部分文字列「クエリ」の索引情報を取得した際に、近傍検索プランにあるとおり、同時に領域判定処理を行う。ここで、既に取得した「引ファイル」と「ＸＭＬ」との候補情報（図１６（５）参照）に基づき、部分文字列「クエリ」との位置関係の判定を行う。
【０１１９】
図１６（５）に示したように、１番目の索引情報のＴＹＰＥは１であるため、索引処理部１５は、適合条件の最小値を配列番号０に対応する「ＸＭＬ」の末尾位置に基づいて導出する。また、索引処理部１５は、適合条件の最大値を配列番号１に対応する「引ファイル」の始点位置に基づいて導出する。なお、ＴＹＰＥが０の際には、ＴＹＰＥ１の条件と逆となり、適合条件の最小値を配列番号０に対応する「引ファイル」の末尾位置に基づいて導出する。また、索引処理部１５は、適合条件の最大値を配列番号１に対応する「ＸＭＬ」の始点位置に基づいて導出する。
【０１２０】
例えば、図１６（５）の最初の索引情報、「引ファイル」（ＤＩＤ＝１、ＰＯＳ＝２３）、「ＸＭＬ」（ＤＩＤ＝１、ＰＯＳ＝２９）については、対応する近傍検索プラン（負方向に２３、正方向に２４）、ＴＹＰＥ＝１に基づいて、（ＤＩＤ＝１、ＰＯＳ＝６〜４７）を適合条件として導出する。
【０１２１】
そして、索引処理部１５は、求めた適合条件について、上記と同様の絞り込み処理を部分文字列「クエリ」の索引情報に対して行い、部分文字列「クエリ」の索引情報について適合する（Ｄ＝１、ＰＯＳ＝３３）を抽出する。続いて索引処理部１５は、図１６（５）に示した「引ファイル」＆＆「ＸＭＬ」の候補情報に含まれる索引情報のうち、部分文字列「クエリ」の索引情報に対応するものについて、適合した部分文字列「クエリ」の索引情報と対応付け、図１６（７）に示した「引ファイル」＆＆「ＸＭＬ」＆＆「クエリ」の候補情報として保持する。ここで得られた候補情報は、近傍条件を満たす「引ファイル」と「ＸＭＬ」と「ＸＭＬ」との索引情報の組み合わせ、即ち「引ファイル」＆＆「ＸＭＬ」＆＆「クエリ」についての候補情報を意味している。以後同様に、「引ファイル」と「ＸＭＬ」との各索引情報について、「クエリ」の索引情報との比較を行い、適合条件に適合した索引情報を抽出し、候補情報として保持する。
【０１２２】
索引処理部１５は、上記の検索処理を、検索処理順序で指示された全ての部分文字列に対して行う。このように、近傍検索プランの指示内容に沿って、出現頻度が少ない部分文字列の順に処理することで、近傍条件に適合する可能性のある索引情報を絞り込むことができる。
【０１２３】
図４に戻り、近傍条件判定部１６は、ステップＳ１５で最終的に生成された候補情報に基づいて、当該候補情報に含まれた各索引情報のキーワード（部分文字列）について、近傍条件を満たすか否かの最終的な判定を行い、この近傍条件を満たした索引情報に係る文書を文書記憶部１０６から読み出し、検索結果として表示部１０３等に出力した後（ステップＳ１６）、本処理を終了する。
【０１２４】
具体的に、近傍条件判定部１６は、候補情報として格納された各キーワード間の距離を、位置情報（ＰＯＳ）を減算することで導出し、この値が近傍条件で指示された距離を満たしているかを判定する。なお、ステップＳ１６にて近傍条件との判定を行う理由は、ステップＳ１５の検索処理にかかる計算コスト削減のため、適合条件の判定に用いる領域値を一定としているためである、この拡張量は、厳密には端部に出現するキーワードにより、その詳細は変化するものであるため、候補の中には領域を超えているものが含まれている可能性がある。そのため、本ステップＳ１６の処理では、それらの確認を行っている。なお、上記した処理により候補の大小関係はある程度既知であるため、キーワード間の距離算出前の大小関係確認コストの一部は省くことができる。すなわちＴＹＰＥ：Ａ及びＢの情報を再利用することが可能である。
【０１２５】
以上のように、本実施形態の文書検索装置、方法及びプログラムによれば、
検索対象となったキーワードにかかる部分文字列の索引情報の取得時に、近傍条件に明らかに適合しない位置情報を除外することができるため、最終的に近傍条件と比較を行う索引情報の件数を抑えることが可能となり、近傍検索にかかる処理を効率的に行うことができる。また、事前に検索処理順序を決定し、当該検索処理順序に応じた近傍検索プランを生成することで、より最適な処理手順で近傍検索を行うことが可能となり、近傍検索にかかる処理を効率的に行うことができる。
【０１２６】
以上、発明の実施の形態について説明したが、本発明はこれに限定されるものではなく、本発明の主旨を逸脱しない範囲での種々の変更、置換、追加などが可能である。
【０１２７】
例えば、上記実施形態では、検索対象となる複数の文書を記憶する文書記憶部１０６を文書検索装置１００内に備える態様としたが、これに限らず、例えば、文書記憶部１０６を文書検索装置１００の外部に備え、通信部１０７を介して接続する態様としてもよい。
【図面の簡単な説明】
【０１２８】
【図１】文書検索装置の構成を示したブロック図である。
【図２】文書検索装置の機能的構成を示したブロック図である。
【図３−１】検索クエリの一例を示した図である。
【図３−２】検索クエリの一例を示した図である。
【図３−３】検索クエリの一例を示した図である。
【図３−４】検索クエリの一例を示した図である。
【図４】近傍検索処理の手順を示したフローチャートである。
【図５】出現頻度情報の一例を示した図である。
【図６】出現頻度情報の一例を示した図である。
【図７】近傍検索プラン生成処理の手順を示したフローチャートである。
【図８】比較処理判定テーブルの一例を示した図である。
【図９】基本拡張量判定テーブルの一例を示した図である。
【図１０】拡張量の算出方法を説明するための図である。
【図１１】拡張量の算出方法を説明するための図である。
【図１２】基本拡張量の補正を説明するための図である。
【図１３】近傍検索プランの一例を示した図である。
【図１４】ＴＹＰＥ定義テーブルの一例を示した図である。
【図１５】検索処理の手順を示したフローチャートである。
【図１６】検索処理を説明するための図である。
【符号の説明】
【０１２９】
１００  文書検索装置
１０１  ＣＰＵ
１０２  操作部
１０３  表示部
１０４  ＲＯＭ
１０５  ＲＡＭ
１０６  文書記憶部
１０７  通信部
１１  部分文字列分割部
１２  索引頻度情報取得部
１３  処理順序判定部
１４  近傍検索プラン生成部
１５  索引処理部
１６  近傍条件判定部
【図１】
2008243074.tif 000003
【図２】
2008243074.tif 000004
【図３−１】
2008243074.tif 000005
【図３−２】
2008243074.tif 000006
【図３−３】
2008243074.tif 000007
【図３−４】
2008243074.tif 000008
【図４】
2008243074.tif 000009
【図５】
2008243074.tif 000010
【図６】
2008243074.tif 000011
【図７】
2008243074.tif 000012
【図８】
2008243074.tif 000013
【図９】
2008243074.tif 000014
【図１０】
2008243074.tif 000015
【図１１】
2008243074.tif 000016
【図１２】
2008243074.tif 000017
【図１３】
2008243074.tif 000018
【図１４】
2008243074.tif 000019
【図１５】
2008243074.tif 000020
【図１６】
2008243074.tif 000021