(57)【要約】      （修正有）【課題】全文検索を行う際には、テキストスキャン方式の検索時間と、インデックススキャン方式の検索時間とを予測し、短い方の検索方式で検索処理をすること好ましい。【解決手段】文書データを検索する検索装置１００は、検索対象となる文書を記憶する文書格納領域１４１と、文書を特定する文書ＩＤに対応付けて、文書のデータサイズを記憶する文書管理テーブル１４２とを備える。検索装置１００は、検索対象となる文書のデータサイズを文書管理テーブルから読み出し、読み出したデータサイズを合計することにより検索文書量を算出し、検索文書量に基づいて、インデックススキャン方式による検索処理にかかる予測時間ｔ１と、テキストスキャン方式による検索処理にかかる予測時間ｔ２とを算出する。検索装置１００は、予測時間ｔ１及びｔ２を比較して、インデックススキャン方式及びテキストスキャン方式の何れにより検索処理を行うかを決定する。【選択図】図１
2008158685.tif 000002
【特許請求の範囲】
【請求項１】
文書データを検索する検索装置であって、
検索対象となる文書データを記憶する文書記憶部と、
前記文書データを特定する文書ＩＤに対応付けて、前記文書データのデータサイズを記憶する文書サイズ記憶部と、
検索対象となる前記文書データを示す前記文書ＩＤに対応する前記データサイズを前記文書サイズ記憶部から読み出し、読み出した前記データサイズを合計することにより検索文書量を算出する検索文書量算出部と、
前記検索文書量に基づいて、第１の検索方式による検索処理にかかる第１の予測時間と第２の検索方式による検索処理にかかる第２の予測時間とを算出する予測時間算出部と、
前記第１及び第２の予測時間を比較して、前記第１及び第２の検索方式の何れにより検索処理を行うかを決定する検索方式決定部と、
を備えることを特徴とする検索装置。
【請求項２】
請求項１に記載の検索装置であって、
第１及び第２の検索キーの入力を受け付ける検索キー入力部と、
前記文書データに含まれる前記検索キー及び前記文書ＩＤを対応付けて記憶するインデックス記憶部と、
前記検索キーを含む前記文書データの検索処理を行う検索実行部と、
前記検索キーを含む前記文書データを示す検索文書ＩＤを記憶する検索文書ＩＤ記憶部と、を備え、
前記第１の検索方式は、前記検索キーに対応する前記文書ＩＤを前記インデックス記憶部から検索するインデックススキャン方式であり、
前記第２の検索方式は、前記文書記憶部に記憶されている前記文書データのそれぞれについて、前記文書データに前記検索キーが含まれているかどうかを検索するテキストスキャン方式であり、
前記検索実行部は、前記第１の方式により前記第１の検索キーを含む前記文書データを検索し、検索した前記第１の検索キーを含む前記文書データを示す前記検索文書ＩＤを前記検索文書ＩＤ記憶部に記憶し、
前記検索文書量算出部は、前記検索文書ＩＤ記憶部に記憶されている前記検索文書ＩＤのそれぞれに対応する前記データサイズを前記文書サイズ記憶部から読み出し、読み出した前記データサイズを合計することにより、前記検索文書量を算出し、
前記検索方式決定部は、前記第１及び第２の予測時間を比較して、前記第１及び第２の検索方式の何れにより前記第２の検索キーを含む前記文書データの検索処理を行うかを決定すること、
を特徴とする検索装置。
【請求項３】
請求項２に記載の検索装置であって、
前記検索方式決定部は、
前記検索文書ＩＤの数が所定数以下であるかどうかにより、前記文書データを検索する前記検索方式の決定を行うかどうかを判断し、
前記検索方式の決定を行うと判断した場合には、前記第１及び第２の予測時間を比較して、前記第１及び第２の検索方式の何れにより前記第２の検索キーを含む前記文書データの検索処理を行うかを決定し、
前記検索方式の決定を行わないと判断した場合には、前記第１の方式により前記第２の検索キーを含む前記文書データの検索処理を行うことを決定すること、
を特徴とする検索装置。
【請求項４】
請求項２に記載の検索装置であって、
前記インデックス記憶部は、前記検索キー及び前記文書ＩＤを対応付けるインデックス情報を記憶しており、
前記検索キーに対応付けて、前記検索キーに対応する全ての前記インデックス情報のデータサイズの合計であるインデックスサイズを記憶するインデックスサイズ記憶部と、
単位時間当たりに前記文書記憶部から読み出し可能なデータ量である文書読み出し単位量と、前記単位時間当たりに前記インデックス記憶部から読み出し可能なデータ量であるインデックス読み出し単位量とを記憶する設定情報記憶部を備え、
前記予測時間算出部は、前記検索文書量と前記文書読み出し単位量とに基づいて、前記検索文書ＩＤに対応する全ての前記文書データを前記文書記憶部から読み出すために必要な時間を前記第１の予測時間として算出し、
前記予測時間算出部は、前記第２の検索キーに対応する前記インデックスサイズを前記インデックスサイズ記憶部から読み出し、読み出した前記インデックスサイズと前記インデックス読み出し単位量とに基づいて、前記検索キーに対応する全ての前記インデックス情報を前記インデックス記憶部から読み出すために必要な時間を前記第２の予測時間として算出すること、
を特徴とする検索装置。
【請求項５】
請求項４に記載の検索装置であって、
前記設定情報記憶部は、前記文書読み出し単位量及び前記インデックス読み出し単位量に加えて、前記文書データの前記データサイズの平均値である平均データサイズを記憶しており、
前記平均データサイズ、前記文書読み出し単位量、及び前記インデックス読み出し単位量に基づいて、前記検索方式の決定を行うかどうかを判断するための閾値を算出する閾値決定部と、
前記検索文書ＩＤの数が前記閾値以下である場合には、前記検索方式決定部は、前記第１及び第２の検索方式の何れにより前記第２の検索キーを含む前記文書データの検索処理を行うかを決定し、
前記検索文書ＩＤの数が前記閾値より大きい場合には、前記検索方式決定部は、前記第１の検索方式により前記第２の検索キーを含む前記文書データの検索処理を行うと決定すること、
を特徴とする検索装置。
【請求項６】
請求項２に記載の検索装置であって、
前記検索方式決定部は、前記第１の予測時間に所定の係数を乗じた時間と、前記第２の予測時間とを比較して、前記第２の検索キーを含む前記文書データの検索処理を行う検索方式を決定すること、
を特徴とする検索装置。
【請求項７】
請求項２に記載の検索装置であって、
前記検索キーは所定数の文字の組み合わせから構成され、
前記インデックス記憶部は、検索対象となる全ての前記文書データに含まれている、前記所定数の文字の全ての組み合わせに対応付けて、前記文書ＩＤを記憶していること、
を特徴とする検索装置。
【請求項８】
文書データを検索する方法であって、
検索対象となる文書データを記憶する文書記憶部を備えるコンピュータが、
前記文書データを特定する文書ＩＤに対応付けて、前記文書データのデータサイズをメモリに記憶し、
検索対象となる前記文書データを示す前記文書ＩＤに対応する前記データサイズを前記メモリから読み出し、読み出した前記データサイズを合計することにより検索文書量を算出し、
前記検索文書量に基づいて、第１の検索方式による検索処理にかかる第１の予測時間と第２の検索方式による検索処理にかかる第２の予測時間とを算出し、
前記第１及び第２の予測時間を比較して、前記第１及び第２の検索方式の何れにより検索処理を行うかを決定すること、
を特徴とする検索方法。
【請求項９】
請求項８に記載の検索方法であって、
前記コンピュータは、検索キーと、前記検索キーを含む前記文書データを示す前記文書ＩＤとを対応付けて記憶するインデックス記憶部を備えており、
前記第１の検索方式は、前記検索キーに対応する前記文書ＩＤを前記インデックス記憶部から検索するインデックススキャン方式であり、
前記第２の検索方式は、前記文書記憶部に記憶されている前記文書データのそれぞれについて、前記文書データに前記検索キーが含まれているかどうかを検索するテキストスキャン方式であり、
前記コンピュータは、
第１及び第２の前記検索キーの入力を受け付け、
前記第１の方式により前記第１の検索キーを含む前記文書データを検索し、検索した前記第１の検索キーを含む前記文書データを示す前記検索文書ＩＤを前記メモリに記憶し、
前記メモリに記憶されている前記検索文書ＩＤのそれぞれに対応する前記データサイズを前記メモリから読み出し、読み出した前記データサイズを合計することにより、前記検索文書量を算出し、
前記第１及び第２の予測時間を比較して、前記第１及び第２の検索方式の何れにより前記第２の検索キーを含む前記文書データの検索処理を行うかを決定すること、
を特徴とする検索方法。
【請求項１０】
請求項９に記載の検索方法であって、
前記コンピュータは、
前記検索文書ＩＤの数が所定数以下であるかどうかにより、前記文書データを検索する前記検索方式の決定を行うかどうかを判断し、
前記検索方式の決定を行うと判断した場合には、前記第１及び第２の予測時間を比較して、前記第１及び第２の検索方式の何れにより前記第２の検索キーを含む前記文書データの検索処理を行うかを決定し、
前記検索方式の決定を行わないと判断した場合には、前記第１の方式により前記第２の検索キーを含む前記文書データの検索処理を行うことを決定すること、
を特徴とする検索方法。
【請求項１１】
請求項９に記載の検索方法であって、
前記コンピュータは、
前記検索キーに対応付けて、前記検索キーに対応する全ての前記インデックスのデータサイズの合計であるインデックスサイズを前記メモリに記憶し、
単位時間当たりに前記文書記憶部から読み出し可能なデータ量である文書読み出し単位量と、前記単位時間当たりに前記インデックス記憶部から読み出し可能なデータ量であるインデックス読み出し単位量とを前記メモリに記憶し、
前記検索文書量と前記文書読み出し単位量とに基づいて、前記検索文書ＩＤに対応する全ての前記文書データを前記文書記憶部から読み出すために必要な時間を前記第１の予測時間として算出し、
前記第２の検索キーに対応する前記インデックスサイズを前記インデックスサイズ記憶部から読み出し、読み出した前記インデックスサイズと前記インデックス読み出し単位量とに基づいて、前記検索キーに対応する全ての前記インデックスを前記インデックス記憶部から読み出すために必要な時間を前記第２の予測時間として算出すること、
を特徴とする検索方法。
【請求項１２】
請求項１１に記載の検索方法であって、
前記コンピュータは、
前記文書読み出し単位量及び前記インデックス読み出し単位量に加えて、前記文書データの前記データサイズの平均値である平均データサイズを前記メモリに記憶し、
前記平均データサイズ、前記文書読み出し単位量、及び前記インデックス読み出し単位量に基づいて、前記検索方式の決定を行うかどうかを判断するための閾値を算出する閾値決定部と、
前記検索文書ＩＤの数が前記閾値以下である場合、前記第１及び第２の検索方式の何れにより前記第２の検索キーを含む前記文書データの検索処理を行うかを決定し、
前記検索文書ＩＤの数が前記閾値より大きい場合には、前記第１の検索方式により前記第２の検索キーを含む前記文書データの検索処理を行うと決定すること、
を特徴とする検索方法。
【請求項１３】
請求項９に記載の検索方法であって、
前記コンピュータは、前記第１の予測時間に所定の係数を乗じた時間と、前記第２の予測時間とを比較して、前記第２の検索キーを含む前記文書データの検索処理を行う検索方式を決定すること、
を特徴とする検索方法。
【請求項１４】
請求項９に記載の検索方法であって、
前記検索キーは所定数の文字の組み合わせから構成され、
前記コンピュータは、検索対象となる全ての前記文書データに含まれている、前記所定数の文字の全ての組み合わせに対応付けて、前記文書ＩＤを前記メモリに記憶していること、
を特徴とする検索方法。
【請求項１５】
文書データを検索するためのプログラムであって、
検索対象となる文書データを記憶する文書記憶部を備えるコンピュータに、
前記文書データを特定する文書ＩＤに対応付けて、前記文書データのデータサイズをメモリに記憶するステップと、
検索対象となる前記文書データを示す前記文書ＩＤに対応する前記データサイズを前記メモリから読み出し、読み出した前記データサイズを合計することにより検索文書量を算出するステップと、
前記検索文書量に基づいて、第１の検索方式による検索処理にかかる第１の予測時間と第２の検索方式による検索処理にかかる第２の予測時間とを算出するステップと、
前記第１及び第２の予測時間を比較して、前記第１及び第２の検索方式の何れにより検索処理を行うかを決定するステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索装置、検索方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、各種の業務におけるコンピュータの普及により電子化文書の作成が容易になり、大量の文書がメモリやハードディスクドライブなどの記憶装置に蓄積されるようになってきている。
【０００３】
しかし、文書の名称を知らない場合や、名称を忘れてしまった場合などには、ユーザは目的の文書にアクセスすることができない。また、ユーザが大量の文書の全てについて目的の文書であるかどうかを検査していくのは困難である。
【０００４】
そこで、検索キーを含む文書を記憶装置から検索する、いわゆる全文検索が行われている。全文検索に用いられる検索方式としては、検索対象となる各文書に検索キーが含まれているかどうかを逐次的に照合するテキストスキャン方式（例えば、非特許文献１参照）や、検索キー毎にその検索キーが含まれる文書を記録したインデックスを利用するインデックススキャン方式（例えば、特許文献１参照）が知られている。
【０００５】
また、検索エンジンを選択するものとして例えば特許文献２がある。
【非特許文献１】Ｗｉｌｌｉａｍ Ｂ. Ｆｒａｋｅｓ、Ｒｉｃａｒｄｏ Ｂａｅｚａ−Ｙａｔｅｓ著”Ｉｎｆｏｒｍａｔｉｏｎ Ｒｅｔｒｉｅｖａｌ”、Ｐｒｅｎｔｉｃｅ Ｈａｌｌ  ＰＴＲ社, １９９２年, ｐ．２１９-２４０
【特許文献１】特開平８−１９４７１８号公報
【特許文献２】特開２００３−３０８３３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
全文検索を行う際には、テキストスキャン方式により検索を行った場合にかかる時間と、インデックススキャン方式により検索を行った場合にかかる時間とを予測し、予測した時間の短い方の検索方式で検索処理をすること好ましい。  
しかしながら、検索にかかる予測時間の算出には、検索対象となる文書のデータサイズの合計を求める必要があるところ、特に大量の文書群が記憶装置に格納されている場合には、文書のデータサイズを記憶装置から取得することに時間がかかってしまう。
【０００７】
本発明は、このような背景を鑑みてなされたものであり、検索対象となる文書のデータサイズに応じて、より短い時間で検索処理を行うことのできる検索装置、検索方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、文書データを検索する検索装置であって、検索対象となる文書データを記憶する文書記憶部と、前記文書データを特定する文書ＩＤに対応付けて、前記文書データのデータサイズを記憶する文書サイズ記憶部と、検索対象となる前記文書データを示す前記文書ＩＤに対応する前記データサイズを前記文書サイズ記憶部から読み出し、読み出した前記データサイズを合計することにより検索文書量を算出する検索文書量算出部と、前記検索文書量に基づいて、第１の検索方式による検索処理にかかる第１の予測時間と第２の検索方式による検索処理にかかる第２の予測時間とを算出する予測時間算出部と、前記第１及び第２の予測時間を比較して、前記第１及び第２の検索方式の何れにより検索処理を行うかを決定する検索方式決定部と、を備えることとする。
【発明の効果】
【０００９】
本発明によれば、検索対象となる文書のデータサイズに応じて、より短い時間で検索処理を行うことができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の一実施形態である文書の検索装置１００について説明する。本実施形態の検索装置１００は、利用者から入力されたキーワードを含む文書を検索する、いわゆる全文検索を行うことを想定している。検索の対象となる文書は、例えば、ファイルシステムに格納されるファイルや、データベースに格納されるレコードとして検索装置１００に管理される。
【００１１】
文書の全文検索を行う検索方式としてテキストスキャン方式を採用した場合、全ての文書についてキーワードと一致するかどうかの照合処理が逐次的に行なわれる。このため、テキストスキャン方式による文書の検索処理（以下、テキスト検索という。）にかかる検索時間は検索対象となる全文書（以下、対象文書群という。）のデータサイズの合計に比例する。したがって、文書の数が多い場合や、文書のデータサイズが大きい場合などには長大な検索時間が必要となる。
【００１２】
例えば、１秒当たりに１００メガバイトのデータを読み出すことができる記憶装置に、平均２００キロバイトの文書が４０００万件、すなわち全体で８０ギガバイト（８０，０００メガバイト）の対象文書群が記憶されている場合において、１文字のキーワードを含む文書を検索するときには、テキストスキャン方式による文字の照合処理には、８０，０００[メガバイト]÷１００[メガバイト／秒]＝８００[秒]の時間が必要となる。しかしながら、検索処理にかかる時間としての許容範囲は一般に数秒〜数十秒程度であり、８００秒の検索時間は実用的ではない。
【００１３】
これに対し、本実施形態では、文書に含まれる文字毎に、その文字が含まれる文書と、文書中にその文字が出現する位置（オフセット）とを対応付けて記憶する、いわゆるＮ−ｇｒａｍ形式（１−ｇｒａｍ形式）のインデックスを予め作成しておき、このインデックスを利用して、インデックススキャン方式による検索処理（以下、インデックス検索という。）を行うようにしている。
【００１４】
しかし、本実施形態の検索装置１００のように、Ｎ−ｇｒａｍ形式のインデックスが作成されている場合には、インデックスの数も膨大となり、対象文書群の文書数によっては、インデックスの読み出しに係る時間よりも、全文書を読み出す時間の方が短くなることもある。
【００１５】
そこで、本実施形態の検索装置１００では、ユーザから指定されたキーワードを構成する各文字（本発明の検索キーに対応する。）についてのインデックス検索を行った後に、この検索処理により絞り込まれた検索対象の文書に対するテキスト検索にかかる予測時間と、残りの文字についてのインデックス検索にかかる予測時間とを比較して、絞り込まれた検索対象の文書に対するテキスト検索の方が早く検索処理が終わる場合には、途中からテキスト検索を行うように検索方式を切り替えるようにしている。
【００１６】
＝＝全体構成＝＝
図１は、本実施形態に係る検索装置１００のハードウェア構成を示す図である。同図に示すように、本実施形態の検索装置１００は、ＣＰＵ１０１、ＣＤ−ＲＯＭドライブ１０２、ディスプレイ装置１０３、キーボード１０４、通信インタフェース１０５、主メモリ１０６、磁気ディスク装置１０７及びこれらを結ぶバス１０８から構成される。
【００１７】
ＣＤ−ＲＯＭ１０９にはプログラムやデータが記録されている。なお、ＣＤ−ＲＯＭ１０９に代えて、ＤＶＤ−ＲＯＭやＭＯディスク、フロッピーディスク、フラッシュメモリ、ハードディスクなどの可搬型記憶媒体を用いるようにすることもできる。
【００１８】
ＣＤ−ＲＯＭドライブ１０２は、ＣＤ−ＲＯＭ１０９に記憶されているプログラムやデータを読み出す。ＣＤ−ＲＯＭドライブ１０２により読み出されたプログラムやデータは主メモリ１０６に格納され、バス１０８を介して磁気ディスク装置１０７に転送される。なお、ＣＤ−ＲＯＭドライブ１０２は、プログラムやデータの記録媒体に応じて、ＤＶＤドライブやＭＯドライブ、フロッピーディスクドライブ（ＦＤＤ）などとすることもできる。
【００１９】
通信インタフェース１０５は、通信ネットワーク２００に接続するインタフェースである。通信ネットワーク２００は、例えば、インターネットやＬＡＮ（Local Area Network）、ＳＡＮ（Storage Area Network）である。通信インタフェース１０５は、例えば、イーサネット（登録商標）に接続するためのアダプタや、ファイバーチャネルに接続するアダプタ、公衆電話回線網に接続するためのモデムである。
【００２０】
主メモリ１０６には、システム制御プログラム１１０が記憶されている。システム制御プログラム１１０はキーボード１０４から入力されたコマンドにより起動される。なお、システム制御プログラム１１０を起動するコマンドや、通信インタフェース１０５を介してネットワーク２００に接続された他のコンピュータ（不図示）から送信されるコマンドを受信するようにしてもよい。
【００２１】
システム制御プログラム１１０は文書登録制御プログラム１１１及び検索処理制御プログラム１１２から構成される。文書登録制御プログラム１１１は、文書格納プログラム１２０及び文字列インデックス作成プログラム１２１から構成される。
【００２２】
検索処理制御プログラム１１２は条件解析プログラム１２２、検索実行プログラム１２３、検索文書量算出プログラム１２５、予測時間算出プログラム１２６及び結果出力プログラム１２７から構成される。
【００２３】
上記の各プログラムは、ＣＤ−ＲＯＭ１０９に記録されており、ＣＤ−ＲＯＭドライブ１０２により主メモリ１０６に読み出される。なお、上記の各プログラムは、磁気ディスク装置１０７に記憶しておくようにしてもよいし、通信インタフェース１０５を介して、通信ネットワーク２００に接続されている他のコンピュータ（不図示）から受信するようにしてもよい。また、上記の各プログラムは、キーボード１０４から入力するようにしてもよい。
【００２４】
検索装置１００の実行する各処理は、図１の各種プログラム１１０〜１２７をＣＰＵ１０１が実行することにより実現するが、これらは、システム制御部、文書登録制御部、文書格納部、インデクス作成部、検索処理制御部、条件解析部、インデクススキャン部、テキストスキャン部、インデクススキャン検索時間予測部、テキストスキャン検索時間予測部、検索結果出力部など、各処理を行う処理部として集積回路化するなどしてハードウェアで実現することもできる。
【００２５】
以下説明を簡略化するため、各種プログラム１１０〜１２７をＣＰＵ１０１が実行することで実現される各処理部を各処理の主体として説明する。なお各処理部をハードウェアで実現した場合にはその各処理部が主体となって各処理を行う。
【００２６】
主メモリ１０６にはまた、キーワード格納領域１４０、文書格納領域１４１、文書管理テーブル１４２、検索条件格納領域１４３、検索処理方式格納領域１４４、検索結果格納領域１４５、照合インデックス格納領域１４６、設定情報格納領域１４７の各記憶領域が確保される。なお、上記の各記憶領域は、磁気ディスク装置１０７に確保されるようにしてもよい。
【００２７】
磁気ディスク装置１０７は、データを記憶する二次記憶装置である。磁気ディスク装置１０７は、例えばハードディスクドライブである。磁気ディスク装置１０７には、記憶領域であるインデックス格納領域１５０とインデックス管理テーブル１５１とが確保される。なお、磁気ディスク装置１０７は、ＮＡＳ（Network Attached Storage）として、通信ネットワーク２００に接続されるようにして、通信インタフェース１０５を介して検索装置１００と接続するようにしてもよい。また、磁気ディスク装置１０７は、通信インタフェース１０５を介してネットワーク２００に接続された他のコンピュータ（不図示）に内蔵するようにしてもよい。
【００２８】
また、磁気ディスク装置１０７には、後述するインデックス管理テーブル１５１が記憶されている。なお、インデックス格納領域１５０は主メモリ１０６に確保されるようにしてもよい。また、インデックス管理テーブル１５１は、主メモリ１０６に記憶されるようにしてもよい。
【００２９】
＝＝ソフトウェア構成＝＝
図２は、検索装置１００のソフトウェア構成を示す図である。同図に示すように、検索装置１００は、コマンド入力部２１１、文書格納処理部２１２、インデックス作成処理部２１３、検索条件解析部２１５、検索方式決定部２１６、検索文書量算出部２１７、予測時間算出部２１８、検索実行部２１９、検索結果出力部２２１を備えている。
【００３０】
コマンド入力部２１１は、文書を登録するように指示するコマンド（以下、登録コマンドという。）、又は文書を検索するように指示するコマンド（以下、検索コマンドという。）の入力を受け付ける。コマンド入力部２１１は、キーボード１０４からコマンドの入力を受け付ける。コマンド入力部２１１は、システム制御プログラム１１０をＣＰＵ１０１が実行することにより実現される。
【００３１】
登録コマンドには、登録すべき文書の内容を示すデータが含まれるものとする。なお、文書の内容は磁気ディスク装置１０７などに予めファイルとして記憶しておき、登録コマンドには、そのファイル名を含めるようにしてもよい。
【００３２】
検索コマンドには、検索条件が含まれる。検索コマンド含まれる検索条件は、１つ以上のキーワードから構成される。本実施形態では簡単のため、文書の検索は、上記キーワードの全てが含まれる文書を検索する、いわゆるＡＮＤ検索の方式により行われるものとする。
【００３３】
文書格納処理部２１２は、登録コマンドにより示される文書を文書格納領域１４１に格納する。文書格納領域１４１の構成例を図３に示す。同図に示すように、文書格納領域１４１には、文書が格納され、各文書には文書の識別情報（以下、文書ＩＤという。）が付帯される。
【００３４】
また、文書格納処理部２１２は、文書格納領域１４１に格納した文書のデータサイズと、文書を格納したアドレスとを文書管理テーブル１４２（本発明の文書サイズ記憶部に該当する。）に登録する。文書管理テーブル１４２の構成例を図４に示す。同図に示すように、文書管理テーブル１４２には、文書ＩＤ１４１１に対応付けてサイズ１４１２及びオフセット１４１３が記憶されている。サイズ１４１２は文書のデータサイズであり、オフセット１４１３は、文書が格納されたアドレスの、文書格納領域１４１の先頭アドレスからのオフセットである。
【００３５】
検索文書量算出部２１７は、検索処理の対象となる文書のデータ量の合計（以下、検索文書量という。）を算出する。検索文書量算出部２１７は、検索処理の対象となる文書を示す文書ＩＤに対応するサイズ１４１２を文書管理テーブル１４２から読み出して合計することにより検索文書量を算出する。なお、検索文書量の算出処理の詳細については後述する。
【００３６】
文書格納領域１４１に格納されている文書にはインデックスが設定される。文書についてのインデックスはインデックス格納領域１５０に格納される。図５にインデックス格納領域１５０に格納されるインデックスの構成例を示す。同図に示すように、インデックス格納領域１５０には、文字１５０１に対応付けて、文字１５０１が含まれる文書ＩＤ１５０２と、文書ＩＤ１５０２が示す文書において、文字１５０１の出現位置１５０３とを含む情報（以下、インデックス情報という。）が格納される。本実施形態では、いわゆる１−ｇｒａｍ方式のインデックスが作成されるものとする。したがって、文書に出現する全ての文字１５０１のそれぞれについて、上記のインデックス情報がインデックス格納領域１５０に格納される。
【００３７】
インデックス管理テーブル１５１には、文字毎に、インデックス格納領域１５０に格納されている、その文字に対応する全インデックス情報のデータサイズの合計が記憶される。インデックス管理テーブル１５１の構成例を図６に示す。同図に示すように、インデックス管理テーブル１５１には、文字１５１１に対応付けて、文字１５１１に対応する全てのインデックス情報のデータサイズの合計（サイズ１５１２）が記憶される。
【００３８】
インデックス作成処理部２１３は、文書格納処理部２１２が文書格納領域１４１に登録した文書に基づいて、インデックスを更新する。インデックス作成処理部２１３は、ＣＰＵ１０１が文字列インデックス作成プログラム１２１を実行することにより実現される。なお、インデックスの更新処理の詳細については後述する。
【００３９】
検索条件解析部２１５は、検索コマンドに含まれる検索条件の解析を行う。検索条件解析部２１５は、検索条件に含まれるキーワードを全て抽出し、抽出したキーワードをキーワード格納領域１４０に格納する。図７は、キーワード格納領域１４０にキーワードが格納された様子を示す図である。同図の例では、「教育」「ストリーミング」「コミュニケーション」及び「ｅ−ラーニング」の４つのキーワードがキーワード格納領域１４０に格納されている。後述するように、検索コマンドに、「教育 ａｎｄ ストリーミング ａｎｄ コミュニケーション ａｎｄ ｅ−ラーニング」という検索条件が指定されていた場合、「ａｎｄ」で接続される「教育」「ストリーミング」「コミュニケーション」及び「ｅ−ラーニング」の４つのキーワードがキーワード格納領域１４０に登録される。
【００４０】
また、検索条件解析部２１５は、抽出した全てのキーワードを結合した文字列を生成し、生成した文字列に含まれる各文字に対応するインデックス情報のサイズ１５１２をインデックス管理テーブル１５１から取得し、取得したサイズと文字とを対応付けて、検索条件格納領域１４３に記憶する。検索条件格納領域１４３の構成例を図８に示す。同図に示すように、検索条件格納領域１４３には、キーワードを結合した文字列を構成する文字１４３１のそれぞれに対応付けて、インデックスサイズ１４３２及び連続フラグ１４３３が格納されている。インデックスサイズ１４３２は、文字に対応する全てのインデックス情報のデータサイズの合計である。連続フラグ１４３３は、前の文字と連続しているかどうかを示すフラグ値であり、各キーワードの先頭文字については「０」が設定され、それ以外の文字については「１」が設定される。また、検索条件格納領域１４３には、文字１４３１を示すポインタ１４３４が記憶される。ポインタ１４３４には、例えば、文字１４３１が格納される主メモリ１０６上のアドレスが設定される。
【００４１】
予測時間算出部２１８は、文書の検索にかかる予測時間、すなわち、インデックス検索にかかる予測時間ｔ１とテキスト検索にかかる予測時間ｔ２とを算出する。予測時間ｔ１の算出に用いられる、主メモリ１０６から単位時間に読み出し可能なデータ量（以下、メモリアクセス速度という。）や、磁気ディスク装置１０７から単位時間に読み出し可能なデータ量（以下、ディスクアクセス速度という。）は、予め図９に示す設定情報格納領域１４７に格納されているものとする。なお、予測時間算出部２１８は、ＣＰＵ１０１が主メモリ１０６に記憶されている検索時間予測プログラム１２５を実行することにより実現される。
【００４２】
検索方式決定部２１６は、予測時間ｔ１及び予測時間ｔ２に応じて、検索方式を決定する。検索方式決定部２１６は、後述するように、インデックス方式による検索処理の途中でｔ１がｔ２を超えた場合に、残りの検索処理をテキストスキャン方式で行うように決定する。なお、検索方式決定部２１６は、ＣＰＵ１０１が主メモリ１０６に記憶されている検索処理制御プログラム１１２を実行することにより実現される。
【００４３】
検索実行部２１９は、インデックス方式又はテキスト方式により検索処理を行う。検索実行部２１９による検索処理の結果は検索結果格納領域１４５（本発明の検索文書ＩＤ記憶部に該当する。）に格納される。検索結果格納領域１４５の構成例を図１０に示す。同図に示すように、検索結果格納領域１４５には、検索結果となる文書ＩＤ１４５１が記憶される。また、検索結果格納領域１４５には、文書ＩＤ１４５１に対応付けて出現位置１４５２が記憶される。出現位置１４５２は、キーワードの文字が文書中に出現した位置を示す値であり、後述するインデックス検索に用いられる。なお、照合インデックス格納領域１４６も、図１１に示すように、検索結果格納領域１４５と同様に、文書ＩＤ１４６１及び出現位置１４６２が対応付けて格納される。照合インデックス格納領域１４６に格納される文書ＩＤ１４６１および出現位置１４６２の組み合わせは、後述するインデックス検索に用いられる。
【００４４】
検索結果出力部２２１は、検索結果格納領域１４５に格納されている文書ＩＤの一覧をディスプレイ装置１０３に出力することにより、文書の検索処理の結果を出力する。
【００４５】
＝＝処理＝＝
以下、本実施例を適用した文書検索システムの処理手順について説明する。  
図１２は、検索装置１００による処理の流れを示すＰＡＤ図である。  
検索装置１００は、利用者からのコマンドの入力を受け付け（Ｓ３０１）、受け付けたコマンドが登録コマンドであった場合（Ｓ３０１：登録コマンド）、文書の登録処理を行い（Ｓ３０３）、受け付けたコマンドが検索コマンドであった場合には（Ｓ３０１：検索コマンド）、文書の検索処理を行う（Ｓ３０４）。
【００４６】
＝＝文書の登録処理＝＝
文書の登録処理の流れを図１３のＰＡＤ図に示す。  
検索装置１００は、登録コマンドの入力を受け付けると、登録コマンドが示す文書（以下、登録文書という。）に新たな文書ＩＤを割り当て（Ｓ３２１）、登録文書に文書ＩＤを付帯させて文書格納領域１４１に格納する（Ｓ３２２）。検索装置１００は、文書格納領域１４１において登録文書が格納された位置を、文書格納領域１４１の先頭アドレスからのオフセットとして算出する（Ｓ３２３）。検索装置１００は、登録文書に割り当てた文書ＩＤ、算出したオフセット、及び登録文書のデータサイズを文書管理テーブル１４２に登録する（Ｓ３２４）。
【００４７】
次に検索装置１００は、登録文書の先頭から全ての文字について以下の処理を行う（Ｓ３２５）。検索装置１００は、処理の対象となっている文字（以下、処理文字という。）が登録文書の先頭から何文字目であるかを出現位置とする（Ｓ３２６）。検索装置１００は、処理文字、文書ＩＤ、及び出現位置を対応付けたインデックス情報を作成し、作成したインデックス情報をインデックス格納領域１５０に登録するとともに（Ｓ３２７）、作成したインデックス情報のデータ長を、インデックス管理テーブル１５１の処理文字に対応するサイズ１５１２に加算する（Ｓ３２８）。
【００４８】
図１４は、文書の登録処理により文書が登録される様子を説明するための図である。同図の例では、「企業活性化のためには従業員に対する教育と従業員間のコミュニケーションが重要で・・・ストリーミングを利用したｅ−ラーニング・・・」という内容の、データサイズが「３０７２０」バイトである文書（以下、登録文書という。）が登録される場合の様子を表している。登録文書には、文書ＩＤ「３２２」が割り当てられて文書格納領域１４１に格納されている。文書管理テーブル１４２には、登録文書のデータサイズである「３０７２０」と、文書ＩＤ「３２１」のオフセットに文書ＩＤ「３２１」のサイズを加えた「６５４５０００」とが登録されている。また、登録文書に記述されている各文字「企業・・・教育と・・」について、文字と、文書ＩＤ「３２２」と、登録文書の先頭からのオフセット（出現位置）とを含むインデックス情報がインデックス格納領域１５０に格納され、インデックス管理テーブル１５１の各文字についてのサイズ１５１２には、登録されたインデックス情報のデータサイズが加算される。
【００４９】
＝＝文書の検索処理＝＝
図１５は、文書の検索処理の流れを示すＰＡＤ図である。  
検索装置１００は、検索コマンドの入力を受け付けると、検索コマンドに含まれる検索条件からキーワードを抽出し（Ｓ３４１）、抽出したキーワードをキーワード格納領域１４０に格納する（Ｓ３４２）。  
検索装置１００は、各キーワードについて以下の処理を繰り返し（Ｓ３４３）、また各キーワードの各文字について以下の処理を繰り返す（Ｓ３４４）。検索装置１００は、処理文字がキーワードの先頭の文字であれば（Ｓ３４５：真）、連続フラグを「０」とし（Ｓ３４６）、先頭の文字でなければ（Ｓ３４５：偽）、連続フラグを「１」とする（Ｓ３４７）。検索装置１００は、インデックス管理テーブル１５１から処理文字に対応するサイズ１５１２を読み出し（Ｓ３４８）、読み出したサイズ１５１２、処理文字、連続フラグを対応付けて検索条件格納領域１４３に追加する（Ｓ３４９）。  
検索装置１００は、以上の処理を繰り返して検索条件となる文字列を検索条件格納領域１４３に格納した後、検索条件格納領域１４３のポインタ１４３４を先頭の文字に設定する（Ｓ３５０）。
【００５０】
検索条件がキーワード格納領域１４０と検索条件格納領域１４３とに格納される具体例を図１６に示す。同図の例では、検索条件として、「教育 ａｎｄ ストリーミング ａｎｄ コミュニケーション ａｎｄ ｅ−ラーニング」が与えられたことを示している。この検索条件から、「教育」「ストリーミング」「コミュニケーション」及び「ｅ−ラーニング」の４つのキーワードが抽出され、これらのキーワードはキーワード格納領域１４０に格納される。また、これらの４つのキーワードを結合した文字列「教育ストリーミングコミュニケーションｅ−ラーニング」を構成する文字毎に、インデックス情報のデータ量と、キーワードの先頭文字であるかどうかを示す連続フラグとが検索条件格納領域１４３に格納される。また、検索の対象となる文字を示すポインタ１４３４は、文字列の先頭を示すように設定される。
【００５１】
検索装置１００は、以上のようにして文書を登録した後、検索処理方式格納領域１４４に「インデックススキャン」を設定する（Ｓ３５１）。これにより、文書の検索処理は、後述するように、まずインデックススキャン方式により行われることになる。  
検索装置１００は、ポインタ１４３４が示す文字に対応する文書ＩＤ１５０２及び出現位置１５０３をインデックス格納領域１５０から読み出して、読み出した文書ＩＤ及び出現位置の組み合わせを検索結果格納領域１４５に格納する（Ｓ３５２）。検索装置１００は、ポインタ１４３４が最後の文字の位置を越えた場合、又は、検索処理方式格納領域１４４に「終了」が設定されるまで、以下の処理を繰り返す（Ｓ３５３）。
【００５２】
検索装置１００は、検索処理方式格納領域１４４に「インデックススキャン」が設定されている場合（Ｓ３５４：真）、後述のインデックス検索を行う（Ｓ３５５）。検索装置１００は、検索処理方式格納領域１４４に「インデックススキャン」が設定されていない場合には（Ｓ３５４：偽）、後述のテキスト検索を行い（Ｓ３５６）、検索処理方式格納領域１４４に「終了」を設定する（Ｓ３５７）。  
検索装置１００は、以上の処理を繰り返した後、検索結果格納領域１４５に格納されている文書ＩＤを重複なく抽出し、抽出した文書ＩＤのそれぞれについて（Ｓ３５８）、文書ＩＤに対応する文書を出力する（Ｓ３５９）。
【００５３】
＝＝インデックス検索＝＝
図１７は、インデックス検索の流れを示すＰＡＤ図である。  
検索装置１００は、検索条件格納領域１４３のポインタ１４３４をインクリメントし（Ｓ３６１）、ポインタ１４３４が示す文字を検索文字とする（Ｓ３６２）。検索装置１００は、インデックス格納領域１５０から、検索文字に対応する文書ＩＤ１５０２及び出現位置１５０３を読み出し、読み出した文書ＩＤ１５０２及び出現位置１５０３の組み合わせを照合インデックス格納領域１４６に格納する（Ｓ３６３）。なお、以下の説明において、照合インデックス格納領域１４６に格納された文書ＩＤ及び出現位置の組み合わせを照合レコードという。
【００５４】
検索装置１００は、検索結果格納領域１４５に格納されている文書ＩＤ及び出現位置の組み合わせ（以下、結果レコードという。）のそれぞれについて、以下の処理を繰り返す（Ｓ３６４）。検索装置１００は、検索文字に対応する連続フラグが「１」である場合（Ｓ３６５：真）、照合インデックス格納領域１４６から、文書ＩＤ及び出現位置＋１に対応する照合レコードが照合インデックス格納領域１４６に登録されているかどうかを判定し（Ｓ３６６）、上記の照合レコードが登録されている場合（Ｓ３６６：真）、結果レコードの出現位置に「１」を加算する（Ｓ３６７）。上記の照合レコードが登録されていない場合には（Ｓ３６６：偽）、結果レコードを検索結果格納領域１４５から削除する（Ｓ３６８）。
【００５５】
一方、検査文字に対応する連続フラグが「０」であれば（Ｓ３６５：偽）、文書ＩＤに対応する照合レコードが照合インデックス格納領域１４６に登録されているかどうかを判定し（Ｓ３６９）、この照合レコードが登録されていれば（Ｓ３６９：真）、照合レコードの出現位置を結果レコードの出現位置に設定し（Ｓ３７０）、登録されていなければ（Ｓ３６９：偽）、結果レコードを検索結果格納領域１４５から削除する（Ｓ３７１）。検索装置１００は、以上の処理を繰り返して、検索結果格納領域１４５に格納されている各文書に検索文字が含まれているかどうかを検索する。
【００５６】
次に、検索装置１００は、残りのポインタ１４３４以後の文字についてインデックス検索を行った場合の予測時間ｔ１の算出処理を行う（Ｓ３７２）。図１８は、ｔ１の算出処理の流れを示すＰＡＤ図である。
【００５７】
検索装置１００は、残インデックス量を「０」として（Ｓ３８１）、ポインタ１４３４が示す文字から、検索条件格納領域１４３の最後の文字までの各文字について（Ｓ３８２）、処理文字に対応するインデックスサイズを残インデックス量に加算する（Ｓ３８３）。検索装置１００は、残インデックス量をディスクアクセス速度で割った商を読出時間とする（Ｓ３８４）。検索装置１００は、残インデックス量をメモリアクセス速度で割った商を照合時間とする（Ｓ３８５）。検索装置１００は、読出時間と照合時間との和をｔ１として算出する（Ｓ３８６）。  
検索装置１００は、以上のようにしてｔ１を算出すると、次にキーワードの文字列をテキスト検索した場合の予測時間ｔ２の算出処理を行う（Ｓ３７３）。図１９は、ｔ２の算出処理の流れを示すＰＡＤ図である。
【００５８】
検索装置１００は、検索文書量を「０」とする（Ｓ４０１）。検索装置１００は、検索結果格納領域１４５から文書ＩＤを重複なく読み出し、読み出した各文書ＩＤについて以下の処理を行う（Ｓ４０２）。検索装置１００は、文書ＩＤに対応するサイズ１４１２を文書管理テーブル１４２から取得し（Ｓ４０３）、取得したサイズ１４１２を検索文書量に加算する（Ｓ４０４）。検索装置１００は、以上の処理を繰り返して検索文書量を算出し、検索文書量をメモリアクセス速度で割った商をｔ２として算出する（Ｓ４０５）。
【００５９】
以上のようにして、ｔ１及びｔ２が算出されると、検索装置１００はｔ１がｔ２を超えていないかどうかを判定し（Ｓ３７４）、ｔ１がｔ２を超えている場合（Ｓ３７４：真）、検索処理方式格納領域１４４に「テキストスキャン」を設定する（Ｓ３７５）。
【００６０】
上記のようにして、インデックス検索が行われる。  
また、本実施形態の検索装置１００は、文書管理テーブル１４２を利用して検索対象となる文書のデータ量を算出している。したがって、検索対象となる各文書について、文書格納領域１４１からデータサイズを読み出す必要がない。これにより、検索対象となる文書のデータサイズを高速に求めることが可能となる。  
なお、上記の（Ｓ３７２）〜（Ｓ３７５）の処理は、インデックスの照合処理（Ｓ３６４〜Ｓ３７１）の途中に並行して行うようにしてもよい。
【００６１】
＝＝テキスト検索＝＝
図２０は、テキスト検索の流れを示すＰＡＤ図である。  
検索装置１００は、キーワード格納領域１４０に記憶されている各キーワードについて以下の処理を繰り返す（Ｓ４２１）。検索装置１００は、検索結果格納領域１４５に記憶されている文書ＩＤを重複なく読み出して、読み出した文書ＩＤのそれぞれについて（Ｓ４２２）、文書ＩＤに対応する文書を文書格納領域１４１から読み出し（Ｓ４２３）、読み出した文書にキーワードが含まれているかどうかを判定し（Ｓ４２４）、キーワードが含まれていない場合には（Ｓ４２４：偽）、文書ＩＤに対応するレコードを検索結果格納領域１４５から削除する（Ｓ４２５）。
【００６２】
＝＝具体例＝＝
以上のようにして、登録コマンドに含まれる検索条件に基づく文書の検索処理が行われる。図２１は、文書の検索処理の具体例を説明するための図である。同図の例では、「教育 ａｎｄ ストリーミング ａｎｄ コミュニケーション ａｎｄ ｅ−ラーニング」という検索条件が与えられたことを想定しており、上述した図１６の例と同様にして、キーワード及び文字列がキーワード格納領域１４０及び検索条件格納領域１４３に登録されたことを前提としている。
【００６３】
図２１の例では、図１７の（Ｓ３６１）〜（Ｓ３６８）により、「教」及び「育」の文字について文書を検索した状態において、ポインタ１４３４が「育」を示しており、結果となる３件の結果レコードが検索結果格納領域１４５に格納されていることを示している。また、図２１の例では、検索の対象となる文書は、文書ＩＤが「１００」及び「３２２」であるものに絞られたことになる。
【００６４】
インデックス検索を行った場合の予測時間ｔ１は、図１８の処理によって、以下のようにして求められる。まず「ス」〜「グ」の各文字についてのインデックス情報を照合インデックス格納領域１４６に読み出すための読出時間は、「ス」〜「グ」の各文字についてのインデックスサイズの合計が「３０（ＭＢ）」であった場合、「３０（ＭＢ）÷３０（ＭＢ／秒）＝１０００（ｍｓ）」となる。また、検索結果格納領域１４５に格納されているインデックス情報と、照合インデックス格納領域１４６に格納されているインデックス情報とを照合するのにかかる照合時間は、照合インデックス格納領域１４６に格納されたインデックス情報のデータ量である「３０（ＭＢ）」を、メモリアクセス速度「１００（ＭＢ／秒）」で割って近似される。すなわち、照合時間は「３０（ＭＢ）÷１００（ＭＢ／秒）≒３００（ｍｓ）」となる。そして、読出時間と照合時間とを合計した「１０００（ｍｓ）＋３００（ｍｓ）＝１３００（ｍｓ）」がｔ１として算出される。
【００６５】
一方、テキスト検索を行った場合の予測時間ｔ２は、図１９の処理によって、上記の２つの文書に対してアクセスするスピードであるメモリアクセス速度「１００（ＭＢ／秒）」、及び上記の２つの文書のデータ量の合計「４０９６０（バイト）」より、「４０９６０（バイト）÷１００（ＭＢ／秒）＝０．４（ｍｓ）」と計算される。
【００６６】
次に、図１７の（Ｓ３７４）において、ｔ１とｔ２とが比較され、テキスト検索を行う場合の予測時間ｔ２が、インデックス検索を行う場合の予測時間ｔ１よりも短くなった場合には、それ以降テキストスキャン方式により文書の検索処理が行われる。すなわち、「教」及び「育」を用いてインデックス検索により絞り込まれた検索対象となる文書ＩＤが「１００」及び「３２２」の２つの文書を対象として、テキストスキャン方式によりキーワードの検索が行われる。
【００６７】
以上説明したように、本実施形態の検索装置１００によれば、検索条件に含まれる各文字について検索処理を行う度に、残りの文字についてインデックス検索をする場合と、それまでの検索処理により絞り込まれた検索対象となる文書に対してテキスト検索を行う場合との予測時間を比較して、検索方式を切り替えることが可能となる。したがって、検索処理にかかる時間を短縮することができる。特に、検索条件の最初の文字について検索処理を行った結果、検索対象となる文書が少なくなった場合には、インデックス情報をインデックス格納領域１５０から読み出すよりも、絞り込まれた検索対象の文書の全てを読み出してテキスト検索を行う方が、所要時間が短くなることもあり、このような場合にテキストスキャン方式に検索方式を切り替えて、検索時間を短縮することができる。
【００６８】
また、本実施形態の検索装置１００によれば、文書管理テーブル１４２に予め文書のデータサイズが格納されているので、検索対象となっている全文書のデータサイズの合計を算出する場合に、文書格納領域１４１に格納されている各文書についてデータサイズを取得する処理を行う必要がない。したがって、検索対象となる全文書のデータサイズの合計をより高速に算出することが可能となる。よって、文書のデータサイズの合計を用いるテキスト検索の予測時間の算出を、より高速に行うことが可能となる。これにより、検索装置１００における検索処理全体にかかる時間を短縮することが可能となる。
【００６９】
＝＝変形例１：検索対象文書が日本語以外の文字列である場合＝＝
上述した、上述した本実施形態の検索装置１００では登録される文書および検索対象となる文書が日本語の場合を示したが、登録される文書および検索対象が英文等の単語ごとに区切られた文書であってもよい。
【００７０】
図２２に、この場合のインデックス格納領域１５０に格納されるインデックスの構成例を示す。同図に示すように、インデックス格納領域１５０には、単語１５０１に対応付けて、単語１５０１が含まれる文書ＩＤ１５０２と、文書ＩＤ１５０２が示す文書において、文字１５０１の出現位置１５０３とを含む情報（以下、インデックス情報という。）が格納される。本実施形態では、いわゆる単語インデックスが作成されるものとする。したがって、文書に出現する全ての単語１５０１のそれぞれについて、上記のインデックス情報がインデックス格納領域１５０に格納される。また、インデックス管理テーブル１５１も文字ごとではなく単語ごとに管理する。この場合のインデックス管理テーブル１５１の構成例を図２３に示す。
【００７１】
図２４は、文書の登録処理により文書が登録される様子を説明するための図である。同図の例では、「enterprise computer ・・・ hitachi harmonious computing  is ・・・information technology・・・ database・・・」という内容の、データサイズが「３０７２０」バイトである文書（以下、登録文書という。）が登録される場合の様子を表している。登録文書には、文書ＩＤ「３２２」が割り当てられて文書格納領域１４１に格納されている。文書管理テーブル１４２には、登録文書のデータサイズである「３０７２０」と、文書ＩＤ「３２１」のオフセットに文書ＩＤ「３２１」のサイズを加えた「６５４５０００」とが登録されている。また、登録文書に記述されている各文字「enterprise・・・hitachi・・」について、単語と、文書ＩＤ「３２２」と、登録文書の先頭からのオフセット（出現位置）とを含むインデックス情報がインデックス格納領域１５０に格納され、インデックス管理テーブル１５１の各文字についてのサイズ１５１２には、登録されたインデックス情報のデータサイズが加算される。
【００７２】
検索条件がキーワード格納領域１４０と検索条件格納領域１４３とに格納される具体例を図２５に示す。同図の例では、検索条件として、「”harmonious computing” AND enterprise AND information AND hitachi AND database」が与えられたことを示している。この検索条件から、「harmonious computing」「enterprise」「information」「hitachi」及び「database」の５つのキーワードが抽出され、これらのキーワードはキーワード格納領域１４０に格納される。また、これらの５つのキーワードを構成する単語毎に、インデックス情報のデータ量と、キーワードの先頭単語であるかどうかを示す連続フラグとが検索条件格納領域１４３に格納される。また、検索の対象となる文字を示すポインタ１４３４は、文字列の先頭を示すように設定される。
【００７３】
図２６は、文書の検索処理の具体例を説明するための図である。同図の例では、「”harmonious computing” AND enterprise AND information AND hitachi AND database」という検索条件が与えられたことを想定しており、上述した図１６の例と同様にして、キーワード及び文字列がキーワード格納領域１４０及び検索条件格納領域１４３に登録されたことを前提としている。
【００７４】
図２６の例では、図１７の（Ｓ３６１）〜（Ｓ３６８）により、「harmonious」及び「computing」の単語について文書を検索した状態において、ポインタ１４３４が「computing」を示しており、結果となる３件の結果レコードが検索結果格納領域１４５に格納されていることを示している。また、図２６の例では、検索の対象となる文書は、文書ＩＤが「１００」及び「３２２」であるものに絞られたことになる。
【００７５】
インデックス検索を行った場合の予測時間ｔ１は、図１８の処理によって、以下のようにして求められる。まず「enterprise」〜「database」の各単語についてのインデックス情報を照合インデックス格納領域１４６に読み出すための読出時間は、「enterprise」〜「database」の各文字についてのインデックスサイズの合計が「３０（ＭＢ）」であった場合、「３０（ＭＢ）÷３０（ＭＢ／秒）＝１０００（ｍｓ）」となる。また、検索結果格納領域１４５に格納されているインデックス情報と、照合インデックス格納領域１４６に格納されているインデックス情報とを照合するのにかかる照合時間は、照合インデックス格納領域１４６に格納されたインデックス情報のデータ量である「３０（ＭＢ）」を、メモリアクセス速度「１００（ＭＢ／秒）」で割って近似される。すなわち、照合時間は「３０（ＭＢ）÷１００（ＭＢ／秒）≒３００（ｍｓ）」となる。そして、読出時間と照合時間とを合計した「１０００（ｍｓ）＋３００（ｍｓ）＝１３００（ｍｓ）」がｔ１として算出される。
【００７６】
一方、テキスト検索を行った場合の予測時間ｔ２は、図１９の処理によって、上記の２つの文書に対してアクセスするスピードであるメモリアクセス速度「１００（ＭＢ／秒）」、及び上記の２つの文書のデータ量の合計「４０９６０（バイト）」より、「４０９６０（バイト）÷１００（ＭＢ／秒）＝０．４（ｍｓ）」と計算される。
【００７７】
次に、図１７の（Ｓ３７４）において、ｔ１とｔ２とが比較され、テキスト検索を行う場合の予測時間ｔ２が、インデックス検索を行う場合の予測時間ｔ１よりも短くなった場合には、それ以降テキストスキャン方式により文書の検索処理が行われる。すなわち、「harmonious」及び「computing」を用いてインデックス検索により絞り込まれた検索対象となる文書ＩＤが「１００」及び「３２２」の２つの文書を対象として、テキストスキャン方式によりキーワードの検索が行われる。
【００７８】
＝＝変形例２：磁気ディスク装置１０７に文書が格納される場合＝＝
上述した本実施形態の検索装置１００では、文書は主メモリ１０６に確保される文書格納領域１４１に格納されるものとしたが、磁気ディスク装置１０７に格納されるようにしてもよい。この場合の検索装置１００の構成例を図２７に示す。同図の例では、磁気ディスク装置１０７に文書格納領域１４１が確保されるとともに、主メモリ１０６には、文書バッファ１６１の記憶領域が確保され、バッファ管理テーブル１６２が記憶される。文書バッファ１６１は、磁気ディスク装置１０７の文書格納領域１４１に格納されている文書をキャッシュする記憶領域である。また、バッファ管理テーブル１６２は、文書バッファ１６１にキャッシュされている文書を示す文書ＩＤを管理する。図２８は、バッファ管理テーブル１６２に文書ＩＤが格納されている様子を示す図である。文書バッファ１６１及びバッファ管理テーブル１６２は、例えば、検索装置１００において実行されるオペレーティングシステムにより管理される。
【００７９】
上記のように磁気ディスク装置１０７に文書格納領域１４１を設けた場合には、上述した図１９に示すｔ２の算出処理において、磁気ディスク装置１０７からデータを主メモリ１０６に読み出す時間を考慮するようにする。図２９は、この場合のｔ２の算出処理の流れを示すＰＡＤ図である。同図に示すように、検索装置１００は、（Ｓ４０１）において検索文書量を「０」に初期化するとともに、ディスク文書量も「０」に初期化する（Ｓ５０１）。また、検索結果格納領域１４５に格納されている文書ＩＤ１４５１のそれぞれについて（Ｓ４０２）、文書ＩＤ１４５１がバッファ管理テーブル１６２に登録されていない場合には（Ｓ５０２：偽）、ディスク文書量にデータサイズを加算するようにする（Ｓ５０３）。そして、検索装置１００は、主メモリ１０６に読み出した文書についての検索を行う照合時間として、検索文書量をメモリアクセス速度で割った商を算出するとともに、文書バッファ１６１にキャッシュされていない文書を磁気ディスク装置１０７から主メモリ１０６に読み出すためにかかる読出時間として、ディスク文書量をディスクアクセス速度で割った商を算出し、上記の照合時間と読出時間との和をｔ２として算出するようにする（Ｓ５０４）。
【００８０】
以上の処理により、検索の対象となる文書群を格納する文書格納領域１４１が磁気ディスク装置１０７上にもある場合に、磁気ディスク装置１０７から主メモリ１０６に文書を読み出す時間を考慮して、ｔ２を算出することができる。これにより、テキスト検索の予測時間ｔ２をより正確に算出することができる。
【００８１】
図３０は、文書格納領域１４１が磁気ディスク装置１０７に設けられた場合にｔ２を算出する場合の具体例を説明するための図である。図３０の例では、上述した図２１と同様に、「教育 ａｎｄ ストリーミン ａｎｄコミュニケーション ａｎｄ ｅ−ラーニング」という検索条件が与えられた場合を想定している。
【００８２】
図３０に示すように、検索装置１００は、検索文書量に加えて、磁気ディスク装置１０７から主メモリ１０６に読み出す必要のある文書のデータ量の合計、すなわち、検索結果格納領域１４５に登録されており、かつ、バッファ管理テーブル１６２に登録されていない文書ＩＤに対応する文書管理テーブル１４２のサイズ１４１２の合計を、ディスク文書量として算出する。
【００８３】
図３０の例では、文書ＩＤ「１００」及び「３２２」が検索結果格納領域１４５に格納されている。バッファ管理テーブル１６２には、文書ＩＤ「３２２」は登録されているが、文書ＩＤ「１００」は登録されていない。したがって、文書ＩＤ「１００」に対応する文書は文書バッファ１６１にキャッシュされていないことが分かる。したがって、検索装置１００は、文書ＩＤ「１００」に対応するサイズ１４１２を文書管理テーブル１４２から取得し、取得したデータサイズ「１０２４０」バイトを、磁気ディスク装置１０７から主メモリ１０６に読み出す必要のあるディスク文書量とする。
【００８４】
そして、上述した通り、検索文書量をメモリアクセス速度で割った商と、ディスク文書量をディスクアクセス速度で割った商との和を算出して、ｔ２を算出する。図３０の例の場合、ｔ２は、「４０（ＫＢ）÷１００（ＭＢ／秒）＋１０（ＫＢ）÷３０（ＭＢ／秒）＝０．７（ｍｓ）」となる。
【００８５】
なお、文書格納領域１４１は、磁気ディスク装置１０７以外にも、例えば、ＣＤ−ＲＯＭ１０９に設けるようにしてもよい。この場合、さらに、ＣＤ−ＲＯＭ１０９からの単位時間当たりに読み出し可能なデータ量をディスクアクセス速度として設定情報格納領域１４７に記憶しておくようにする。
【００８６】
＝＝変形例３：検索方式の切替判定＝＝
上述した本実施形態の検索装置１００は、インデックススキャン方式により１文字についての検索を行う度に、残りの文字についてインデックス検索を行うか、テキストスキャン方式により検索を行うかの切替判定を行うものとしたが、検索対象となっている文書の数に応じて、上記の切替判定を行うかどうかを決めるようにすることもできる。以下、検索対象となる文書の数に応じて検索方式の切替判定を行う変形例に係る検索装置１００について説明する。
【００８７】
図３１は、本変形例に係る検索装置１００の構成例を示す図である。同図に示すように、検索装置１００は、主メモリ１０６に閾値算出プログラム１７１を記憶する。図３２は、検索装置１００のソフトウェア構成例を示す図である。同図に示すように、検索装置１００は、検索対象の文書数に対する閾値を算出する閾値算出部２２２を備えている。なお、閾値算出部２２２は、ＣＰＵ１０１が閾値算出プログラム１７１を実行することにより実現される。
【００８８】
図３３は、本変形例に係るインデックス検索の流れを示すＰＡＤ図である。同図に示す処理は、上述した図１７の処理に、（Ｓ５２１）〜（Ｓ５２４）を加えたものである。なお、検索装置１００は、予め文書管理テーブル１４２からサイズ１４１２の平均値（以下、平均サイズという。）を算出しておくものとする。
【００８９】
検索装置１００は、（Ｓ３７２）においてｔ１を算出した後、文書の平均サイズをメモリアクセス速度で割った商を、文書の平均読出時間とする（Ｓ５２１）。検索装置１００は、図１８の（Ｓ３８４）において算出した読出時間を、文書の平均読出時間で割った商を閾値とする（Ｓ５２２）。検索装置１００は、検索結果格納領域１４５に登録されている文書ＩＤの重複ない件数をカウントし（Ｓ５２３）、カウントした件数が閾値未満である場合にのみ（Ｓ５２４：真）、（Ｓ３７３）〜（Ｓ３７５）の処理を行うようにする。
【００９０】
以上のようにすることで、所定の閾値以上の文書が検索対象となっている場合には、検索方式を切り替えるかどうかを判断することなく、インデックススキャン方式により文書の検索を続けるようにすることができる。閾値は、平均的な文書のデータ量と、残インデックス量とに応じて決定されるので、平均的なデータ量の文書を検索対象とした場合に、ｔ２の算出処理を行うことなく、インデックス検索と、テキスト検索とでどちらに時間がかかるかを閾値により判定することができる。したがって、ｔ２の算出処理に係る時間を削減することができるので、文書の検索処理全体にかかる時間を短縮することができる。
【００９１】
上記のようにｔ２を算出する処理を行うかどうか、閾値を用いて決定する具体例を図３４に示す。図３４の例では、上述した図２１と同様に、「教育 ａｎｄ ストリーミン ａｎｄコミュニケーション ａｎｄ ｅ−ラーニング」という検索条件が与えられた場合を想定している。また、文書管理テーブル１４２のサイズ１４１２の平均値である文書の平均サイズは「２０（ＫＢ）」であるものとする。
【００９２】
図３４の例では、「ス」〜「グ」の残インデックス量が「３０（ＭＢ）」、ディスクアクセス速度が「３０（ＭＢ／秒）」、メモリアクセス速度が「１００（ＭＢ／秒）」、文書の平均サイズが「２０（ＫＢ）」であるので、閾値は「３０（ＭＢ）÷３０（ＭＢ／秒）÷（２０（ＫＢ）÷１００（ＭＢ／秒））≒５１２０」となる。検索結果格納領域１４５に登録されている重複ない文書ＩＤは、「１００」及び「３２２」の２件である。したがって、「２＜５１２０」より、ｔ２を算出する処理以降の処理（Ｓ３７３）〜（Ｓ３７５）が行われるようになる。
【００９３】
なお、本変形例では、閾値を、残インデックス量及びディスクアクセス速度から求められる読出時間と、文書の平均サイズ及びメモリアクセス速度から求められる平均読出時間とから求めるようにしたが、予め固定値として設定情報格納領域１４７に格納しておくようにしてもよい。
【００９４】
＝＝変形例４：重み付け＝＝
本実施形態の検索装置１００は、検索方式の切替判定において、ｔ１に重み付けをするようにしてもよい。この変形例に係る検索装置１００の構成例を図３５に示す。同図に示すように、本変形例に係る検索装置１００は、主メモリ１０６に検索シミュレーションプログラム１７２を記憶している。また、図３６は本変形例に係る検索装置１００のソフトウェア構成例を示す図である。同図に示すように本変形例に係る検索装置１００は、ｔ１に重み付けを行うための係数を算出する係数算出部２２３を備えている。なお、係数算出部２２３は、ＣＰＵ１０１が検索シミュレーションプログラム１７２を実行することにより実現される。
【００９５】
係数の算出処理の流れを図３７に示す。検索装置１００は、ユーザから複数の検索条件の入力を受け付ける（Ｓ５４１）。検索条件の入力を受け付けるための画面例を図３８に示す。同図に示すように、画面７００には、検索条件の入力欄７０１が５つ設けられており、検索条件を５つまで入力することが可能となっている。図３８の例では、「教育 ａｎｄ ストリーミング ａｎｄ コミュニケーション ａｎｄ ｅ−ラーニング」、「企業内教育 ａｎｄ ｅ−ラーニング」、及び「ストリーミング ａｎｄ ＴＯＥＩＣ ａｎｄ 受験対策」の３つの検索条件が入力欄７０１に入力されている。入力欄７０１に１つ以上の検索条件が入力され、シミュレーション実行ボタン７０２が押下されると、検索装置１００は、入力された各検索条件について以下の処理を繰り返す（Ｓ５４２）。
【００９６】
検索装置１００は、係数を「０．６」から「１．０」まで「０．１」刻みで以下の処理を行う（Ｓ５４３）。検索装置１００は、現在時刻を開始時刻として（Ｓ５４４）、処理の対象となっている検索条件について、上述した図１５に示す文書の検索処理を行う（Ｓ５４５）。
【００９７】
ここで、インデックス検索において、ｔ１には上記の係数を乗じた上でｔ２との比較を行うようにする。この場合のインデックス検索の流れを図３９に示す。この場合のインデックス検索では、上述した図１７のインデックス検索に、ｔ１に係数を乗じる処理（Ｓ５６１）が追加されている。
【００９８】
検索装置１００は、検索処理を終了すると、現在時刻を終了時刻として（Ｓ５４６）、開始時刻から終了時刻までの時間を検索にかかった検索時間とする（Ｓ５４７）。検索装置１００は、検索条件と、係数と、検索時間とを対応付けて主メモリ１０６に記憶する（Ｓ５４８）。
【００９９】
検索装置１００は、入力された各検索条件と、０．６〜１．０までの係数との組み合わせのそれぞれについて以上の処理を繰り返した後、各検索条件について（Ｓ５４９）、対応する係数及び検索時間を主メモリ１０６から読み出し（Ｓ５５０）、係数をＸ軸、検索時間をＹ軸とするグラフを表示する（Ｓ５５１）。
【０１００】
図３８には、上述した３つの検索条件についてのグラフが表示される画面７１０の例が示されている。また、グラフの下段には、係数を示すスライダ７１１が表示されており、利用者はスライダ７１１を移動させて係数を指定することができる。画面７１０の設定ボタン７１２が押下されると、検索装置１００はスライダ７１１が示す係数の入力を受け付け（Ｓ５５２）、受け付けた係数を設定情報格納領域１４７に格納する（Ｓ５５３）。
【０１０１】
検索装置１００は、以後のインデックス検索を行う際に、上述した図３９の（Ｓ５６１）において、設定情報格納領域１４７に格納された係数を用いるようにする。
【０１０２】
以上のようにして、検索方式を切り替えるかどうかの判定において用いられるｔ１に対する重み付けを行うことが可能になる。したがって、ユーザは検索処理の実行時間に応じて、適宜文書の検索処理がより高速になるように係数を設定するチューニングを行うことが可能となる。
【０１０３】
なお、本変形例では、利用者が係数を指定するようにしたが、これに限らず、検索装置１００が決定するようにすることもできる。この場合、検索装置１００は、係数毎に、対応する検索時間を主メモリ１０６から読み出し、読み出した検索時間の平均値を算出し、算出した平均値が最も小さい値となる係数を設定情報格納領域１４７に格納するようにする。このようにして、検索装置１００が自動的に最適な検索処理を行うようにチューニングを行うようにすることも可能となる。
【０１０４】
また、本変形例では、検索条件は画面７００に直接入力されるものとしたが、検索条件をファイル等にあらかじめ記載しておき、検索装置１００がファイルから検索条件を読み込むようにしてもよい。
【０１０５】
また、画面７１０では、係数及び検索時間の変化を折れ線グラフで表示するようにしたが、任意の形式のグラフとして表示するようにしてもよいし、表などの形式で数値を表示するようにしてもよい。
【０１０６】
また、本変形例では複数の検索条件についての検索処理を、複数の係数について行うことにより、検索条件と係数との組み合わせに対応する検索時間のグラフを表示するようにしたが、１つの検索条件について、ユーザから指定された係数を用いて検索処理を行うようにしてもよい。この場合に用いられる画面例を図４０に示す。同図の例では、画面７２０において、検索条件の入力欄７２１には「教育 ａｎｄ ストリーミング ａｎｄ コミュニケーション ａｎｄ ｅ−ラーニング」という検索条件が入力されている。画面７２０のシミュレーション実行ボタン７２２が押下されると、検索装置１００は、係数を「１．０」として、上述した図３９に示すインデックス検索を含む文書の検索処理を行い、検索時間を表示するための画面７３０を表示する。画面７３０は、検索時間や、検索処理に関する各種の統計情報を出力する表示欄７３１を備えており、図４０の例では、「ＪＯＩＮ ＩＤ １」と「ＪＯＩＮ ＩＤ ２」との合計２回の検索処理が実行され、そのうち「ＪＯＩＮ ＩＤ １」に示される検索処理ではインデックス検索が実行され、「ＪＯＩＮ ＩＤ ２」に示される検索処理ではテキスト検索が実行されたことが表示欄７３１に表示されている。また、「ＪＯＩＮ ＩＤ １」に係る検索処理では、最初にテキスト検索に係る予測時間ｔ２が「１００００（ミリ秒）」であり、インデックス検索に係る予測時間ｔ１は、「１５００（ミリ秒）」であったことも示されている。さらには、「教」や「育」の文字についてのインデックスの照合にかかった時間は「２００」ミリ秒であり、検索処理の結果となる文書の数は「６０００」であったことも示されている。
【０１０７】
また、画面７３０には、表示欄７３１の下段に、係数を設定するためのスライダ７３２を備えており、ユーザはスライダ７３２を移動させることにより係数を指定することができる。ユーザがスライダ７３２を移動させて係数を指定した後に、再シミュレーションボタン７３３を押下すると、検索装置１００は、スライダ７３２が示す係数を用いて上述した検索処理を行う。図４０では、スライダ７３２が移動されて係数が０．８と指定された上で、再シミュレーションボタン７３３が押下された画面７３０の例も示されている。
【０１０８】
ここで、係数が「０．８」と指定された場合、「ＪＯＩＮ  ＩＤ  ２」に係る検索処理では、テキスト検索の予測時間ｔ２は「１２００（ミリ秒）」であり、インデックス検索の予測時間ｔ２は「１３００（ミリ秒）」であることが示されている。この場合、ｔ２はｔ１の０.８倍である「１０４０（ミリ秒）」よりも大きいので、検索方式はインデックススキャン方式のままで検索処理が継続されたことが示されている。
【０１０９】
一方、「ＪＯＩＮ ＩＤ ３」に係る検索処理では、予測時間ｔ２が「０．４（ミリ秒）」となり、予測時間ｔ１は「１２００（ミリ秒）」となったことが示されている。「１２００×０．８＝９６０（ミリ秒）」が予測時間ｔ２よりも長くなったため、テキスト検索に検索方式が切り替えられたことが示されている。
【０１１０】
ユーザがスライダ７３２を移動させて係数を指定した後、設定ボタン７３４を押下すると、検索装置１００は、スライダ７３２が示す係数を設定情報格納領域１４７に格納するようにする。検索装置１００は、以後のインデックス検索を行う際に、上述した図３９の（Ｓ５６１）において、設定情報格納領域１４７に格納された係数を用いるようにする。
【０１１１】
上記のようにして、ユーザは、指定した検索条件について、係数を変更しながら検索処理を繰り返すようにすることができる。ユーザはより検索処理時間が短縮されるように係数を変更することにより、検索装置１００のチューニングを行うことができる。
【０１１２】
なお、本変形例では、ｔ１に対して係数を乗じた上でｔ１及びｔ２の比較を行うものとしたが、ｔ２に対して係数を乗じるようにしてもよい。また、２つの係数を受け付けて、ｔ１及びｔ２のそれぞれに係数を乗じるようにしてもよい。
【０１１３】
＝＝その他の変形例＝＝
上述した本実施形態では、インデックス格納領域１５０は磁気ディスク装置１０７に確保されるものとしたが、主メモリ１０６に確保するようにしてもよい。この場合、上述した図１８のインデックス検索にかかる予測時間ｔ１の算出処理の（Ｓ３８４）において、残インデックス量をメモリアクセス速度で割った商を読出時間とするようにする。主メモリ１０６に記憶されたインデックス情報は、磁気ディスク装置１０７に記憶されている場合よりも高速に読み出しが可能となるので、インデックス検索をより高速に行うことができる。
【０１１４】
また、本実施形態では、１−ｇｒａｍ方式によるインデックスが作成されるものとしたが、これに限らず、２−ｇｒａｍ、３−ｇｒａｍ等、任意のＮ−ｇｒａｍ形式のインデックスを作成するようにしてもよい。インデックス情報は、文字コード順に格納されるようにしてもよいし、ハッシュ形式で格納されるようにしてもよい。また、Ｂツリー形式に格納されるようにしてもよい。また、Ｎ−ｇｒａｍ方式以外にも、文書に含まれる形態素毎にインデックス情報を作成するようにしてもよい。また、単語ごとにインデクスを作成するようにしてもよい。
【０１１５】
また、本実施形態では、簡単のため、検索コマンドから抽出されたキーワードについてＡＮＤ検索が行われるものとしたが、検索条件の中にはＯＲ条件を含めるようにしてもよい。この場合には、ＯＲで接続される２つのグループのキーワードのそれぞれについて、上述の通りの検索処理を行うようにして、それぞれの結果となる文書ＩＤのリストを結合するようにすることができる。
【０１１６】
また、本実施形態では、設定情報格納領域１４７に、メモリアクセス速度やディスクアクセス速度が格納されるものとしたが、これに限らず、各プログラム内に記述されるようにしてもよいし、主メモリ１０６や磁気ディスク装置１０７からのデータの読み出し処理にかかった時間を計測して算出するようにしてもよい。また、検索コマンドの引数として与えられるようにしてもよい。
【０１１７】
また、本実施形態では、インデックス検索において、照合インデックス格納領域１４６に文書ＩＤと出現位置とを読み出しておき、文書ＩＤなどに対応するものが照合インデックス格納領域１４６に格納されているかどうかを判定するものとしたが（Ｓ３６６、Ｓ３６９）、検索文字及び文書ＩＤなどに対応するインデックス情報をインデックス格納領域１５０から検索するようにしてもよい。
【０１１８】
また、本実施形態では、検索条件の解析時、すなわち図１５の（Ｓ３４８）において、文字に対応するインデックスのサイズを検索条件格納領域１４３に格納するものとしたが、インデックス検索の処理中、例えば、図１８に示すｔ１の算出処理の（Ｓ３８３）において、インデックス管理テーブル１５１から取得するようにしてもよい。
【０１１９】
また、本実施形態では、文書の登録処理において文書管理テーブル１４２を作成するものとしたが、検索処理において作成するようにしてもよい。例えば、最初にインデックス検索を行った場合の図１７の（Ｓ３７３）の直前において、検索結果格納領域１４５に格納されている各文書ＩＤについて、文書格納領域１４１から文書のデータサイズを取得して、取得したデータサイズを文書ＩＤに対応付けて文書管理テーブル１４２に登録するようにすることもできる。また、文書管理テーブル１４２の作成処理を、インデックス検索と並行して行うようにしてもよい。
【０１２０】
また、文書管理テーブル１４２のオフセット１４１３に代えて、文書が格納されている主メモリ１０６上のアドレスを格納するようにしてもよい。この場合、検索装置１００は、文書にアクセスするアドレスを文書管理テーブル１４２から取得することができるので、文書のアドレス解決を高速に行うことが可能となり、文書の読み出しにかかる時間を短縮することができる。
【０１２１】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【０１２２】
【図１】本実施形態に係る検索装置１００のハードウェア構成を示す図である。
【図２】検索装置１００のソフトウェア構成を示す図である。
【図３】文書格納領域１４１の構成例を示す図である。
【図４】文書管理テーブル１４２の構成例を示す図である。
【図５】インデックス格納領域に格納されるインデックスの構成例を示す図である。
【図６】インデックス管理テーブル１５１の構成例を示す図である。
【図７】キーワード格納領域１４０にキーワードが格納された様子を示す図である。
【図８】検索条件格納領域１４３の構成例を示す図である。
【図９】検索結果格納領域１４５の構成例を示す図である。
【図１０】照合インデックス格納領域１４６の構成例を示す図である。
【図１１】設定情報格納領域１４７の構成例を示す図である。
【図１２】検索装置１００による処理の流れを示すＰＡＤ図である。
【図１３】文書の登録処理の流れを示すＰＡＤ図である。
【図１４】文書の登録処理により文書が登録される様子を説明するための図である。
【図１５】文書の検索処理の流れを示すＰＡＤ図である。
【図１６】検索条件がキーワード格納領域１４０と検索条件格納領域１４３とに格納される具体例を示す図である。
【図１７】インデックス検索の流れを示すＰＡＤ図である。
【図１８】ｔ１の算出処理の流れを示すＰＡＤ図である。
【図１９】ｔ２の算出処理の流れを示すＰＡＤ図である。
【図２０】テキスト検索の流れを示すＰＡＤ図である。
【図２１】文書の検索処理の具体例を説明するための図である。
【図２２】単語インデックスを作成する場合のインデックス格納領域１５０の構成例を示す図である。
【図２３】単語インデックスを作成する場合のインデックス管理テーブル１５１の構成例を示す図である。
【図２４】単語インデックスを作成する場合に、文書の登録処理により文書が登録される様子を説明するための図である。
【図２５】単語インデックスを作成する場合に、検索条件がキーワード格納領域１４０と検索条件格納領域１４３とに格納される具体例を示す図である。
【図２６】単語インデックスを作成する場合の文書の検索処理の具体例を説明するための図である。
【図２７】文書格納領域１４１を磁気ディスク装置１０７に設ける場合の検索装置１００の構成例を示す図である。
【図２８】バッファ管理テーブル１６２に文書ＩＤが格納されている様子を示す図である。
【図２９】磁気ディスク装置１０７からデータを主メモリ１０６に読み出す時間を考慮する場合のｔ２の算出処理の流れを示すＰＡＤ図である。
【図３０】文書格納領域１４１が磁気ディスク装置１０７に設けられた場合にｔ２を算出する場合の具体例を説明するための図である。
【図３１】検索対象となっている文書の数に応じて検索方式の切替判定を行うかどうか決める場合の検索装置１００の構成例を示す図である。
【図３２】検索対象となっている文書の数に応じて検索方式の切替判定を行うかどうか決める場合の検索装置１００のソフトウェア構成例を示す図である。
【図３３】検索対象となっている文書の数に応じて検索方式の切替判定を行うかどうか決める場合のインデックス検索の流れを示すＰＡＤ図である。
【図３４】ｔ１を算出する処理を行うかどうか、閾値を用いて決定する具体例を示す図である。
【図３５】ｔ１に重み付けをする場合の検索装置１００の構成例を示す図である。
【図３６】ｔ１に重み付けをする場合の検索装置１００のソフトウェア構成例を示す図である。
【図３７】ｔ１に重み付けを行う係数の算出処理の流れを示すＰＡＤ図である。
【図３８】検索条件の入力を受け付けるための画面例を示す図である。
【図３９】ｔ１に係数を乗じた上でｔ２との比較を行うようにした場合のインデックス検索の流れを示すＰＡＤ図である。
【図４０】ユーザから指定された係数を用いて検索処理を行う場合に用いられる画面例を示す図である。
【符号の説明】
【０１２３】
１００  検索装置                            １０１  ＣＰＵ
１０２  ＣＤ−ＲＯＭドライブ                １０３  ディスプレイ装置
１０４  キーボード                          １０５  通信インタフェース
１０６  主メモリ                            １０７  磁気ディスク装置
１０８  バス                                １４０  キーワード格納領域
１４１  文書格納領域                        １４２  文書管理テーブル
１４３  検索条件格納領域                    １４４  検索処理方式格納領域
１４５  検索結果格納領域                    １４６  照合インデックス格納領域
１４７  設定情報格納領域                    １５０  インデックス格納領域
１５１  インデックス管理テーブル            １６１  文書バッファ
１６２  バッファ管理テーブル                １７１  閾値算出プログラム
１７２  検索シミュレーションプログラム      ２１１  コマンド入力部
２１２  文書格納処理部                      ２１３  インデックス作成処理部
２１５  検索条件解析部                      ２１６  検索方式決定部
２１７  検索文書量算出部                    ２１８  予測時間算出部
２１９  検索実行部                          ２２１  検索結果出力部
２２２  閾値算出部                          ２２３  係数算出部
７００  画面                                ７０１  入力欄
７０２  シミュレーション実行ボタン          ７１０  画面
７１１  スライダ                            ７１２  設定ボタン
７２０  画面                                ７２１  入力欄
７２２  シミュレーション実行ボタン          ７３０  画面
７３１  表示欄                              ７３２  スライダ
７３３  再シミュレーションボタン            ７３４  設定ボタン
【図１】
2008158685.tif 000003
【図２】
2008158685.tif 000004
【図３】
2008158685.tif 000005
【図４】
2008158685.tif 000006
【図５】
2008158685.tif 000007
【図６】
2008158685.tif 000008
【図７】
2008158685.tif 000009
【図８】
2008158685.tif 000010
【図９】
2008158685.tif 000011
【図１０】
2008158685.tif 000012
【図１１】
2008158685.tif 000013
【図１２】
2008158685.tif 000014
【図１３】
2008158685.tif 000015
【図１４】
2008158685.tif 000016
【図１５】
2008158685.tif 000017
【図１６】
2008158685.tif 000018
【図１７】
2008158685.tif 000019
【図１８】
2008158685.tif 000020
【図１９】
2008158685.tif 000021
【図２０】
2008158685.tif 000022
【図２１】
2008158685.tif 000023
【図２２】
2008158685.tif 000024
【図２３】
2008158685.tif 000025
【図２４】
2008158685.tif 000026
【図２５】
2008158685.tif 000027
【図２６】
2008158685.tif 000028
【図２７】
2008158685.tif 000029
【図２８】
2008158685.tif 000030
【図２９】
2008158685.tif 000031
【図３０】
2008158685.tif 000032
【図３１】
2008158685.tif 000033
【図３２】
2008158685.tif 000034
【図３３】
2008158685.tif 000035
【図３４】
2008158685.tif 000036
【図３５】
2008158685.tif 000037
【図３６】
2008158685.tif 000038
【図３７】
2008158685.tif 000039
【図３８】
2008158685.tif 000040
【図３９】
2008158685.tif 000041
【図４０】
2008158685.tif 000042