(57)【要約】      （修正有）【課題】複数DBに対する横断的な検索を効率的に行う。【解決手段】属性に関する検索条件を複数含む検索要求を受け付け、各DBで管理されている属性の情報を格納する第1tableに基づき検索要求に係る複数の検索条件をDB別の検索条件に分類し、DBの識別情報に対応付けて記憶部に格納し、記憶部内の、DBの識別情報と検索条件とを基にDB毎且つ検索条件毎に過去の検索結果におけるヒット件数を格納する第2tableを検索し、ヒット件数が所定数以下のDB又はヒット件数で記憶部内のDBを順位付けした場合に下位所定順位内にあるDBを第1DBとして特定し、第1DB毎に当該第1DBに対する検索条件で当該第1DBを検索し、記憶部内の、第1DB以外のDBである第2DB毎に当該第2DBに対する検索条件と第1DBの各検索結果に共通して含まれるIDとで当該第2DBを検索する。【選択図】図４
2010218131.tif 000002
【特許請求の範囲】
【請求項１】
特定の識別子に関連付けられているデータに係る複数の属性を分担して管理している複数のデータベースを検索するためのプログラムであって、
属性に関する検索条件を複数含むＡＮＤ検索要求を受け付けた場合、前記データベース毎に当該データベースで管理されている属性を表す情報を格納する属性管理テーブルに基づき、前記ＡＮＤ検索要求に含まれる複数の前記検索条件を、前記データベース別の前記検索条件に分類し、前記データベースの識別情報に対応付けて記憶装置に格納するステップと、
前記記憶装置に格納されている、前記データベースの識別情報と当該データベースに対応する前記検索条件とを基に、前記データベースの識別情報と前記検索条件と当該データベースに対する過去の検索において当該検索条件にヒットしたヒット件数とを含むレコードを格納する検索結果管理テーブルを検索し、前記ヒット件数が所定数以下となる前記データベース、又は、前記ヒット件数によって前記記憶装置に格納されている前記データベースを順位付けした場合の下位所定順位内にある前記データベースを先行検索データベースとして特定する先行検索データベース特定ステップと、
前記先行検索データベース毎に、前記記憶装置に格納され且つ当該先行検索データベースに対応する前記検索条件を用いて当該先行検索データベースの検索を行う先行検索ステップと、
前記先行検索データベースの各検索結果に共通して含まれる前記識別子を特定する先行検索結果マージステップと、
前記記憶装置に格納されている、前記先行検索データベース以外のデータベースである後続検索データベース毎に、前記記憶装置に格納され且つ当該後続検索データベースに対応する前記検索条件と前記先行検索結果マージステップにおいて特定された前記識別子とを用いて当該後続検索データベースの検索を行う後続検索ステップと、
をコンピュータに実行させるための検索プログラム。
【請求項２】
前記先行検索結果マージステップが、
前記先行検索データベースの各検索結果に共通して含まれる前記識別子が存在するか判断するステップ
を含み、
前記先行検索データベースの各検索結果に共通して含まれる前記識別子が存在しないと判断された場合、前記後続検索ステップの処理を行わずに検索を終了する
ことを特徴とする請求項１記載の検索プログラム。
【請求項３】
前記データベースがプレゼンスシステムにて管理されるプレゼンスデータベースの場合には、前記検索結果管理テーブルにおける前記レコードが、当該プレゼンスデータベースで管理されている前記属性の属性名と属性値との組み合わせとして規定される前記検索条件を満たし且つ前記プレゼンスシステムから通知される前記識別子をさらに格納し、
前記先行検索ステップが、
検索対象となる前記先行検索データベースが前記プレゼンスデータベースの場合には、前記検索結果管理テーブルにおける、当該先行検索データベースに係る前記レコードに含まれる前記識別子を、当該先行検索データベースの前記検索結果として設定するステップ
を含む、請求項１又は２記載の検索プログラム。
【請求項４】
前記後続検索ステップが、
前記後続検索データベースの中に前記プレゼンスデータベースが存在する場合には、前記検索結果管理テーブルから、当該プレゼンスデータベースに係る前記レコードに含まれる前記識別子を抽出する後続検索前処理ステップと、
前記プレゼンスデータベース以外の前記後続検索データベース毎に、前記記憶装置に格納され且つ当該後続検索データベースに対応する前記検索条件と前記先行検索結果マージステップにおいて特定された前記識別子と前記後続検索前処理において抽出された前記識別子とを用いて当該後続検索データベースの検索を行うステップと、
を含む、請求項３記載の検索プログラム。
【請求項５】
特定の識別子に関連付けられているデータに係る複数の属性を分担して管理している複数のデータベースを検索する検索装置であって、
属性に関する検索条件を複数含むＡＮＤ検索要求を受け付けた場合、前記データベース毎に当該データベースで管理されている属性を表す情報を格納する属性管理テーブルに基づき、前記ＡＮＤ検索要求に含まれる複数の前記検索条件を、前記データベース別の前記検索条件に分類し、前記データベースの識別情報に対応付けて記憶装置に格納する手段と、
前記記憶装置に格納されている、前記データベースの識別情報と当該データベースに対応する前記検索条件とを基に、前記データベースの識別情報と前記検索条件と当該データベースに対する過去の検索において当該検索条件にヒットしたヒット件数とを含むレコードを格納する検索結果管理テーブルを検索し、前記ヒット件数が所定数以下となる前記データベース、又は、前記ヒット件数によって前記記憶装置に格納されている前記データベースを順位付けした場合の下位所定順位内にある前記データベースを先行検索データベースとして特定する先行検索データベース特定手段と、
前記先行検索データベース毎に、前記記憶装置に格納され且つ当該先行検索データベースに対応する前記検索条件を用いて当該先行検索データベースの検索を行う先行検索手段と、
前記先行検索データベースの各検索結果に共通して含まれる前記識別子を特定する先行検索結果マージ手段と、
前記記憶装置に格納されている、前記先行検索データベース以外のデータベースである後続検索データベース毎に、前記記憶装置に格納され且つ当該後続検索データベースに対応する前記検索条件と前記先行検索結果マージ手段により特定された前記識別子とを用いて当該後続検索データベースの検索を行う後続検索手段と、
を有する検索装置。
【請求項６】
特定の識別子に関連付けられているデータに係る複数の属性を複数のデータベースで分担して管理する場合における検索方法であって、
属性に関する検索条件を複数含むＡＮＤ検索要求を受け付けた場合、前記データベース毎に当該データベースで管理されている属性を表す情報を格納する属性管理テーブルに基づき、前記ＡＮＤ検索要求に含まれる複数の前記検索条件を、前記データベース別の前記検索条件に分類し、前記データベースの識別情報に対応付けて記憶装置に格納するステップと、
前記記憶装置に格納されている、前記データベースの識別情報と当該データベースに対応する前記検索条件とを基に、前記データベースの識別情報と前記検索条件と当該データベースに対する過去の検索において当該検索条件にヒットしたヒット件数とを含むレコードを格納する検索結果管理テーブルを検索し、前記ヒット件数が所定数以下となる前記データベース、又は、前記ヒット件数によって前記記憶装置に格納されている前記データベースを順位付けした場合の下位所定順位内にある前記データベースを先行検索データベースとして特定する先行検索データベース特定ステップと、
前記先行検索データベース毎に、前記記憶装置に格納され且つ当該先行検索データベースに対応する前記検索条件を用いて当該先行検索データベースの検索を行う先行検索ステップと、
前記先行検索データベースの各検索結果に共通して含まれる前記識別子を特定する先行検索結果マージステップと、
前記記憶装置に格納されている、前記先行検索データベース以外のデータベースである後続検索データベース毎に、前記記憶装置に格納され且つ当該後続検索データベースに対応する前記検索条件と前記先行検索結果マージステップにおいて特定された前記識別子とを用いて当該後続検索データベースの検索を行う後続検索ステップと、
を含み、コンピュータにより実行される検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、データを分担して管理している複数のデータベースに対する横断的な検索を効率的に行うための技術に関する。
【背景技術】
【０００２】
例えばＩＤに関連付けられている人や物などの複数の属性が複数のデータベースで分担して管理されている場合、各データベースで管理されている属性の属性値を統合した形でクライアントに提供する統合ＩＤ管理技術が存在する。図１に統合ＩＤ管理システムの一例を示す。図１の例では、属性Ａ及び属性ＢがデータベースＡにて管理され、属性ＣがデータベースＢにて管理され、属性ＤがデータベースＣにて管理されるようになっている。そして、統合ＩＤ管理システムにおける統合ＩＤ管理装置では、どの属性がどのデータベースで管理されているかの情報を保持しておき、各データベースで管理されている属性Ａ乃至属性Ｄの属性値を統合し、例えば図２に示すような統合ＩＤデータとしてクライアントに提供する。
【０００３】
このような統合ＩＤ管理システムにおいて、統合ＩＤ管理装置が、属性名と属性値との組み合わせである検索条件を複数含むＡＮＤ検索要求を受け付けた場合、全ての検索条件を満たすデータを抽出するために、統合ＩＤ管理装置は、複数のデータベースを横断的に検索することとなる。なお、横断検索方法としては、例えば特開２００８−２１７６００号公報記載のような方法がある。例えば、複数のデータベースを並列に検索する方法や、１つずつ順番に検索する方法などである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２１７６００号公報
【特許文献２】特開平９−３４７５９号公報
【特許文献３】特開２００４−２８０５２８号公報
【特許文献４】特開２００７−２１３６０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の横断検索方法では、以下のような問題がある。例えば、複数のデータベースを並列に検索する方法では、各検索結果のヒット件数が多い場合には、各検索結果をマージするのに時間がかかったり、最終的に検索結果として提供されない無駄なデータを各データベースから抽出するのでネットワーク負荷や処理時間が大きくなってしまう。また、例えば、複数のデータベースを１つずつ順番に検索する方法では、データベースの数が多くなると、並列に検索する場合よりも時間がかかってしまう。
【０００６】
従って、本技術の目的は、複数のデータベースに対する横断的な検索を効率的に行うことができるようにするための技術を提供することである。
【課題を解決するための手段】
【０００７】
本検索方法は、特定の識別子に関連付けられているデータに係る複数の属性を複数のデータベースで分担して管理する場合における検索方法であって、属性に関する検索条件を複数含むＡＮＤ検索要求を受け付けた場合、データベース毎に当該データベースで管理されている属性を表す情報を格納する属性管理テーブルに基づき、ＡＮＤ検索要求に含まれる複数の検索条件を、データベース別の検索条件に分類し、データベースの識別情報に対応付けて記憶装置に格納するステップと、記憶装置に格納されている、データベースの識別情報と当該データベースに対応する検索条件とを基に、データベースの識別情報と検索条件と当該データベースに対する過去の検索において当該検索条件にヒットしたヒット件数とを含むレコードを格納する検索結果管理テーブルを検索し、ヒット件数が所定数以下となるデータベース、又は、ヒット件数によって記憶装置に格納されているデータベースを順位付けした場合の下位所定順位内にあるデータベースを先行検索データベースとして特定する先行検索データベース特定ステップと、先行検索データベース毎に、記憶装置に格納され且つ当該先行検索データベースに対応する検索条件を用いて当該先行検索データベースの検索を行う先行検索ステップと、先行検索データベースの各検索結果に共通して含まれる識別子を特定する先行検索結果マージステップと、記憶装置に格納されている、先行検索データベース以外のデータベースである後続検索データベース毎に、記憶装置に格納され且つ当該後続検索データベースに対応する検索条件と先行検索結果マージステップにおいて特定された識別子とを用いて当該後続検索データベースの検索を行う後続検索ステップとを含む。
【発明の効果】
【０００８】
複数のデータベースに対する横断的な検索を効率的に行うことができるようになる。
【図面の簡単な説明】
【０００９】
【図１】統合ＩＤ管理システムの一例を示す図である。
【図２】統合ＩＤデータの一例を示す図である。
【図３】第１の実施の形態に係るシステム構成図である。
【図４】第１の実施の形態における統合ＩＤ管理装置の機能ブロック図である。
【図５】属性管理テーブルのテーブル例を示す図である。
【図６】第１の実施の形態における検索結果管理テーブルのテーブル例を示す図である。
【図７】（ａ）及び（ｂ）は、配列データ格納部に格納されるデータの一例を示す図である。
【図８】第１の実施の形態における統合ＩＤ管理装置の処理フロー（第１の部分）を示す図である。
【図９】検索条件をデータベース毎に分割する処理を説明するための図である。
【図１０】第１の実施の形態における統合ＩＤ管理装置の処理フロー（第２の部分）を示す図である。
【図１１】第１の実施の形態における統合ＩＤ管理装置の処理フロー（第３の部分）を示す図である。
【図１２】第１の実施の形態における統合ＩＤ管理装置の処理フロー（第４の部分）を示す図である。
【図１３】統合ＩＤ管理装置のキャッシュコントローラの処理フローを示す図である。
【図１４】第１の実施の形態におけるシーケンスの第１の例（前半）を示す図である。
【図１５】第１の実施の形態におけるシーケンスの第１の例（後半）を示す図である。
【図１６】第１の実施の形態におけるシーケンスの第２の例（前半）を示す図である。
【図１７】第１の実施の形態におけるシーケンスの第２の例（後半）を示す図である。
【図１８】第２の実施の形態に係るシステム構成図である。
【図１９】第２の実施の形態における統合ＩＤ管理装置の機能ブロック図である。
【図２０】第２の実施の形態における検索結果管理テーブルのテーブル例を示す図である。
【図２１】第２の実施の形態における検索結果管理テーブルの更新処理の処理フロー（第１の部分）を示す図である。
【図２２】第２の実施の形態における検索結果管理テーブルの更新処理の処理フロー（第２の部分）を示す図である。
【図２３】第２の実施の形態における統合ＩＤ管理装置の処理フロー（第１の部分）を示す図である。
【図２４】第２の実施の形態における統合ＩＤ管理装置の処理フロー（第２の部分）を示す図である。
【図２５】第２の実施の形態における統合ＩＤ管理装置の処理フロー（第３の部分）を示す図である。
【図２６】第２の実施の形態における統合ＩＤ管理装置の処理フロー（第４の部分）を示す図である。
【図２７】第２の実施の形態における統合ＩＤ管理装置の処理フロー（第５の部分）を示す図である。
【図２８】第２の実施の形態における統合ＩＤ管理装置の処理フロー（第６の部分）を示す図である。
【図２９】第３の実施の形態における統合ＩＤ管理装置の処理フロー（第１の部分）を示す図である。
【図３０】第３の実施の形態における統合ＩＤ管理装置の処理フロー（第２の部分）を示す図である。
【図３１】第３の実施の形態における統合ＩＤ管理装置の処理フロー（第３の部分）を示す図である。
【図３２】コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１０】
［実施の形態１］
図３乃至図１７を用いて本技術の第１の実施の形態を説明する。まず、図３に第１の実施の形態に係るシステム構成図を示す。図３において、本実施の形態における主要な処理を実施する統合ＩＤ管理装置１は、統合ＩＤデータ（図２）を利用する複数のクライアント（図３では、クライアントＡ乃至Ｃ）と、複数のデータベース（図３では、データベースＡ乃至Ｃ）とに接続されている。
【００１１】
図４に統合ＩＤ管理装置１の機能ブロック図を示す。統合ＩＤ管理装置１は、入力部１１と、属性管理テーブル格納部１２と、分割処理部１３と、キャッシュ１４と、検索結果管理テーブル格納部１５と、先行検索ＤＢ決定部１６と、配列データ格納部１７と、検索部１８と、キャッシュコントローラ１９と、検索結果格納部２０と、出力部２１とを有する。入力部１１は、クライアントから検索要求を受信し、分割処理部１３に出力する。分割処理部１３は、入力部１１から受信した検索要求に係る検索条件を、属性管理テーブル格納部１２に格納されている属性管理テーブル（詳細は後述）と検索結果管理テーブル格納部１５に格納されている検索結果管理テーブル（詳細は後述）又はキャッシュ１４とに基づき、データベース別の検索条件に分割する。なお、詳細は後で説明するが、属性管理テーブルには、どの属性がどのデータベースで管理されているかの情報が格納される。また、検索結果管理テーブルには、データベース別の検索条件の各々について、過去の検索において当該検索条件にヒットしたヒット件数と検索回数とが格納される。なお、検索結果管理テーブルにおける一部のレコードがキャッシュ１４に格納される。また。分割処理部１３は、分割した検索条件をデータベースの識別情報に対応付けて、配列データ格納部１７における先行検索候補配列又は後続検索ＤＢ配列（詳細は後述）に格納する。先行検索ＤＢ決定部１６は、分割処理部１３が検索条件を分割した後、キャッシュ１４又は検索結果管理テーブル格納部１５と配列データ格納部１７に格納されているデータに基づき、先行検索の対象となる先行検索データベースを決定し、配列データ格納部１７における先行検索ＤＢ配列（詳細は後述）に格納する。検索部１８は、先行検索ＤＢ決定部１６が先行検索データベースを決定した後、配列データ格納部１７に格納されているデータに基づき、先行検索データベース、後続検索データベースの順で各データベースの検索を行い、検索結果を検索結果格納部２０に格納する。また、検索部１８は、検索条件又は検索結果におけるヒット件数をキャッシュコントローラ１９に出力する。キャッシュコントローラ１９は、検索部１８から検索条件又はヒット件数を受信すると、キャッシュ１４及び検索結果管理テーブルにおける検索回数を１インクリメントしたり、受信したヒット件数をキャッシュ１４及び検索結果管理テーブルに上書き登録したりする。出力部２１は、検索部１８による検索が完了すると、検索結果格納部２０に格納されているデータを検索要求元のクライアントに出力する。
【００１２】
図５に、属性管理テーブル格納部１２に格納される属性管理テーブルの一例を示す。図５の例では、属性管理テーブルには、データベースの列と、属性の列とが含まれる。属性の列には、そのデータベースで管理される属性の属性名が予め設定される。
【００１３】
図６に、検索結果管理テーブル格納部１５に格納される検索結果管理テーブルの一例を示す。図６の例では、検索結果管理テーブルには、検索対象データベース（ＤＢ）の列と、検索条件の列と、ヒット件数の列と、検索回数の列とが含まれる。なお、詳細は後で説明するが、検索結果管理テーブルにおけるレコードのうち検索回数の多いレコードが優先的にキャッシュ１４に格納される。
【００１４】
図７（ａ）及び（ｂ）に、配列データ格納部１７に格納されるデータの一例を示す。図７（ａ）は、配列データ格納部１７における先行検索候補配列のデータ構造を示す。図７（ａ）の例では、先行検索候補配列には、検索条件と検索対象ＤＢとヒット件数との組み合わせが格納されるようになっている。また、図７（ｂ）は、配列データ格納部１７における先行検索ＤＢ配列のデータ構造を示す。図７（ｂ）の例では、先行検索ＤＢ配列には、検索条件と検索対象ＤＢとの組み合わせが格納されるようになっている。なお、配列データ格納部１７における後続検索ＤＢ配列も、図７（ｂ）に示すようなデータ構造を有する。
【００１５】
次に、図８乃至図１３を用いて、本実施の形態における統合ＩＤ管理装置１の処理を説明する。まず、統合ＩＤ管理装置１の入力部１１が、クライアントから、属性名と属性値との組み合わせである検索条件を複数含むＡＮＤ検索要求を受け付ける（図８：ステップＳ１）。そして、入力部１１は、ＡＮＤ検索要求を分割処理部１３に出力する。
【００１６】
そして、分割処理部１３は、入力部１１からＡＮＤ検索要求を受信し、ＡＮＤ検索要求に係る検索条件を、属性管理テーブルに基づきデータベース毎の検索条件に分割する（ステップＳ３）。例えば、図５に示したようなデータが属性管理テーブルに格納されている場合に、図９に示すような検索条件を含むＡＮＤ検索要求を受信すると、データベースＡに対する検索条件ａ（すなわち、（属性Ａ＝ｘｘｘ）ＡＮＤ（属性Ｂ＝ｙｙｙ））と、データベースＢに対する検索条件ｂ（すなわち、属性Ｃ＝ｚｚｚ）とに分割される。なお、分割した検索条件は、検索対象データベースの識別情報に対応付けて一旦記憶装置に格納される。
【００１７】
そして、分割処理部１３は、分割した検索条件のうち未処理の検索条件を特定する（ステップＳ５）。そして、分割処理部１３は、特定された検索条件に対応するヒット件数がキャッシュ１４又は検索結果管理テーブルに登録されているか判断する（ステップＳ７）。特定された検索条件に対応するヒット件数がキャッシュ１４又は検索結果管理テーブルに登録されている場合（ステップＳ７：Ｙｅｓルート）、分割処理部１３は、特定された検索条件と検索対象データベースの識別情報とヒット件数とを配列データ格納部１７における先行検索候補配列に格納する（ステップＳ９）。その後、ステップＳ１３の処理に移行する。
【００１８】
一方、特定された検索条件に対応するヒット件数がキャッシュ１４及び検索結果管理テーブルに未登録の場合（ステップＳ７：Ｎｏルート）、分割処理部１３は、特定された検索条件と検索対象データベースの識別情報とを配列データ格納部１７における後続検索ＤＢ配列に格納する（ステップＳ１１）。なお、特定された検索条件を含むレコードが検索結果管理テーブルに存在しない場合には、分割処理部１３は、特定された検索条件と検索対象データベースの識別情報とを含むレコードを検索結果管理テーブルに追加し、検索回数を０に設定する。その後、ステップＳ１３の処理に移行する。
【００１９】
そして、分割処理部１３は、分割した全ての検索条件について処理が完了したか判断する（ステップＳ１３）。分割した全ての検索条件について処理が完了していなければ（ステップＳ１３：Ｎｏルート）、ステップＳ５に戻り、上で述べた処理を繰り返す。一方、分割した全ての検索条件について処理が完了した場合（ステップＳ１３：Ｙｅｓルート）、分割処理部１３は、検索条件の分割が完了した旨を先行検索ＤＢ決定部１６に通知する。
【００２０】
そして、先行検索ＤＢ決定部１６は、分割処理部１３から検索条件の分割が完了した旨の通知を受信すると、先行検索候補配列においてヒット件数の最大値を特定し、当該最大値から先行検索ＤＢ判断閾値を決定する（ステップＳ１５）。例えば、最大値に所定の率（例えば１％）を乗じた値を先行検索ＤＢ判断閾値として決定する。なお、先行検索ＤＢ判断閾値の決定方法は、これに限定されず、他の方法（例えば、最大値から所定数を減じた値を閾値とするなど）を採用することも可能である。そして、処理は端子Ａを介して、ステップＳ１７（図１０）の処理に移行する。
【００２１】
図１０の説明に移行して、端子Ａの後、先行検索ＤＢ決定部１６は、先行検索候補配列から未処理の検索条件を特定する（図１０：ステップＳ１７）。そして、先行検索ＤＢ決定部１６は、特定された検索条件に対応するヒット件数が先行検索ＤＢ判断閾値以下であるか判断する（ステップＳ１９）。特定された検索条件に対応するヒット件数が先行検索ＤＢ判断閾値以下の場合（ステップＳ１９：Ｙｅｓルート）、先行検索ＤＢ決定部１６は、特定された検索条件と検索対象データベースの識別情報とを配列データ格納部１７における先行検索ＤＢ配列に格納する（ステップＳ２１）。その後、ステップＳ２５の処理に移行する。
【００２２】
一方、特定された検索条件に対応するヒット件数が先行検索ＤＢ判断閾値より大きい場合（ステップＳ１９：Ｎｏルート）、先行検索ＤＢ決定部１６は、特定された検索条件と検索対象データベースの識別情報とを配列データ格納部１７における後続検索ＤＢ配列に格納する（ステップＳ２３）。その後、ステップＳ２５の処理に移行する。
【００２３】
そして、先行検索ＤＢ決定部１６は、先行検索候補配列内の全ての検索条件について処理が完了したか判断する（ステップＳ２５）。先行検索候補配列内の全ての検索条件について処理が完了していなければ（ステップＳ２５：Ｎｏルート）、ステップＳ１７に戻り、上で述べた処理を繰り返す。一方、先行検索候補配列内の全ての検索条件について処理が完了した場合（ステップＳ２５：Ｙｅｓルート）、先行検索ＤＢ決定部１６は、先行検索ＤＢ決定完了通知を検索部１８に出力する。
【００２４】
そして、検索部１８は、先行検索ＤＢ決定部１６から先行検索ＤＢ決定完了通知を受信すると、先行検索ＤＢ配列に検索条件が格納されているか判断する（ステップＳ２７）。先行検索ＤＢ配列に検索条件が格納されていないと判断された場合（ステップＳ２７：Ｎｏルート）、端子Ｃを介して、ステップＳ５７（図１２）の処理に移行する。
【００２５】
一方、先行検索ＤＢ配列に検索条件が格納されている場合（ステップＳ２７：Ｙｅｓルート）、検索部１８は、先行検索ＤＢ配列から未処理の検索条件を特定する（ステップＳ２９）。そして、検索部１８は、特定された検索条件を用いて検索対象となる先行検索データベースの検索を実行する（ステップＳ３１）。例えば、検索部１８が、特定された検索条件を含む検索要求を先行検索データベースに出力する。そして、検索部１８は、先行検索データベースからの検索結果を当該先行検索データベースの識別情報に対応付けて検索結果格納部２０に格納する。
【００２６】
そして、検索部１８は、特定された検索条件と検索結果におけるヒット件数とをキャッシュコントローラ１９に出力する（ステップＳ３３）。なお、詳細は後で説明するが、キャッシュコントローラ１９は、検索条件とヒット件数とを受信すると、キャッシュ１４及び検索結果管理テーブルを更新する。
【００２７】
そして、検索部１８は、先行検索ＤＢ配列内の全ての検索条件について処理が完了したか判断する（ステップＳ３５）。先行検索ＤＢ配列内の全ての検索条件について処理が完了していなければ（ステップＳ３５：Ｎｏルート）、ステップＳ２９に戻り、上で述べた処理を繰り返す。一方、先行検索ＤＢ配列内の全ての検索条件について処理が完了した場合（ステップＳ３５：Ｙｅｓルート）、端子Ｂを介して、ステップＳ３７（図１１）の処理に移行する。なお、先行検索データベースが複数存在する場合には、各先行検索データベースに対する検索要求を一斉に出力し、複数の先行検索データベースを並列に検索することも可能である。
【００２８】
図１１の説明に移行して、端子Ｂの後、検索部１８は、検索結果格納部２０に格納されている、先行検索データベースの検索結果をマージする（図１１：ステップＳ３７）。そして、検索部１８は、先行検索データベースの各検索結果に共通して含まれるＩＤが存在するか判断する（ステップＳ３９）。先行検索データベースの各検索結果に共通して含まれるＩＤが存在すると判断された場合（ステップＳ３９：Ｙｅｓルート）、検索部１８は、後続検索データベースの検索を開始する。
【００２９】
具体的には、まず、検索部１８は、後続検索ＤＢ配列から未処理の検索条件を特定する（ステップＳ４１）。そして、検索部１８は、先行検索で得られたＩＤを特定された検索条件に追加して新たな検索条件を生成し（ステップＳ４３）、生成した新たな検索条件を用いて検索対象となる後続検索データベースの検索を実行する（ステップＳ４５）。例えば、検索部１８が、特定された検索条件と先行検索で得られたＩＤとを含む検索要求を後続検索データベースに出力する。そして、検索部１８は、後続検索データベースからの検索結果を当該後続検索データベースの識別情報に対応付けて検索結果格納部２０に格納する。
【００３０】
そして、検索部１８は、特定された検索条件をキャッシュコントローラ１９に出力する（ステップＳ４７）。なお、ステップＳ４５では、先行検索で得られたＩＤで絞り込んだ形で後続検索データベースの検索を行っているため、ここでは、キャッシュ１４及び検索結果管理テーブルにおける特定された検索条件のヒット件数を更新しないようにする。そのため、ステップＳ４７では、検索部１８は、検索結果におけるヒット件数をキャッシュコントローラ１９に送信しない。
【００３１】
そして、検索部１８は、後続検索ＤＢ配列内の全ての検索条件について処理が完了したか判断する（ステップＳ４９）。後続検索ＤＢ配列内の全ての検索条件について処理が完了していなければ（ステップＳ４９：Ｎｏルート）、ステップＳ４１に戻り、上で述べた処理を繰り返す。一方、後続検索ＤＢ配列内の全ての検索条件について処理が完了した場合（ステップＳ４９：Ｙｅｓルート）、ステップＳ５１の処理に移行する。なお、後続検索データベースが複数存在する場合には、各後続検索データベースに対する検索要求を一斉に出力し、複数の後続検索データベースを並列に検索することも可能である。
【００３２】
そして、検索部１８は、検索結果格納部２０に格納されている、後続検索データベースの検索結果をマージする（ステップＳ５１）。なお、後続検索データベースの各検索結果をマージした結果が、最終的な検索結果として検索結果格納部２０に格納される。そして、検索部１８は、検索結果を出力するよう出力部２１に要求する。なお、処理はステップＳ５５に移行する。
【００３３】
一方、ステップＳ３９において、先行検索データベースの各検索結果に共通して含まれるＩＤが存在しないと判断された場合（ステップＳ３９：Ｎｏルート）、検索部１８は、後続検索ＤＢ配列に格納されている検索条件をキャッシュコントローラ１９に出力する（ステップＳ５３）。なお、先行検索データベースの各検索結果に共通して含まれるＩＤが存在しない場合には後続検索データベースの検索を行うことなく、検索を終了することになるが、後続検索ＤＢ配列に格納されている各検索条件については、検索要求で指定されているので、キャッシュ１４及び検索結果管理テーブルにおける検索回数を１インクリメントするようにする。そして、検索部１８は、検索結果を出力するよう出力部２１に要求する。
【００３４】
そして、出力部２１は、検索部１８からの要求に応じて、検索結果格納部２０に格納されている検索結果を、ＡＮＤ検索要求の要求元のクライアントに出力する（ステップＳ５５）。例えば、ＡＮＤ検索要求で指定された検索条件を満たすＩＤが存在する場合には、そのＩＤについての統合ＩＤデータ（図２）が検索結果としてクライアントに出力される。また、ＡＮＤ検索要求で指定された検索条件を満たすＩＤが存在しなければ、その旨が検索結果として出力される。そして、本処理を終了する。
【００３５】
また、ステップＳ２７（図１０）において、先行検索ＤＢ配列に検索条件が格納されていないと判断され、端子Ｃを介して図１２に移行してきた場合、検索部１８は、後続検索ＤＢ配列から未処理の検索条件を特定する（図１２：ステップＳ５７）。そして、検索部１８は、特定された検索条件を用いて検索対象となる後続検索データベースの検索を実行する（ステップＳ５９）。例えば、検索部１８が、特定された検索条件を含む検索要求を後続検索データベースに出力する。そして、検索部１８は、後続検索データベースからの検索結果を当該後続検索データベースの識別情報に対応付けて検索結果格納部２０に格納する。
【００３６】
そして、検索部１８は、特定された検索条件と検索結果におけるヒット件数とをキャッシュコントローラ１９に出力する（ステップＳ６１）。すなわち、キャッシュコントローラ１９にキャッシュ１４及び検索結果管理テーブルを更新させる。
【００３７】
そして、検索部１８は、後続検索ＤＢ配列内の全ての検索条件について処理が完了したか判断する（ステップＳ６３）。後続検索ＤＢ配列内の全ての検索条件について処理が完了していなければ（ステップＳ６３：Ｎｏルート）、ステップＳ５７に戻り、上で述べた処理を繰り返す。一方、後続検索ＤＢ配列内の全ての検索条件について処理が完了した場合（ステップＳ６３：Ｙｅｓルート）、端子Ｄを介してステップＳ５１（図１１）の処理に移行し、ステップＳ５１及びステップＳ５５の処理を実行した後、本処理を終了する。なお、後続検索データベースが複数存在する場合には、各後続検索データベースに対する検索要求を一斉に出力し、複数の後続検索データベースを並列に検索することも可能である。
【００３８】
以上のような処理を実行することにより、過去の検索におけるヒット件数の少ない先行検索データベースを先に検索し、ＩＤを絞り込んだ形で後続検索データベースを検索することができるようになる。従って、後続検索データベースの検索結果において、最終的に検索結果として提供されない無駄なデータの割合が少なくなり、各検索結果をマージする時間が短縮されるので、効率的な横断検索ができるようになる。また、先行検索データベースの各検索結果に共通して含まれるＩＤが存在しない場合には、後続検索データベースの検索を行わずに検索を終了するので、無駄な検索を行わずに済むようになる。
【００３９】
なお、上で説明した例では、先行検索ＤＢ判断閾値を決定し、当該閾値に基づき先行検索データベースを決定していたが、例えばヒット件数によって先行検索候補配列内のデータベースをソートし、ヒット件数が下位所定順位内のデータベースを先行検索データベースとして特定するようにしてもよい。また、例えば、先行検索候補配列に先行検索ＤＢ判断閾値以下となるヒット件数が存在しなかった場合に、ヒット件数によって先行検索候補配列内のデータベースをソートし、ヒット件数が下位所定順位内のデータベースを先行検索データベースとして特定するようにしてもよい。
【００４０】
次に、図１３を用いて統合ＩＤ管理装置１におけるキャッシュコントローラ１９の処理を説明する。なお、上で説明したように、ステップＳ３３、ステップＳ４７、ステップＳ５３及びステップＳ６１において、検索部１８は検索条件をキャッシュコントローラ１９に送信する。そして、キャッシュコントローラ１９は、検索部１８から検索条件を受信し（図１３：ステップＳ７１）、受信した検索条件を含むレコードがキャッシュ１４で管理されているか判断する（ステップＳ７３）。受信した検索条件を含むレコードがキャッシュ１４で管理されている場合（ステップＳ７３：Ｙｅｓルート）、キャッシュコントローラ１９は、キャッシュ１４及び検索結果管理テーブルの各々において、受信した検索条件を含むレコードの検索回数を１インクリメントする（ステップＳ７５）。
【００４１】
そして、キャッシュコントローラ１９は、検索条件と共にヒット件数を受信したか判断する（ステップＳ７７）。なお、上で説明したように、ステップＳ３３及びステップＳ６１においては、検索条件と共にヒット件数が検索部１８からキャッシュコントローラ１９に送信される。検索条件と共にヒット件数を受信した場合（ステップＳ７７：Ｙｅｓルート）、キャッシュコントローラ１９は、キャッシュ１４及び検索結果管理テーブルの各々において、受信したヒット件数を、受信した検索条件を含むレコードに上書き登録する（ステップＳ７９）。そして、本処理を終了する。一方、検索条件と共にヒット件数を受信していなければ（ステップＳ７７：Ｎｏルート）、ステップＳ７９の処理をスキップし、本処理を終了する。
【００４２】
また、ステップＳ７３において、受信した検索条件を含むレコードがキャッシュ１４で管理されていないと判断された場合（ステップＳ７３：Ｎｏルート）、キャッシュコントローラ１９は、検索結果管理テーブルにおいて、受信した検索条件を含むレコードの検索回数を１インクリメントする（ステップＳ８１）。そして、キャッシュコントローラ１９は、検索条件と共にヒット件数を受信したか判断する（ステップＳ８３）。検索条件と共にヒット件数を受信した場合（ステップＳ８３：Ｙｅｓルート）、キャッシュコントローラ１９は、検索結果管理テーブルにおいて、受信したヒット件数を、受信した検索条件を含むレコードに上書き登録する（ステップＳ８５）。その後、ステップＳ８７の処理に移行する。一方、検索条件と共にヒット件数を受信していなければ（ステップＳ８３：Ｎｏルート）、ステップＳ８５の処理をスキップし、ステップＳ８７の処理に移行する。
【００４３】
そして、キャッシュコントローラ１９は、キャッシュ１４で管理されているレコードに含まれる検索回数から最小検索回数を特定する（ステップＳ８７）。そして、キャッシュコントローラ１９は、受信したヒット件数が最小検索回数より大きいか判断する（ステップＳ８９）。受信したヒット件数が最小検索回数より大きい場合（ステップＳ８９：Ｙｅｓルート）、キャッシュコントローラ１９は、最小検索回数を持つレコードの代わりに、受信した検索条件を含むレコードをキャッシュ１４に登録する（ステップＳ９１）。そして、本処理を終了する。一方、受信したヒット件数が最小検索回数以下の場合（ステップＳ８９：Ｎｏルート）、ステップＳ９１の処理をスキップし、本処理を終了する。
【００４４】
以上のような処理を実施することにより、先行検索データベースを決定する際に、前回の検索結果におけるヒット件数を用いることができるようになる。また、検索に用いられる頻度が高い検索条件を含むレコードはキャッシュ１４に登録されるので、処理の高速化を図ることができるようになる。
【００４５】
図１４乃至図１７に、本実施の形態におけるシーケンス例を示す。なお、図１４及び図１５は、データベースＡが先行検索データベースとして決定され、データベースＡの検索結果を追加してデータベースＢ及びＣを検索する場合のシーケンス例を示す。まず、統合ＩＤ管理装置１は、複数の検索条件を含む検索要求をクライアントから受け付ける（図１４：ステップ（１））。なお、本ステップは、図８に示したステップＳ１に相当する。
【００４６】
そして、統合ＩＤ管理装置１は、検索要求に係る検索条件をデータベース毎の検索条件に分割する（ステップ（２））。本ステップは、図８に示したステップＳ３に相当する。そして、統合ＩＤ管理装置１は、ヒット件数に基づき先行検索データベースを決定する（ステップ（３））。本ステップは、図８及び図１０に示したステップＳ５乃至ステップＳ２５に相当する。なお、ここでは、データベースＡが先行検索データベースとして決定されたものとする。従って、検索順序は、「データベースＡ」、「データベースＢ及びＣ」の順となる。
【００４７】
そして、統合ＩＤ管理装置１は、データベースＡに対する検索条件を用いてデータベースＡの検索（先行検索）を実行し（ステップ（４））、検索結果を取得する（ステップ（５））。これらのステップは、図１０に示したステップＳ２９及びステップＳ３１に相当する。そして、統合ＩＤ管理装置１は、データベースＡに対する検索条件についての検索回数とヒット件数とを更新する（ステップ（６））。本ステップは、図１０に示したステップＳ３３に相当する。その後、図１５に移行する。
【００４８】
図１５の説明に移行して、統合ＩＤ管理装置１は、先行検索で得られたＩＤを、データベースＢに対する検索条件とデータベースＣに対する検索条件との各々に追加して新たな検索条件を生成する（図１５：ステップ（７））。本ステップは、図１１に示したステップＳ４１及びステップＳ４３に相当する。そして、統合ＩＤ管理装置１は、生成した検索条件を用いてデータベースＢ及びＣの検索（後続検索）を実行し（ステップ（８））、検索結果を取得する（ステップ（９））。すなわち、先行検索で得られたＩＤで絞り込んだ形でデータベースＢ及びＣの各々を検索する。なお、これらのステップは、図１１に示したステップＳ４５に相当する。そして、データベースＢ及びＣの各々に対する検索条件についての検索回数を更新する（ステップ（１０））。本ステップは、図１１に示したステップＳ４７に相当する。
【００４９】
そして、統合ＩＤ管理装置１は、データベースＢ及びＣの検索結果をマージし、最終的な検索結果を格納する（ステップ（１１））。本ステップは、図１１に示したステップＳ５１に相当する。そして、統合ＩＤ管理装置１は、最終的な検索結果を検索要求の要求元に出力し（ステップ（１２））、処理を終了する。本ステップは、図１１に示したステップＳ５５に相当する。
【００５０】
また、図１６及び図１７は、データベースＡ及びＢが先行検索データベースとして決定され、データベースＡ及びＢの各検索結果に共通して含まれるＩＤが存在しなかった場合のシーケンス例を示す。まず、統合ＩＤ管理装置１は、複数の検索条件を含む検索要求をクライアントから受け付ける（図１６：ステップ（２１））。なお、本ステップは、図８に示したステップＳ１に相当する。
【００５１】
そして、統合ＩＤ管理装置１は、検索要求に係る検索条件をデータベース毎の検索条件に分割する（ステップ（２２））。本ステップは、図８に示したステップＳ３に相当する。そして、統合ＩＤ管理装置１は、ヒット件数に基づき先行検索データベースを決定する（ステップ（２３））。本ステップは、図８及び図１０に示したステップＳ５乃至ステップＳ２５に相当する。なお、ここでは、データベースＡ及びＢが先行検索データベースとして決定されたものとする。従って、検索順序は、「データベースＡ及びＢ」、「データベースＣ」の順となる。
【００５２】
そして、統合ＩＤ管理装置１は、データベースＡ及びＢの各々に対する検索条件を用いてデータベースＡ及びＢの検索（先行検索）を実行し（ステップ（２４））、検索結果を取得する（ステップ（２５））。これらのステップは、図１０に示したステップＳ２９及びステップＳ３１に相当する。そして、統合ＩＤ管理装置１は、データベースＡ及びＢの各々に対する検索条件についての検索回数とヒット件数とを更新する（ステップ（２６））。本ステップは、図１０に示したステップＳ３３に相当する。その後、図１７に移行する。
【００５３】
図１７の説明に移行して、統合ＩＤ管理装置１は、データベースＡ及びＢの検索結果をマージする（図１７：ステップ（２７））。本ステップは、図１１に示したステップＳ３７に相当する。なお、ここでは、データベースＡ及びＢの各検索結果に共通して含まれるＩＤが存在しなかったものとする。
【００５４】
そして、統合ＩＤ管理装置１は、データベースＣに対する検索条件についての検索回数を更新する（ステップ（２８））。なお、データベースＡ及びＢの各検索結果に共通して含まれるＩＤが存在しなかった場合にはデータベースＣの検索は行わないが、データベースＣに対する検索条件は検索要求で指定されているので、データベースＣに対する検索条件についての検索回数を更新する。本ステップは、図１１に示したステップＳ５３に相当する。そして、統合ＩＤ管理装置１は、検索結果（該当するデータなし）を検索要求の要求元に出力し（ステップ（２９））、処理を終了する。本ステップは、図１１に示したステップＳ５５に相当する。
【００５５】
以上のように、本実施の形態によれば、複数のデータベースに対する横断的な検索を効率的に行うことができるようになる。
【００５６】
［実施の形態２］
上で説明した第１の実施の形態では、統合ＩＤ管理装置１が、各データベースに対して検索要求を出力することにより、検索結果を取得するようになっていたが、データベースの中には、例えばプレゼンスシステムのデータベースのように検索機能を持たないものもある。このようなデータベースに対しては、検索条件（すなわち、属性名と属性値）を指定した検索を行うことができないため、全てのＩＤのデータを取得し、統合ＩＤ管理装置１において、検索条件を満たすＩＤを特定する必要がある。第２の実施の形態では、検索機能を持たないデータベースが含まれている場合であっても複数のデータベースに対する横断的な検索を効率的に行うことができるようにする。以下、図１８乃至図２８を用いて、第２の実施の形態を説明する。
【００５７】
図１８に、第２の実施の形態に係るシステム構成図を示す。本実施の形態における主要な処理を実施する統合ＩＤ管理装置１ｂは、統合ＩＤデータ（図２）を利用する複数のクライアント（図１８では、クライアントＡ乃至Ｃ）と、複数のデータベース（図１８では、データベースＡ、Ｂ及びＤ）とに接続されている。なお、データベースＤは、プレゼンスサーバで管理されているデータベース（以下、プレゼンスデータベースと呼ぶ）であるものとする。
【００５８】
図１９に、本実施の形態における統合ＩＤ管理装置１ｂの機能ブロック図を示す。統合ＩＤ管理装置１ｂは、入力部１１と、属性管理テーブル格納部１２と、分割処理部１３と、キャッシュ１４と、検索結果管理テーブル格納部１５と、先行検索ＤＢ決定部１６と、配列データ格納部１７と、検索部１８と、キャッシュコントローラ１９と、検索結果格納部２０と、出力部２１と、検索結果管理テーブル更新部２２とを有する。すなわち、統合ＩＤ管理装置１ｂは、第１の実施の形態における統合ＩＤ管理装置１に対して検索結果管理テーブル更新部２２を追加したものである。検索結果管理テーブル更新部２２は、プレゼンスサーバからのプレゼンス更新通知（詳細は後述）に従って、検索結果管理テーブルの更新処理を実施する。
【００５９】
また、本実施の形態では、検索結果管理テーブル格納部１５には、図２０に示すような検索結果管理テーブルが格納される。図２０の例では、検索結果管理テーブルには、検索対象データベース（ＤＢ）の列と、検索条件の列と、ヒット件数の列と、検索回数の列と、該当ＩＤの列とが含まれる。すなわち、本実施の形態における検索結果管理テーブルは、第１の実施の形態における検索結果管理テーブルに対して該当ＩＤの列を追加したものである。該当ＩＤの列には、検索対象データベースがプレゼンスデータベースの場合に、そのレコードにおける属性名と属性値とを満たすＩＤであって、プレゼンスサーバから通知されたＩＤが登録される。なお、図２１及び図２２を用いて、検索結果管理テーブルの更新処理について説明しておく。
【００６０】
例えばプレゼンスデータベースに変更が生じると、プレゼンス更新通知がプレゼンスサーバから統合ＩＤ管理装置１ｂに送信される。プレゼンス更新通知には、ＩＤと、当該ＩＤに関連付けられているデータの属性名及び属性値のセットとが含まれる。なお、プレゼンス更新通知には、属性名及び属性値のセットが複数含まれる場合もある。
【００６１】
まず、統合ＩＤ管理装置１ｂの入力部１１が、プレゼンスサーバからのプレゼンス更新通知を受信し（図２１：ステップＳ１０１）、検索結果管理テーブル更新部２２に出力する。そして、検索結果管理テーブル更新部２２は、入力部１１からプレゼンス更新通知を受信すると、プレゼンス更新通知に係るＩＤを含むレコードを検索結果管理テーブルから抽出する（ステップＳ１０３）。そして、検索結果管理テーブル更新部２２は、抽出したレコードのうち未処理のレコードを特定する（ステップＳ１０５）。
【００６２】
そして、検索結果管理テーブル更新部２２は、プレゼンス更新通知に含まれる、属性名及び属性値のセットのいずれかが、特定されたレコードに含まれる検索条件と一致するか判断する（ステップＳ１０７）。プレゼンス更新通知に含まれる、属性名及び属性値のセットのいずれかが、特定されたレコードに含まれる検索条件と一致する場合（ステップＳ１０７：Ｙｅｓルート）、ステップＳ１１１の処理に移行する。
【００６３】
一方、プレゼンス更新通知に含まれる、属性名及び属性値のセットのいずれもが、特定されたレコードに含まれる検索条件と一致しない場合（ステップＳ１０７：Ｎｏルート）、検索結果管理テーブル更新部２２は、プレゼンス更新通知に係るＩＤを特定されたレコードから削除し、特定されたレコードにおけるヒット件数を１デクリメントする（ステップＳ１０９）。なお、本ステップは、例えばある属性の属性値に変更が生じた場合において、変更前の属性値に関連するレコードからＩＤを削除するための処理である。そして、ステップＳ１１１の処理に移行する。
【００６４】
そして、検索結果管理テーブル更新部２２は、抽出した全てのレコードについて処理が完了したか判断する（ステップＳ１１１）。抽出した全てのレコードについて処理が完了していなければ（ステップＳ１１１：Ｎｏルート）、ステップＳ１０５に戻り、上で述べた処理を繰り返す。一方、抽出した全てのレコードについて処理が完了した場合（ステップＳ１１１：Ｙｅｓルート）、端子Ｅを介してステップＳ１１３（図２２）の処理に移行する。
【００６５】
図２２の説明に移行して、端子Ｅの後、検索結果管理テーブル更新部２２は、プレゼンス更新通知に含まれる、属性名及び属性値のセットのうち未処理のセットを特定する（図２２：ステップＳ１１３）。そして、検索結果管理テーブル更新部２２は、検索結果管理テーブルにおいて、特定されたセットに係る属性名と属性値とを検索条件として含むレコードが存在するか判断する（ステップＳ１１５）。検索結果管理テーブルにおいて、特定されたセットに係る属性名と属性値とを検索条件として含むレコードが存在しないと判断された場合（ステップＳ１１５：Ｎｏルート）、検索結果管理テーブル更新部２２は、特定されたセットに係る属性名と属性値とを検索条件として含むレコードを検索結果管理テーブルに追加し、プレゼンス更新通知に係るＩＤを該当ＩＤの列に登録してヒット件数を１に設定する（ステップＳ１１７）。なお、本ステップは、属性名と属性値の新しい組み合わせが通知された場合において、新たなレコードを検索結果管理テーブルに追加するための処理である。その後、ステップＳ１２３の処理に移行する。
【００６６】
一方、検索結果管理テーブルにおいて、特定されたセットに係る属性名と属性値とを検索条件として含むレコードが存在する場合（ステップＳ１１５：Ｙｅｓルート）、検索結果管理テーブル更新部２２は、該当するレコードの該当ＩＤの列に、プレゼンス更新通知に係るＩＤが登録されているか判断する（ステップＳ１１９）。該当するレコードの該当ＩＤの列に、プレゼンス更新通知に係るＩＤが登録されている場合（ステップＳ１１９：Ｙｅｓルート）、ステップＳ１２３の処理に移行する。
【００６７】
一方、該当するレコードの該当ＩＤの列に、プレゼンス更新通知に係るＩＤが未登録の場合（ステップＳ１１９：Ｎｏルート）、検索結果管理テーブル更新部２２は、該当するレコードの該当ＩＤの列に、プレゼンス更新通知に係るＩＤを登録し、ヒット件数を１インクリメントする（ステップＳ１２１）。なお、本ステップは、例えばある属性の属性値に変更が生じた場合において、変更後の属性値に関連するレコードにＩＤを追加するための処理である。その後、ステップＳ１２３の処理に移行する。
【００６８】
そして、検索結果管理テーブル更新部２２は、プレゼンス更新通知に含まれる全てのセットについて処理が完了したか判断する（ステップＳ１２３）。プレゼンス更新通知に含まれる全てのセットについて処理が完了していなければ（ステップＳ１２３：Ｎｏルート）、ステップＳ１１３に戻り、上で述べた処理を繰り返す。一方、プレゼンス更新通知に含まれる全てのセットについて処理が完了した場合（ステップＳ１２３：Ｙｅｓルート）、本処理を終了する。
【００６９】
以上のような処理を実施することにより、プレゼンス更新通知に従って、検索結果管理テーブルを適切に更新することができる。
【００７０】
次に、図２３乃至図２８を用いて、本実施の形態における統合ＩＤ管理装置１ｂの処理を説明する。まず、統合ＩＤ管理装置１ｂの入力部１１が、クライアントから、属性名と属性値との組み合わせである検索条件を複数含むＡＮＤ検索要求を受け付ける（図２３：ステップＳ１３１）。そして、入力部１１は、ＡＮＤ検索要求を分割処理部１３に出力する。
【００７１】
そして、分割処理部１３は、入力部１１からＡＮＤ検索要求を受信し、ＡＮＤ検索要求に係る検索条件を、属性管理テーブルに基づきデータベース毎の検索条件に分割する（ステップＳ１３３）。なお、分割した検索条件は、検索対象データベースの識別情報に対応付けて一旦記憶装置に格納される。
【００７２】
そして、分割処理部１３は、ステップＳ１３３において分割された検索条件の中に、プレゼンスデータベースに対する検索条件であって複数属性の指定を含む検索条件が存在するか判断する（ステップＳ１３５）。ステップＳ１３３において分割された検索条件の中に、プレゼンスデータベースに対する検索条件であって複数属性の指定を含む検索条件が存在する場合（ステップＳ１３５：Ｙｅｓルート）、分割処理部１３は、該当する検索条件を属性毎の検索条件に分割する（ステップＳ１３７）。例えば、ステップＳ１３３において分割された検索条件の中に、プレゼンスデータベースに対する検索条件「（属性Ｘ＝ｕｕｕ）ＡＮＤ（属性Ｙ＝ｏｏｏ）」が存在した場合には、ステップＳ１３７の処理により、この検索条件は、「属性Ｘ＝ｕｕｕ」と「属性Ｙ＝ｏｏｏ」とに分割される。
【００７３】
一方、ステップＳ１３３において分割された検索条件の中に、プレゼンスデータベースに対する検索条件であって複数属性の指定を含む検索条件が存在しない場合（ステップＳ１３５：Ｎｏルート）、ステップＳ１３７の処理をスキップし、ステップＳ１３９の処理に移行する。
【００７４】
そして、分割処理部１３は、分割した検索条件のうち未処理の検索条件を特定する（ステップＳ１３９）。そして、分割処理部１３は、特定された検索条件に対応するヒット件数がキャッシュ１４又は検索結果管理テーブルに登録されているか判断する（ステップＳ１４１）。特定された検索条件に対応するヒット件数がキャッシュ１４又は検索結果管理テーブルに登録されている場合（ステップＳ１４１：Ｙｅｓルート）、分割処理部１３は、特定された検索条件と検索対象データベースの識別情報とヒット件数とを配列データ格納部１７における先行検索候補配列に格納する（ステップＳ１４３）。その後、ステップＳ１５１の処理に移行する。
【００７５】
一方、特定された検索条件に対応するヒット件数がキャッシュ１４及び検索結果管理テーブルに未登録の場合（ステップＳ１４１：Ｎｏルート）、分割処理部１３は、特定された検索条件がプレゼンスデータベースに対する検索条件であるか判断する（ステップＳ１４５）。特定された検索条件がプレゼンスデータベースに対する検索条件であると判断された場合（ステップＳ１４５：Ｙｅｓルート）、分割処理部１３は、特定された検索条件とプレゼンスデータベースの識別情報とを配列データ格納部１７におけるプレゼンスＤＢ配列に格納する（ステップＳ１４７）。なお、プレゼンスＤＢ配列は、図７（ｂ）に示したデータ構造を有する。その後、ステップＳ１５１の処理に移行する。
【００７６】
一方、特定された検索条件がプレゼンスデータベースに対する検索条件ではないと判断された場合（ステップＳ１４５：Ｎｏルート）、分割処理部１３は、特定された検索条件と検索対象データベースの識別情報とを配列データ格納部１７における後続検索ＤＢ配列に格納する（ステップＳ１４９）。なお、特定された検索条件を含むレコードが検索結果管理テーブルに存在しない場合には、分割処理部１３は、特定された検索条件と検索対象データベースの識別情報とを含むレコードを検索結果管理テーブルに追加し、検索回数を０に設定する。その後、ステップＳ１５１の処理に移行する。
【００７７】
そして、分割処理部１３は、分割した全ての検索条件について処理が完了したか判断する（ステップＳ１５１）。分割した全ての検索条件について処理が完了していなければ（ステップＳ１５１：Ｎｏルート）、ステップＳ１３９に戻り、上で述べた処理を繰り返す。一方、分割した全ての検索条件について処理が完了した場合（ステップＳ１５１：Ｙｅｓルート）、分割処理部１３は、検索条件の分割が完了した旨を先行検索ＤＢ決定部１６に通知する。なお、処理は端子Ｆを介してステップＳ１５３（図２４）に移行する。
【００７８】
図２４の説明に移行して、端子Ｆの後、先行検索ＤＢ決定部１６は、分割処理部１３から検索条件の分割が完了した旨の通知を受信すると、先行検索候補配列においてヒット件数の最大値を特定し、当該最大値から先行検索ＤＢ判断閾値を決定する（図２４：ステップＳ１５３）。
【００７９】
そして、先行検索ＤＢ決定部１６は、先行検索候補配列から未処理の検索条件を特定する（ステップＳ１５５）。そして、先行検索ＤＢ決定部１６は、特定された検索条件に対応するヒット件数が先行検索ＤＢ判断閾値以下であるか判断する（ステップＳ１５７）。特定された検索条件に対応するヒット件数が先行検索ＤＢ判断閾値以下の場合（ステップＳ１５７：Ｙｅｓルート）、先行検索ＤＢ決定部１６は、特定された検索条件と検索対象データベースの識別情報とを配列データ格納部１７における先行検索ＤＢ配列に格納する（ステップＳ１５９）。その後、ステップＳ１６３の処理に移行する。
【００８０】
一方、特定された検索条件に対応するヒット件数が先行検索ＤＢ判断閾値より大きい場合（ステップＳ１５７：Ｎｏルート）、先行検索ＤＢ決定部１６は、特定された検索条件と検索対象データベースの識別情報とを配列データ格納部１７における後続検索ＤＢ配列に格納する（ステップＳ１６１）。その後、ステップＳ１６３の処理に移行する。
【００８１】
そして、先行検索ＤＢ決定部１６は、先行検索候補配列内の全ての検索条件について処理が完了したか判断する（ステップＳ１６３）。先行検索候補配列内の全ての検索条件について処理が完了していなければ（ステップＳ１６３：Ｎｏルート）、ステップＳ１５５に戻り、上で述べた処理を繰り返す。一方、先行検索候補配列内の全ての検索条件について処理が完了した場合（ステップＳ１６３：Ｙｅｓルート）、先行検索ＤＢ決定部１６は、先行検索ＤＢ決定完了通知を検索部１８に出力する。
【００８２】
そして、検索部１８は、先行検索ＤＢ決定部１６から先行検索ＤＢ決定完了通知を受信すると、先行検索ＤＢ配列に検索条件が格納されているか判断する（ステップＳ１６５）。先行検索ＤＢ配列に検索条件が格納されていないと判断された場合（ステップＳ１６５：Ｎｏルート）、端子Ｋを介して、ステップＳ２２３（図２８）の処理に移行する。
【００８３】
一方、先行検索ＤＢ配列に検索条件が格納されている場合（ステップＳ１６５：Ｙｅｓルート）、端子Ｇを介してステップＳ１６７（図２５）の処理に移行する。
【００８４】
図２５の説明に移行して、端子Ｇの後、検索部１８は、先行検索ＤＢ配列から未処理の検索条件を特定する（図２５：ステップＳ１６７）。そして、検索部１８は、特定された検索条件がプレゼンスデータベースに対する検索条件であるか判断する（ステップＳ１６９）。特定された検索条件がプレゼンスデータベースに対する検索条件であると判断された場合（ステップＳ１６９：Ｙｅｓルート）、検索部１８は、キャッシュ１４又は検索結果管理テーブルにおいて特定された検索条件を含むレコードを特定し、特定したレコードにおける該当ＩＤの列からＩＤを抽出し、検索結果として検索結果格納部２０に格納する（ステップＳ１７１）。この際、プレゼンスデータベースの識別情報に対応付けて格納する。その後、ステップＳ１７５の処理に移行する。
【００８５】
一方、特定された検索条件がプレゼンスデータベースに対する検索条件ではないと判断された場合（ステップＳ１６９：Ｎｏルート）、検索部１８は、特定された検索条件を用いて検索対象となる先行検索データベースの検索を実行する（ステップＳ１７３）。例えば、検索部１８が、特定された検索条件を含む検索要求を先行検索データベースに出力する。そして、検索部１８は、先行検索データベースからの検索結果を当該先行検索データベースの識別情報に対応付けて検索結果格納部２０に格納する。その後、ステップＳ１７５の処理に移行する。
【００８６】
そして、検索部１８は、特定された検索条件と検索結果におけるヒット件数とをキャッシュコントローラ１９に出力する（ステップＳ１７５）。なお、特定された検索条件がプレゼンスデータベースに対する検索条件の場合には、ステップＳ１７１において抽出したＩＤの数をヒット件数としてキャッシュコントローラ１９に出力する。
【００８７】
そして、検索部１８は、先行検索ＤＢ配列内の全ての検索条件について処理が完了したか判断する（ステップＳ１７７）。先行検索ＤＢ配列内の全ての検索条件について処理が完了していなければ（ステップＳ１７７：Ｎｏルート）、ステップＳ１６７に戻り、上で述べた処理を繰り返す。一方、先行検索ＤＢ配列内の全ての検索条件について処理が完了した場合（ステップＳ１７７：Ｙｅｓルート）、端子Ｇの後、検索部１８は、検索結果格納部２０に格納されている、先行検索データベースの検索結果をマージする（ステップＳ１７９）。その後、端子Ｈを介してステップＳ１８１（図２６）の処理に移行する。
【００８８】
図２６の説明に移行して、端子Ｈの後、検索部１８は、先行検索データベースの各検索結果に共通して含まれるＩＤが存在するか判断する（図２６：ステップＳ１８１）。先行検索データベースの各検索結果に共通して含まれるＩＤが存在しないと判断された場合（ステップＳ１８１：Ｎｏルート）、検索部１８は、後続検索ＤＢ配列に格納されている検索条件をキャッシュコントローラ１９に出力する（ステップＳ１８３）。なお、先行検索データベースの各検索結果に共通して含まれるＩＤが存在しない場合には後続検索データベースの検索を行うことなく、検索を終了することになるが、後続検索ＤＢ配列に格納されている各検索条件については、検索要求で指定されているので、キャッシュ１４及び検索結果管理テーブルにおける検索回数を１インクリメントするようにする。そして、検索部１８は、検索結果を出力するよう出力部２１に要求する。なお、処理は端子Ｊを介してステップＳ２２１（図２７）に移行する。
【００８９】
一方、先行検索データベースの各検索結果に共通して含まれるＩＤが存在すると判断された場合（ステップＳ１８１：Ｙｅｓルート）、検索部１８は、後続検索データベースの検索を開始する。
【００９０】
具体的には、まず、検索部１８は、後続検索ＤＢ配列から未処理の検索条件を特定する（ステップＳ１８５）。そして、検索部１８は、特定された検索条件がプレゼンスデータベースに対する検索条件であるか判断する（ステップＳ１８７）。特定された検索条件がプレゼンスデータベースに対する検索条件であると判断された場合（ステップＳ１８７：Ｙｅｓルート）、検索部１８は、キャッシュ１４又は検索結果管理テーブルにおいて、特定された検索条件を含むレコードを特定し、特定したレコードにおける該当ＩＤの列からＩＤを抽出する（ステップＳ１８９）。そして、検索部１８は、抽出したＩＤのうち、先行検索で得られたＩＤと共通するＩＤを検索結果として検索結果格納部２０に格納する（ステップＳ１９１）。この際、プレゼンスデータベースの識別情報に対応付けて格納する。その後、ステップＳ１９７の処理に移行する。
【００９１】
一方、特定された検索条件がプレゼンスデータベースに対する検索条件ではないと判断された場合（ステップＳ１８７：Ｎｏルート）、検索部１８は、先行検索で得られたＩＤを特定された検索条件に追加して新たな検索条件を生成し（ステップＳ１９３）、生成した新たな検索条件を用いて検索対象となる後続検索データベースの検索を実行する（ステップＳ１９５）。例えば、検索部１８が、特定された検索条件と先行検索で得られたＩＤとを含む検索要求を後続検索データベースに出力する。そして、検索部１８は、後続検索データベースからの検索結果を当該後続検索データベースの識別情報に対応付けて検索結果格納部２０に格納する。その後、ステップＳ１９７の処理に移行する。
【００９２】
そして、検索部１８は、特定された検索条件をキャッシュコントローラ１９に出力する（ステップＳ１９７）。なお、先行検索で得られたＩＤで絞り込んだ形で後続検索を行っているため、ここでは、キャッシュ１４及び検索結果管理テーブルにおける、特定された検索条件のヒット件数を更新しないようにする。そのため、ステップＳ１９７では、検索部１８は、検索結果におけるヒット件数をキャッシュコントローラ１９に送信しない。
【００９３】
そして、検索部１８は、後続検索ＤＢ配列内の全ての検索条件について処理が完了したか判断する（ステップＳ１９９）。後続検索ＤＢ配列内の全ての検索条件について処理が完了していなければ（ステップＳ１９９：Ｎｏルート）、ステップＳ１８５に戻り、上で述べた処理を繰り返す。
【００９４】
一方、後続検索ＤＢ配列内の全ての検索条件について処理が完了した場合（ステップＳ１９９：Ｙｅｓルート）、検索部１８は、検索結果格納部２０に格納されている、後続検索データベースの検索結果をマージする（ステップＳ２０１）。その後、端子Ｉを介してステップＳ２０３（図２７）の処理に移行する。
【００９５】
図２７の説明に移行して、端子Ｉの後、検索部１８は、後続検索データベースの各検索結果に共通して含まれるＩＤが存在するか判断する（図２７：ステップＳ２０３）。後続検索データベースの各検索結果に共通して含まれるＩＤが存在しないと判断された場合（ステップＳ２０３：Ｎｏルート）、検索部１８は、プレゼンスＤＢ配列に格納されている検索条件をキャッシュコントローラ１９に出力する（ステップＳ２０５）。なお、後続検索データベースの各検索結果に共通して含まれるＩＤが存在しない場合には検索を終了することになるが、プレゼンスＤＢ配列に格納されている各検索条件については、キャッシュ１４及び検索結果管理テーブルにおける検索回数を１インクリメントするようにする。そして、検索部１８は、検索結果を出力するよう出力部２１に要求する。なお、処理はステップＳ２２１に移行する。
【００９６】
一方、後続検索データベースの各検索結果に共通して含まれるＩＤが存在すると判断された場合（ステップＳ２０３：Ｙｅｓルート）、検索部１８は、プレゼンスＤＢ配列に検索条件が格納されているか判断する（ステップＳ２０７）。プレゼンスＤＢ配列に検索条件が格納されていないと判断された場合（ステップＳ２０７：Ｎｏルート）、検索部１８は、検索結果を出力するよう出力部２１に要求する。なお、処理はステップＳ２２１に移行する。
【００９７】
一方、プレゼンスＤＢ配列に検索条件が格納されていると判断された場合（Ｓ２０７：Ｙｅｓルート）、検索部１８は、プレゼンスＤＢ配列から未処理のプレゼンスデータベースを特定する（ステップＳ２０９）。そして、検索部１８は、特定したデータベースから、後続検索で得られたＩＤに関するデータを取得し、一旦記憶装置に格納する（ステップＳ２１１）。そして、検索部１８は、取得したデータに基づき、特定したプレゼンスＤＢに対する検索条件を満たすＩＤを特定し、検索結果として検索結果格納部２０に格納する（ステップＳ２１３）。この際、プレゼンスデータベースの識別情報に対応付けて格納する。
【００９８】
そして、検索部１８は、特定したプレゼンスデータベースに対する検索条件をキャッシュコントローラ１９に出力する（ステップＳ２１５）。なお、後続検索で得られたＩＤで絞り込んだ形で検索を行っているため、ここでは、ヒット件数を更新しないようにする。
【００９９】
そして、検索部１８は、プレゼンスＤＢ配列内の全てのプレゼンスデータベースについて処理が完了したか判断する（ステップＳ２１７）。プレゼンスＤＢ配列内の全てのプレゼンスデータベースについて処理が完了していなければ（ステップＳ２１７：Ｎｏルート）、ステップＳ２０９に戻り、上で述べた処理を繰り返す。一方、プレゼンスＤＢ配列内の全てのプレゼンスデータベースについて処理が完了した場合（ステップＳ２１７：Ｙｅｓルート）、検索部１８は、検索結果格納部２０に格納されている、プレゼンスデータベースの検索結果をマージする（ステップＳ２１９）。そして、検索部１８は、検索結果を出力するよう出力部２１に要求する。
【０１００】
そして、出力部２１は、検索部１８からの要求に応じて、検索結果格納部２０に格納されている検索結果を、ＡＮＤ検索要求の要求元のクライアントに出力する（ステップＳ２２１）。そして、本処理を終了する。
【０１０１】
また、ステップＳ１６５（図２４）において、先行検索ＤＢ配列に検索条件が格納されていないと判断され、端子Ｋを介して図２８に移行してきた場合、検索部１８は、後続検索ＤＢ配列から未処理の検索条件を特定する（図２８：ステップＳ２２３）。そして、検索部１８は、特定された検索条件がプレゼンスデータベースに対する検索条件であるか判断する（ステップＳ２２５）。特定された検索条件がプレゼンスデータベースに対する検索条件であると判断された場合（ステップＳ２２５：Ｙｅｓルート）、検索部１８は、キャッシュ１４又は検索結果管理テーブルにおいて、特定された検索条件を含むレコードを特定し、特定したレコードにおける該当ＩＤの列からＩＤを抽出し、検索結果として検索結果格納部２０に格納する（ステップＳ２２７）。この際、プレゼンスデータベースの識別情報に対応付けて格納する。その後、ステップＳ２３１の処理に移行する。
【０１０２】
一方、特定された検索条件がプレゼンスデータベースに対する検索条件ではないと判断された場合（ステップＳ２２５：Ｎｏルート）、検索部１８は、特定された検索条件を用いて検索対象となる後続検索データベースの検索を実行する（ステップＳ２２９）。例えば、検索部１８が、特定された検索条件を含む検索要求を後続検索データベースに出力する。そして、検索部１８は、後続検索データベースからの検索結果を当該後続検索データベースの識別情報に対応付けて検索結果格納部２０に格納する。その後、ステップＳ２３１の処理に移行する。
【０１０３】
そして、検索部１８は、特定された検索条件と検索結果におけるヒット件数とをキャッシュコントローラ１９に出力する（ステップＳ２３１）。すなわち、キャッシュコントローラ１９にキャッシュ１４及び検索結果管理テーブルを更新させる。
【０１０４】
そして、検索部１８は、後続検索ＤＢ配列内の全ての検索条件について処理が完了したか判断する（ステップＳ２３３）。後続検索ＤＢ配列内の全ての検索条件について処理が完了していなければ（ステップＳ２３３：Ｎｏルート）、ステップＳ２２３に戻り、上で述べた処理を繰り返す。一方、後続検索ＤＢ配列内の全ての検索条件について処理が完了した場合（ステップＳ２３３：Ｙｅｓルート）、端子Ｌを介してステップＳ２０１（図２６）の処理に移行し、ステップＳ２０１乃至ステップＳ２２１の処理を実行した後、本処理を終了する。
【０１０５】
以上のような処理を実施することにより、検索機能を持たないデータベースが含まれている場合であっても複数のデータベースに対する横断的な検索を効率的に行うことができる。
【０１０６】
［実施の形態３］
上で説明した第２の実施の形態では、後続検索において、プレゼンスデータベースと、プレゼンスデータベース以外のデータベースとを並列に処理し、各検索結果をマージするような構成を採用していた。これに対し、本実施の形態では、後続検索ＤＢ配列の中にプレゼンスデータベースが存在する場合には、そのプレゼンスデータベースに対する検索条件を満たすＩＤを検索結果管理テーブルから抽出し、抽出したＩＤを検索条件に追加して、プレゼンスデータベース以外の後続検索データベースの検索を行う。すなわち、ＩＤをより絞り込んだ形でプレゼンスデータベース以外の後続検索データベースの検索行う。
【０１０７】
本実施の形態におけるシステム構成及び統合ＩＤ管理装置１ｂの構成は、第２の実施の形態のものと同じである。また、本実施の形態における統合ＩＤ管理装置１ｂの処理フローは、基本的には第２の実施の形態と同じであるが、図２６に示した処理の代わりに図２９及び図３０に示すような処理を実施し、図２８に示した処理の代わりに図３１に示すような処理を実施する。以下、これらの処理について説明する。
【０１０８】
まず、図２９及び図３０の処理フローについて説明する。なお、ここでは、第２の実施の形態で説明したステップＳ１３１乃至ステップＳ１７９（図２３乃至図２５）の処理を実施した後、端子Ｈを介して図２９に移行してきたものとする。図２９において、端子Ｈの後、検索部１８は、先行検索データベースの各検索結果に共通して含まれるＩＤが存在するか判断する（図２９：ステップＳ２４１）。先行検索データベースの各検索結果に共通して含まれるＩＤが存在しないと判断された場合（ステップＳ２４１：Ｎｏルート）、検索部１８は、後続検索ＤＢ配列に格納されている検索条件をキャッシュコントローラ１９に出力する（ステップＳ２４３）。なお、先行検索データベースの各検索結果に共通して含まれるＩＤが存在しない場合には後続検索データベースの検索を行うことなく、検索を終了することになるが、後続検索ＤＢ配列に格納されている各検索条件については、検索要求で指定されているので、キャッシュ１４及び検索結果管理テーブルにおける検索回数を１インクリメントするようにする。そして、検索部１８は、検索結果を出力するよう出力部２１に要求する。なお、処理は端子Ｊを介してステップＳ２２１（図２７）に移行する。
【０１０９】
一方、先行検索データベースの各検索結果に共通して含まれるＩＤが存在すると判断された場合（ステップＳ２４１：Ｙｅｓルート）、検索部１８は、後続検索ＤＢ配列から、プレゼンスＤＢに対する検索条件を抽出する（ステップＳ２４５）。この際、後続検索ＤＢ配列から、プレゼンスＤＢに対する検索条件は削除しておく。なお、プレゼンスＤＢに対する検索条件が複数格納されている場合には全て抽出する。そして、検索部１８は、抽出した検索条件をキャッシュコントローラ１９に出力する（ステップＳ２４７）。すなわち、抽出した検索条件について、キャッシュコントローラ１９に検索回数を１インクリメントさせる。
【０１１０】
そして、検索部１８は、キャッシュ１４又は検索結果管理テーブルにおいて、抽出した検索条件を含むレコードを特定し、特定したレコードにおける該当ＩＤの列からＩＤを抽出する（ステップＳ２４９）。なお、ステップＳ２４５において複数の検索条件が抽出された場合には、各検索条件について処理を実施する。そして、検索部１８は、抽出したＩＤと先行検索で得られたＩＤとをマージする（ステップＳ２５１）。
【０１１１】
そして、検索部１８は、抽出したＩＤと先行検索で得られたＩＤとで共通するＩＤ（以下、共通ＩＤ）が存在するか判断する（ステップＳ２５３）。共通ＩＤが存在しないと判断された場合（ステップＳ２５３：Ｎｏルート）、ステップＳ２４３の処理に移行し、ステップＳ２４３の処理を実施した後、端子Ｊを介してステップＳ２２１（図２７）に移行する。
【０１１２】
一方、共通ＩＤが存在すると判断された場合（ステップＳ２５３：Ｙｅｓルート）、端子Ｍを介してステップＳ２５５（図３０）の処理に移行する。
【０１１３】
図３０の説明に移行して、端子Ｍの後、検索部１８は、後続検索ＤＢ配列から未処理の検索条件を特定する（図３０：ステップＳ２５５）。なお、この時点では、後続検索ＤＢ配列に格納されている検索条件は、プレゼンスデータベース以外のデータベースに対する検索条件のみとなっている。そして、検索部１８は、共通ＩＤを特定された検索条件に追加して新たな検索条件を生成し（ステップＳ２５７）、生成した新たな検索条件を用いて検索対象となる後続検索データベースの検索を実行する（ステップＳ２５９）。例えば、検索部１８が、特定された検索条件と先行検索で得られたＩＤと共通ＩＤとを含む検索要求を後続検索データベースに出力する。すなわち、第２の実施の形態に比べ、共通ＩＤでさらに絞り込んだ形で後続検索データベースを検索する。そして、検索部１８は、後続検索データベースからの検索結果を当該後続検索データベースの識別情報に対応付けて検索結果格納部２０に格納する。
【０１１４】
そして、検索部１８は、特定された検索条件をキャッシュコントローラ１９に出力する（ステップＳ２６１）。なお、先行検索で得られたＩＤと共通ＩＤとで絞り込んだ形で後続検索を行っているため、ここでは、キャッシュ１４及び検索結果管理テーブルにおける、特定された検索条件のヒット件数を更新しないようにする。
【０１１５】
そして、検索部１８は、後続検索ＤＢ配列内の全ての検索条件について処理が完了したか判断する（ステップＳ２６３）。後続検索ＤＢ配列内の全ての検索条件について処理が完了していなければ（ステップＳ２６３：Ｎｏルート）、ステップＳ２５５に戻り、上で述べた処理を繰り返す。
【０１１６】
一方、後続検索ＤＢ配列内の全ての検索条件について処理が完了した場合（ステップＳ２６３：Ｙｅｓルート）、検索部１８は、検索結果格納部２０に格納されている、後続検索データベースの検索結果をマージする（ステップＳ２６５）。その後、端子Ｉを介してステップＳ２０３（図２７）の処理に移行する。なお、ステップＳ２０３以降の処理は、第２の実施の形態で説明した処理と同じであるため、ここでは説明は省略する。
【０１１７】
次に、図３１の処理フローを説明する。なお、ここでは、第２の実施の形態で説明したステップＳ１６５（図２４）において、先行検索ＤＢ配列に検索条件が格納されていないと判断され、端子Ｋを介して図３１に移行してきたものとする。図３１において、端子Ｋの後、検索部１８は、後続検索ＤＢ配列から、プレゼンスＤＢに対する検索条件を抽出する（ステップＳ２７１）。この際、後続検索ＤＢ配列から、プレゼンスＤＢに対する検索条件は削除しておく。なお、プレゼンスＤＢに対する検索条件が複数格納されている場合には全て抽出する。
【０１１８】
そして、検索部１８は、キャッシュ１４又は検索結果管理テーブルにおいて、抽出した検索条件を含むレコードを特定し、特定したレコードにおける該当ＩＤの列からＩＤを抽出する（ステップＳ２７３）。なお、ステップＳ２７１において複数の検索条件が抽出された場合には、各検索条件について処理を実施する。
【０１１９】
そして、検索部１８は、抽出したＩＤの数をヒット件数として、検索条件と共にキャッシュコントローラ１９に出力する（ステップＳ２７５）。すなわち、キャッシュコントローラ１９に、キャッシュ１４及び検索結果管理テーブルにおける検索回数及びヒット件数を更新させる。
【０１２０】
そして、検索部１８は、後続検索ＤＢ配列から未処理の検索条件を特定する（ステップＳ２７７）。なお、この時点では、後続検索ＤＢ配列に格納されている検索条件は、プレゼンスデータベース以外のデータベースに対する検索条件のみとなっている。そして、検索部１８は、ステップＳ２７３において抽出したＩＤを特定された検索条件に追加して新たな検索条件を生成し（ステップＳ２７９）、生成した新たな検索条件を用いて検索対象となる後続検索データベースの検索を実行する（ステップＳ２８１）。例えば、検索部１８が、特定された検索条件とステップＳ２７３において抽出したＩＤとを含む検索要求を後続検索データベースに出力する。すなわち、先行検索を行わずに後続検索を行う場合にも、プレゼンスデータベースに対する検索条件を満たすＩＤで絞り込んだ形でプレゼンスデータベース以外の後続検索データベースの検索を行う。そして、検索部１８は、後続検索データベースからの検索結果を当該後続検索データベースの識別情報に対応付けて検索結果格納部２０に格納する。
【０１２１】
そして、検索部１８は、特定された検索条件をキャッシュコントローラ１９に出力する（ステップＳ２８３）。なお、プレゼンスデータベースに対する検索条件を満たすＩＤで絞り込んだ形で後続検索を行っているため、ここでは、キャッシュ１４及び検索結果管理テーブルにおける特定された検索条件のヒット件数を更新しないようにする。
【０１２２】
そして、検索部１８は、後続検索ＤＢ配列内の全ての検索条件について処理が完了したか判断する（ステップＳ２８５）。後続検索ＤＢ配列内の全ての検索条件について処理が完了していなければ（ステップＳ２８５：Ｎｏルート）、ステップＳ２７７に戻り、上で述べた処理を繰り返す。
【０１２３】
一方、後続検索ＤＢ配列内の全ての検索条件について処理が完了した場合（ステップＳ２８５：Ｙｅｓルート）、端子Ｌを介してステップＳ２０１（図２６）の処理に移行する。なお、ステップＳ２０１以降の処理は、第２の実施の形態で説明した処理と同じであるため、ここでは説明は省略する。
【０１２４】
以上のような処理を実施することにより、プレゼンスデータベースに対する検索条件を満たすＩＤでさらに絞り込んだ形でプレゼンスデータベース以外の後続検索データベースの検索を行うことができるようになる。
【０１２５】
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で説明した統合ＩＤ管理装置１及び１ｂの機能ブロック図は必ずしも実際のプログラムモジュール構成に対応するものではない。
【０１２６】
また、上で説明したデータ構造及びテーブル構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１２７】
また、例えば、所定のルールに従って各ＩＤを変換し、あるデータベースでは変換後のＩＤを用いてデータを管理するようにしてもよい。この場合、統合ＩＤ管理装置１及び１ｂでは、変換前のＩＤと変換後のＩＤは同じものとみなして処理するようにすればよい。
【０１２８】
以上述べた本技術の実施の形態をまとめると以下のとおりになる。
【０１２９】
第１の態様に係る検索方法は、特定の識別子に関連付けられているデータに係る複数の属性を複数のデータベースで分担して管理する場合における検索方法であって、属性に関する検索条件を複数含むＡＮＤ検索要求を受け付けた場合、データベース毎に当該データベースで管理されている属性を表す情報を格納する属性管理テーブルに基づき、ＡＮＤ検索要求に含まれる複数の検索条件を、データベース別の検索条件に分類し、データベースの識別情報に対応付けて記憶装置に格納するステップと、記憶装置に格納されている、データベースの識別情報と当該データベースに対応する検索条件とを基に、データベースの識別情報と検索条件と当該データベースに対する過去の検索において当該検索条件にヒットしたヒット件数とを含むレコードを格納する検索結果管理テーブルを検索し、ヒット件数が所定数以下となるデータベース、又は、ヒット件数によって記憶装置に格納されているデータベースを順位付けした場合の下位所定順位内にあるデータベースを先行検索データベースとして特定する先行検索データベース特定ステップと、先行検索データベース毎に、記憶装置に格納され且つ当該先行検索データベースに対応する検索条件を用いて当該先行検索データベースの検索を行う先行検索ステップと、先行検索データベースの各検索結果に共通して含まれる識別子を特定する先行検索結果マージステップと、記憶装置に格納されている、先行検索データベース以外のデータベースである後続検索データベース毎に、記憶装置に格納され且つ当該後続検索データベースに対応する検索条件と先行検索結果マージステップにおいて特定された識別子とを用いて当該後続検索データベースの検索を行う後続検索ステップとを含む。
【０１３０】
このようにすれば、過去の検索におけるヒット件数の少ない先行検索データベースを先に検索するので、適切に識別子を絞り込むことができ、識別子を絞り込んだ形で後続検索データベースを検索することができるようになる。従って、後続検索データベースの検索結果において、最終的に検索結果として提供されないデータの割合が少なくなり、各検索結果をマージする時間が短縮されるので、効率的な横断検索ができる。
【０１３１】
また、上述先行検索結果マージステップが、先行検索データベースの各検索結果に共通して含まれる識別子が存在するか判断するステップを含むようにしてもよい。そして、先行検索データベースの各検索結果に共通して含まれる識別子が存在しないと判断された場合、上記後続検索ステップの処理を行わずに検索を終了するようにしてもよい。このようにすれば、先行検索データベースの検索を行った時点で、検索条件にヒットするデータが存在しないことが分かった場合には、後続検索データベースの検索を行わずに検索を終了するので、無駄な検索を行わずに済むようになる。
【０１３２】
さらに、データベースがプレゼンスシステムにて管理されるプレゼンスデータベースの場合には、検索結果管理テーブルにおけるレコードが、当該プレゼンスデータベースで管理されている属性の属性名と属性値との組み合わせとして規定される検索条件を満たし且つプレゼンスシステムから通知される識別子をさらに格納する場合もある。そして、上記先行検索ステップが、検索対象となる先行検索データベースがプレゼンスデータベースの場合には、検索結果管理テーブルにおける、当該先行検索データベースに係るレコードに含まれる識別子を、当該先行検索データベースの検索結果として設定するステップを含むようにしてもよい。このようにすれば、ある属性を管理しているデータベースがプレゼンスデータベースの場合にも対処できるようになる。
【０１３３】
また、上記後続検索ステップが、後続検索データベースの中にプレゼンスデータベースが存在する場合には、検索結果管理テーブルから、当該プレゼンスデータベースに係るレコードに含まれる識別子を抽出する後続検索前処理ステップと、プレゼンスデータベース以外の後続検索データベース毎に、記憶装置に格納され且つ当該後続検索データベースに対応する検索条件と先行検索結果マージステップにおいて特定された識別子と後続検索前処理において抽出された識別子とを用いて当該後続検索データベースの検索を行うステップとを含むようにしてもよい。このようにすれば、先行検索によって絞り込まれた識別子をさらに絞り込んだ形でプレゼンスデータベース以外の後続検索データベースを検索することができるようになる。
【０１３４】
さらに、プレゼンスシステムから、検索条件と当該検索条件を満たす識別子とを含むプレゼンス更新通知を受信した場合、当該プレゼンス更新通知に従って、検索結果管理テーブルを更新するステップをさらに含むようにしてもよい。検索結果管理テーブルにおいて、プレゼンスデータベースの最新の状態を管理できるようになる。
【０１３５】
また、上記先行検索ステップが、先行検索データベースの検索結果におけるヒット件数を、当該先行検索データベースの識別情報と当該先行検索データベースに対応する検索条件とを含むレコードに設定するステップを含むようにしてもよい。このようにすれば、先行検索データベースを決定する際に、各検索条件について当該検索条件の前回の検索におけるヒット件数を用いることができるようになる。
【０１３６】
さらに、上記先行検索データベース特定ステップが、記憶装置に格納されている、データベースの識別情報と当該データベースに対応する検索条件とを含むレコードのヒット件数のうち最大値を特定し、当該最大値を基準に所定数を決定するステップを含むようにしてもよい。
【０１３７】
また、検索結果管理テーブルにおけるレコードが、検索回数をさらに格納する場合もある。そして、上記先行検索ステップ及び後続検索ステップが、検索対象のデータベースの識別情報と当該データベースに対応する検索条件とを含むレコードの検索回数を１インクリメントするステップを含むようにしてもよい。さらに、所定のタイミングにて、検索回数が多いレコードを優先してキャッシュメモリに登録するステップをさらに含むようにしてもよい。そして、上記先行検索データベース特定ステップにおいて、キャッシュメモリを検索するようにしてもよい。検索条件として指定される頻度の高いものについてはキャッシュメモリに登録しておくことで、処理の高速化を図ることができる。
【０１３８】
第２の態様に係る検索装置は、特定の識別子に関連付けられているデータに係る複数の属性を分担して管理している複数のデータベースを検索する検索装置であって、属性に関する検索条件を複数含むＡＮＤ検索要求を受け付けた場合、データベース毎に当該データベースで管理されている属性を表す情報を格納する属性管理テーブルに基づき、ＡＮＤ検索要求に含まれる複数の検索条件を、データベース別の検索条件に分類し、データベースの識別情報に対応付けて記憶装置に格納する手段（図４の分割処理部１３に相当）と、記憶装置に格納されている、データベースの識別情報と当該データベースに対応する検索条件とを基に、データベースの識別情報と検索条件と当該データベースに対する過去の検索において当該検索条件にヒットしたヒット件数とを含むレコードを格納する検索結果管理テーブルを検索し、ヒット件数が所定数以下となるデータベース、又は、ヒット件数によって記憶装置に格納されているデータベースを順位付けした場合の下位所定順位内にあるデータベースを先行検索データベースとして特定する先行検索データベース特定手段（図４の先行検索ＤＢ決定部１６に相当）と、先行検索データベース毎に、記憶装置に格納され且つ当該先行検索データベースに対応する検索条件を用いて当該先行検索データベースの検索を行う先行検索手段（図４の検索部１８に相当）と、先行検索データベースの各検索結果に共通して含まれる識別子を特定する先行検索結果マージ手段（図４の検索部１８に相当）と、記憶装置に格納されている、先行検索データベース以外のデータベースである後続検索データベース毎に、記憶装置に格納され且つ当該後続検索データベースに対応する検索条件と先行検索結果マージ手段により特定された識別子とを用いて当該後続検索データベースの検索を行う後続検索手段（図４の検索部１８に相当）とを有する。
【０１３９】
なお、統合ＩＤ管理装置１及び１ｂをハードウエアと共に実現するためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０１４０】
なお、統合ＩＤ管理装置１及び１ｂは、図３２に示すように、メモリ２５０１（記憶部）とＣＰＵ２５０３（処理部）とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。ＯＳ及びＷｅｂブラウザを含むアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納される。このようなコンピュータは、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１４１】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１４２】
（付記１）
特定の識別子に関連付けられているデータに係る複数の属性を分担して管理している複数のデータベースを検索するためのプログラムであって、
属性に関する検索条件を複数含むＡＮＤ検索要求を受け付けた場合、前記データベース毎に当該データベースで管理されている属性を表す情報を格納する属性管理テーブルに基づき、前記ＡＮＤ検索要求に含まれる複数の前記検索条件を、前記データベース別の前記検索条件に分類し、前記データベースの識別情報に対応付けて記憶装置に格納するステップと、
前記記憶装置に格納されている、前記データベースの識別情報と当該データベースに対応する前記検索条件とを基に、前記データベースの識別情報と前記検索条件と当該データベースに対する過去の検索において当該検索条件にヒットしたヒット件数とを含むレコードを格納する検索結果管理テーブルを検索し、前記ヒット件数が所定数以下となる前記データベース、又は、前記ヒット件数によって前記記憶装置に格納されている前記データベースを順位付けした場合の下位所定順位内にある前記データベースを先行検索データベースとして特定する先行検索データベース特定ステップと、
前記先行検索データベース毎に、前記記憶装置に格納され且つ当該先行検索データベースに対応する前記検索条件を用いて当該先行検索データベースの検索を行う先行検索ステップと、
前記先行検索データベースの各検索結果に共通して含まれる前記識別子を特定する先行検索結果マージステップと、
前記記憶装置に格納されている、前記先行検索データベース以外のデータベースである後続検索データベース毎に、前記記憶装置に格納され且つ当該後続検索データベースに対応する前記検索条件と前記先行検索結果マージステップにおいて特定された前記識別子とを用いて当該後続検索データベースの検索を行う後続検索ステップと、
をコンピュータに実行させるための検索プログラム。
【０１４３】
（付記２）
前記先行検索結果マージステップが、
前記先行検索データベースの各検索結果に共通して含まれる前記識別子が存在するか判断するステップ
を含み、
前記先行検索データベースの各検索結果に共通して含まれる前記識別子が存在しないと判断された場合、前記後続検索ステップの処理を行わずに検索を終了する
ことを特徴とする付記１記載の検索プログラム。
【０１４４】
（付記３）
前記データベースがプレゼンスシステムにて管理されるプレゼンスデータベースの場合には、前記検索結果管理テーブルにおける前記レコードが、当該プレゼンスデータベースで管理されている前記属性の属性名と属性値との組み合わせとして規定される前記検索条件を満たし且つ前記プレゼンスシステムから通知される前記識別子をさらに格納し、
前記先行検索ステップが、
検索対象となる前記先行検索データベースが前記プレゼンスデータベースの場合には、前記検索結果管理テーブルにおける、当該先行検索データベースに係る前記レコードに含まれる前記識別子を、当該先行検索データベースの前記検索結果として設定するステップ
を含む、付記１又は２記載の検索プログラム。
【０１４５】
（付記４）
前記後続検索ステップが、
前記後続検索データベースの中に前記プレゼンスデータベースが存在する場合には、前記検索結果管理テーブルから、当該プレゼンスデータベースに係る前記レコードに含まれる前記識別子を抽出する後続検索前処理ステップと、
前記プレゼンスデータベース以外の前記後続検索データベース毎に、前記記憶装置に格納され且つ当該後続検索データベースに対応する前記検索条件と前記先行検索結果マージステップにおいて特定された前記識別子と前記後続検索前処理において抽出された前記識別子とを用いて当該後続検索データベースの検索を行うステップと、
を含む、付記３記載の検索プログラム。
【０１４６】
（付記５）
前記プレゼンスシステムから、前記検索条件と当該検索条件を満たす前記識別子とを含むプレゼンス更新通知を受信した場合、当該プレゼンス更新通知に従って、前記検索結果管理テーブルを更新するステップ
をさらにコンピュータに実行させるための付記３又は４記載の検索プログラム。
【０１４７】
（付記６）
前記先行検索ステップが、
前記先行検索データベースの前記検索結果における前記ヒット件数を、当該先行検索データベースの識別情報と当該先行検索データベースに対応する前記検索条件とを含む前記レコードに設定するステップ
を含む、付記１乃至５のいずれか１つ記載の検索プログラム。
【０１４８】
（付記７）
前記先行検索データベース特定ステップが、
前記記憶装置に格納されている、前記データベースの識別情報と当該データベースに対応する前記検索条件とを含む前記レコードの前記ヒット件数のうち最大値を特定し、当該最大値を基準に前記所定数を決定するステップ
を含む、付記１乃至６のいずれか１つ記載の検索プログラム。
【０１４９】
（付記８）
前記検索結果管理テーブルにおける前記レコードが、検索回数をさらに格納し、
前記先行検索ステップ及び前記後続検索ステップが、
検索対象の前記データベースの識別情報と当該データベースに対応する前記検索条件とを含む前記レコードの前記検索回数を１インクリメントするステップ
を含み、
所定のタイミングにて、前記検索回数が多い前記レコードを優先してキャッシュメモリに登録するステップをさらにコンピュータに実行させ、
前記先行検索データベース特定ステップにおいて、前記キャッシュメモリを検索する
ことを特徴とする付記１乃至７のいずれか１つ記載の検索プログラム。
【０１５０】
（付記９）
特定の識別子に関連付けられているデータに係る複数の属性を分担して管理している複数のデータベースを検索する検索装置であって、
属性に関する検索条件を複数含むＡＮＤ検索要求を受け付けた場合、前記データベース毎に当該データベースで管理されている属性を表す情報を格納する属性管理テーブルに基づき、前記ＡＮＤ検索要求に含まれる複数の前記検索条件を、前記データベース別の前記検索条件に分類し、前記データベースの識別情報に対応付けて記憶装置に格納する手段と、
前記記憶装置に格納されている、前記データベースの識別情報と当該データベースに対応する前記検索条件とを基に、前記データベースの識別情報と前記検索条件と当該データベースに対する過去の検索において当該検索条件にヒットしたヒット件数とを含むレコードを格納する検索結果管理テーブルを検索し、前記ヒット件数が所定数以下となる前記データベース、又は、前記ヒット件数によって前記記憶装置に格納されている前記データベースを順位付けした場合の下位所定順位内にある前記データベースを先行検索データベースとして特定する先行検索データベース特定手段と、
前記先行検索データベース毎に、前記記憶装置に格納され且つ当該先行検索データベースに対応する前記検索条件を用いて当該先行検索データベースの検索を行う先行検索手段と、
前記先行検索データベースの各検索結果に共通して含まれる前記識別子を特定する先行検索結果マージ手段と、
前記記憶装置に格納されている、前記先行検索データベース以外のデータベースである後続検索データベース毎に、前記記憶装置に格納され且つ当該後続検索データベースに対応する前記検索条件と前記先行検索結果マージ手段により特定された前記識別子とを用いて当該後続検索データベースの検索を行う後続検索手段と、
を有する検索装置。
【０１５１】
（付記１０）
特定の識別子に関連付けられているデータに係る複数の属性を複数のデータベースで分担して管理する場合における検索方法であって、
属性に関する検索条件を複数含むＡＮＤ検索要求を受け付けた場合、前記データベース毎に当該データベースで管理されている属性を表す情報を格納する属性管理テーブルに基づき、前記ＡＮＤ検索要求に含まれる複数の前記検索条件を、前記データベース別の前記検索条件に分類し、前記データベースの識別情報に対応付けて記憶装置に格納するステップと、
前記記憶装置に格納されている、前記データベースの識別情報と当該データベースに対応する前記検索条件とを基に、前記データベースの識別情報と前記検索条件と当該データベースに対する過去の検索において当該検索条件にヒットしたヒット件数とを含むレコードを格納する検索結果管理テーブルを検索し、前記ヒット件数が所定数以下となる前記データベース、又は、前記ヒット件数によって前記記憶装置に格納されている前記データベースを順位付けした場合の下位所定順位内にある前記データベースを先行検索データベースとして特定する先行検索データベース特定ステップと、
前記先行検索データベース毎に、前記記憶装置に格納され且つ当該先行検索データベースに対応する前記検索条件を用いて当該先行検索データベースの検索を行う先行検索ステップと、
前記先行検索データベースの各検索結果に共通して含まれる前記識別子を特定する先行検索結果マージステップと、
前記記憶装置に格納されている、前記先行検索データベース以外のデータベースである後続検索データベース毎に、前記記憶装置に格納され且つ当該後続検索データベースに対応する前記検索条件と前記先行検索結果マージステップにおいて特定された前記識別子とを用いて当該後続検索データベースの検索を行う後続検索ステップと、
を含み、コンピュータにより実行される検索方法。
【符号の説明】
【０１５２】
１，１ｂ  統合ＩＤ管理装置
１１  入力部    １２  属性管理テーブル格納部
１３  分割処理部    １４  キャッシュ
１５  検索結果管理テーブル格納部    １６  先行検索ＤＢ決定部
１７  配列データ格納部    １８  検索部
１９  キャッシュコントローラ    ２０  検索結果格納部
２１  出力部    ２２  検索結果管理テーブル更新部
【図１】
2010218131.tif 000003
【図２】
2010218131.tif 000004
【図３】
2010218131.tif 000005
【図４】
2010218131.tif 000006
【図５】
2010218131.tif 000007
【図６】
2010218131.tif 000008
【図７】
2010218131.tif 000009
【図８】
2010218131.tif 000010
【図９】
2010218131.tif 000011
【図１０】
2010218131.tif 000012
【図１１】
2010218131.tif 000013
【図１２】
2010218131.tif 000014
【図１３】
2010218131.tif 000015
【図１４】
2010218131.tif 000016
【図１５】
2010218131.tif 000017
【図１６】
2010218131.tif 000018
【図１７】
2010218131.tif 000019
【図１８】
2010218131.tif 000020
【図１９】
2010218131.tif 000021
【図２０】
2010218131.tif 000022
【図２１】
2010218131.tif 000023
【図２２】
2010218131.tif 000024
【図２３】
2010218131.tif 000025
【図２４】
2010218131.tif 000026
【図２５】
2010218131.tif 000027
【図２６】
2010218131.tif 000028
【図２７】
2010218131.tif 000029
【図２８】
2010218131.tif 000030
【図２９】
2010218131.tif 000031
【図３０】
2010218131.tif 000032
【図３１】
2010218131.tif 000033
【図３２】
2010218131.tif 000034