(57)【要約】  本発明は、メモリ領域の名前と、メモリ領域を示すメモリ領域情報とが関連付けて記憶される管理テーブルを具備する情報検索システムである。情報検索システムは、受け付けた源情報検索先情報によって示された検索対象となる源情報がメモリに存在することを示している場合に、前記受け付けた検索の対象となる源情報の源情報名と一致するメモリ領域の名前を前記管理テーブルから検索する。そして、受け付けた検索の対象となる源情報の源情報名と一致するメモリ領域の名前が検索された場合に、前記検索されたメモリ領域の名前に関連付けられたメモリ領域情報から、前記受け付けた検索対象条件情報に合致する情報を取得する。
2009031474.tif 000002
【特許請求の範囲】
【請求項１】
検索対象となる条件を示す検索対象条件情報、検索対象となる源情報がファイル或いはメモリのいずれかに存在するかを示す源情報検索先情報、検索の対象となる源情報の源情報名を受け付ける受付手段と、
メモリ領域の名前と、メモリ領域を示すメモリ領域情報とが関連付けて記憶される管理テーブルと、
前記受け付けた源情報検索先情報によって示された検索対象となる源情報がメモリに存在することを示している場合に、前記受け付けた検索の対象となる源情報の源情報名と一致するメモリ領域の名前を前記管理テーブルから検索する検索手段と、
前記検索手段によって前記受け付けた検索の対象となる源情報の源情報名と一致するメモリ領域の名前が検索された場合に、前記検索されたメモリ領域の名前に関連付けられたメモリ領域情報によって示されるメモリ領域から、前記受け付けた検索対象条件情報に合致する情報を取得する取得手段と
を具備する情報検索システム。
【請求項２】
前記受付手段は、さらに、検索された情報をファイル或いはメモリのどちらに格納するかを示す格納先情報、書き込みの対象となる検索された情報の検索結果情報名を受け付け、
前記受け付けられた格納先情報がメモリに格納することを示している場合に、前記取得手段によって取得した情報を、メモリに書き込み、前記受け付けた書き込みの対象となる検索された情報の検索結果情報名を前記メモリに書き込まれた情報が書き込まれるメモリ領域を示すメモリ領域情報とともに、前記管理テーブルに格納する格納手段をさらに具備することを特徴とする請求項１記載の情報検索システム。
【請求項３】
前記メモリ領域情報は、前記取得した情報が格納されたメモリの先頭アドレス、最大サイズ及び使用サイズを含む請求項２記載の情報検索システム。
【請求項４】
前記検索対象条件情報、前記源情報検索先情報及び前記源情報名は、命令プログラムから出力され、前記検索手段及び取得手段は、前記命令プログラムとは別の検索プログラムである請求項１記載の情報検索システム。
【請求項５】
前記命令プログラムは第１の端末に格納され、前記検索プログラムは第２の端末に格納されている請求項４記載の情報検索システム。
【請求項６】
前記検索手段、前記取得手段及び前記格納手段がそれぞれ複数のスレッドに割り当てられ、
前記複数のスレッドの処理を行なうＣＰＵに対する各スレッドの処理負荷を測定する測定手段と、
前記測定手段によって測定された各スレッドの処理負荷に基づいて、前記検索手段、前記取得手段及び前記格納手段に割り当てられたスレッドの数を変更する変更手段と
をさらに具備する請求項２記載の情報検索システム。
【請求項７】
前記受付手段は、さらに、検索された情報をファイル或いはメモリのどちらに格納するかを示す格納先情報、書き込みの対象となる検索された情報の検索結果情報名を受け付け、
前記受け付けられた格納先情報がメモリに格納することを示し、かつ前記受け付けた検索結果情報名に対応するメモリ領域情報が前記管理テーブル上に存在する場合には、前記取得手段によって取得した情報を、前記検索結果情報名に対応するメモリ領域情報によって示されるメモリ領域に書き込む格納手段をさらに具備することを特徴とする請求項１記載の情報検索システム。
【請求項８】
メモリ領域の名前と、メモリ領域を示すメモリ領域情報とが関連付けて記憶される管理テーブルを具備する情報検索システムにおける情報検索方法において、
検索対象となる条件を示す検索対象条件情報、検索対象となる源情報がファイル或いはメモリのいずれかに存在するかを示す源情報検索先情報、検索の対象となる源情報の源情報名を受け付け、
前記受け付けた源情報検索先情報によって示された検索対象となる源情報がメモリに存在することを示している場合に、前記受け付けた検索の対象となる源情報の源情報名と一致するメモリ領域の名前を前記管理テーブルから検索し、
前記検索手段によって前記受け付けた検索の対象となる源情報の源情報名と一致するメモリ領域の名前が検索された場合に、前記検索されたメモリ領域の名前に関連付けられたメモリ領域情報によって示されるメモリ領域から、前記受け付けた検索対象条件情報に合致する情報を取得する情報検索方法。
【請求項９】
メモリ領域の名前と、メモリ領域を示すメモリ領域情報とが関連付けて記憶される管理テーブルを具備する情報検索システムにおいて使用されるプログラムにおいて、
前記プログラムは、前記情報検索システムに、
検索対象となる条件を示す検索対象条件情報、検索対象となる源情報がファイル或いはメモリのいずれかに存在するかを示す源情報検索先情報、検索の対象となる源情報の源情報名を受け付けさせ、
前記受け付けた源情報検索先情報によって示された検索対象となる源情報がメモリに存在することを示している場合に、前記受け付けた検索の対象となる源情報の源情報名と一致するメモリ領域の名前を前記管理テーブルから検索させ、
前記検索手段によって前記受け付けた検索の対象となる源情報の源情報名と一致するメモリ領域の名前が検索された場合に、前記検索されたメモリ領域の名前に関連付けられたメモリ領域情報によって示されるメモリ領域から、前記受け付けた検索対象条件情報に合致する情報を取得させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザの目的とする情報を迅速に検索する情報検索システムに関するものである。
【背景技術】
【０００２】
インターネットの社会への浸透とともに日常生活、社会活動において人々が扱う情報量は莫大なものとなった。かつ毎日激増しているのが現状である。通信網の普及とともに世界中の情報を一覧できる利便性は向上した。Webサービス、EDI(electronic data interchange),EC(電子商取引：electronic commerce)などが日常化している。【０００３】
さらに、高速光通信インターネット網と地上デジタル放送、衛星通信網、GPS（global positioning system）のインフラの整備と伝送品質の向上によって、世界中で場所を問わずにネットワークの利用が可能になった。人類社会は、これらの情報網の普及と安価な機器を使用して高付加価値の情報を何処にいても利用できるという恩恵を授かった。【０００４】
しかし、人々はこの膨大な情報から必要な目的とする情報を迅速かつ的確に検索することが困難な面もある。余りにも情報量が多すぎてかつ、各所に遍在しているため検索方法にも高度な技術が必要になって来ている。【０００５】
企業、法人、個人が求めている情報は多岐にわたっている。企業情報、学術情報、一般情報も含めて専門に特化した情報を瞬時に提供できるようにする必要がある。【０００６】
遺伝子配列情報データベースからの検索や文献データベースからの全文検索などではテラバイト級の情報を扱う必要がある。【０００７】
また近年、企業においては適切にコンピュータが使用されているかを把握するために、日常的にコンピュータの操作履歴を取得蓄積する場合がある。このような操作履歴は日々蓄積されるため情報（データ）量はやはりテラバイト級に至る場合がある。【０００８】
このような情報を活用するためには、大量の情報から迅速に目的とする情報を検索する必要があるが、テラバイト級の情報の場合、汎用的な市販のリレーショナルデータベースシステムで扱うことは難しい。【０００９】
市販のデータベースシステムで扱うことが難しい情報の場合、XML(extensible markup language)やCSV形式（comma separated values：情報を項目ごとにカンマで区切って羅列するファイル形式）、あるいは固有の形式など構造化された情報形式で保存されているケースが多い。【００１０】
構造化された情報を扱う工夫としては、例えばXMLデータに対して、XML文書の処理対象外要素をCSV形式にしてCPU（central processor unit）負荷の軽減をはかり、省メモリ化を意図した「XML  CSV圧縮」などの提案がある（特許文献１、特許文献２参照）。【００１１】
通常、大容量のデータベースから目的とする情報を検索する場合は、ユーザにより、段階的に条件を絞り込んだり、それを試行錯誤的に繰り返したりすることが多い。【００１２】
しかしながら、大容量の情報が対象の場合、１回の情報検索に要する時間が長くなるため、一定の時間、例えば数時間程度以内ではこのような試行錯誤的な作業を行えず、実質的に目的とする情報を得ることが困難な場合が少なくない。【００１３】
特に、このような大容量の情報の場合、ディスクI/O(Input/Output)を伴うファイルの読み書き処理に要する時間は無視できないため、ユーザが行う作業全体を通して、ファイルの読み書き回数を減少させることは、ユーザ作業の効率化、短時間化を図る上で重要な要素である。
【特許文献１】特開２００６−２７７０３１号公報
【特許文献２】特開２００７−１７９４９２号公報
【発明の開示】
【００１４】
＜発明の概要＞
本発明は、クラスター・コンピュータ・システム(cluster computer system)、並列処理可能なアレイ・コンピュータ・システム（array computer system）、グリッド・コンピューティングなどネットワーク上に分散したコンピュータ群、またはハイエンドなパーソナルコンピュータを利用して上記のような構造化された情報から必要な情報をできるだけ迅速に検索するための情報検索システムを提供することができる。
【００１５】
本発明は、数百GB（ギガバイト、Giga byte:10×９乗）からTB（テラバイト、Tera byte:10×１２乗）オーダの大容量情報に対してユーザの目的に応じた条件に基づいた情報の検索をできるだけ迅速に行うことができる。
【００１６】
本発明によれば、上記のような段階的および試行錯誤的な情報検索の一連の作業をできるだけメモリ上の処理で行う情報検索システム、方法、およびプログラムを提供する。
【００１７】
段階的に情報の検索を行う場合、ある１回の検索結果をファイルに格納し、このファイルを源情報として次回の検索を行うような方法が従来考えられるが、このような方法の場合、１回の検索に際して必ずファイルの読み込み、書き込みが発生する。
【００１８】
本発明においては、検索結果をファイルに書き込む替わりにメモリに書き込むことができる。
【００１９】
これにより、次回の検索においてファイルからの読み込みが発生しない。
【００２０】
また、検索結果を書き込むメモリ領域にはユーザが指定した名前を対応させることで、ユーザがファイル名を用いてファイルにアクセスするのと同様の感覚で該メモリ領域にアクセスすることができる。
【００２１】
したがって、本発明の第１の観点によれば、検索対象となる条件を示す検索対象条件情報、検索対象となる源情報がファイル或いはメモリのいずれかに存在するかを示す源情報検索先情報、検索の対象となる源情報の源情報名を受け付ける受付手段と、メモリ領域の名前と、メモリ領域を示すメモリ領域情報とが関連付けて記憶される管理テーブルと、前記受け付けた源情報検索先情報によって示された検索対象となる源情報がメモリに存在することを示している場合に、前記受け付けた検索の対象となる源情報の源情報名と一致するメモリ領域の名前を前記管理テーブルから検索する検索手段と、前記検索手段によって前記受け付けた検索の対象となる源情報の源情報名と一致するメモリ領域の名前が検索された場合に、前記検索されたメモリ領域の名前に関連付けられたメモリ領域情報によって示されるメモリ領域から、前記受け付けた検索対象条件情報に合致する情報を取得する取得手段とを具備する情報検索システム、である。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施の形態に係る情報検索システムを示す図である。
【図２】本発明の実施の形態に係る名前付メモリの管理テーブルを示す図である。
【図３】段階的な検索作業の流れを示すフローチャートである。
【図４】マルチCPUおよび並列マシンを利用した場合の例を示す図である。
【図５】通信網を通じて検索を実行する場合を示す図である。
【図６】スレッド管理テーブルを示す図である。
【図７】各処理で使用するスレッド数を調整するフローを示す図である。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照して、本発明の実施の形態に係る情報検索システムについて説明する。【００２４】
図1は、本発明の実施の形態に係る情報検索システムのプログラムの構成を示す。【００２５】
本プログラムは大きく命令プログラム１０１と検索プログラム１０２からなる。【００２６】
命令プログラム１０１と検索プログラム１０２は同一マシン上で実行してもよいし、異なるマシン上で実行してもよい。【００２７】
命令プログラム１０１は通信手段を介して検索プログラム１０２に実行パラメータを送信する。実行パラメータは、検索対象となる条件を示す検索対象条件情報、検索対象となる源情報がファイル或いは名前付きメモリのいずれかに存在するかを示す源情報検索先情報、検索の対象となる源情報の源情報名、検索された情報をファイル或いは名前付きメモリのどちらに格納するかを示す格納先情報、書き込みの対象となる検索された情報の検索結果情報名を含む。【００２８】
ここで、「名前付メモリ」とは、ユーザの指定した名前を付けられたメモリ領域を意味する。【００２９】
これらの実行パラメータは命令プログラムの実行コマンドの引数として指定しても良いし（例えば、「cmd prm1 prm2 prm3」）、ファイルに記して、このファイルを実行コマンドの引数として指定しても良いし（例えば、「cmd file1」）、またこれらを混合した方法で指定してもよい（例えば、「cmd file1 prm1 prm2」）。上記例でcmdはコマンド名、prm1、prm2、prm3は実行パラメータ、file1はファイル名を示す。【００３０】
命令プログラム１０１にGUI（Graphical User Interface）を付与し、実行パラメータをGUIから入力させることも可能である。このような命令プログラムはブラウザ上のプログラムとして作成することもできる。【００３１】
検索プログラム１０２は、命令プログラム１０１から伝達された実行パラメータに従って、源情報（検索対象となる情報）中の情報の組（構造化された情報（データ）の固まり）を順次走査して、その情報の組が検索の条件（検索対象条件情報）に適合しているか否かを判定し、適合している場合にはその情報の組を検索結果情報として名前付メモリまたはファイルに書き込む。【００３２】
検索プログラム１０２は、源情報の検索が完了すると、検索処理が完了した旨を命令プログラム１０１に通知する。このとき検索された情報の組の件数や処理に要した時間などを併せて通知することもできる。【００３３】
検索プログラム１０２は、命令プログラム１０１による最初の実行命令が発行される前に起動されている。また、検索プログラム１０２は、命令プログラム１０１による一連の実行命令の結果出力が完了するまでメモリ上にロードされたままである。【００３４】
繰り返し行われる一連の実行命令の間、検索プログラム１０２がメモリ上にロードされたままであることにより、この間、名前付メモリをメモリ上に保持し、ファイルのように実行命令間で使い回すことができる。【００３５】
検索プログラム１０２は、通信処理部１０３、情報読み込み処理部１０４、情報比較・操作処理部１０５、情報書き込み処理部１０６及び管理テーブル１０７を具備する。【００３６】
通信処理部１０３は、命令プログラム１０１から実行パラメータを受信する。また、検索結果を命令プログラム１０１に送信する。送信される結果には、処理の成功・失敗、検索された情報の組の件数や処理に要した時間などが含まれる。命令プログラム１０１と検索プログラム１０２との間の通信は同一マシン内、LAN上、インターネット上を想定している。【００３７】
１０４は、情報読み込み処理部である。実行パラメータ（検索対象となる源情報がファイル或いはメモリのいずれかに存在するかを示す源情報検索先情報）によって指定された源情報）がファイルの場合はファイルの一部または全部を一時的にメモリ上に読み込む。実行パラメータ（源情報検索先情報）によって指定された源情報が名前付メモリの場合は管理テーブル１０７を参照して実行パラメータ（検索の対象となる源情報の源情報名）として渡された名前からメモリ領域を特定する。【００３８】
源情報として、複数のファイル１０８や名前付メモリ１０９を用いることができる。フォルダやドライブ内のファイル、複数のPCに分散したファイルなどを源情報とすることもできる。【００３９】
情報比較・操作処理部１０５は、命令プログラム１０１から伝達された実行パラメータ（検索対象条件情報、源情報検索先情報、源情報名）に従って、源情報中の情報の組を順次走査して、その情報の組が検索の条件に適合しているか否かを判定する。【００４０】
検索対象条件情報としては、例えば、検索対象となる源情報中に日時情報項目があるとすれば、その日時情報が特定の日時の範囲であることなどである。【００４１】
判定の対象となった情報の組が条件に適合した場合に、ある情報項目の値を置換するなどのオプション処理を加えることも可能である。【００４２】
情報書き込み処理部１０６は、情報比較・操作処理部１０５によって条件に適合していると判定された情報の組を、実行パラメータ（格納先情報、検索結果情報名）にしたがって、ファイル１１１または名前付メモリ１１０に書き込む。書き込み先がファイルの場合は書き込み情報の一部または全部を一時的にメモリ上に保持した後にファイルに書き込むことも可能である。【００４３】
実行パラメータ（格納先情報）で書き込み先が名前付メモリを指定された場合は、メモリ上に一定サイズの領域を確保し、その先頭アドレスと実行パラメータ（検索結果情報名）で指定された名前との組を管理テーブル１０７に書き込む。確保したメモリ領域のサイズ、日時などその他の情報も併せて管理テーブルに記録することもできる。確保するメモリ領域のサイズは実行パラメータで指定することもできる。書き込み先が名前付メモリの場合は、情報比較・操作処理部１０５によって条件に適合していると判定された情報の組みを名前付メモリに書き込む。【００４４】
管理テーブル１０７は、名前付メモリを管理し、図2に示す通り、名前付メモリの名前２０２とメモリ上の先頭アドレス２０３の対応付けが記録され、相互に参照可能としている。また、最大サイズ２０４や使用サイズ２０５などの情報も併せて記録される。この他、名前付メモリの作成日時や更新日時などの日時情報２０６や先頭アドレスから現在のオフセット位置などその他の情報が記録される。この管理テーブルにより、複数の名前付メモリを使用することが可能になる。  検索プログラム１０２は、源情報の走査が完了すると、検索処理が完了した旨を命令プログラム１０１に通知する。【００４５】
結果通知１１３は、検索された件数や処理に要した時間などを通知することができる。【００４６】
また、結果通知１１３では、検索プログラムの処理中に発生したエラーを通知することができる。このようなエラーとしては例えば、指定した名前に対応した名前付メモリの領域が確保されていない場合、名前付メモリに対して指定されたサイズのメモリ領域が確保できない場合、名前付メモリへの指定された最大サイズを超える書き込みを行おうとした場合などが考えられる。なお、検索プログラム１０２の機能として、特定の情報項目あるいは情報項目の組み合わせに対し、同一の値がいくつずつあるかを数え上げる機能を追加してもよく、これにより効率的に数え上げができる。【００４７】
図3は、本発明の実施の形態に係る情報検索処理を説明するためのフローチャートである。【００４８】
一連の検索作業において、初回の検索の源情報３０１は、通常、ファイルから読み込まれる。すなわち、命令プログラム１０１から検索プログラム１０２に送られる実行パラメータのうち、「源情報検索先情報」にはファイルが指定され、「源情報名」にはファイル上のファイル名が指定される。なお、これら実行パラメータは、命令プログラム１０１を通してユーザが指定しても良いし、命令プログラム自体が自動的に設定しても良い。【００４９】
検索プログラム１０２は、命令プログラム１０１から送られた実行パラメータに基づいて、検索処理を行なう。具体的には、実行パラメータの「源情報検索先情報」に基づいて検索対象となる源情報がファイル或いはメモリのいずれかに存在するかを決定し、「源情報名」に基づいて、検索の対象となる源情報を決定する。【００５０】
ここでは、「源情報検索先情報」にはファイルが指定され、「源情報名」にはファイル上のファイル名が指定されるていることから、ファイル上のファイル名によって指定される情報を源情報として、「検索対象条件情報」として示される検索対象条件に合致する情報を検索する。【００５１】
検索結果の情報（一次検索情報）３０２は、実行パラメータにしたがって、名前付メモリ或いはファイルに格納される（３０３）。具体的には、検索プログラム１０２は、命令プログラム１０１から送られた実行パラメータの「格納先情報」に基づいて、検索された情報をファイル或いはメモリのどちらに格納するかを決定し、決定された格納先に、書き込みの対象となる検索された情報を「検索結果情報名」で格納する。【００５２】
ここでは、「格納先情報」はメモリに格納することを示しているものとする。この場合、検索プログラム１０２は、名前付きメモリに検索された情報を書き込み、かつ、「検索結果情報名」及び情報が書き込まれるメモリ領域情報とともに、管理テーブル２０１に格納する。「メモリ領域」には、図２に示すように、先頭アドレス、最大サイズ、使用サイズが含まれる。また、情報が書き込まれた日時などの付加的な情報を格納してもよい。【００５３】
次回の検索においては、「源情報検索先情報」で名前付きメモリを指定し、「源情報名」で名前を指定することにより、前回の検索結果である名前付メモリに格納された情報を源情報とすることができる（３０４）。【００５４】
ここでは、命令プログラム１０１から送られてくる実行パラメータの「源情報検索先情報」にメモリが指定され、「源情報名」には、最初に検索された情報が格納された名前と同じ名前（すなわち、最初の検索における実行パラメータの「検索結果情報名」）が指定されているものとする。【００５５】
検索プログラム１０２は、「源情報検索先情報」にメモリが指定されている場合、「源情報名」と一致するメモリ領域の名前を管理テーブル２０１から検索する。そして、源情報名と一致するメモリ領域の名前が検索された場合に、検索されたメモリ領域の名前に関連付けられたメモリ領域から、受信した検索対象条件情報に合致する情報を取得する。【００５６】
なお、「源情報検索先情報」にファイルが指定されている場合、「源情報名」と一致するファイル名のファイルから検索対象条件情報に合致する情報を取得する。【００５７】
検索プログラム１０２は、命令プログラム１０１から送られた実行パラメータの「格納先情報」に基づいて、検索された情報をファイル或いはメモリのどちらに格納するかを決定し、決定された格納先に、書き込みの対象となる検索された情報を「検索結果情報名」で格納する（３０５）。【００５８】
ここでは、「格納先情報」はメモリに格納することを示しているものとする。この場合、検索プログラム１０２は、名前付きメモリに検索された情報を書き込み、かつ、「検索結果情報名」及び情報が書き込まれるメモリ領域情報とともに、管理テーブル２０１に格納する。【００５９】
上述の実行パラメータの例では、検索対象先及び情報の格納先に関する情報を有する場合について説明したが、情報の格納先に関する情報（「格納先情報」、「検索結果情報名」）のみを実行パラメータとして、予め名前付きメモリ領域の確保をのみを行ない、管理テーブル２０１上に、その名前とメモリ領域情報を確保してもよい。【００６０】
また、管理テーブル２０１上に、「検索結果情報名」に相当する名前が存在する場合がある、このような場合には、当該「検索結果情報名」に関連付けられたメモリ情報によって示されるメモリ領域に、検索された情報が書き込まれる。【００６１】
このように検索を段階的に繰り返し、最終的な検索結果の情報を、実行パラメータ（「格納先情報」）でファイルを指定することにより、ファイルに格納することができる（３０６）。【００６２】
なお、途中の検索結果は必要に応じてファイルに書き出してもよいし、またそれを次の源情報として用いてもよい。【００６３】
各検索は、都度ユーザが結果を確認した上で、次の検索の条件を決定して実行してもよいし、定型的に行う作業であれば、各回の検索の条件を事前に決めておいて、バッチやスクリプトなどを利用して、連続的に命令を実行してもよい。【００６４】
図4は、大量の情報から効率よく高速で目的とする情報を検索するために本発明をマルチCPUや複数のPCにまたがる並列マシン環境で利用した場合を示している。【００６５】
高速化のためには、プロセッサの多様な方式がある。アレイ・コンピュータ（array computer system）は、配列、行列の形式になった情報を処理するためのもので、一つの命令で複数の情報を同時に処理できる。この典型がスーパコンピュータ（supercomputer）であって、膨大な数値の行列情報など並行高速処理を扱える。【００６６】
この他にも、並列処理コンピュータ(parallel computer system)は、ベクトル・プロセッサ（vector processor system）、クラスタ・コンピュータ（cluster computer system）があって高速化に対応でき、本発明をこのような環境で利用すると効果的である。【００６７】
図４においては、核となるメイン・プロセッサとメイン・プロセッサの命令で動作処理する複数個のコ・プロセッサが示されている。４０１はシステムバスである。システムバス４０１には、メインＣＰＵ４０２、デュアルポートRAM（dual port RAM）４０３、ＲＡＭ４０４、ＲＯＭ４０５、コ・プロセッサ４０６が接続される。【００６８】
メインCPU４０２は、コ・プロセッサ群４０６n1〜４０６nm、406n0を制御する。メインＣＰＵ４０２は、コ・プロセッサ４０６n1〜４０６nm、４０６n0との情報の交換、コ・プロセッサ４０６n1〜４０６nm、４０６n0の制御を行う。デュアルポートRAM４０３は、メモリへの情報の入出力を同時に行うことができる。【００６９】
RAM４０４は、メインＣＰＵ４０２のメモリに使用される。ＲＯＭ４０５は、プログラム・メモリであってメイン・プロッセサ４０２のプログラムが書き込まれていて、メイン・プロセッサ４０２は、このプログラムによって処理する。【００７０】
コ・プロセッサ４０６n1〜４０６nm、４０６n0は、メイン・プロセッサ４０２の管理下で処理が実行される。各名前付メモリや各ファイルの入出力処理毎、I/O機器の制御処理毎、その他の処理毎にコ・プロセッサは割り当てられて、並列処理する。いずれにしても、高速化を目的とした手段である。【００７１】
４０６n1は処理４０７、例えばファイルや名前付メモリからの情報の読み込み処理を行う。【００７２】
４０６n２は処理４０８、例えばファイルや名前付メモリへの情報の書き込み処理を行う。【００７３】
４０６nｍは処理４０９、例えば検索の条件比較処理を行う。【００７４】
このように独立した処理を各プロセッサに割り当てると効率的である。必要に応じてコ・プロセッサ４０６、処理４０７〜４０９は増減する。【００７５】
タスクの生成、消去、プログラムのローデング、タスクへのコ・プロセッサ４０６の割り当て、割り込み処理のタスク管理（task management）は、メイン・プロッセサ４０２が行う。  
コ・プロセッサ４０６n0は、I/O４１０の制御を行う。【００７６】
I/O４１０は、LAN４１２によってPC４１１n1〜nmに接続されている。【００７７】
源情報を複数のPC４１１に分散して、各PCにて並列に検索プログラムを動作させることによって検索を高速に行うことができる。各PCにて割り当てられた源情報が一度にメモリ上に読み込めるように源情報を分割すると効率的である。つまり想定する源情報のサイズに併せてPC数を増加させればよい。【００７８】
複数のPC４１１の内の一つまたは複数のPCで命令プログラムを利用し、他のPCにて検索プログラムを動作させることもできる。【００７９】
本実施の形態によるマルチCPUおよび並列マシンシステムは、各CPUやPCに処理や源情報を効果的に割り当てることによって検索の高速処理を可能とする。【００８０】
図５は、本発明の実施の形態に係る検索システムをインターネットなどの通信網を介してさらに拡張したした場合について示した図である。５００は、検索サイトの構成を示す。５０１は検索エンジンであって、検索プログラムからなり前記説明した図4の構成の並列マシン環境を含む。【００８１】
５０２はPCであって、ユーザ、クライアントは、ここから検索開始する。先にも説明したように、PCでなくともユーザ、クライアントは他の情報機器、PDA(personal digital assistant)、携帯電話機、デジタル情報家電機器の類の端末機器からでも検索命令を発信できる。【００８２】
５０３は、ウェブサーバ（world wide web server）であって、インターネットのトランザクション（transaction）処理機能を備えている。公衆情報通信網とのアクセス機能があって、ハッカー（hacker）等の不正侵入を防ぐファイア・ウオール（fire wall：インターネットとLANの間において不正侵入から内部ネットワークを守る仕組み）機能も備えている。【００８３】
５０４はサーバであって、ファイル・サーバ、プリント・サーバ、データベースサーバ、通信制御を行うコミュニケーション・サーバ、特定業務処理を行うアプリケーション・サーバの機能を持っている。【００８４】
５０５、５０６はデータベースであって、情報の各種ファイルを保管している。ユーザの求めに応じてここにあるファイルにアクセスして、検索を行う。情報は随時更新・作成される。【００８５】
５０７は、これらの機器を有機的に接続するLANである。５０８は情報通信網５１０に接続する通信回線である。５０９、５１０、５１１は各種専用ウエブ・サイト（web site）である。【００８６】
５１１は、データベースサイトである。テキストデータの他、例えば映像、映画等の画像提供サイトとしてもよい。映画は近年、ハイビジョン・デジタルカメラ（hi-vision digital camera）の低価格化と高機能化によって素人でも高度な映画製作が可能であって、このようなアーカイブ・ライブラリを利用する個人、法人は増加している。【００８７】
当該サイト５１１とは通信回線５０８で接続している。５１２は、アーカイブ・ライブラリの機器を有機的に接続するLANであって、サーバ５１３、PC５１４及びデータベース５１５が接続されている。なおデータベース５１５は、テキストや映像、音声情報を蓄積してテラバイト級の大容量であって、検索エンジン５０１にある前記説明したような外部からの検索に対応した検索エンジン５０１をPC５１４に必要とする。【００８８】
このように世界中に分散した情報に対して、検索エンジンを配置することによって、命令プログラムを有するPCや各種情報機器から情報の検索を可能にする。【００８９】
図４において、マルチＣＰＵなどの並列環境においては、検索プログラムの各処理に対し、リソースを適切に配分することによって処理の高速化を図ることができることを説明した。ここでは、より具体的に、検索プログラムの処理を複数スレッドで行う場合に各処理に割り当てるスレッド数を最適化する方法について述べる。【００９０】
検索プログラムの処理としては、例えば、ファイルまたはメモリ上に保持された情報から１つまたは複数の情報の組を読み込む読み込み処理、前記読み込み手段により読み込まれた情報に対し、指定された条件に合致する情報項目の組を選別する選別処理、前記選別手段により選別された情報をファイルまたはメモリ上に書き込む書き込み処理などが挙げられる。【００９１】
これらの処理はそれぞれ独立したスレッドで行うことができる。【００９２】
また、検索処理においては、情報読み込み処理における情報の読み込み順、選別処理における条件比較を行う情報の順、書き込み処理における情報の書き込み順は一般に結果に影響を与えないため、それぞれの処理を複数のスレッドで処理することができる。【００９３】
情報のフォーマットが決まっており、一組の情報単位の長さが固定の場合は情報の読み込みまたは書き込み位置が容易に計算できるので、このような並列処理に向いている。【００９４】
一定数の複数スレッドで処理を行うことを想定した場合、全てのスレッドが等しく高負荷な状態であるのが、全体として最も効率が良い。【００９５】
たとえば、読み込み処理、選別処理、書き込み処理の負荷が全て等しく高負荷な状態であるような場合である。【００９６】
処理の負荷の定義としては、たとえば、その処理を行った全てのスレッドの一定時間内のＣＰＵ使用時間の合計などが考えられる。【００９７】
本実施の形態においては、高負荷な処理のスレッド数を増加し、低負荷な処理のスレッド数を減少させることによって検索プログラム全体の処理効率を動的に高める方法を提示する。【００９８】
図６は、各処理が使用可能なスレッド数を管理するためのスレッド管理テーブルである。【００９９】
本実施の形態の検索プログラム１０２は、検索対象となる条件を示す検索対象条件情報、検索対象となる源情報がファイル或いはメモリのいずれかに存在するかを示す源情報検索先情報、検索の対象となる源情報の源情報名、検索された情報をファイル或いはメモリのどちらに格納するかを示す格納先情報、書き込みの対象となる検索された情報の検索結果情報名を受信する受信機能と、前記受信した源情報検索先情報によって示された検索対象となる源情報がメモリに存在することを示している場合に、前記受信した検索の対象となる源情報の源情報名と一致するメモリ領域の名前を管理テーブルから検索する検索機能と、前記検索機能によって前記受信した検索の対象となる源情報の源情報名と一致するメモリ領域の名前が検索された場合に、前記検索されたメモリ領域の名前に関連付けられたメモリ領域から、前記受信した検索対象条件情報に合致する情報を取得する取得機能と、前記受信された格納先情報がメモリに格納することを示している場合に、前記取得機能によって取得した情報を、メモリに書き込むとともに、前記受信した書き込みの対象となる検索された情報の検索結果情報名をメモリ領域とともに、前記管理テーブルに格納する格納機能などを具備するが、これら各機能をスレッドに割り当てることができる。【０１００】
検索プログラム１０２によって、スレッド管理テーブル６０１に、各処理に対し、使用可能スレッド数６０２と現在の負荷情報６０３が記録される。負荷情報としては、先に述べたように、例えば、その処理を行った全てのスレッドの一定時間内のＣＰＵ使用時間の合計などが考えられる。スレッド管理テーブルは各処理からアクセス可能である。【０１０１】
図７に各処理の使用可能スレッド数を動的に最適化する方法のフローを示す。【０１０２】
処理Ｓ７０１は一定の情報ブロック単位に繰り返し行われるものとする。【０１０３】
Ｓ７０２は最後の情報ブロックに対する処理が完了したかを判定し、完了している場合には処理を終了し、完了していない場合にはスレッド数の調整処理を行う。【０１０４】
Ｓ７０３では、図６に示すスレッド管理テーブルを参照し、各処理の負荷情報を比較して自処理が最大負荷の場合は、Ｓ７０４スレッド管理テーブルに記録されている自処理の使用可能スレッド数を増加する。例えば１加える。【０１０５】
また、Ｓ７０５では、最小負荷の処理に対し、スレッド管理テーブルに記録されている使用可能スレッド数をその分減じる。例えば１減らす。【０１０６】
次の情報ブロックに対してＳ７０１の処理を行う場合は、更新されたスレッド数で行う。【０１０７】
読み込み処理を例により具体的に説明する。【０１０８】
Ｓ７０１で一定の単位数の情報をファイルから読み込む。使用可能スレッド数が２に設定されていたとし、これらのスレッドをＡ，Ｂとすると。１単位の情報をＡＢＡＢ・・・と交互に読み込むことになる。【０１０９】
本処理を行っている２スレッドの合計の負荷、例えばＣＰＵ使用時間が最大で、例えば書き込み処理の負荷が最低だったとすると、スレッド管理テーブルにおいて読み込み処理の使用可能スレッド数を増やし３とする。また書き込み処理の使用可能スレッド数を１減らす。【０１１０】
次にＳ７０１で読み込み処理を行う際は、３つのスレッドＡ，Ｂ，Ｃで交互にＡＢＣＡＢＣ・・・と読むことになる。【０１１１】
このように、高負荷な処理のスレッド数を増やし、低負荷な処理のスレッド数を減らすことを随時行うことによって、検索プログラム全体として効率的に動作するように動的に最適化できる。【０１１２】
条件に適合する情報の組が少ないような場合は、読み込み処理、選別処理に比して、書き込み処理の処理量が少なくなることが予想されるが、このような場合に各処理に平均的にスレッド数を分配するのではなく、このような仕組みを利用することで、動的かつ自発的に最適なスレッド数の分配が可能になる。
【産業上の利用可能性】
【０１１３】
本発明によれば、情報の検索結果をユーザが指定した名前を付けてメモリ上に保管することによって、多くの場合、段階的または繰り返す行われる情報の検索作業におけるユーザの作業効率の向上、作業時間の短縮を実現できる。【０１１４】
特にテラバイト級にも及ぶ大容量の情報の検索に有効である。【０１１５】
ローカルハードディスク上やネットワーク介して分散している情報の検索を短時間で行うことができる。【０１１６】
遺伝子配列情報データベースからの検索や文献データベースからの全文検索、コンピュータの操作履歴などからの情報の検索などへの応用が期待される。
【図１】
2009031474.tif 000003
【図２】
2009031474.tif 000004
【図３】
2009031474.tif 000005
【図４】
2009031474.tif 000006
【図５】
2009031474.tif 000007
【図６】
2009031474.tif 000008
【図７】
2009031474.tif 000009
【国際調査報告】
2009031474.tif 000010
2009031474.tif 000011
2009031474.tif 000012
2009031474.tif 000013