(57)【特許請求の範囲】
【請求項１】
文書の検索条件を受け付ける入力装置と、前記検索条件に基づいて文書の検索を行なう文書検索装置と、前記検索の結果を出力する出力装置とを含んで構成され、
前記文書検索装置が、
第１の記憶部と、第２の記憶部と、処理部とを備え、
前記第２の記憶部は、
前記検索の対象となる文書を格納し、
前記第１の記憶部は、
前記処理部によって前記第２の記憶部よりも高速にデータの読み出しが可能である文書検索システムによる文書検索方法であって、
前記処理部は、
前記第１の記憶部にデータを格納する際に、
前記第１の記憶部に格納可能なデータの容量を取得し、
前記第２の記憶部に格納された前記検索の対象となる文書の件数を取得し、
前記取得した前記第１の記憶部に格納可能なデータの容量を、前記取得した前記検索の対象となる文書の件数で除算して、該件数の１件あたりの容量を算出し、
前記算出した１件あたりの容量に相当するデータを、前記検索の対象となる文書のそれぞれから抽出して、部分文書として前記第１の記憶部に格納し、
文書検索をする際に、
前記入力装置が受け付けた前記検索条件に合致する前記検索の対象となる文書を、前記第１の記憶部に格納した前記部分文書を検索する第１の検索によって抽出し、
前記第１の検索によって前記検索条件に合致しないと判定した場合、前記検索条件に合致する文書を、前記第２の記憶部に格納された前記検索の対象となる文書からさらに検索する第２の検索によって抽出し、
前記第１の検索および前記第２の検索の各検索によって前記検索条件に合致すると判定した前記検索の対象となる文書を、前記検索の結果として前記出力装置に出力させる
ことを特徴とする文書検索方法。
【請求項２】
前記入力装置は、
文書構造を含んだ前記検索条件を受け付け、
前記第１の記憶部は、
前記検索の対象となる文書内の各前記文書構造の格納場所に関する情報である文書構造格納場所情報を格納し、
前記処理部は、
前記文書構造格納場所情報を参照して、前記入力装置が前記検索条件として受け付けた前記文書構造が前記第１の記憶部に格納されていると判定した場合に、前記第１の検索を行ない、
前記文書構造格納場所情報を参照して前記検索条件として指定された前記文書構造が前記第１の記憶部に格納されていないと判定した場合または前記第１の検索によって前記検索条件に合致しないと判定した場合に、前記第２の検索を行なう
ことを特徴とする請求項１に記載の文書検索方法。
【請求項３】
前記第１の記憶部は、
前記文書構造の重要度に関する情報である構造別重要度情報をさらに格納し、
前記処理部は、
前記構造別重要度情報に基づいて、前記検索の対象となる文書からデータを抽出して、前記部分文書として前記第１の記憶部に格納し、
前記第１の記憶部に格納した前記文書構造に関しては、前記第１の記憶部に前記文書構造が存在することを表す情報で前記文書構造格納場所情報を更新し、前記第１の記憶部に格納しなかった前記文書構造に関しては、前記第１の記憶部に前記文書構造が存在しないことを表す情報で前記文書構造格納場所情報を更新する
ことを特徴とする請求項２に記載の文書検索方法。
【請求項４】
前記構造別重要度情報は、
前記文書構造の検索回数を含み、
前記処理部は、
前記文書構造の検索回数の降順に、前記検索の対象となる文書からデータを抽出して、前記第１の記憶部に格納する
ことを特徴とする請求項３に記載の文書検索方法。
【請求項５】
前記構造別重要度情報は、
前記入力装置が受け付けた優先的に前記第１の記憶部に格納する前記文書構造である登録済み文書構造および前記入力装置が受け付けた前記第１の記憶部に格納しない前記文書構造である除外文書構造に関する情報のうち、少なくとも１つ以上の情報を含み、
前記処理部は、
前記登録済み文書構造および前記除外文書構造のうち、少なくとも１つ以上を指標として、前記検索の対象となる文書からデータを抽出して、前記第１の記憶部に格納する
ことを特徴とする請求項３または請求項４に記載の文書検索方法。
【請求項６】
前記第１の記憶部は、
前記検索の対象となる文書のヒット回数、参照回数および最終参照日付のうち、少なくとも１つ以上を格納し、
前記処理部は、
前記ヒット回数、前記参照回数および前記最終参照日付のうち、少なくとも１つ以上を指標として文書の重要度を決定し、前記文書の重要度の降順に前記検索の対象となる文書からデータを抽出して前記第１の記憶部に格納し、前記重要度が高い文書は、前記第１の記憶部に格納しておく
ことを特徴とする請求項１乃至請求項５のいずれか１項に記載の文書検索方法。
【請求項７】
請求項１乃至請求項６のいずれか１項に記載の文書検索方法をコンピュータに実行させるための文書検索プログラム。
【請求項８】
文書の検索条件を受け付ける入力装置と、前記検索条件に基づいて文書の検索を行なう文書検索装置と、前記検索の結果を出力する出力装置とを含んで構成される文書検索システムにおける文書検索装置であって、
第１の記憶部と、第２の記憶部と、処理部とを備え、
前記第２の記憶部は、
前記検索の対象となる文書を格納し、
前記第１の記憶部は、
前記処理部によって前記第２の記憶部よりも高速にデータの読み出しが可能であり、
前記処理部は、
前記第１の記憶部にデータを格納する際に、
前記第１の記憶部に格納可能なデータの容量を取得し、
前記第２の記憶部に格納された前記検索の対象となる文書の件数を取得し、
前記取得した前記第１の記憶部に格納可能なデータの容量を、前記取得した前記検索の対象となる文書の件数で除算して、該件数の１件あたりの容量を算出し、
前記算出した１件あたりの容量に相当するデータを、前記検索の対象となる文書のそれぞれから抽出して、部分文書として前記第１の記憶部に格納し、
文書検索をする際に、
前記入力装置が受け付けた前記検索条件に合致する前記検索の対象となる文書を、前記第１の記憶部に格納した前記部分文書を検索する第１の検索によって抽出し、
前記第１の検索によって前記検索条件に合致しないと判定した場合、前記検索条件に合致する文書を、前記第２の記憶部に格納された前記検索の対象となる文書からさらに検索する第２の検索によって抽出し、
前記第１の検索および前記第２の検索の各検索によって前記検索条件に合致すると判定した前記検索の対象となる文書を、前記検索の結果として前記出力装置に出力させる
ことを特徴とする文書検索装置。
【請求項９】
前記入力装置は、
文書構造を含んだ前記検索条件を受け付け、
前記第１の記憶部は、
前記検索の対象となる文書内の各前記文書構造の格納場所に関する情報である文書構造格納場所情報を格納し、
前記処理部は、
前記文書構造格納場所情報を参照して、前記入力装置が前記検索条件として受け付けた前記文書構造が前記第１の記憶部に格納されていると判定した場合に、前記第１の検索を行ない、
前記文書構造格納場所情報を参照して前記検索条件として指定された前記文書構造が前記第１の記憶部に格納されていないと判定した場合または前記第１の検索によって前記検索条件に合致しないと判定した場合に、前記第２の検索を行なう
ことを特徴とする請求項８に記載の文書検索装置。
【請求項１０】
前記第１の記憶部は、
前記文書構造の重要度に関する情報である構造別重要度情報をさらに格納し、
前記処理部は、
前記構造別重要度情報に基づいて、前記検索の対象となる文書からデータを抽出して、前記部分文書として前記第１の記憶部に格納し、
前記第１の記憶部に格納した前記文書構造に関しては、前記第１の記憶部に前記文書構造が存在することを表す情報で前記文書構造格納場所情報を更新し、前記第１の記憶部に格納しなかった前記文書構造に関しては、前記第１の記憶部に前記文書構造が存在しないことを表す情報で前記文書構造格納場所情報を更新する
ことを特徴とする請求項９に記載の文書検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子化文書の検索において、利用可能なメモリ容量が限定されている場合でも、高速な検索を実現する技術に関するものである。
【背景技術】
【０００２】
ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）をはじめとする情報機器の普及に伴い、これらを用いて作成される電子化文書の量は今後も増え続けることは容易に想像される。この背景を受け、大量の文書の中から必要とする文書を探し出す全文検索装置に対する要求は、ますます高まってきている。
また、最近の傾向としては、例えば、電子メールを対象とし、送信者名やタイトルなど、文書の一部に記載された内容を検索したいという要求や、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）文書の特定のタグに含まれる内容を検索したいという要求が増えてきている。以上のような要求に応えるために、範囲や構造を限定して検索できる文書検索システムが開発されてきた。このような文書検索システムの一つとして、走査型の全文検索方式を挙げることができる。この方式は、ディスクやメモリに格納されたデータを走査することにより、検索者の必要とする文書（以下、目的文書と呼ぶ）を検索する方式である。例えば、特許文献１には、文書全体をメモリに格納することで、高速な全文検索を実現する技術（以下、従来技術１と呼ぶ）が開示されている。
【特許文献１】特開２００３−３０１９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、一般に、文書検索装置に搭載されているメモリ容量は有限である。したがって、検索対象となる文書容量が文書検索装置のメモリ容量より多い場合には、従来技術１をそのまま適用することができず、文書検索装置のメモリを増設するなどの方法により文書容量よりも多くのメモリを用意するといった対策や、メモリだけでなくディスクを含めて検索するといった対策を講ずる必要がある。前者の場合、メモリ増設のための投資が必要となる。また、後者の場合には、ディスクを参照する文書件数に応じて検索時間が必要となる。
【０００４】
そこで、本発明は、構造化データを対象にした文書を参照する検索において、利用可能なメモリ容量が限定されている制約の下でも、高速な検索を実現することを課題とする。
【課題を解決するための手段】
【０００５】
前記の目的を達成するために、本発明の文書検索方法は、文書の検索条件を受け付ける入力装置と、前記検索条件に基づいて文書の検索を行なう文書検索装置と、前記検索の結果を出力する出力装置とを含んで構成され、前記文書検索装置が、第１の記憶部と、第２の記憶部と、処理部とを備え、前記第２の記憶部が、前記検索の対象となる文書を格納し、前記第１の記憶部が、前記処理部によって前記第２の記憶部よりも高速にデータの読み出しが可能である文書検索システムによる文書検索方法であって、前記処理部が、前記第１の記憶部にデータを格納する際に、前記第１の記憶部に格納可能なデータの容量を取得し、前記第２の記憶部に格納された前記検索の対象となる文書の件数を取得し、前記取得した前記第１の記憶部に格納可能なデータの容量を、前記取得した前記検索の対象となる文書の件数で除算して、該件数の１件あたりの容量を算出し、前記算出した１件あたりの容量に相当するデータを、前記検索の対象となる文書のそれぞれから抽出して、部分文書として前記第１の記憶部に格納し、文書検索をする際に、前記入力装置が受け付けた前記検索条件に合致する前記検索の対象となる文書を、前記第１の記憶部に格納した前記部分文書を検索する第１の検索によって抽出し、前記第１の検索によって前記検索条件に合致しないと判定した場合、前記検索条件に合致する文書を、前記第２の記憶部に格納された前記検索の対象となる文書からさらに検索する第２の検索によって抽出し、前記第１の検索および前記第２の検索の各検索によって前記検索条件に合致すると判定した前記検索の対象となる文書を、前記検索の結果として前記出力装置に出力させる方法とした。
【０００６】
かかる方法によれば、文書検索装置は、第２の記憶部に検索の対象となる文書を格納し、処理部が、第１の記憶部に格納可能なデータの容量を取得し、第２の記憶部に格納された検索の対象となる文書から取得した容量のデータを抽出して、部分文書として、処理部によって第２の記憶部よりも高速にデータの読み出しが可能な第１の記憶部に格納し、入力装置を介して受け付けた検索条件に合致する検索の対象となる文書を、第１の記憶部に格納した部分文書を検索する第１の検索によって抽出し、検索条件に合致する検索の対象となる文書を、第１の検索によって検索条件に合致しないと判定した場合、検索条件に合致する文書を、第２の記憶部に格納された検索の対象となる文書をさらに検索する第２の検索によって抽出し、第１の検索および第２の検索の各検索によって検索条件に合致すると判定した検索の対象となる文書を、検索の結果としてユーザに出力装置を介して出力することが可能である。したがって、処理部が、第２の記憶部よりも高速にデータの読み出しが可能な第１の記憶部をまず検索するので、構造検索のような文書の一部を参照する検索において、利用可能なメモリ容量が限定されている制約の下でも、メモリを増設することなく、高速な検索を実現することが可能になる。
【発明の効果】
【０００７】
本発明によれば、構造検索のような文書を参照する検索において、利用可能なメモリ容量が限定されている制約の下でも、高速な検索を実現することが可能になる。
【発明を実施するための最良の形態】
【０００８】
（第１の実施形態）
以下、本発明の第１の実施形態について図１を用いて説明する。
本発明の第１の実施形態における文書検索システム１０は、文書検索サーバ（文書検索装置）１００、クライアント１０１およびこれらを接続するネットワーク１０３を含んで構成される。
以下、文書検索サーバ１００の構成について説明する。
【０００９】
文書検索サーバ１００は、磁気ディスク装置１０２、ディスプレイ１１０、キーボード１１１、中央演算処理装置（ＣＰＵ（Central Processing Unit））１１２、外部記憶媒体駆動装置１１３、ネットワークボード（Ｅｔｈｅｒｎｅｔ（登録商標）ボード）１１４、主メモリ１１７およびこれらを結ぶバス１１５から構成される。
【００１０】
外部記憶媒体１１６に格納されている情報は、文書検索サーバ１００のＣＰＵ１１２によって、外部記憶媒体駆動装置１１３を介して主メモリ１１７へ読み込まれ、バス１１５を介して磁気ディスク装置１０２に格納される。文書検索サーバ１００の主メモリ１１７には、システム制御プログラム１２０（文書登録制御プログラム１２１、検索制御プログラム１２２、検索対象文書格納プログラム１３０、メモリ容量算出プログラム１３１、部分文書ロードプログラム１３２、検索条件解析プログラム１３３、メモリ検索プログラム１３４、検索継続判定プログラム１３５、ディスク検索プログラム１３６および検索結果出力プログラム１３７）が磁気ディスク装置１０２から読み出されて格納されると共に、部分文書格納エリア１４０、ワークエリア１４１、ヒット文書管理テーブル１４２、ディスク検索対象文書管理テーブル１４３が確保される。
【００１１】
システム制御プログラム１２０は、文書登録制御プログラム１２１および検索制御プログラム１２２を含んで構成される。
文書登録制御プログラム１２１は、検索対象文書格納プログラム１３０、メモリ容量算出プログラム１３１および部分文書ロードプログラム１３２を含んで構成される。
検索制御プログラム１２２は、検索条件解析プログラム１３３、メモリ検索プログラム１３４、検索継続判定プログラム１３５、ディスク検索プログラム１３６、および検索結果出力プログラム１３７を含んで構成される。
【００１２】
文書登録制御プログラム１２１および検索制御プログラム１２２は、キーボード１１１あるいはネットワーク１０３に接続されたクライアント１０１からのユーザによる指示に応じてシステム制御プログラム１２０によって起動され、それぞれ、検索対象文書格納プログラム１３０、メモリ容量算出プログラム１３１、部分文書ロードプログラム１３２の制御と、検索条件解析プログラム１３３、メモリ検索プログラム１３４、検索継続判定プログラム１３５、ディスク検索プログラム１３６、検索結果出力プログラム１３７の制御を行なう。
磁気ディスク装置１０２は、二次記憶装置の一つであり、検索対象文書１５０が格納される。あわせて、システム制御プログラム１２０をはじめとした各プログラム１２１、１２２、１３０〜１３７が格納されている。
以上が、文書検索サーバ１００のシステム構成についての説明である。
【００１３】
なお、本実施形態では、文書検索サーバ１００上のキーボード１１１あるいはネットワーク１０３に接続されたクライアント１０１から入力されたコマンドにより、文書登録制御プログラム１２１、あるいは検索制御プログラム１２２が起動されるものとしたが、他の入力装置を介して入力されたコマンドあるいはイベントにより起動されるものであってもよい。
【００１４】
また、これらのプログラムを磁気ディスク装置１０２、外部記憶媒体１１７、あるいはＭＯ（Magneto-Optical disk）、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、ＤＶＤ（Digital Versatile Disk）などの記憶手段（図1には示していない）に格納し、文書検索サーバ１００のＣＰＵ１１２が、駆動装置を介して文書検索サーバ１００上の主メモリ１１７に読み込み、実行することも可能である。
また、これらのプログラムを、ネットワーク１０３を介して文書検索サーバ１００の主メモリ１１７に読み込み、文書検索サーバ１００上のＣＰＵ１１２によって実行することも可能である。
さらに、本実施形態では、検索対象文書１５０を磁気ディスク装置１０２に格納するものとしたが、文書検索サーバ１００の主メモリ１１７に格納されるものであってもよいし、あるいは外部記憶媒体１１６、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ等の記憶媒体（図１には示していない）に格納し、駆動装置を介して文書検索サーバ１００の主メモリ１１７に読み込み、利用することも可能である。また、磁気ディスク装置１０２がネットワーク１０３を介して接続されていてもよい。
【００１５】
また、文書検索サーバ１００のワークエリア１４１は、文書検索サーバ１００の主メモリ１１７に確保されるものとしたが、磁気ディスク装置１０２に確保されるものであってもよいし、外部記憶媒体１１７、ＭＯ、ＣＤ−Ｒ（Compact Disk Recordable）、ＤＶＤなどの書込み可能な記憶媒体（図１には示していない）に確保されるものであってもよい。
また、本実施形態では、文書検索サーバ１００およびクライアント１０１は、物理的に異なる装置を用いて構成されるものとしたが、同一の装置であってもよい。
以下、本実施形態における文書検索システム１０の処理手順について説明する。
【００１６】
まず、文書検索サーバ１００のシステム制御プログラム１２０の処理手順について、図２のＰＡＤ（Problem Analysis Diagram）図を用いて（適宜図１参照）説明する。
【００１７】
システム制御プログラム１２０は、キーボード１１１から入力されたコマンドの種類を判定する（ステップＳ２００）。システム制御プログラム１２０は、ここで登録実行（登録処理）のコマンドであると判定した場合には（ステップＳ２００で登録処理）、文書登録処理プログラム１２１を起動し、（登録実行のコマンドで）指定された文書を登録する（ステップＳ２０１）。
【００１８】
また、システム制御プログラム１２０は、前記ステップＳ２００で検索実行（検索処理）のコマンドであると判定した場合には、検索制御プログラム１２２を起動し、検索実行のコマンドで指定された検索条件に適合する文書を検索する（ステップＳ２０２）。
以上が、文書検索サーバ１００のシステム制御プログラム１２０の処理手順についての説明である。
【００１９】
次に、図２に示したステップＳ２０１でシステム制御プログラム１２０により起動される文書登録制御プログラム１２１の処理手順について、図３のＰＡＤ図を用いて（適宜図１参照）説明する。
【００２０】
文書登録制御プログラム１２１は、まず検索対象文書格納プログラム１３０を起動し、検索対象となる文書を検索対象文書１５０として磁気ディスク装置１０２に格納する（ステップＳ３００）。この検索対象文書は、外部記憶媒体１１６から外部記憶媒体駆動装置１１３を介して取得してもよいし、ネットワーク１０３を介して取得してもよい。
【００２１】
次に、メモリ容量算出プログラム１３１を起動し、ステップＳ３００で磁気ディスク装置１０２に検索対象文書１５０として格納された文書の件数と部分文書格納エリア１４０の容量を取得して、１文書あたりで使用可能な文書別メモリ容量を算出する（ステップＳ３０１）。
【００２２】
次に、検索対象文書１５０として格納された各文書に対して（検索対象文書１５０として格納された文書を順に選択して）、次の処理（ステップＳ３０３）を繰り返す（ステップＳ３０２）。部分文書ロードプログラム１３２を起動し、前記ステップＳ３０２で選択された文書から、前記ステップＳ３０１で算出されたメモリ容量分を部分文書として抽出し、部分文書格納エリア１４０に格納する（ステップＳ３０３）。
以上が、文書登録制御プログラム１２１の処理手順についての説明である。
【００２３】
次に、図２に示したステップＳ２０２で、システム制御プログラム１２０により起動される検索制御プログラム１２２の処理手順について図４のＰＡＤ図を用いて（適宜図１参照）説明する。
【００２４】
検索制御プログラム１２２は、まず検索条件解析プログラム１３３を起動し、ユーザからの検索条件を解析する（ステップＳ４００）。なお、ユーザは、クライアント１０１から検索条件を入力することが可能である。
【００２５】
次に、部分文書格納エリア１４０に格納され各部分文書に対して（部分文書格納エリア１４０に格納された部分文書を順に選択して）、ステップＳ４０２以降の処理を繰り返し実行する（ステップＳ４０１）。
まず、メモリ検索プログラム１３４を起動し、該部分文書（前記ステップＳ４０１で選択された部分文書）に対する照合を実行する（ステップＳ４０２）。次に、前記ステップＳ４０２で実行された照合処理の結果、該部分文書がヒット文書であるか（検索条件を満たす文書であるか）どうかを判定する（ステップＳ４０３）。該部分文書がヒット文書であると判定された場合には（ステップＳ４０３でＹｅｓ）、ヒット文書管理テーブル１４２の該部分文書に対応する文書ＩＤのフラグをたてる（ステップＳ４０４）。なお、ここでは一例として、フラグの各値は、「０：検索結果として出力しない文書」「１：検索結果として出力する文書」をそれぞれ表している。
また、前記ステップＳ４０２で実行された照合処理の結果、該部分文書がヒット文書でないと判定された場合には（ステップＳ４０３でＮｏ）、検索継続判定プログラム１３５を起動し、検索条件で指定された範囲を検索し終えているかを判定する（ステップＳ４０５）。前記ステップＳ４０５で、検索条件で指定された範囲を検索し終えていないと判定された場合には（ステップＳ４０５でＮｏ）、ディスク検索対象文書管理テーブル１４３に（該部分文書に対応する）文書ＩＤを記録する（ステップＳ４０６）。
【００２６】
次に、ディスク検索対象文書管理テーブル１４３に格納された各文書ＩＤに対して、ステップＳ４０８以降の処理を繰り返し実行する（ステップＳ４０７）。
まず、ディスク検索プログラム１３６を起動し、該文書ＩＤに対応する文書データを磁気ディスク装置１０２の検索対象文書１５０からワークエリア１４１に読み込み、ステップＳ４００で解析された検索条件に適合するかを判定する（ステップＳ４０８）。そして、該文書がヒット文書かどうかを判定する（ステップＳ４０９）。この結果、該文書データがヒット文書であると判定された場合には（ステップＳ４０９でＹｅｓ）、ヒット文書管理テーブル１４２の該文書に対応する文書ＩＤのフラグをたてる（ステップＳ４１０）。
次に、ヒット文書管理テーブル１４２を参照して、フラグのたっている文書を検索結果として出力する（ステップＳ４１１）。
以上が、検索制御プログラム１２２の処理手順についての説明である。
【００２７】
以下、本発明の第１の実施形態における文書検索システムの具体的な処理手順を図５および図６を用いて説明する。
まず、本発明の第１の実施形態に示した文書検索システムにおける文書の登録処理（図３）について、図５を用いて（適宜図１および図３参照）具体的に説明する。
【００２８】
図５は、文書１から文書１０が登録される場合の処理の流れを表している。文書１から文書１０の内容は、図５の文書１（５０１）から文書１０（５１０）に示す通りである。なお、文書２（５０２）のｉｍｇタグで囲まれた部分は、ＢＡＳＥ６４でエンコードされた野球選手の画像であることを示している。
【００２９】
図５に示した例では、文書１（５０１）から文書１０（５１０）に対して、まず、図３に示したステップＳ３００が実行され、検索対象文書格納プログラム１３０により、文書１（５０１）から文書１０（５１０）が、それぞれ検索対象文書１（５０１ａ）から検索対象文書１０（５１０ａ）として磁気ディスク装置１０２に格納された状態を表している。次に、図３に示したステップＳ３０１が実行され、メモリ容量算出プログラム１３１により、磁気ディスク装置１０２に格納された文書の件数と部分文書格納エリア１４０の容量を取得して、１文書あたりで使用可能な文書別メモリ容量を算出する。
【００３０】
図５に示した例では、磁気ディスク装置１０２に格納されている文書の件数１０件と、部分文書格納エリア１４０の容量１５００Ｂｙｔｅが取得され、１文書あたりで使用可能な文書別メモリ容量が（１５００Ｂｙｔｅ／１０＝）１５０Ｂｙｔｅであると算出された状態を表している。
【００３１】
次に、図３に示したステップＳ３０２が実行され、部分文書ロードプログラム１３２により、磁気ディスク装置１０２に格納された検索対象文書１５０から、ステップＳ３０１で算出されたメモリ容量分だけ部分文書が読み込まれ、部分文書格納エリア１４０に格納される。図５に示した例では、磁気ディスク装置１０２に格納された検索対象文書１（５０１ａ）から検索対象文書１０（５１０ａ）のそれぞれから１５０Ｂｙｔｅずつ読み込まれ、これらが部分文書１（５０１ｂ）から部分文書１０（５１０ｂ）として部分文書格納エリア１４０に格納されたことを表している。
以上が、本実施形態に示した文書検索システムにおける文書の登録処理の具体的な流れについての説明である。
【００３２】
次に、本発明の第１の実施形態に示した文書検索システムにおける文書の検索処理（図４）について、図６を用いて（適宜図１および図４参照）具体的に説明する。
【００３３】
図６は、前記文書１から文書１０が格納された文書検索サーバ１００に対し、“ｔｉｔｌｅ：Ｔｏｋｙｏ”が検索条件６００として指定された場合の例を表している。ここで、検索条件６００“ｔｉｔｌｅ：Ｔｏｋｙｏ”は、ユーザが、“ｔｉｔｌｅ”構造に“Ｔｏｋｙｏ”という文字列が含まれる文書を検索条件として指定したことを示している。
【００３４】
部分文書格納エリア１４０に格納された各部分文書について、図４に示したステップＳ４０２以降の処理が繰り返される。まず、部分文書１（５０１ｂ）について、図４に示したステップＳ４０２が実行され、メモリ検索プログラム１３４により、部分文書１（５０１ｂ）が検索される。次に、図４に示したステップＳ４０３では、部分文書１（５０１ｂ）がヒット文書であるかどうかが判定される。図６に示した例では、検索条件６００“ｔｉｔｌｅ：Ｔｏｋｙｏ”に対し、部分文書１（５０１ｂ）がヒット文書でないため、ヒット文書管理テーブル１４２は更新されず（ヒット文書管理テーブル１４２ａからヒット文書管理テーブル１４２ｂになる）、図４に示したステップＳ４０５が実行され、検索継続判定プログラム１３５により、検索条件で指定された範囲を検索し終えているかが判定される。図６に示した例では、部分文書１（５０１ｂ）に対する照合により、検索条件６００“ｔｉｔｌｅ：Ｔｏｋｙｏ”で指定された範囲であるｔｉｔｌｅ部分の照合を終えている（“ｔｉｔｌｅ”構造の最後まで照合を終えている）ので、ディスク検索対象文書管理テーブル１４３には、何も記録されない（ｎｕｌｌ）状態（ディスク検索対象文書管理テーブル１４３ａからディスク検索対象文書管理テーブル１４３ｂになる）を示している。
【００３５】
次に、部分文書２（５０２ｂ）について、図４に示したステップＳ４０２が実行され、メモリ検索プログラム１３４により、部分文書２（５０２ｂ）が照合される。図６に示した例では、検索条件６００“ｔｉｔｌｅ：Ｔｏｋｙｏ”に対し、部分文書２（５０２ｂ）がヒット文書であるため、ヒット文書管理テーブル１４２ｂの「文書ＩＤ」＝「２」のフラグが「０」から「１」に更新され、ディスク検索対象文書管理テーブル１４２ｃの状態になることを示している。
【００３６】
さらに、部分文書３（５０３ｂ）について、図４に示したステップＳ４０２が実行され、メモリ検索プログラム１３４により、部分文書３（５０３ｂ）が照合される。図６に示した例では、検索条件“ｔｉｔｌｅ：Ｔｏｋｙｏ”に対し、部分文書３（５０３ｂ）がヒット文書でないため、図４に示したステップＳ４０５が実行され、検索継続判定プログラム１３５により、検索条件で指定された範囲を検索し終えているかが判定される。図６に示した例では、文書５０３に対しては、部分文書３（５０３ｂ）を照合しても、検索条件“ｔｉｔｌｅ：Ｔｏｋｙｏ”で指定された範囲を照合し終えていない（“ｔｉｔｌｅ”構造の最後まで照合し終えていない）ので、ディスク検索対象文書管理テーブル１４３ｂに「文書ＩＤ」＝「３」が記録され、ディスク検索対象文書管理テーブル１４３ｃの状態になったことを示している。
【００３７】
次に、図４に示したステップＳ４０７が実行され、ディスク検索対象文書管理テーブル１４３に記録された各文書ＩＤについて、ステップＳ４０８以降の処理が繰り返される。
まず、図４に示したステップＳ４０８が実行され、ディスク検索プログラム１３６により、選択された文書ＩＤに対応する文書データが、磁気ディスク装置１０２の検索対象文書１５０から、ワークエリア１４１に読み込まれる。そして、図４に示したステップＳ４００で指定された検索条件に適合するかが判定される。次に、図４に示したステップＳ４０９で該文書が、ヒット文書かどうかが判定される。ヒット文書であれば、図４に示したステップＳ４１０でヒット文書管理テーブル１４２の該部分文書ＩＤに対応する文書ＩＤのフラグをたてる。図６に示した例では、ディスク検索対象文書管理テーブル１４３ｃに「文書ＩＤ」＝「３」が記録されているので、文書３（５０３ｂ）に対応する文書データが磁気ディスク装置１０２の検索対象文書１５０からワークエリア１４１に読み込まれ、文書３（５０３ｂ）に対する照合が実行される。この結果、この文書３（５０３ｂ）はヒット文書であると判定され、ヒット文書管理テーブル１４２ｄの「文書ＩＤ」＝「３」のフラグが「０」から「１」に更新され、ヒット文書管理テーブル１４２ｅになることを示している。
以上が、本発明の第一の実施形態についての説明である。
【００３８】
以上説明したように、本発明の第一の実施形態では、文書の一部を参照する検索において、文書の先頭部分をメモリに格納し、まずこのメモリに格納された部分文書に対して照合を行なう。これにより文書の先頭部分に検索される構造が集中している場合には、メモリ上で照合が完了するため、小容量のメモリでも高速な検索を実現することができる。また、本発明によれば、メモリ上に格納された部分文書で検索が終了しない場合でも、ディスク上に格納された文書を検索するので、検索条件で指定された任意の構造に対して検索することができるのは明らかであろう。
【００３９】
（第２の実施形態）
次に、本発明の第２の実施形態について、図７を用いて説明する。
第１の実施形態のように、文書の先頭部分を主メモリに格納するのでは、検索対象となる構造が必ずしも主メモリにあるとは限らないため、ディスクを検索しなければならない状況も、少なからず生じる。そこで本発明の第２の実施形態における文書検索システムは、文書中の構造が検索条件で指定された回数（以下、検索回数と呼ぶ）を数えておき、よく検索される構造を主メモリに格納することで高速な検索を実現しようとするものである。
【００４０】
本実施形態は、第１の実施形態（図１）とほぼ同様の構成をとるが、符号１２２ａで示される検索制御プログラムの構成が異なると共に、符号１１７ａで示される主メモリに構造別検索回数テーブル７０５および構造格納場所管理テーブル７０６が確保される点で異なる（図７）。本実施形態における検索制御プログラム１２２ａは、構造別検索回数カウントプログラム７０２、構造データ管理プログラム７０３、構造データロードプログラム７０４を有する。それ以外の部分は図１と同様の構成である。
【００４１】
以下、本実施形態における処理手順のうち、第１の実施形態とは異なる検索制御プログラム１２２ａの処理手順について図８に示すＰＡＤ図を用いて（適宜図７参照）説明する。図８に示した処理手順のうち、図４に示した第１の実施形態とはステップＳ８０１、８０２、８０３が異なる。ステップＳ８０１では文書の論理構造の検索回数をカウントすることを特徴とする。ステップＳ８０２では文書の論理構造の格納場所によっては、メモリでの検索を省略することを特徴とする。また、ステップＳ８０３では、文書の論理構造の検索回数テーブルを参照して、文書の論理構造を入れ替えることを特徴とする。
【００４２】
検索制御プログラム１２２ａは、まず、検索条件解析プログラム１３３を起動し、ユーザからの検索条件を解析する（ステップＳ４００）。次に、構造別検索回数カウントプログラム７０２を起動し、ステップＳ４００で解析された検索条件で指定された構造の回数を１増やす（検索条件で指定された構造に対応する構造別検索回数テーブル７０５の構造の回数を１増やす）（ステップＳ８０１）。
【００４３】
次に、部分文書格納エリア１４０に格納された各部分文書に対して（部分文書格納エリア１４０に格納された部分文書を順に選択して）、ステップＳ８０２以降の処理を繰り返し実行する（ステップＳ４０１）。
まず、構造データ管理プログラム７０３を起動し、ステップＳ４００で解析された検索条件中の構造が、どこに格納されているかを、構造格納場所管理テーブル７０６を参照して判断する（ステップＳ８０２）。前記ステップＳ８０２で実行される判断処理の結果、ステップＳ４００で解析された検索条件中の構造が「すべてメモリ、または一部メモリ」に格納されていると判断された場合には（ステップＳ８０２で「すべてメモリ、または一部メモリ」）、前記したステップＳ４０２からステップＳ４０６の処理を行なう。
【００４４】
前記ステップＳ８０２で実行される判断処理の結果、ステップＳ４００で解析された検索条件中の構造が「メモリにはない」と判断された場合には（ステップＳ８０２で「メモリにはない」）、前記したステップＳ４０６の処理を行なう。
【００４５】
次に、ディスク検索対象文書管理テーブル１４３に格納された各文書ＩＤに対して、ステップＳ４０８以降の処理を繰り返し実行する（ステップＳ４０７）。
前記したステップＳ４０８からステップＳ４１０の処理については、説明を省略する。ステップＳ４０８からステップＳ４１０の後、構造データロードプログラム７０４を起動し、構造別検索回数テーブル７０５の検索回数の降順に（検索回数の多い方から少ない方へ順に）、ステップＳ３０１で算出したメモリ容量に達するまで、構造データを部分文書格納エリア１４０にロードし、構造格納場所管理テーブル７０６を書き換える（ステップＳ８０３）。
以上が、検索制御プログラム１２２ａの処理手順についての説明である。
【００４６】
次に、本発明の第２の実施形態に示した文書検索システムにおける文書の検索処理（図８）について、図９を用いて（適宜図７および図８参照）具体的に説明する。
【００４７】
図９においては、部分文書格納エリア１４０に部分文書１（５０１ｂ）、部分文書２（５０２ｂ）および部分文書３（５０３ｂ）が格納されているものとする。
まず、図８に示したステップＳ８０１が実行され、構造別検索回数カウントプログラム７０２により、検索条件で指定された構造に対応する構造別検索回数テーブル７０５の値が１増やされる。
図９に示した例では、検索条件９００“ｔｉｔｌｅ：Ｔｏｋｙｏ”であるので、構造別検索回数テーブル７０５ａの構造“ｔｉｔｌｅ”の回数が「８」から「９」に増やされ、構造別検索回数テーブル７０５ｂになったことを示している。
【００４８】
次に、部分文書格納エリア１４０に格納された各部分文書について、ステップＳ８０２以降の処理が繰り返される。
まず、部分文書１（５０１ｂ）について、図８に示したステップＳ８０２が実行され、構造データ管理プログラム７０３により、図８に示したステップＳ４００で解析された検索条件中の構造が、すべてメモリ、または一部メモリに格納されているか、メモリには格納されていないかを、構造格納場所管理テーブル７０６を参照して判断される。
図９に示した例では、構造格納場所管理テーブル７０６ａが参照され、文書１（５０１ｂ）については検索条件９００で指定された“ｔｉｔｌｅ”が一部メモリにあると判断されたため、メモリ検索プログラム１３４が起動され、部分文書１（５０１ｂ）に対する検索が実行されることを示している。なお、ここでは一例として、構造格納場所管理テーブル７０６（７０６ａ、７０６ｂ、７０６ｃおよび７０６ｄ）の各値は、「１：すべてメモリ」「２：一部メモリ」および「３：メモリにはない」をそれぞれ表している。
【００４９】
次に、図８に示したステップＳ４０３が実行され、部分文書１（５０１ｂ）がヒット文書であるかどうかが判定される。
図９に示した例では、検索条件“ｔｉｔｌｅ：Ｔｏｋｙｏ”に対して、部分文書１（５０１ｂ）がヒット文書ではないため、図８に示したステップＳ４０５が実行され、検索継続判定プログラム１３５により、検索条件で指定された範囲を検索し終えているかが判定される。
図９に示した例では、部分文書１（５０１ｂ）に対する照合を行なうことで、検索条件“ｔｉｔｌｅ：Ｔｏｋｙｏ”で指定された範囲を検索し終えているので、ディスク検索対象文書管理テーブル１４３には、何も記録されない（ｎｕｌｌ）状態（ディスク検索対象文書管理テーブル１４３ａからディスク検索対象文書管理テーブル１４３ｂになる）を示している。
【００５０】
次に、部分文書２（５０２ｂ）について、図８に示したステップＳ８０２が実行され、構造データ管理プログラム７０３により、図８に示したステップＳ４００で解析された検索条件中の構造が、すべてメモリ、または一部メモリに格納されているか、メモリには格納されていないかを、構造格納場所管理テーブル７０６を参照して判断される。
図９に示した例では、構造格納場所管理テーブル７０６ａが参照され、文書２（５０２ｂ）については検索条件９００で指定された“ｔｉｔｌｅ”がすべてメモリにあると判断されたため、メモリ検索プログラム１３４が起動され、部分文書２（５０２ｂ）に対する検索が実行されることを示している。
【００５１】
次に、図８に示したステップＳ４０３が実行され、部分文書２（５０２ｂ）がヒット文書であるかどうかが判定される。
図９に示した例では、検索条件“ｔｉｔｌｅ：Ｔｏｋｙｏ”に対して、部分文書２（５０２ｂ）がヒット文書であるため、ヒット文書管理テーブル１４２ａの「文書ＩＤ」＝「２」のフラグが「０」から「１」に更新され、ヒット文書管理テーブル１４２ｂになることを示している。
【００５２】
さらに、部分文書３（５０３ｂ）について、図８に示したステップＳ８０２が実行され、構造データ管理プログラム７０３により、図８に示したステップＳ４００で解析された検索条件中の構造が、すべてメモリ、または一部メモリに格納されているか、メモリには格納されていないかを、構造格納場所管理テーブル７０６を参照して判断される。
図９に示した例では、構造格納場所管理テーブル７０６ａが参照され、文書３（５０３ｂ）については検索条件９００で指定された“ｔｉｔｌｅ”がメモリにはないと判断されたため、ディスク検索対象文書管理テーブル１４３ｃに「文書ＩＤ」＝「３」が記録された状態を示している。
【００５３】
次に、図８に示したステップＳ４０７が実行され、ディスク検索対象文書管理テーブル１４３に記録された各文書ＩＤについて、ステップＳ４０８以降の処理が繰り返される。
まず、図８に示したステップＳ４０８が実行され、ディスク検索プログラム１３６により、選択された文書ＩＤに対応する検索対象文書１５０が磁気ディスク装置１０２から、ワークエリア１４１に読み込まれる。そして、図８に示したステップＳ４００で指定された検索条件に適合するかが判定される。次に、図８に示したステップＳ４０９で該文書が、ヒット文書かどうかが判定される。
図９に示した例では、ディスク検索対象文書管理テーブル１４３ｃに「文書ＩＤ」＝「３」が記録されているので、「文書ＩＤ」＝「３」に対応する文書データ（検索対象文書３（５０３ａ）のデータ）が磁気ディスク装置１０２の検索対象文書１５０からワークエリア１４１に読み込まれ、検索対象文書３（５０３ａ）の照合が実行される。この結果、検索対象文書３（５０３ａ）は、ヒット文書であると判定され、ヒット文書管理テーブル１４２ｂの「文書ＩＤ」＝「３」のフラグが「０」から「１」に更新され、ヒット文書管理テーブル１４２ｃになることを示している。
【００５４】
次に、ステップＳ８０３が実行される。
まず、部分文書１（５０１ｂ）について、構造データロードプログラム７０４が実行される。構造データロードプログラム７０４は、構造別検索回数テーブル７０５を参照して、検索回数の多い構造から、ステップＳ３０１で算出したメモリ容量１５０Ｂｙｔｅに達するまで、構造を部分文書格納エリア１４０にロードし、部分文書格納エリア１４０にすべてロードできた構造に関しては、“１”（すべてメモリ）、部分文書格納エリア１４０に一部ロードできた構造に関しては、“２”（一部メモリ）、部分文書格納エリア１４０にロードできなかった構造に関しては、“３”（メモリにはない）を用いて、構造格納場所管理テーブル７０６を更新する。
図９に示した例では、部分文書１（５０１ｂ）について、構造別検索回数テーブル７０５を参照して、その検索回数の多い順“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”、“ｂｏｄｙ”の順に読み込まれる。１５０Ｂｙｔｅに達して部分文書１（９０１）が生成され、構造格納場所管理テーブル７０６ｂの「文書ＩＤ」＝「１」の行が、“ｄａｔｅ”については“３”（メモリにはない）、“ａｕｔｈｏｒ”については“１”（すべてメモリ）、“ｔｉｔｌｅ”については“１”（すべてメモリ）、“ｂｏｄｙ”については“３”（メモリにはない）状態に更新されたことを示している。
【００５５】
次に、部分文書２（５０２ｂ）について、構造データロードプログラム７０４が実行される。構造データロードプログラム７０４は、構造別検索回数テーブル７０５を参照して、検索回数の多い構造から、ステップＳ３０１で算出したメモリ容量１５０Ｂｙｔｅに達するまで、構造を部分文書格納エリア１４０にロードし、構造格納場所管理テーブル７０６を更新する。
図９に示した例では、部分文書２（５０２ｂ）について、構造別検索回数テーブル７０５を参照して、その検索回数の多い順“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”、“ｂｏｄｙ”の順に読み込まれる。１５０Ｂｙｔｅに達して部分文書２（９０２）が生成され、構造格納場所管理テーブル７０６ｃの「文書ＩＤ」＝「２」の行が、“ｄａｔｅ”については“２”（一部メモリ）、“ａｕｔｈｏｒ”については“１”（すべてメモリ）、“ｔｉｔｌｅ”については“１”（すべてメモリ）、“ｂｏｄｙ”については“３”（メモリにはない）の状態に更新されたことを示している。
【００５６】
次に、部分文書３（５０３ｂ）について、構造データロードプログラム７０４が実行される。構造データロードプログラム７０４は、構造別検索回数テーブル７０５を参照して、検索回数の多い構造から、ステップＳ３０１で算出したメモリ容量１５０Ｂｙｔｅに達するまで、構造を部分文書格納エリア１４０にロードし、構造格納場所管理テーブル７０６を更新する。
図９に示した例では、部分文書３（５０３ｂ）について、構造別検索回数テーブル７０５を参照して、その検索回数の多い順“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”、“ｂｏｄｙ”の順に読み込まれる。１５０Ｂｙｔｅに達して部分文書３（９０３）が生成され、構造格納場所管理テーブル７０６ｄの「文書ＩＤ」＝「３」の行が、“ｄａｔｅ”については“３”（一部メモリ）、“ａｕｔｈｏｒ”については“１”（すべてメモリ）、“ｔｉｔｌｅ”については“１”（すべてメモリ）、“ｂｏｄｙ”については“３”（メモリにはない）の状態に更新されたことを示している。
以上が、本発明の第２の実施形態についての説明である。
【００５７】
なお、図９では文書の論理構造の入れ替えを、構造別検索回数テーブル７０５を参照することで行なったが、後記する図１８に示すＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）１８０１を用いて、部分文書格納エリア１４０に格納する構造をユーザが指定したり、除外したりすることも可能である。
【００５８】
図１８に示すＧＵＩ１８０１は、文書構造指定部１８０２、指定ボタン１８０３、除外ボタン１８０４、構造別検索回数テーブル参照ボタン１８０５、登録済み文書構造表示部１８０６、除外文書構造表示部１８０７を有する。
図１８に示すＧＵＩ１８０１では、文書構造指定部１８０２には、“ｔｉｔｌｅ”が入力されており、登録済み文書構造表示部１８０６には、“ａｕｔｈｏｒ”が登録済みであることが表示されている。登録済み文書構造として登録されている“ａｕｔｈｏｒ”は、部分文書格納エリア１４０に格納する構造として指定されることを意味する。また、除外文書構造表示部１８０７には、“ｄａｔｅ”が登録済みであることが示されている。除外文書構造として登録されている“ｄａｔｅ”は、部分文書格納エリア１４０に格納する構造からは除外されることを意味する。
【００５９】
図１８に示すように、ＧＵＩ１８０１の状態で指定ボタン１８０３が押されると、登録済み文書構造表示部１８０６ａに“ｔｉｔｌｅ”が追加され、部分文書格納エリア１４０に格納する構造として指定される。ここでは図示しないが、仮に、ＧＵＩ１８０１の状態で指定ボタン１８０３ではなく、除外ボタン１８０４が押されると、除外文書構造表示部１８０７に“ｔｉｔｌｅ”が追加され、部分文書格納エリア１４０に格納する構造からは除外される。構造別検索回数テーブル参照ボタン１８０５が押されると、構造別検索回数テーブル７０５が参照できる。
【００６０】
以上説明したように、本発明の第２の実施形態によれば、文書中の構造の検索回数を計数しておき、よく検索される構造を主メモリに格納することで、該構造に対する高速な検索を実現することができる。ここで、構造に関しては、計数された構造だけでなく、管理者が指定した構造であってもよい。また、主メモリに格納される構造は、構造名に基づいて指定された属性や、型定義によって決定されてもよい。さらに、構造で囲まれている文字列の長さに基づいて決定してもよい。この結果、構造を指定する検索条件については、ユーザによって利用に応じて最適化が行なわれ、文書検索装置は高速な検索を実現することができる。
【００６１】
（第３の実施形態）
次に、本発明の第３の実施形態について、図１０を用いて説明する。
第１の実施形態および第２の実施形態では、主メモリは部分文書を格納するために、すべて使用されている状態である。この状態のときに、検索対象となる文書を追加していくと、追加された文書の部分文書は、主メモリに格納することができない。したがって、追加文書中に検索条件が含まれる場合には、低速な検索性能しか得られない。
そこで、本発明の第３の実施形態における文書検索システムは、メモリ容量が文書容量で満たされている状態で文書が追加登録された場合でも、１文書あたりで使用可能なメモリ容量を再計算し、メモリ上にロードし直すことで、追加登録された文書を含めて、高速な検索を実現しようとするものである。
【００６２】
本実施形態は、第１の実施形態（図１）とほぼ同様の構成をとるが、符号１２１ａで示されるように、主メモリ１１７ｂに格納される文書登録制御プログラムの構成が異なり、検索対象文書格納プログラム１３０、メモリ容量算出プログラム１３１、部分文書ロードプログラム１３２に加えて、構造データ管理プログラム７０３および構造データロードプログラム７０４を有する。それ以外の部分は、図１と同様の構成である。
【００６３】
以下、本実施形態における処理手順のうち、第１の実施形態とは異なる文書登録制御プログラム１２１ａの処理手順について、図１１に示すＰＡＤ図を用いて説明する。図１１に示した処理手順のうち、図３に示した第１の実施形態とは、ステップＳ３０３の代わりにステップＳ１１０２およびステップＳ１１０３が実行される点が異なる。以下、ステップＳ１１０２およびステップＳ１１０３の処理手順について、説明する。
【００６４】
文書登録制御プログラム１２１ａは、まず、構造データロードプログラム７０４を起動し、構造別検索回数テーブル７０５を、検索回数の降順にソートする。そして、ステップＳ３０１で算出された文書別メモリ容量が満たされるまで、磁気ディスク装置１０２から部分文書格納エリア１４０へ格納する（ステップＳ１１０２）。
次に、構造データ管理プログラム７０３を起動し、構造が格納されている場所を記録する（ステップＳ１１０３）。
以上が、文書登録制御プログラム１２１ａの処理手順についての説明である。
【００６５】
次に、本発明の第３の実施形態に示した文書検索システムにおける文書の登録処理（図１１）について、図１２を用いて（適宜図１０および図１１参照）具体的に説明する。
【００６６】
図１２において、磁気ディスク装置１０２には、検索対象文書１（１２０１）から検索対象文書１１（１２１１）の１１件の文書があらかじめ格納されている状態を表している。
まず、図３に示したステップＳ３０１が実行され、メモリ容量算出プログラム１３１により、磁気ディスク装置１０２に格納された文書の件数と部分文書格納エリア１４０の容量から、１文書あたりで使用可能な文書別メモリ容量が算出される。
図１２に示した例では、磁気ディスク装置１０２に格納されている文書の件数１１件と、部分文書格納エリア１４０の容量１５００Ｂｙｔｅが取得され、１文書あたりで使用可能な文書別メモリ容量が（１５００Ｂｙｔｅ／１１＝）約１３６Ｂｙｔｅであると算出された状態を表している。
【００６７】
次に、検索対象文書１５０として磁気ディスク装置１０２に格納された文書に対して、ステップＳ１１０２以降の処理が繰り返し実行される。
まず、ステップＳ１１０２が実行され、構造データロードプログラム７０４により、構造別検索回数テーブル７０５を、検索回数の降順にステップＳ３０１で算出された文書別メモリ容量が満たされるまで、構造を磁気ディスク装置１０２から部分文書格納エリア１４０へ格納する。次に、ステップＳ１１０３が実行され、構造データ管理プログラム７０３により、各構造の格納場所を記録する。
【００６８】
図１２に示した例では、構造データロードプログラム７０４により、各検索対象文書１５０を読み込み、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”、“ｂｏｄｙ”の順に文書内の構造を並び替え、先頭の１３６Ｂｙｔｅを部分文書として部分文書格納エリア１４０に格納する。
【００６９】
検索対象文書１（１２０１）については、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”の構造データまでで１３６Ｂｙｔｅになり部分文書１（１２０１ａ）として部分文書格納エリア１４０に格納されたことを示している。また、構造データ管理プログラム７０３により、部分文書１（１２０１ａ）については、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”までが部分文書格納エリア１４０に格納されているため、構造格納場所管理テーブル７０６の「文書ＩＤ」＝「１」において、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”については“１”が付与され、“ｂｏｄｙ”は部分文書格納エリア１４０に格納されていないため、“３”が付与されていることを示している。
【００７０】
検索対象文書２（１２０２）については、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”の途中の構造データまでで１３６Ｂｙｔｅになり、部分文書２（１２０２ａ）として部分文書格納エリア１４０に格納されたことを示している。また、構造データ管理プログラム７０３により、部分文書２（１２０２ａ）については、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”の途中までが部分文書格納エリア１４０に格納されているため、構造格納場所管理テーブル７０６の「文書ＩＤ」＝「２」において、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”については“１”が付与され、“ｄａｔｅ”は部分文書格納エリア１４０に一部が格納されているため“２”が、“ｂｏｄｙ”は部分文書格納エリア１４０に格納されていないため、“３”が付与されていることを示している。
【００７１】
検索対象文書１０（１２１０）については、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”の途中の構造データまでで１３６Ｂｙｔｅになり、部分文書１０（１２１０ａ）として部分文書格納エリア１４０に格納されたことを示している。また、構造データ管理プログラム７０３により、部分文書１０（１２１０ａ）については、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”の途中までが部分文書格納エリア１４０に格納されているため、構造格納場所管理テーブル７０６の「文書ＩＤ」＝「１０」において、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”については“１”が付与され、“ｄａｔｅ”は部分文書格納エリア１４０に一部が格納されているため、“２”が付与され、“ｂｏｄｙ”は部分文書格納エリア１４０に格納されていないため、“３”が付与されていることを示している。
【００７２】
検索対象文書１１（１２１１）については、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”の途中の構造データまでで１３６Ｂｙｔｅになり、部分文書１１（１２１１ａ）として部分文書格納エリア１４０に格納されたことを示している。また、構造データ管理プログラム７０３により、部分文書１１（１２１１ａ）については、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”、“ｄａｔｅ”の途中までが部分文書格納エリア１４０に格納されているため、構造格納場所管理テーブル７０６の「文書ＩＤ」＝「１１」において、“ａｕｔｈｏｒ”、“ｔｉｔｌｅ”については“１”が付与され、“ｄａｔｅ”は部分文書格納エリア１４０に一部が格納されているため、“２”が付与され、“ｂｏｄｙ”は部分文書格納エリア１４０に格納されていないため、“３”が付与されていることを示している。
以上が、本発明の第３の実施形態についての説明である。
【００７３】
以上説明したように、本発明の第３の実施形態によれば、検索対象となる部分文書に関して、メモリがすべて使用されている状態で文書が追加登録された場合でも、１文書あたりで使用可能なメモリ容量を再計算し、メモリ上にロードし直すことで、追加登録された文書を含めて、高速な検索を実現することができる。
【００７４】
また、本発明によれば、部分文書格納エリア１４０として使用可能な容量が増加した場合には、図１１に示すステップＳ３０１からステップＳ１１０３を実行することによって、一つの部分文書あたりで使用可能な主メモリ容量を増加させることができる。したがって、部分文書に対する照合のみで検索が終了する確率が高くなるため、効率的な検索を行なうことができる。一方、部分文書格納エリア１４０として使用可能な主メモリ容量が減少した場合でも、図１１に示すステップＳ３０１の処理およびステップＳ３０２の繰り返し処理を実行することによって、検索対象文書に対応するすべての部分文書をメモリに格納できるため、利用可能な主メモリを最大限に活用した検索を行なうことができる。
【００７５】
（第４の実施形態）
次に、本発明の第４の実施形態について、図１３を用いて説明する。
第２の実施形態では、よく検索される構造の容量が大きい場合には、１文書あたりに割り当てられた容量分の部分文書格納エリア１４０に、該構造の一部しか格納できない状況になりやすい。そういった状況では、磁気ディスク装置を検索することが多く、低速な検索性能しか得られない。
そこで、本発明の第４の実施形態における文書検索システムは、検索者にとって有用な文書のみに着目し、この有用な文書中に存在する頻繁に検索される構造全体を主メモリに格納することで、高速な検索を実現しようとするものである。
【００７６】
本実施形態は、第２の実施形態（図７）とほぼ同様の構成をとるが、文書検索サーバ１００の主メモリ１１７におけるシステム制御プログラム１２０ａは、図７の検索制御プログラム１２２ａの構成に、文書別ヒット回数カウントプログラム１３０１を加えた検索制御プログラム１２２ｂ、部分文書最適化制御プログラム１２３で構成されるとともに、主メモリ１１７ｃに文書別ヒット回数テーブル１３０４が確保される点で異なる。
部分文書最適化制御プログラム１２３は、文書別ヒット回数テーブルソートプログラム１３０２、構造格納判断プログラム１３０３、構造データ管理プログラム７０３、および構造データロードプログラム７０４で構成される。
【００７７】
以下、本実施形態における処理手順のうち、第２の実施形態とは異なるシステム制御プログラム１２０ａの処理手順について、図１４のＰＡＤ図を用いて（適宜図１３参照）説明する。図１４に示した処理手順のうち、図７に示した第２の実施形態とは、ステップＳ１４０１、ステップＳ１４０２が異なる。
【００７８】
システム制御プログラム１２０ａは、キーボード１１１から入力されたコマンドの種類を解析する（ステップＳ１４０１）。この結果が部分文書最適化処理実行のコマンドであると解析された場合には（ステップＳ１４０１で「部分文書最適化処理」）、部分文書最適化制御プログラム１２３を起動し、部分文書格納エリア１４０に格納される部分文書の最適化を行なう（ステップＳ１４０２）。
以上が第２の実施形態とは異なるシステム制御プログラム１２０ａの処理手順である。
【００７９】
次に、第２の実施形態とは異なる検索制御プログラム１２２ｂの処理手順について、図１５のＰＡＤ図を用いて（適宜図１３参照）説明する。図１５に示した処理手順のうち、図８に示した第２の実施形態とは、ステップＳ４１１の実行前にステップＳ１５０１、ステップＳ１５０２を実行する点で異なる。
以下、図８と異なるステップＳ１５０１およびステップＳ１５０２の処理について説明する。
【００８０】
ヒット文書管理テーブル１４２を参照して、フラグのたっている文書に対して、ステップＳ１５０２を繰り返し実行する（ステップＳ１５０１）。
文書別ヒット回数カウントプログラム１３０１を起動し、該文書のヒット回数を１増やす（ステップＳ１５０２）。
以上が、検索制御プログラム１２２ｂの処理手順である。
【００８１】
次に、部分文書最適化制御プログラム１２３の処理手順について、図１６のＰＡＤ図を用いて（適宜図１３参照）説明する。
部分文書最適化制御プログラム１２３は、まず文書別ヒット回数テーブルソートプログラム１３０２を起動し、文書別ヒット回数テーブル１３０４をヒット回数の降順にソートする（ステップＳ１６０１）。
次に、部分文書格納エリア１４０の容量を取得し、この値を残容量値の初期値とする（ステップＳ１６０２）。
【００８２】
次に、ステップＳ１６０１でソートされた文書別ヒット回数テーブル１３０４を参照して文書ＩＤを選択し、ステップＳ１６０４以降の処理を繰り返し実行する（ステップＳ１６０３）。
まず、コマンドにより指定された構造（ユーザから検索条件として指定された構造）について、該文書ＩＤの構造の容量を計算する（ステップＳ１６０４）。次に、構造格納判断プログラム１３０３を起動し、部分文書格納エリア１４０の残容量が、ステップＳ１６０４で計算された構造の容量以上であるかを判断する（ステップＳ１６０５）。
【００８３】
前記ステップＳ１６０５で実行される判断処理の結果、部分文書格納エリア１４０の残容量値が、ステップＳ１６０２で計算された構造の容量以上であると判断された場合には（ステップＳ１６０５でＹｅｓ）、次の処理を行なう。まず、構造データロードプログラム７０４を起動し、コマンドにより指定された構造を部分文書格納エリア１４０にロードする（ステップＳ１６０６）。次に、構造データ管理プログラム７０３を起動し、構造格納場所管理テーブル７０６を更新する（ステップＳ１６０７）。次に、残容量値から、ステップＳ１６０４で計算された構造の容量を減算し、残容量値として設定する（ステップＳ１６０８）。
【００８４】
また、前記ステップＳ１６０５で実行された判断処理の結果、部分文書格納エリア１４０の残容量が、ステップＳ１６０２で計算された構造の容量よりも小さいと判断された場合には（ステップＳ１６０５でＮｏ）、次の処理を行なう。まず、構造データロードプログラム７０４を起動し、コマンドにより指定された構造を、残容量分だけ、部分文書格納エリア１４０にロードする（ステップＳ１６０９）。そして、部分文書最適化処理を終了する（ステップＳ１６１０）。
以上が、部分文書最適化制御プログラム１２３の処理手順である。
【００８５】
以下、図１６に示した本発明の第４の実施形態における文書最適化処理手順を、図１７を用いて（適宜図１３および図１６参照）具体的に説明する。
まず、図１６に示したステップＳ１６０１が実行され、文書別ヒット回数テーブルソートプログラム１３０２により、ヒット回数の降順に文書ＩＤがソートされる。
図１７に示した例では、文書別ヒット回数テーブル１３０４が、ヒット回数の降順にソートされ、文書別ヒット回数テーブル１３０４ａになったことを示している。
【００８６】
次に、部分文書格納エリア１４０の容量を取得し、この値を残容量値の初期値とする。
図１７に示した例では、部分文書格納エリア１４０の残容量値１７０６の初期値として１５００Ｂｙｔｅが設定されたことを示す。
【００８７】
次に、ステップＳ１６０１でソートされた文書別ヒット回数テーブル１３０４ａが参照され、ステップＳ１６０４以降の処理が繰り返される。
まず、文書別ヒット回数テーブル１３０４ａから、ヒット回数の降順に文書ＩＤを選択する。次に、コマンドにより指定された構造について、該文書ＩＤにおけるその構造の容量を計算する。次に、計算された構造の容量と、部分文書格納エリア１４０の残容量値の大小を判定する。
図１７に示した例では、まず、文書別ヒット回数テーブル１３０４ａから、「文書ＩＤ」＝「３」（１７０２）が選択され、コマンドにより指定された構造“ｂｏｄｙ”（１７０１）について、その構造の容量が５００Ｂｙｔｅであると計算される。部分文書格納エリア１４０の残容量値１７０６（初期値）の１５００Ｂｙｔｅが、その構造の容量５００Ｂｙｔｅ以上であるので、部分文書最適化制御プログラム１２３により、「文書ＩＤ」＝「３」（１７０２）の構造“ｂｏｄｙ”が、部分文書３（１７１０）として部分文書格納エリア１４０にロードされたことを示している。また、部分文書格納エリア１４０の残容量値１７０６（１５００Ｂｙｔｅ）が、残容量値１７０７（１５００Ｂｙｔｅ−５００Ｂｙｔｅ＝１０００Ｂｙｔｅ）になったことを示している。
【００８８】
次に、文書別ヒット回数テーブル１３０４ａから、「文書ＩＤ」＝「１」（１７０３）が選択され、コマンドにより指定された構造“ｂｏｄｙ”（１７０１）について、その構造の容量が１５０Ｂｙｔｅであると計算される。部分文書格納エリア１４０の残容量値１７０７（１０００Ｂｙｔｅ）が、その構造の容量１５０Ｂｙｔｅ以上であるので、部分文書最適化制御プログラム１２３により、「文書ＩＤ」＝「１」（１７０３）の構造“ｂｏｄｙ”が、部分文書１（１７１１）として部分文書格納エリア１４０にロードされたことを示している。また、部分文書格納エリア１４０の残容量値１７０７（１０００Ｂｙｔｅ）が、残容量値１７０８（１０００Ｂｙｔｅ−１５０Ｂｙｔｅ＝８５０Ｂｙｔｅ）になったことを示している。
【００８９】
次に、文書別ヒット回数テーブル１３０４ａから、「文書ＩＤ」＝「２」（１７０４）が選択され、コマンドにより指定された構造“ｂｏｄｙ”（１７０１）について、その構造の容量が８００Ｂｙｔｅであると計算される。部分文書格納エリア１４０の残容量値１７０８（８５０Ｂｙｔｅ）が、その構造の容量８００Ｂｙｔｅ以上であるので、部分文書最適化制御プログラム１２３により、「文書ＩＤ」＝「２」（１７０４）の構造“ｂｏｄｙ”が、部分文書２（１７１２）として部分文書格納エリア１４０にロードされたことを示している。また、部分文書格納エリア１４０の残容量値１７０８（８５０Ｂｙｔｅ）が、残容量値１７０９（８５０Ｂｙｔｅ−８００Ｂｙｔｅ＝５０Ｂｙｔｅ）になったことを示している。
【００９０】
次に、文書別ヒット回数テーブル１３０４ａから、「文書ＩＤ」＝「８」（１７０５）が選択され、コマンドにより指定された構造“ｂｏｄｙ”（１７０１）について、その構造の容量が３００Ｂｙｔｅであると計算される。部分文書格納エリア１４０の残容量値１７０９（５０Ｂｙｔｅ）が、その構造の容量３００Ｂｙｔｅ以上ではないので、部分文書最適化制御プログラム１２３により、「文書ＩＤ」＝「８」（１７０５）の構造“ｂｏｄｙ”が、部分文書８（１７１３）として残容量値１７０９（５０Ｂｙｔｅ）分だけ、部分文書格納エリア１４０にロードされたことを示している。
【００９１】
なお、本実施形態では、図１７で説明したように、文書の論理構造を、コマンドにより指定することで行なったが、図１９に示すＧＵＩ１９０１を用いて、部分文書格納エリア１４０に格納する構造をユーザが指定したり、除外したりすることも可能である。また、図１９に示すＧＵＩ１９０１は、重要な文書を優先して部分文書格納エリア１４０に格納しておくことを指定する重要文書格納チェックボックス１９０２を有する。
それ以外の部分は、図１８に示したＧＵＩ１８０１と同様の構成である。
【００９２】
図１９に示した例では、重要文書格納チェックボックス１９０２にチェックが入力され、重要な文書を優先して部分文書格納エリア１４０に格納しておくことを示す。図１７では、文書のヒット回数をカウントして、その降順に文書をソートし、ユーザにより指定された構造を、ソートした文書から順に部分文書格納エリア１４０にロードする方法を説明したが、図１９に示すように、ユーザが重要文書格納チェックボックス１９０２にチェックを入れることによって、重要な文書を優先して部分文書格納エリア１４０にロードし、格納しておく方法も考えられる。例えば、検索時に指定された単語が多く含まれるような文書を重要文書として扱うようにしてもよい。また、他の画面からユーザが重要文書を設定できるようにする方法なども考えられる。さらに、文書の参照回数や、文書の最終参照日付などを管理し、参照回数の多い文書や、最終参照日付が新しい文書を重要な文書として扱うようにしてもよい。
以上が、本発明の第４の実施形態についての説明である。
【００９３】
以上説明したように、本発明の第４の実施形態によれば、検索者にとって有用な文書のみに着目し、この有用な文書中に存在する頻繁に検索される構造全体を主メモリに格納して、高速な検索を実現することができる。
【００９４】
以上の第１の実施形態乃至第４の実施形態においては、磁気ディスク装置から、それよりも高速な記憶装置としての主メモリに部分文書をロードする場合について説明したが、本発明が適用可能な記憶手段は、これらに限定されず、速度の異なる複数種類の記憶手段に対して適用可能である。また、第１の実施形態乃至第４の実施形態においては、文書検索装置（文書検索サーバ）が、ネットワークを介してクライアントと接続され、クライアントから入力されたコマンドに基づいて検索処理を行い、検索結果をクライアントに返却する構成を示したが、文書検索装置が入力装置および出力装置を備え、入力装置を介してコマンドを入力し、出力装置を介して検索結果を出力する構成としてもよい。
【００９５】
また、本発明は、ＸＭＬ文書や電子メールなどの構造化データを対象にした文書を検索する場合であり、それらの文書の一部を参照する検索に適用した場合に、特に効果があり、利用可能なメモリ容量が限定されている制約の下でも、メモリを増設することなく、高速な検索を実現することが可能となる。
【図面の簡単な説明】
【００９６】
【図１】第１の実施形態における文書検索システムの全体構成を示す図である。
【図２】第１の実施形態におけるシステム制御プログラムの処理手順を示すＰＡＤ図である。
【図３】第１の実施形態における文書登録制御プログラムの処理手順を示すＰＡＤ図である。
【図４】第１の実施形態における検索制御プログラムの処理手順を示すＰＡＤ図である。
【図５】第１の実施形態における文書登録処理手順を示す図である。
【図６】第１の実施形態における検索処理手順を示す図である。
【図７】第２の実施形態における検索制御プログラムの構成を示す図である。
【図８】第２の実施形態における検索制御プログラムの処理手順を示すＰＡＤ図である。
【図９】第２の実施形態における検索処理手順を示す図である。
【図１０】第３の実施形態における文書登録制御プログラムの構成を示す図である。
【図１１】第３の実施形態における文書登録制御プログラムの処理手順を示すＰＡＤ図である。
【図１２】第３の実施形態における文書登録処理手順を示す図である。
【図１３】第４の実施形態におけるシステム制御プログラムの構成を示す図である。
【図１４】第４の実施形態におけるシステム制御プログラムの処理手順を示すＰＡＤ図である。
【図１５】第４の実施形態における検索制御プログラムの処理手順を示すＰＡＤ図である。
【図１６】第４の実施形態における部分文書最適化制御プログラムの処理手順を示すＰＡＤ図である。
【図１７】第４の実施形態における部分文書最適化制御プログラムの処理手順を示す図である。
【図１８】第２の実施形態におけるＧＵＩを示す図である。
【図１９】第４の実施形態におけるＧＵＩを示す図である。
【符号の説明】
【００９７】
１００  文書検索サーバ（文書検索装置）
１０１  クライアント
１０２  磁気ディスク装置
１０３  ネットワーク
１１０  ディスプレイ
１１１  キーボード
１１２  中央演算処理装置（ＣＰＵ）
１１３  外部記憶媒体駆動装置
１１４  ネットワークボード
１１５  バス
１１６  外部記憶媒体
１１７  主メモリ
１２０  システム制御プログラム
１２１  文書登録制御プログラム
１２２  検索制御プログラム
１３０  検索対象文書格納プログラム
１３１  メモリ容量算出プログラム
１３２  部分文書ロードプログラム
１３３  検索条件解析プログラム
１３４  メモリ検索プログラム
１３５  検索継続判定プログラム
１３６  ディスク検索プログラム
１３７  検索結果出力プログラム
１４０  部分文書格納エリア
１４１  ワークエリア
１４２  ヒット文書管理テーブル
１４３  ディスク検索対象文書管理テーブル
１５０  検索対象文書
７０２  構造別検索回数カウントプログラム
７０３  構造データ管理プログラム
７０４  構造データロードプログラム
７０５  構造別検索回数テーブル
７０６  構造格納場所管理テーブル
１３０１  文書別ヒット回数カウントプログラム
１３０２  文書別ヒット回数テーブルソートプログラム
１３０３  構造格納判断プログラム
１３０４  文書別ヒット回数テーブル
【図１】
0004746433.tif 000002
【図２】
0004746433.tif 000003
【図３】
0004746433.tif 000004
【図４】
0004746433.tif 000005
【図５】
0004746433.tif 000006
【図６】
0004746433.tif 000007
【図７】
0004746433.tif 000008
【図８】
0004746433.tif 000009
【図９】
0004746433.tif 000010
【図１０】
0004746433.tif 000011
【図１１】
0004746433.tif 000012
【図１２】
0004746433.tif 000013
【図１３】
0004746433.tif 000014
【図１４】
0004746433.tif 000015
【図１５】
0004746433.tif 000016
【図１６】
0004746433.tif 000017
【図１７】
0004746433.tif 000018
【図１８】
0004746433.tif 000019
【図１９】
0004746433.tif 000020