(57)【特許請求の範囲】
【請求項１】
結合クエリに応答してサーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスする方法であって、電子処理システムにおいて、当該方法は：
ドキュメントをサーチし、かつ、結合マッピングを記憶するステップであって、結合マッピングは、外部キーをドキュメントに、及び外部キー値をドキュメントに関連づけるものである、ステップと；
インデックスを使用して、前記結合クエリのプライマリ及びセカンダリクエリのためのプライマリ及びセカンダリ結果の組を返すステップと；
前記結合マッピングを使用して、共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定するステップと；
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すステップと；
を有する方法。
【請求項２】
前記結合マッピングは、ドキュメントと関連するフィールドの値を特定する、
請求項１記載の方法。
【請求項３】
前記結合マッピングは、フィールドの値と関連するドキュメントを特定する、
請求項１記載の方法。
【請求項４】
前記結合クエリを使用して、結合が実行されるフィールドを特定するステップ、
を更に有する請求項１記載の方法。
【請求項５】
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の内部結合を含む、
請求項１記載の方法。
【請求項６】
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の外部結合を含む、
請求項１記載の方法。
【請求項７】
前記結合クエリに従って、前記特定されたドキュメントにフィルターをかけるステップ、
を更に含む請求項１記載の方法。
【請求項８】
揮発性メモリに、前記結合マッピングを記憶するステップ、
を更に有する請求項１記載の方法。
【請求項９】
充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断するステップと；
もし充分なメモリが存在する場合、揮発性メモリに、前記結合マッピングを記憶するステップと；
もし充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶するステップと；
を更に有する請求項８記載の方法。
【請求項１０】
既存の結合マッピングを削除するステップは、
最近最も使われていない結合マッピングを削除するステップ、
を含む請求項９記載の方法。
【請求項１１】
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から前記特定されたドキュメントの各々の複合スコアを計算するステップ、
を更に有する請求項１記載の方法。
【請求項１２】
少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランクを付け、かつ、少なくとも前記特定されたドキュメントのサブセットを、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するステップ、
を更に有する請求項１１記載の方法。
【請求項１３】
結合クエリに応答してサーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスするエレクトロニックシステムであって、
クエリに応答して、インデックスを提供し、かつ、前記インデックスから結果の組を返すように構成されたサーチエンジンと；
前記インデックス、及び結果の組を記憶するストレージと；
結合エンジンであって：
ストレージに結合マッピングを提供するために、前記サーチエンジンにクエリを発し、結合マッピングは、外部キーをドキュメントに、及び外部キー値をドキュメントに関連づけるものであり、；
前記結合クエリのプライマリ及びセカンダリクエリに対するプライマリ及びセカンダリ結果の組を返すために、前記サーチエンジンにクエリを発し；
前記結合マッピング、及び結果の組を使用して、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定する；
前記結合エンジンと；
を有するシステム。
【請求項１４】
前記サーチエンジンは、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すように更に構成される、
請求項１３記載のシステム。
【請求項１５】
前記結合エンジンは、ドキュメントと関連するフィールドの値を特定するために前記結合マッピングを使用するように更に構成される、
請求項１３記載のシステム。
【請求項１６】
前記結合エンジンは、フィールドの値と関連するドキュメントを特定するために前記結合マッピングを使用するように更に構成される、
請求項１３記載のシステム。
【請求項１７】
前記結合エンジンは、結合が実行されるフィールドを特定するために前記結合クエリを使用するように更に構成される、
請求項１３記載のシステム。
【請求項１８】
前記結合エンジンは、前記クエリに従って前記特定されたドキュメントにフィルターをかけるように更に構成される、
請求項１３記載のシステム。
【請求項１９】
前記結合エンジンは、前記クエリの前記プライマリ及びセカンダリクエリの間の内部結合として前記クエリを分解するように更に構成される、
請求項１３記載のシステム。
【請求項２０】
前記結合エンジンは、前記クエリの前記プライマリ及びセカンダリクエリの間の外部結合として前記クエリを分解するように更に構成される、
請求項１３記載のシステム。
【請求項２１】
前記ストレージは、揮発性メモリに前記結合マッピングを記憶するように更に構成される、
請求項１３記載のシステム。
【請求項２２】
前記ストレージは、
１）充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断し；
２）充分なメモリが存在する場合、揮発性メモリの前記結合マッピングを記憶し；かつ、
３）充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶する、ように構成される、
請求項２１記載のシステム。
【請求項２３】
前記ストレージは、最近最も使用されていない結合マッピングを削除するように更に構成される、
請求項２２記載のシステム。
【請求項２４】
前記結合エンジンは、
共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組から各々の前記特定されたドキュメントの複合スコアを計算するように更に構成される、
請求項１３記載のシステム。
【請求項２５】
前記結合エンジンは、少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランク付けするように更に構成される、
請求項２４記載のシステム。
【請求項２６】
前記サーチエンジンは、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの前記少なくともサブセットを、読み出し、かつ、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するように更に構成される、
請求項２５記載のシステム。
【請求項２７】
結合クエリに応答してレコードベースのデータストレージシステムのデータにアクセスするために、コンピュータ可読のプログラム部を有する製造製品であって、
前記プログラム部は：
ドキュメントをサーチし、かつ、結合マッピングを記憶するステップであって、結合マッピングは、外部キーをドキュメントに、及び外部キー値をドキュメントに関連づけるものである、ステップと；
インデックスを使用して、前記結合クエリのプライマリ及びセカンダリクエリのためのプライマリ及びセカンダリ結果の組を返すステップと；
前記結合マッピングを使用して、共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定するステップと；
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すステップと；
を実行する命令を有する、製造製品。
【請求項２８】
前記結合マッピングは、ドキュメントと関連したフィールドの値を特定する、
請求項２７記載の製造製品。
【請求項２９】
前記結合マッピングは、フィールドの値と関連したドキュメントを特定する、
請求項２７記載の製造製品。
【請求項３０】
前記プログラム部が、
前記結合クエリを使用して、結合が実行されるフィールドを特定するステップ、
を実行する命令を更に含む、
請求項２７記載の製造製品。
【請求項３１】
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の内部結合を含む、
請求項２７記載の製造製品。
【請求項３２】
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の外部結合を含む、
請求項２７記載の製造製品。
【請求項３３】
前記プログラム部が、
前記結合クエリに従って、前記特定されたドキュメントにフィルターをかけるステップ、
を実行する命令を更に有する、
請求項２７記載の製造製品。
【請求項３４】
前記プログラム部が、
揮発性メモリに、前記結合マッピングを記憶するステップ、
を実行する命令を更に有する、
請求項２７記載の製造製品。
【請求項３５】
前記プログラム部が、
充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断するステップと；
もし充分なメモリが存在する場合、揮発性メモリに、前記結合マッピングを記憶するステップと；
もし充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶するステップと、
を実行する命令を更に有する、
請求項２７記載の製造製品。
【請求項３６】
既存の結合マッピングを削除するステップは、
最近最も使われていない結合マッピングを削除するステップ、
を実行する命令を有する、
請求項３５記載の製造製品。
【請求項３７】
前記プログラム部は、
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々の複合スコアを計算するステップ、
を実行するための命令を更に有する、
請求項２７記載の製造製品。
【請求項３８】
前記プログラム部は、
少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランクを付け、かつ、少なくとも前記特定されたドキュメントのサブセットを、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するステップ、
を実行する命令を更に有する、
請求項３７記載の製造製品。
【請求項３９】
サーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスする方法であって：
プライマリテーブルとしてテーブルを前記レコードベースのデータストレージシステムから選択するステップと；
前記プライマリテーブルからサーチエンジンインデックスを作成する作成ステップであって、前記サーチエンジンインデックスの各々のドキュメントは、前記プライマリテーブルの１つのレコードを示す、作成ステップと；
前記レコードベースのデータストレージシステムからデータを抽出するために要求を受信する受信ステップであって、前記要求は、複数のテーブルからのデータを含んでいる、受信ステップと；
複数のテーブルの各々のテーブルに対して、前記プライマリテーブルから外部キーを含む結合マッピングを作成するステップであって、結合マッピングは、外部キーをドキュメントに、及び外部キー値をドキュメントに関連づけるものである、ステップと；
受信された要求に従って、データを前記サーチエンジンインデックス、及び前記結合マッピングの各々から抽出するステップと、
を有する方法。
【請求項４０】
前記受信された要求は、
前記プライマリテーブルと、一つ以上の複数のテーブルとの間の内部結合を含む、
請求項３９記載の方法。
【請求項４１】
前記受信された要求は、
前記プライマリテーブルと、一つ以上の複数のテーブルとの間の外部結合を含む、
請求項３９記載の方法。
【請求項４２】
前記サーチエンジンインデックスはディスクに記憶され、かつ、前記結合マッピングはＲＡＭに記憶される、
請求項３９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーチエンジンインデックス内の結合データに対するクエリの技術に関する。
【背景技術】
【０００２】
［関連出願］
本出願は、２００８年６月１７日に出願されたアメリカ仮出願番号第６１／０７３１５６号（「サーチエンジン・インデックス内の結合されたデータに対するクエリ）の利益を享受する。上記の出願の全ての開示は、この出願に組み込まれる。
［発明の背景］
例えば、コンピュータシステム利用可能性の増大、及びイントラネット、及びインターネットのようなさまざまなネットワークを使用したコンピュータシステムへの接続の能力の増大によって、多数の人々が利用できる巨大な情報の蓄積が存在するようになった。たとえば、このように、大量の情報を個人が扱えるようになったことで、生産性の上昇を引き起こした。
【０００３】
しかし、このような情報へのアクセス及び処理の改善は、新たな課題を生み出す。たとえば、特に、情報が様々なフォーマットで様々な場所に蓄積されている場合、この種の大きな情報の蓄積をどのようにサーチし管理するかが課題となっている。多くの新規なツールが、現在絶えず拡大する電子的に利用できる情報を取扱うために開発された。
【０００４】
例えば、図１を参照する。レコードベースの既存のデータ蓄積１００は、テーブルの列（ｃｏｌｕｍｎ）と行（ｒｏｗ）という概念で構築されている。テーブルは一連の列で定義され、各々の列は、具体的な（例えば、名前又は日付などのデータの特定のカテゴリに対応した）性質を持っており、そして、データはそのテーブルの各々の行に記憶される。例えば、顧客に関連するデータは、ＣＵＳＴ＿ＩＤ（顧客アイデンティファイア）、Ｌ＿ＮＡＭＥ（ラストネーム）、及びＦ＿ＮＡＭＥ（ファーストネーム）の列を含む顧客テーブル１１０に蓄積される。他のテーブル（購入テーブル１１５）は、顧客による購入に関連するデータを含む。そして、ＣＵＳＴ＿ＩＤ、ＰＵＲ＿ＩＤ（購入アイデンティファイア）及びＰＵＲ＿ＤＡＴＥ（購入日）を含むよう定義されてもよい。さらにまた、各々の購入は、複数の製品を含んでもよい。したがって、製品テーブル１２０は、ＰＵＲ＿ＩＤ列及びＰＲＯ＿ＩＤ（製品アイデンティファイア）列を含む。この種の設計は、個々のカスタマーに対して複数の購入（各々は、複数の製品を有してもよい）をレコードすることを許容し、複数の重複データ（例えば、あらゆる購入のためのラストネームのデータを記憶しなければならないこと）がないようにする。例えば、カスタマー・ナンバー００００１（アン・スミス）は、３つの購入（ＰＵＲ＿ＩＤ  ９９０１、９９０２、及び９９０３）を行ったことがわかる。更に、それらの購入のうちの１つ（９９０１）は、２つの製品、ＡＡＡＡ、及びＢＢＢＢを含んでいることがわかる。しかしながら、顧客名、及び製品名のような特定の記述が他のテーブルに記憶されるため、１つのテーブル（例えば購入テーブル１１５）への単純なクエリが全ての所望の情報の報告を提供しないことになる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数のテーブルからデータを必要とするクエリ、及び他のデータ処理に対応するために、特定の列が外部キー（ｆｏｒｅｉｇｎ  ｋｅｙ）として参照される。外部キーとは、他のテーブル（「参照された」テーブル）の列又は列の組に関連する１つのテーブル（通常は「参照する」テーブルと称する）の列（又は列の組）を特定する２つのテーブル間で関連する制約のことをいう。上の例を使用すると、ＣＵＳＴ＿ＩＤ列は、顧客テーブル１１０から購入テーブル１１５に対して外部キーの役割を果たす。そして、ＰＵＲ＿ＩＤ列は製品テーブル１２０に対して外部キーとしての役割を果たす。したがって、カスタマーの名前、及び購入日で、カスタマー００００１によって購入される全ての製品のリストを読み出す要求は、以下のように規定できる。
【０００６】
【数１】
0005616335.tif 000002
上記のクエリは、各々のテーブルの外部キーを有効に利用する。この種のアプローチは、データベース・インターフェースを情報サーチのために利用するアプリケーションのためには有効に働く。しかしながら、サーチエンジンの飛躍的な普及、及び単純なユーザインタフェースのため、従来のデータベースサーチ技術を使用したいという要求は弱まってしまった。
【０００７】
残念なことに、データ冗長度を減らし、かつ、データ正規化規則を課すデータベース設計技術は、現代のサーチエンジンが行うフルテキストインデクシング及びテキストドキュメントへのクエリを発することをサポートしない。
【０００８】
例えば、ワールドワイド・ウェブ（「ＷＷＷ」又は「ウェブ」）は、巨大な量の情報にアクセスすることを提供する。そして、専門のサーチツール（「サーチエンジン」（例えばＧｏｏｇｌｅ、Ｙａｈｏｏ、及びＭＳＮ  Ｓｅａｒｃｈ）は、静的なテキストをサーチすることに対して成功を収めた。しかしながら、従来のウェブベースのサーチエンジンは、企業の環境での使用に対してデザインされていない。なぜなら、データは多くの異なる形式で記憶されており、様々にローカライズされた記憶場所及びデータベースに保存されているからである。インターネット又はイントラネットにおけるデータの記憶場所には、サーチクエリに関連するレコードベースのデータが存在するが、このサーチエンジンは、インデキシング及び／又はデータへのアクセスの能力がない。類似した課題は、コンテンツの他の形式（例えばワープロドキュメント、グラフィック又はイメージ・ファイル、ＭＰ３クリップ、インタラクティブ・ブログ、及びリアルタイムに変化するその他のデータ）に対しても当てはまる。
【０００９】
複数のテーブルを参照するクエリを実行するサーチエンジンの従来方法は、以下の二つのカテゴリのうちの１つに分類される。（ｉ）結合されたテーブルがインデックスタイムで結合されなければならない、非正規化（ｄｅｍｏｒａｌｉｚａｔｉｏｎ）、又は、（ｉｉ）  サブディビジョン（ｓｕｂｄｉｖｉｓｏｎ）、ここで、クエリは、別個に処理される二つ以上のテーブルクエリに分離され、処理後のフェーズ（ｐｏｓｔ−ｐｒｏｃｅｓｓｉｎｇ  ｐｈａｓｅ）で、その結果が結合される。非正規かは、幾つかの欠点がある。第１に挙げられるのは、インデクスのサイズが増加することである。なぜなら、非正規化で、複数の外部キーの数の倍率でその大きさが増大する。上述の処理後のフェーズのアプローチは、インデクスから大量のデータ（典型的には、一つ以上のテーブルの全部のコンテンツ）を抽出することになり、しかも結合制約（ｊｏｉｎ  ｃｏｎｓｔｒａｉｎｔｓ）に基づき、データを選び出さなければならない。このことは、また、リソースの非効率的な使用である。
【課題を解決するための手段】
【００１０】
［発明の開示］
レコードベースのデータベースの複数のテーブルに記憶されている構造化されたデータに能率的にクエリを発し読み出すために、サーチエンジンを利用する技術及びシステムが必要とされる。
【００１１】
コンピュータ可読のプログラム部分を含む方法及びこれに対応する装置は、結合クエリ（ｊｏｉｎ  ｑｕｅｒｙ）に応答してサーチエンジンを用いてレコードベースのデータストレージシステムのデータにアクセスすることに関連する。複数のデータベーステーブルは、サーチエンジンを用いてインデクス付けされる。各々のデータベーステーブルの行はサーチエンジンのドキュメントにマップされ、かつ、テーブルの行はドキュメントフィールドにマップされる。ドキュメントはサーチされ、かつ、結合マッピング（ｊｏｉｎｔ  ｍａｐｐｉｎｇｓ）が記憶される。インデックス（すなわちサーチエンジンインデックス）を使用することにより、プライマリ及びセカンダリ結果の組は、結合クエリのプライマリ及びセカンダリクエリに対して返される。結合マッピングを使用することにより、ドキュメントは、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組から特定される。更に、少なくとも特定されたドキュメントのサブセットが、共通フィールド値を有するプライマリ結果の組と、セカンダリ結果の組とから読み出される。
【００１２】
都合のよいことに、一部のアプリケーションにおいては、ディスクから大きいデータ容量を読み出さずに結合クエリが実行される。スケーラブルな情報検索（ＩＲ：Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ）ライブラリ（例えばＬｕｃｅｎｅ）の特徴を使用することにより、結合フィールド値を内部ドキュメントＩＤにマップする結合マッピングは、サーチエンジンインデックスから抽出される。結合クエリが検出された場合、プライマリクエリ、セカンダリクエリの組の一つ以上、及び対応する結合フィールドは結合クエリから抽出される。プライマリクエリ、及びセカンダリクエリは、インデックスに対して実行される。そして、プライマリ及びセカンダリ結果の組に結果としてなる。それから、結合クエリの結合制約は、共通フィールド値を有するプライマリ及びセカンダリ結果の組からドキュメントを特定するために結合マッピングを使用することにより実行される。ドキュメントが特定されたあと、クエリがなされたドキュメントがディスクから読み出される。
【００１３】
結合マッピングは、ドキュメントと関連したフィールドの値を特定するために使用されてもよい。あるいは、結合マッピングは、フィールドの値と関連したドキュメントを特定するために使用されてもよい。加えて、結合クエリは、結合が実行されるフィールドを特定するために使用されてもよい。結合クエリは、結合クエリのプライマリ及びセカンダリクエリ間の内部結合を有してもよい。あるいは、結合クエリは、結合クエリのプライマリ及びセカンダリクエリ間の外部結合を有してもよい。
【００１４】
更に、特定されたドキュメントは、結合クエリに従ってフィルターをかけられてもよい。結合マッピングは、揮発性メモリに記憶されてもよい。結合マッピングを記憶することは、ｉ）充分な揮発性メモリが結合マッピングを記憶するために利用できるかを判断すること、ｉｉ）充分なメモリが存在する場合、揮発性メモリの結合マッピングを記憶すること；  及び、ｉｉｉ）充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、新規な結合マッピングを記憶すること、を含んでもよい。削除する場合、ＬＲＵ法で結合マッピングが削除されてもよい。複合スコア（ｃｏｍｂｉｎｅｄ  ｓｃｏｒｅ）は、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組から各々の特定されたドキュメントのために計算されてもよい。更に、各々の特定されたドキュメントは、少なくとも複合スコアの関数として、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組からランクを付けられ、ランキングに従って、画面の結果リストに、少なくとも特定されたドキュメントのサブセットを表示してもよい。
【００１５】
結合クエリに応答する、サーチエンジンを使用するレコードベースのデータストレージシステムのデータにアクセスするエレクトロニックシステムは、サーチエンジン、ストレージ、及び結合エンジンを有してもよい。サーチエンジンは、インデックスを提供し、かつ、クエリに応答してインデックスから結果の組を返すように構成されてもよい。ストレージは、インデックス、及び結果の組を記憶してもよい。結合エンジンは、ストレージに結合マッピングを提供するためにサーチエンジンにクエリを発するように構成されてもよい。更に、結合エンジンは、結合クエリのプライマリ及びセカンダリクエリのためのプライマリ及びセカンダリ結果の組を返すためにサーチエンジンにクエリを発するように構成されてもよい。結合エンジンは、また、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組からドキュメントを特定するために結合マッピング、及び結果の組を使用するように構成されてもよい。サーチエンジンは、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組から少なくとも特定されたドキュメントのサブセットを読み出すように構成されてもよい。
【００１６】
上述の説明は、本発明についての例示の実施例の具体的説明によって明らかとなる。図において、類似した参照符号は、図面を通じて異なる面から見た同じ部分を表す。図面は、必ずしも比例するわけではなく、その代わりに、強調して本発明の実施例を例示するよう配置され得る。
【図面の簡単な説明】
【００１７】
【図１】一まとまりの顧客購入データの従来のテーブルベースのリレーショナルデータベーススキーマを示す図である。
【図２】特定の国に関連する一まとまりの経済概要の従来のテーブルベースのリレーショナルデータベーススキーマを示す図である。
【図３】図２のテーブルから作成される一まとまりのインデクス付けされたドキュメントを示す図である。
【図４】図２のテーブルからデータを含む完全に列挙されたドキュメントを示す図である。
【図５】従来のテーブルベースのリレーショナルデータベーススキーマの２つのテーブル間の内部結合を示す図である。
【図６】従来のテーブルベースのリレーショナルデータベーススキーマの２つのテーブル間の外部結合を示す図である。
【図７】インデックスを使用し、結合されたデータにクエリを発し、かつ、結合演算を実行する方法のフローチャートである。
【図８】インデックスを使用して結合されたデータにクエリを発する際に使用される結合マッピングを示す図である。
【図９Ａ】インデックスから得られる結合マッピングを使用して、結合されたデータにクエリを発し、かつ、結合演算を実行する、より具体的な方法のフローチャートである。
【図９Ｂ】プライマリ及びセカンダリ結果の組のフィールド値の集合の関係を表すベン図である。
【図１０】インデックスから得られる結合マッピングを使用して、結合されたデータにクエリを発し、かつ、結合演算を実行する別の具体的方法を示すフローチャートである。
【図１１】ドキュメントにスコア及びランク付けを示す図である。
【図１２】インデックスを使用して結合されたデータにクエリを発するシステムの概要図である。
【発明を実施するための形態】
【００１８】
［発明の詳細な説明］
本発明の実施例について以下に説明する。
【００１９】
本願明細書において引用された全ての特許、公開された出願、及びドキュメントの内容は本明細書に組み込まれたものとする。
【００２０】
リレーショナルデータベースは、データ・組に存在する共通属性を使用して、データをグループ分けするデータベースである。編成されたデータとしての「かたまり」は、人間がより容易に理解することができる。例えば、町の全ての不動産売買を含むデータの組は、売買がなされた年で分類することができる。又は、売買価格によって分類することもできる。あるいは、バイヤーの名字によって分類することができる。この種のグループ化は、リレーショナルモデル（このスキーマのための専門語）を使用する。それゆえに、この種のデータベースは、「リレーショナルデータベース」と呼ばれている。リレーショナルデータベースは、金融レコード、製造及びロジスティックの情報、人事データその他を記憶する際に、最も頻繁に選択されるものである。
【００２１】
厳密に言えば、リレーショナルデータベースは、一まとまりの関係（しばしば、テーブルと呼ばれる）である。データベースを一定の規則に従わせることに加えて、他の項目もデータベースの一部として考慮され、データを構成し組織立てることができる。上述のように、テーブルは一連の列によって定義される。列の各々は、特定の性質を有し、フィールドにマッピングされる（すなわち、データの特定のカテゴリに対応する。例えば、名前、日付籐である）。そして、そのテーブルの行としてデータが記憶される。
【００２２】
図２は、特定の国に関連する一まとまりの経済概要のための従来のテーブルベースのリレーショナルデータベーススキーマを示す図である。例えば、国に関係するデータのデータベースは、国テーブル２１０を含む。国テーブル２１０は、国フィールド、及び経済概要フィールドを含む。経済概要フィールドは、特定の国に関連する経済概要（例えば、国内総生成、インフレ、失業、通貨単位、天然資源）を含む。他のテーブル（メダルテーブル２４０）は、オリンピックにおいて特定の国が獲得した、金、銀、銅メダルの数のデータを含む。図示するように、国フィールド２１５は、メダルテーブル対する外部キー２３０として利用される。説明目的として、国テーブル２１０、及びメダルテーブル２４０は、３行の情報を含む。しかしながら、テーブルは、通常は多くの行の情報を含む。
【００２３】
一般的に、サーチエンジンインターフェースを使用して、レコードベースのデータベース管理システム（ＲＤＢＭＳ）に記憶されたデータ及びドキュメントにインデクス付けを行い、かつ、これを読み出すために、技術及びシステムが提供される。サーチエンジンインデックスは、ユニークなドキュメント番号（「Ｄｏｃ  ＩＤ」又は「ドキュメントＩＤ」が本明細書では同義の語として使われる）を各々のテーブルのためのキー（例えば外部及び／又はプライマリーキー）にマップするＲＤＢＭＳのテーブルから作成される。ＲＤＢＭＳ内のテーブルからのデータは、各々のレコード（通常はテーブルの行）のための「ドキュメント」をフィールド／値の組合せの文字列として作成するために使用される。サーチエンジンに送信されるクエリは、正しいインデックス値に関連するＤｏｃ  ＩＤを発見するために、サーチエンジンインデックスを参照してもよい。そして、Ｄｏｃ  ＩＤは、正しいドキュメントを見つけるために使用される。「結合（ｊｏｉｎ）」文（共通の値に基づいて異なるテーブルからフィールドを連結する文）を含むクエリはプライマリクエリ、及び一つ以上のセカンダリクエリの組に分解されてもよい。そして、そのような場合、必要なテーブルのために、結合マッピング、及びドキュメントが作成される。結果として生じるドキュメントは、スコア及び／又はランクを付けられてもよく、かつ、サーチクエリに応答して、ユーザに示されてもよい。
【００２４】
データベースのレコードとして記憶されるデータは、インデックス又はサーチエンジンインデックスの（フィールド、値）ペアの組として、記憶されてもよい。この種のテーブル記法を使用することにより、各々のテーブル行は、フィールド名としてのテーブルの列と、フィールド値としての行値とを含む、サーチ可能なドキュメントを示す。上述の実施例を使用することにより、メダルテーブル２４０からのレコードは、以下のテーブル記法を使用して示すことができる。すなわち、
【００２５】
【数２】
0005616335.tif 000003
各々のテーブル列「ドキュメント」にユニークなドキュメントＩＤが割り当てられている。複数のテーブルを含むデータベースは、単一のインデックスとして示されてもよい。（例えば、異なるテーブルからのレコードの全ては、同じインデックスで記憶することができ、かつ、ユニークなドキュメントＩＤを有することができる）。一部のインプリメンテーションにおいて、（例えばデータの型、データフォーマット及び／又はデータ使用に基づいた）テーブルのグループは、一まとまりのインデックスに結合されてもよい。ほとんどの場合、テーブルより少ないインデックスとなる。
【００２６】
図３は、図２のテーブルに適用されたこの技術の１つのインプリメンテーションを使用して形成される一まとまりのインデックス３００を示す。インデックス又はテーブルの各々の行は、サーチ可能なドキュメントであるので、各々の行はユニークなドキュメントＩＤを含む。国テーブル２１０は外部キー２３０として使用される１つのフィールド（国フィールド）を含む。したがって、インデクス３１０は、各々の行のユニークなドキュメントＩＤ、及び各々のレコードに対応する外部キー値（国値）を含む。同様に、メダルテーブル２４０は、外部キー２３５（国フィールド）を有する。したがって、他のインデックス３２０は、メダルテーブル２４０のために作成される。インデクス３２０は、各々のサーチ可能なドキュメントを特定する各々の行（Ｍ１、Ｍ２、及びＭ３）のためのユニークなドキュメントＩＤ、及び各々のレコードのための対応する外部キー値を含む。他のインデックスは他のテーブル、報告の要件、及びデータベースによってサポートされるほかのアプリケーションの他の機能に基づいて作成されてもよい。
【００２７】
図４は、サーチエンジンインデックスに含まれる図２のテーブルに対応する一まとまりの完全に列挙されたドキュメント４１０、４２０である。図３に記載されているインデックスを使用し、かつ、各々がテーブル列に対応する、個々にサーチ可能なドキュメントとして別にデータを記憶することによって、外部キーを介して連結されるプライマリドキュメント集合と、及びセカンダリドキュメント集合とを、特定することができ、かつ、完全な結果集合を提示するために結合することができる。例えば、ドキュメント集合４１０は、各々のレコードに、国テーブル２１０におけるキー値ペアの文字列、及びフィールド値ペアを含む。特定の国の経済概要をサーチするクエリは、プライマリテーブルとして国テーブル２１０を使用する。
例えば、以下で、クエリを発する。
【００２８】
【数３】
0005616335.tif 000004
「Ｓｅｌｅｃｔ」文に続くフィールドは、国テーブル２１０のプライマリーキーである。クエリを処理する場合、インデクス３１０は、所望の国値（この場合「ＵＳＡ」）を含むドキュメントＩＤを特定するために最初にサーチされ、そして、ドキュメント集合４１０から対応するドキュメントＩＤを用いてドキュメントを読み出す。同様に、ドキュメント集合４２０は、図２のメダルテーブル２４０のデータを完全に列挙したリストを提供する。
【００２９】
いくつかの場合では、（例えば、共通値を有するフィールドに結合される複数のテーブルから、データを必要とする）結合文を有するクエリは、サーチエンジンに送信される。結合文は、データベースの２つのテーブルから、各々に共通の値を使用してレコードを結合する。これは、テーブルとして保存することができ、又はそのまま使用できる。結合（ｊｏｉｎ）は、各々に共通の値を使用することにより、２つのテーブルからフィールドを結合（ｃｏｍｂｉｎｅ）するための手段である。結合文は、データベースの２つのテーブル間の内部結合又は外部結合を含んでもよい。内部結合は、２つの結合されたテーブルの各々のレコードがマッチするレコードをとることを必要とする。内部結合は、与えられた結合−述部（ｊｏｉｎ−ｐｒｅｄｉｃａｔｅ）に基づいて、２つのテーブル（Ａ、及びＢ）から、基本的にレコードを結合する。外部結合は、２つの結合されたテーブルの各々のレコードがマッチするレコードをとることを必要としない。他のいかなる一致するレコードも存在しない場合であっても、結合されたテーブルは、各々のレコードを保持する。
【００３０】
図５は、従来のテーブルベースのリレーショナルデータベーススキーマの２つのテーブル間の内部結合を示す図である。クエリの目的は、テーブル国５１０及びテーブルメダル５４０から合う国値を有する全てのドキュメントを生成することである。クエリは以下のようになる。
【００３１】
【数４】
0005616335.tif 000005
内部結合は、国フィールド値にマッチした全てのドキュメントのドキュメント集合であって、各々のテーブルから各々のドキュメントの関連づけられたフィールドを含んでいる内部結合テーブル５５０を生成する。その結果、内部結合テーブル５５０は、外部キー（国）を含み、かつ、以下の関連するフィールドを含む。すなわち、経済概要、金、銀、及び銅である。内部結合機能は、値が国にマッチしたドキュメントを生成するだけであるので、テーブル国５１０から国値ＩＮＤＩＡを含んでいるドキュメント、及びテーブルメダルから国値ＲＵＳＳＩＡを含んでいるドキュメントは内部結合テーブル５５０において生成されなかった。
【００３２】
図６は、従来のテーブルベースのリレーショナルデータベーススキーマの２つのテーブル間の外部結合を示す図である。上述のように、外部結合は、２つの結合されたテーブルの各々のレコードがマッチするレコードをとることを必要としない。したがって、テーブル国６１０、及びテーブルメダル６４０間の完全な外部結合は、結合テーブル６５０を生成する。図示するように、マッチする国値がない場合であっても、結合テーブル６５０は各々のテーブルからのあらゆるレコードを含む。テーブル国６１０から国値ＩＮＤＩＡを含んでいるドキュメント、及びテーブルメダル６４０から国値ＲＵＳＳＩＡを含んでいるドキュメントが、結合テーブル６５０として生成される。テーブルメダル６４０が国値ＩＮＤＩＡのドキュメントを有しないので、テーブルメダル６４０からのフィールド値に対応する結合テーブル６５０のフィールド値は空白である。同様に、テーブル国６１０からの国値ＲＵＳＳＩＡのフィールド値は、Ｎｕｌｌである。
【００３３】
完全な外部結合は、左外部結合、及び右外部結合に再分割されてもよい。結合状態がいかなるマッチするレコードも「右側の」テーブル（メダル６４０）で見つからない場合であっても、テーブル国６１０、及びメダル６４０の左外部結合（又は単に左結合）の結果は常に「左の」テーブル（国６１０）の全てのレコードを含む。このことは、左外部結合は、左のテーブル（国６１０）から全ての値、さらに右側のテーブル（メダル６４０）（又はマッチする結合述部が無い場合にはＮｕｌｌ）から値に合致した値を返すことを意味する。したがって、結果として生じる結合テーブルは、国値ＲＵＳＳＩＡを含んでいるドキュメントを除いて、外部結合テーブル６５０から全てのドキュメントを生成する。右外部結合（右結合）は、逆転するテーブルの処置を除き、左外部結合に非常に似ている。「右側の」テーブル（メダル６４０）からのあらゆる行は、少なくとも一回、結合されたテーブルに現れる。「左の」テーブル（国６１０）からのマッチする行が存在しない場合、Ｎｕｌｌが国６１０のマッチを有しないそれらのレコードの国６１０からの列に現れる。したがって、国値ＩＮＤＩＡを含んでいるドキュメントを除いて、結果として生じる結合テーブルは、外部結合テーブル６５０からの全てのドキュメントを生成する。
【００３４】
レコードベースのデータベース管理システム（ＲＤＢＭＳ）において記憶されたデータ及びドキュメントにインデクス付けし、検索するための技術は、サーチエンジンインターフェースを使用して、インデックス（通常は一つ以上のテーブルの全コンテンツ）から大量のデータ（ドキュメント）を抽出し、ディスクから特定されたドキュメントを読み出し、かつ、結合制約に基づいてドキュメントを絞り込む（ｗｉｄｏｗｉｎｇ  ｄｏｗｎ）ことを含む。しかしながら、ドキュメントの検索が結合制約を実行することを必要とするアプローチは、かなりの処理時間を必要とする。
【実施例】
【００３５】
図７は、インデックスを使用する結合されたデータにクエリを発し、かつ、それからフィルターをかけられるかなりの数のドキュメントを検索する必要のない結合演算を実行する方法７００を示すフローチャートである。ステップ７１０で、方法は、レコードベースの管理システム（ＲＤＢＭＳ）の少なくとも２つの異なるテーブルから情報を結合するようサーチエンジンインターフェースからクエリを受信することから開始される。クエリに応答して、方法は、７１５で、結合クエリのために必要な結合マッピングがメモリに記憶されているか、判断する。その場合は、方法は、ステップ７３０ａ、及び７３０ｂへと進む。そうでない場合には、方法は、７２０で、インデックス又はサーチエンジンインデックスの関連するドキュメントをサーチし、かつ、結合マッピングを記憶する。７３０ａで、方法は、インデックスを使用して、結合クエリから分解されたプライマリクエリからドキュメントＩＤを含む第１の結果の組を特定し、かつ、これを返す。同時に、方法は、７３０ｂで、インデックスを使用して、結合クエリから分解されたセカンダリクエリからドキュメントＩＤを含んでいるセカンダリ結果の組を特定し、かつ、これを返す。それから、７４０で、方法は、記憶された結合マッピングを使用して、第１の結果の組、及びセカンダリ結果の組から、マッチしたフィールド値を持つドキュメントＩＤを特定する。方法は、７５０で、第１の結果の組及びセカンダリ結果の組からマッチしたフィールド値を有する特定されたドキュメントＩＤの少なくともサブセットを読み出す。方法７００は、特定のシーケンスにおいてなされるように書かれているが、他のシーケンスも同様に、他の実施例において可能である。
【００３６】
上述のように、データは、（フィールド、値）のペアの組として、インデックスで記憶される。このように、図３に示したように、インデックスは、ドキュメントＩＤフィールド及び外部キー値からなるペアリングを保持してもよい。外部キーは、２つのテーブル間の関連する制約である。外部キーは、関連する１つの（参照する）テーブルの列又は列の組を特定し、関連する１つの（参照する）テーブルは、他の（参照された）テーブルの列又は列の組を参照する。したがって、サーチエンジンインデックスから、外部キー値へのドキュメントＩＤの、又はその値を有するドキュメントに関連するドキュメントＩＤに対する外部キー値の、結合マッピングから成る、結合テーブルが生成されてもよい。外部キー値がドキュメントＩＤにマップされ得るため、結合テーブルは特定のクエリのために動的につくられてもよい。加えて、結合テーブルは、外部キーとして利用できるあらゆるフィールドのために存在してもよい。結合テーブルは、キーが与えられたレコードを能率的に見つけ、かつ、対応する値を見つけるために、各々のテーブルからのキーをそれらに対応する値に関連づけるハッシュテーブルとして記憶してもよい。ハッシュテーブルは、ハッシュ関数を用いてキーを、その値が見つけられるべき所望の位置（バケット（ｂｕｃｋｅｔ））を見つけるために、アレーにおいてインデックスとして用いられる数に変換してもよい。このテーブルは前処理段階の間に、生成されることができ、ストレージに保持され、又は、他の場合には、そのテーブルは、クエリの時に動的に生成され、キャッシュメモリに記憶される。
【００３７】
図８は外部キー「国」の結合マッピングを例示する。結合マッピングは、アレーのインデックスとして、結合テーブルに記憶されてもよい。結合マッピングＡ８１０は、外部キー「国」を含むＲＤＢＭＳにドキュメントＩＤの組を含む。結合クエリに応答して、結合クエリは、サーチエンジンインデックスに、直ちに、ＲＤＢＭＳにおける二つの異なるテーブルからデータを結合するために結合クエリが採用する外部キーを有する全てのドキュメントを特定することを可能とする。結合マッピングＢ８２０は、特定の外部キー値に関連づけられたドキュメントＩＤの組を含む。図８に示すように、ドキュメントＩＤであるＣ１及びＭ１は、外部キー値「ＵＳＡ」に関連づけられている。結合マッピングＢ８２０は、結合クエリに応答して、ＲＤＢＭＳの少なくとも２つの異なるテーブルからデータを結合するために、直ちにサーチエンジンインデックスが、結合クエリが採用する特定の外部キー値を有するドキュメントを特定することを可能とする。
【００３８】
結合マッピングＢ８２０は、各々の値に対してビットマップとして示されてもよい。例えば、国の値「ＵＳＡ」に対するビットマップは、｛１０１００．．．｝として表される。これは、図２のテーブル国２１０及びテーブルメダル２４０に関連しており、このビットマップの各位置は、順に、ドキュメントＩＤ、Ｃ１、Ｃ２、Ｍ１、Ｍ２、及びＭ３であり、「１」は真の値、「０」は偽の値を表す。
【００３９】
図９Ａは、インデックスから得られる結合マッピングを使用して、結合されたデータにクエリを発する、より具体的な方法９００を示すフローチャートである。方法は、サーチエンジンインターフェースで受信される結合クエリを、プライマリ及びセカンダリクエリに分解するステップ９１０から始まる。プライマリクエリから説明すると、方法は、９２０ａで、プライマリクエリに関連するドキュメントＩＤを含むプライマリ結果の組を返すために、インデックスを使用する。方法は、ステップ９２０ａで、ディスクからドキュメントを読み出さず、むしろインデックスからドキュメントＩＤの結果の組を返す。同時に、方法は、９２０ｂで、インデックスから、セカンダリクエリに関連するセカンダリ結果の組を返す。図８に示したように、結合マッピングＡを使用することにより、ステップ９３０ａで、方法は、プライマリ値の組（Ｖ１）として、プライマリ結果の組から各々の特定されたドキュメントＩＤのためのキー値を特定する。方法は、同様に、９３０ｂで、セカンダリ値の組（Ｖ２）として、セカンダリ結果の組から各々の特定されたドキュメントＩＤのためのキー値を特定する。ステップ９４０で、方法は、プライマリ値の組及びセカンダリ値の組を比較し、かつ、マッチング値の組（Ｖ１２）として、マッチする値をフィルタリングする。図９Ｂは、プライマリ及びセカンダリ結果の組と値の組との集合の関係である。上述のように、方法９００はプライマリ値の組９３５と、セカンダリ値の組９３５ｂとを比較する。セクション９４５は、プライマリ値の組、及びセカンダリ値の組には共通関係があることを示している。方法は、共通関係を見つけ、９４０でマッチする値９４５をフィルタリングする。
【００４０】
図９Ａを続けると、その後、方法９００は、９５０において、図８において示した結合マッピングから、結合マッピングＢを使用する。そしてステップ９４０からマッチする値を有するデータベースの全てのドキュメントを特定する。次に、９６０で、方法は、ステップ９５０の特定されたドキュメントと、以下のうちの１つとの間の共通ドキュメントＩＤのフィルタリングによって、クエリされたドキュメントＩＤを特定する。すなわち、プライマリ結果の組、セカンダリ結果の組、又はプライマリ及びセカンダリ結果の組の組合せである。それから９７０の方法は、各々の共通フィールド値を有するプライマリドキュメント及びセカンダリドキュメントの複合スコアを計算する各々のドキュメントのための評価システムによって、ドキュメントをランク付けする。ステップ９８０で、方法は、ドキュメントＩＤを使用することによりドキュメントをデータベースから取り出し、かつ、ランクに従ってドキュメントを提示する。方法９００が特定のシーケンスを規定しているが、他のシーケンスも、同様に、他の実施例において可能である。
【００４１】
例えば、過去のオリンピックで、５０個を超える金メダルを獲得した国の経済概要を要求する結合クエリが受信されたと仮定する。ステップ９１０で、方法９００は、プライマリクエリ、及びセカンダリクエリに結合クエリを分解する。通常、プライマリクエリは、図２に示したように、テーブル国の全てのドキュメントに対してクエリを発する。しかしながら、方法は、９２０ａで、データベースにクエリを発することを必要とせず、サーチエンジンインデックスにクエリを発することによって、テーブル国２１０のドキュメントに関連づけられたドキュメントＩＤを含むプライマリ結果の組を返す。同様に、方法は、９２０ｂで、セカンダリクエリに関連するテーブルメダルのドキュメントに関連づけられたドキュメントＩＤを含むセカンダリ結果の組を返す。ステップ９２０ａ、及び９２０ｂで方法９００は、プライマリ結果の組のドキュメントＩＤ  Ｃ１、Ｃ２、及びＣ３、及びセカンダリ結果の組のドキュメントＭｌ、及びＭ３を特定する。
【００４２】
図８において例示される結合マッピングＡを使用することにより、ステップ９３０ａ−ｂで、方法は、プライマリ結果の組、及びセカンダリ結果の組から、各々のドキュメントＩＤの外部キー「国」の値を特定する。プライマリ結果の組の値の組１（Ｖ１）は、「国」の値として、「ＵＳＡ」、「Ｓｏｕｔｈ  Ａｆｒｉｃａ（ＳＡ）」、及び「ＩＮＤＩＡ」を含む。セカンダリ結果の組の値の組２（Ｖ２）は、「国」の値として「ＵＳＡ」、及び「ＲＵＳＳＩＡ」を含む。それから９４０の方法は、マッチする値のための値の組１、及び値の２組にフィルターをかける。このフィルタリングは、図９Ｂのベン図に示される。ここで、マッチする値９４５は「ＵＳＡ」である。
【００４３】
図８において例示した結合マッピングＢを用いることによって、ステップ９５０で、方法は、値「ＵＳＡ」を有するデータベースの全てのドキュメントを特定する。この例示の実施例において、フィールド／キー「国」の結合テーブルは、フィールド／キー「国」を含むデータベースの全てのドキュメントを有する。別の実施例において、結合マッピング（ｊｏｉｎｔ  ｍａｐｐｉｎｇ）はプライマリ結果の組、及びセカンダリ結果の組で生成されるドキュメントに限られていてもよい。
【００４４】
方法は、そして９６０において、クエリが経済概要を含んでいるドキュメントを取得することに興味があるため、プライマリ結果の組からドキュメントＩＤをもつ値「ＵＳＡ」のための結合マッピングＢからドキュメントをインターセクトすることによって、クエリされたドキュメントＩＤを特定する。この例では、Ｃ１は、マッチする唯一のドキュメントである。それから、方法は９７０において、インターセクトされたドキュメントにランクを付ける。この例では、ランク付けすることは必要ではない。なぜなら、１つのドキュメントだけが特定されたからである。しかし、複数のドキュメントが特定される状況では、方法は計算によって各々の特定されたドキュメント及び全ての関連する子ドキュメント（ｃｈｉｌｄ  ｄｏｃｕｍｅｎｔｓ）を特定されたドキュメントに対する複合スコアでランク付けする。子ドキュメントとは、外部キーによって連結されるドキュメントのことをいう。この例では、ドキュメントＣ１に対する子ドキュメントは、ドキュメントＭｌである。それから、方法は、９８０において、ドキュメントＣ１をデータベースから取り出し、かつ、ドキュメントを表示上の結果リストに示す。
【００４５】
図１０は、インデックスから得られる結合マッピングを使用する結合されたデータにクエリを発するより具体的な代替の方法１０００のフローチャートである。方法は、サーチエンジンインターフェースで受信される結合クエリをプライマリ及びセカンダリクエリに分解する１０１０から開始される。プライマリクエリから、方法は、１０２０ａで、プライマリクエリに関連するドキュメントＩＤを含むプライマリ結果の組を返すために、インデックスを使用する。方法は、ステップ１０２０ａで、ディスクからドキュメントを読み出さず、むしろインデックスからドキュメントＩＤの結果の組を返す。同時に、方法は、１０２０ｂで、インデックスから、セカンダリクエリに関連するセカンダリ結果の組を返す。
【００４６】
図８に示したように結合マッピングＡを使用することにより、ステップ１０３０で、結合フィールドの値は、プライマリ結果の組において特定された各々のドキュメントに対して抽出される。方法は、１０４０で、結合マッピングを用いて、各々のプライマリドキュメントに、共通の結合フィールド値を有するセカンダリドキュメントの組を特定することによって、各々のプライマリドキュメントに付加されるセカンダリドキュメントの組を決定する。結合クエリが内部結合を特定し、かつ、セカンダリドキュメントが見つからない場合、プライマリドキュメントは破棄される。次に、１０６０で、方法は、プライマリ及び／又はセカンダリ結果の組と、共通フィールド値を有するプライマリ及びセカンダリ結果の組から、特定されたドキュメントにフィルターをかける。１０７０で、方法は、各々のドキュメントのためのスコアリングシステムに基づいて、ドキュメントをランク付けする。このスコアリングシステムは、共通フィールド値を有する各々のプライマリドキュメント及びセカンダリドキュメントに対して複合スコアを計算する。それから、方法は、１０８０において、ドキュメントＩＤを使用することによりドキュメントをデータベースから取り出し、かつ、ランクに従ってドキュメントを提示する。方法１０００には、特定のシーケンスが示されているが、他のシーケンスも、同様に、他の実施例に対して用いることが可能である。
【００４７】
例えば、過去のオリンピックで、５０個を超える金メダルを獲得した国（COUNTRY）の経済概要(ECONOMIC  SUMMARY)を要求した結合クエリが受信されたと仮定する。ステップ１０１０で、方法１０００は、プライマリクエリ、及びセカンダリクエリに結合クエリを分解する。通常、プライマリクエリは、図２に示したように、テーブル国の全てのドキュメントのためにクエリを発する。しかしながら、方法は、１０２０ａで、データベースにクエリを発することを必要としない。その代わり、サーチエンジンインデックスにクエリを発することによって、テーブル国２１０のドキュメントに関連づけられたドキュメントＩＤを含むプライマリ結果の組を返す。同様に、１０２０ｂで、方法は、セカンダリクエリに関連するテーブルメダルのドキュメントに関連づけられたドキュメントＩＤを含むセカンダリ結果の組を返す。ステップ１０２０ａ、及び１０２０ｂで、方法１０００は、プライマリ結果の組のドキュメントＩＤ  Ｃ１、Ｃ２、及びＣ３、及びセカンダリ結果の組のドキュメントＭｌ、及びＭ３を特定する。
【００４８】
図８に示したように、結合マッピングＡを使用することにより、ステップ１０３０で、結合フィールドの値は、プライマリ結果の組において特定された各々のドキュメントに対して抽出される。１０４０で、結合マッピングを用いて、各々のプライマリドキュメントと共通結合フィールド値を有するセカンダリドキュメントの組を特定することによって、各々のプライマリドキュメントに付加されるセカンダリドキュメントの組を決定する。
【００４９】
図８において例示される結合マッピングＡを用いて、ステップ１０３０で、方法は、プライマリ結果の組、及びセカンダリ結果の組から各々のドキュメントＩＤに対して外部キー「国」（結合フィールド値）の値を特定する。プライマリ結果の組の値の組１（Ｖ１）は、「国」の値「ＵＳＡ」、「Ｓｏｕｔｈ  Ａｆｒｉｃａ（ＳＡ）」、及び「ＩＮＤＩＡ」を含む。結合マッピングを用いることによって、ステップ１０４０で、各々のプライマリドキュメントに対して共通の結合フィールド値を有するセカンダリドキュメントの組を特定することによって、各々のプライマリドキュメントに付加されるドキュメントの組を決定する。この場合、ドキュメントＭｌは、セカンダリ結果の組において、マッチするフィールド値を有する唯一のドキュメントである。方法はそれから、１０６０で、特定されたドキュメントを、プライマリ結果の組からのドキュメントＩＤでインターセクトすることによって、クエリがなされたドキュメントＩＤを特定する。なぜなら、クエリは、経済概要を含むドキュメントを取得することだけに興味を持っているからである。この例では、Ｃ１が、マッチする唯一のドキュメントである。それから１０７０の方法は、インターセクトされたドキュメントにランクを付ける。この例では、１つのドキュメントだけが特定されたので、ランク付けすることは必要ではない。しかし、複数のドキュメントが特定される状況では、方法は、特定されたドキュメント及び関連する全ての子ドキュメントに複合スコアを計算することによって、各々の特定されたドキュメントをランク付けする。子ドキュメントとは、外部キーによって連結されるドキュメントをいう。この例では、ドキュメントＣ１に対する子ドキュメントは、ドキュメントＭｌである。それから１０８０で、方法は、ドキュメントＣ１をデータベースから取り出し、かつ、ドキュメントを表示上の結果リストに示す。
【００５０】
上述したように、多くのインプリメンテーションにおいて、結合されているテーブルは共通データ要素に対して同じ命名法（ｓａｍｅ  ｎｏｍｅｎｃｌａｔｕｒｅ）を使用してもよい。しかしながら、結合されているテーブルの共通データ要素が異なるフィールド名（異なる命名法：ｄｉｆｆｅｒｅｎｔ  ｎｏｍｅｎｃｌａｔｕｒｅ）を使用して記述されている可能性がある。データベースの設計の観点からは最適でないが、共通アプリケーションにデータを提供するように使用するためマージされた異種のシステムで、この種のミスマッチは起こり得る。しばしば本来一緒に作動するように設計されていない場合である。こうした状況では、共通データ要素のための異なる命名法を有する各々のテーブルのための結合テーブルが使用される。同様に、結合クエリが一つ以上の結合フィールドを含む場合、複数の結合テーブルがインプリメントされてもよい。
【００５１】
例えば、テーブルメダル２４０が、図２に示したように、列（「国（Ｃｏｕｎｔｒｙ）」）ではなく、「ＣＴＲＹ」を使用したと仮定する。列「国（Ｃｏｕｎｔｒｙ）」に対する結合テーブルは、テーブルメダル２４０からドキュメントを特定しないであろう。テーブル国２１０及びメダル２４０を結合することを必要とする結合クエリは、列「国（Ｃｏｕｎｔｒｙ）」のための結合テーブル及び列「ＣＴＲＹ」のための結合テーブルを必要とする。上述の方法のステップ９３０ｂ、及び１０４０で、方法は、セカンダリ結果の組から結合フィールド値を特定するために、結合テーブル「ＣＴＲＹ」を使用する。
【００５２】
一部のインプリメンテーションにおいて、結果として生じるドキュメントはプライマリテーブルから読み出される個別ドキュメント、又は結合マッピングを使用して選択されたドキュメント、あるいはこれら両方のさまざまな属性に基づいてスコア付けされる。例えば、スコア付けするテクニックとしては、プライマリドキュメントのためのスコアとして結合マッピングを使用して読み出される数のドキュメントを考慮する。そのような場合、多くの「子」を有するドキュメントは、ほとんど関連するドキュメントを持たないドキュメントより高いスコアを有する。したがって、高いスコアは、高い重要性を示す。場合によっては、「子カウント」スコアが階層の各々のレベルで各々のドキュメントのために計算され、かつ、プライマリドキュメントの総数スコアを取得するために累積的に合計される階層的なスコアリングアプローチが使用されてもよい。
【００５３】
スコアリング技術の１つの例はＬｕｃｅｎｅスコアリングである。これは与えられたドキュメントがクエリにどれくらい関連するかを決定するために情報サーチのベクトル空間モデル（ＶＳＭ）及びブール・モデルの組合せを使用する。一般に、ＶＳＭ法は、問い合わせ語が、集合の全てのドキュメントにおいて出現する回数に関連してドキュメントにおいて現れる頻度に基づいて、スコアを計算する。これによってスコアが高ければ高いほど、そのドキュメントはクエリにより大きく関連する。Ｌｕｃｅｎｅは、クエリの仕様に基づいてブール・モデルを使用し、最初にスコア付けが必要なドキュメントを絞り込む。
【００５４】
割り当てられたスコアは、他のデータの属性に基づいて、更に修正されてもよい（例えば、上昇または下降させられる）。例えば古さ（より古いレコードは、新しいものよりも低い重みを与えられる）、ソース、著者及び／又はその他である。スコアは、それから、クエリの応答としてのドキュメントの提示に影響を与える。例えば、カットオフスコアを使用することにより、関係が薄い結果を排除するために、あるいは、スコアに基づいて結果を表示するために、利用されてもよい（例えばランク付けされたリスト）。
【００５５】
図１１は、スコアリング、及びランキングの技術を示す図である。例えば、過去のオリンピックで、５０個を超える金メダルを獲得した国の経済概要を要求する結合クエリが受信されたと仮定する。したがって、テーブル国１１１０、及びテーブルメダル１１４０から、ドキュメントが分析される。上述の方法の何れかを用いて、結合クエリは、プライマリクエリ、及び一つ以上のセカンダリクエリに分解される。各々のクエリは、テーブルのドキュメントに関連づけられたドキュメントＩＤの組を有するサーチエンジンインデックスから結果の組を返す。
【００５６】
この場合、プライマリクエリは、テーブル国１１１０からのドキュメントに関連づけられたプライマリ結果の組１１１５にドキュメントＩＤ  Ｃ１、Ｃ２及びＣ３を返す。結果の組１１１５は、クエリ関連づけられた各々のドキュメントＩＤに対するスコアを含んでもよい。プライマリクエリは、テーブル国１１１０から全ての国に興味を持つため、各々のドキュメントＩＤは、この例では、同じスコアを与えられる。セカンダリクエリは、テーブルメダル１１４０から５０個を超える金メダルを獲得した国の全てのドキュメントを返す。したがって、セカンダリ結果の組１１４５は、適切なスコアを含むドキュメントＭｌ、Ｍ３、及びＭ４を有する。この場合、ドキュメントＩＤに割り当てられたスコアは、５０個を超える金のクエリに基づく。そして、この結果の組に対するスコアリングは、金メダルの数に基づく。このため、金メダルの数が一番高いドキュメントＩＤに一番大きなスコアが与えられる。結果の組１１４５は、ドキュメントＩＤ「Ｍ１」に４のスコア、ドキュメントＩＤ「Ｍ３」に３のスコア、そして、ドキュメントＩＤ「Ｍ４」に２のスコアを含む。
【００５７】
この例では、クエリは、テーブル国１１１０からドキュメントを生成することにだけ興味がある。しかしながら、テーブル国１１１０から関連づけられる各々のドキュメントＩＤは全て同じスコアを持つ。複合スコア・テーブル１１５０は、全てのプライマリ、及び関連するセカンダリドキュメントの複合スコアを含む。上述の方法を用いることによって、複合スコアが、各々のプライマリドキュメント、及び関連するセカンダリドキュメントに対して算出される。ドキュメントは、共通フィールド値に基づいて連結される。この場合、ドキュメントＣ１はＭｌにリンクされ、ドキュメントＣ２はＭ２にリンクされ、かつ、ドキュメントＣ３はＭ４にリンクされる。図示するように、ドキュメントは、ランク付けされ、かつ、複合スコアに従って提示される。ドキュメントＣ１、及びＣ３が返されることになる。ドキュメントＣ１には５のスコアが、そして、Ｃ３には３のスコア与えられる。したがって、ドキュメントＣ１は第１のドキュメントとランク付けされ、かつ、Ｃ３は第２のドキュメントとランク付けされる。図示するように、ドキュメントは、ランクに従って結果リスト１１６０に示される。
【００５８】
図１２は、インデックスを使用して、結合されたデータにクエリを発するシステム１２００を示す。システムは、ストレージ装置１２０２、及び処理装置１２０４を含む。処理装置１２０４は、結合エンジン１２１０、及びサーチエンジン１２０５を含む。処理装置１２０４はサーチエンジンインデックス、及び結合マッピングの作成、及びインデックスに対するサーチエンジンクエリの処理を含むシステム１２００の機能的動作を提供する。ストレージ装置１２０２は、インデックス、及びドキュメントの（揮発性、及び不揮発性）記憶を提供するストレージ１２２０を含む。
【００５９】
サーチエンジン１２０５は、メインメモリにおいて実行され、結合エンジン１２１０からクエリ、及び命令を受信し、上述したように、ＲＤＢＭＳ１２１５のテーブルからレコードベースのデータを読み出し、かつ、サーチエンジンインデックスを作成する。各々のテーブルに対して、結合クエリに関連して、サーチエンジン１２０５は、ドキュメントＩＤ及び外部キーを有するサーチエンジンインデックス、並びにサーチエンジンインデックスから対応するドキュメントＩＤを含むドキュメント及び対応するレコードから残りの非キーデータをつくる。結合エンジン１２１０は、ユーザから、要求を受信する。ユーザは、多くの場合、複数のテーブルからのデータを要求する。そして、結合エンジン１２１０は、サーチエンジン１２０５はクエリを発し、結合クエリから分解したプライマリ及びセカンダリクエリに対するプライマリ及びセカンダリ結果の組を返す。結合エンジン１２１０は、分解されたクエリに基づいてストレージに結合マッピングを提供するために、サーチエンジン１２０５にクエリを発する。結合マッピングを使用することにより、結合エンジン１２１０は、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組からドキュメントを特定する。サーチエンジン１２０５は、それからＲＤＢＭＳ１２１５から特定されたドキュメントを読み出してもよい。
【００６０】
ストレージ１２２０は、インデックス、及び結合マッピングの記憶を管理してもよい。例えば、１２２０は、特定のインデックスが大きく、しかもまれにしかアクセスされないことを判断し、ディスクに格納することが望ましいことを判断する。これに対して、他のインデクス及び／又は結合マッピングは、揮発性メモリ（例えばＲＡＭ）に記憶し、速くそして頻繁な利用に供してもよい。
【００６１】
結合エンジン１２１０は、結合が実行されるフィールドを特定するために、結合マッピングを使用してもよい。更に、結合エンジン１２１０は、ドキュメントと関連したフィールドの値を特定するために、結合マッピングを使用してもよい。あるいは、結合エンジン１２１０は、フィールドの値と関連したドキュメントを特定するために、結合マッピングを使用してもよい。結合エンジン１２１０は、また、全ての特定されたドキュメント及び関連する「子」ドキュメントの複合スコアを計算してもよい。結合エンジン１２１０は、また、特定されたドキュメントを複合スコアに基づいてランク付けしてもよい。結合エンジン１２１０は、それからＲＤＢＭＳ１１３５から特定されたドキュメントを読み出すためにサーチエンジン１２０５にクエリを発してもよく、かつ、ユーザにそれらを各々のドキュメントのランクによって調整されたリストに示してもよい。
【００６２】
実際には、１２００は、システム又はウェブベースのアプリケーションを含むより大きなアプリケーションの内のモジュールまたは一部としてインプリメントされてもよい。例えば、従来のサーチエンジンインターフェースに利用してもよい。このような場合には、複数のクライアント１２２５は、ネットワーク１２３０を介してクエリを送信する。クエリは、ウェブ・サーバ１２３５で受信され、かつ、処理のためにシステム１２００に転送される。クライアント１２２５に示されるよう、結果はほかのアプリケーションのページに一体化されてもよい。
【００６３】
クライアント１２２５は、パーソナルコンピュータで動作するソフトウエアとしてインプリメントされてもよい（例えばインテルプロセッサ又はアップルマッキントッシュコンピュータのＰＣ）。そして、マイクロソフト・ウインドウズファミリオペレーティングシステム（ワシントンＤＣ、レドモンドのマイクロソフトコーポレーション）、ＭＡＣ  ＯＳオペレーティングシステム（カリフォルニア、クパチーノ、アップルコンピュータ）、そして多種のＵｎｉｘ、例えば、サンマイクロシステムズのＳＵＮ  ＳＯＬＡＲＩＳ，そして、ＧＮＵ／Ｌｉｎｕｘ（ＲＥＤ  ＨＡＴ社、ノースキャリフォルニア他）上で動作してもよい。クライアント１１９５は、また、スマート、又はダムターミナル、ネットワークコンピュータ、セットトップボックス、ゲーム・プレーヤ、モバイル・デバイス、ワイヤレス・デバイス、パーソナル携帯情報機器、メディア（例えば音楽及び／又はビデオ）プレーヤ、情報機器、ワークステーション、ミニコンピュータ、メインフレームコンピュータ又は他のいかなるデバイスをも含む、ハードウェアデバイスにインプリメントされてもよい。
【００６４】
クライアントとシステム１２００を接続するネットワーク１２３０は、標準電話線、ＬＡＮ又はＷＡＮリンク（例えばＴ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（ＩＳＤＮ、フレーム・リレー、ＡＴＭ）、ワイヤレス・リンク（８０２．１１、ブルートゥース、その他）、及びその他のいかなる適切な組合せも含まれる。望ましくは、ネットワーク１２３０はＴＣＰ／ＩＰプロトコル通信を行うことができ、かつ、クライアント１２２５によって作られるＨＴＴＰ／ＨＴＴＰＳ要求はこの種のＴＣＰ／ＩＰネットワークを通じて通信されてもよい。ネットワークのタイプは限定されず、かつ、いかなる適切なネットワークが使用されてもよい。通信ネットワーク１２３０は、ワイヤレスあるいは有線のイーサネットベースのイントラネット、ローカル又はワイドエリアネットワーク（ＬＡＮ又はＷＡＮ）及び／又は多くの異なる通信媒体、及びプロトコルを提供するインターネットとして公知のグローバルな通信ネットワークであってもよい。これらの例は、発明を限定するものではない。
【００６５】
システム１２００をサポートするために使用さ得るＲＤＢＭＳ１２１５の例としては、サンマイクロシステムズのＭｙＳＱＬ  Ｄａｔａｂａｓｅ  Ｓｅｒｖｅｒ、ＯＲＡＣＬＥ  Ｄａｔａｂａｓｅ  Ｓｅｒｖｅｒ又はマイクロソフトのＳＱＬＳｅｒｖｅｒ  Ｄａｔａｂａｓｅ  Ｓｅｒｖｅｒが含まれる。
【００６６】
本発明は、ハードウェア、ソフトウエア又はハードウェア及びソフトウエアの組合せによって実現することができる。本発明の方法及びシステムのインプリメンテーションは、１つのコンピュータシステムの集中化した方法で実現することができ、あるいは、異なる要素がいくつかの相互に連結したコンピュータシステムで結合された分散化されたシステムで実現することができる。本願明細書において記載されている方法を実行するために適応したコンピュータシステム又は他の装置のいかなる種類も、本願明細書に記載されている機能を実行することに適する。
【００６７】
上記のパラグラフに記載されている方法を実行するコンピュータ可読の命令を含むコンピュータ可読媒体を有する様々な製品が、本発明の各種実施形態として提供されてもよい。特に、本発明の方法の機能は、例えば、コンピュータ可読媒体に埋め込まれていてもよいが、制限されてはならない。フロッピーディスク（ハードディスク）光ディスク（磁気テープ）ＰＲＯＭ（ＥＰＲＯＭ）、ＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭに記憶されてもよく、又はサーバからダウンロードされてもよい。本発明の機能は、いかなる数のコンピュータ可読の命令又は例えば言語（例えばＦＯＲＴＲＡＮ、Ｐａｓｃａｌ、Ｃ、Ｃ＋＋、Ｊａｖａ、Ｃ＃、Ｔｃｌ、ＢＡＳＩＣ、及びアセンブラ言語）でコンピュータ可読媒体上に記憶されてもよい。更に、コンピュータ可読の命令は、例えば、スクリプト（マクロ）に書かれてもよく、機能的に市販のソフトウエア（例えばＥＸＣＥＬ又はＶＩＳＵＡＬ  ＢＡＳＩＣ）に埋め込まれてもよい。
【００６８】
本発明は、特に例示の実施例の参照によって図と共に説明したが、添付の請求の範囲に包含される本発明の範囲内において、それはさまざまな変更がなされてもよいことが、当業者によって理解される。
以上の実施例に関し、以下の付記を開示する。
（付記１）
結合クエリに応答してサーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスする方法であって、電子処理システムにおいて、当該方法は：
ドキュメントをサーチし、かつ、結合マッピングを記憶するステップと；
インデックスを使用して、前記結合クエリのプライマリ及びセカンダリクエリのためのプライマリ及びセカンダリ結果の組を返すステップと；
前記結合マッピングを使用して、共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定するステップと；
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すステップと；
を有する方法。
（付記２）
前記結合マッピングは、ドキュメントと関連するフィールドの値を特定する、
付記１記載の方法。
（付記３）
前記結合マッピングは、フィールドの値と関連するドキュメントを特定する、
付記１記載の方法。
（付記４）
前記結合クエリを使用して、結合が実行されるフィールドを特定するステップ、
を更に有する付記１記載の方法。
（付記５）
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の内部結合を含む、
付記１記載の方法。
（付記６）
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の外部結合を含む、
付記１記載の方法。
（付記７）
前記結合クエリに従って、前記特定されたドキュメントにフィルターをかけるステップ、
を更に含む付記１記載の方法。
（付記８）
揮発性メモリに、前記結合マッピングを記憶するステップ、
を更に有する付記１記載の方法。
（付記９）
充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断するステップと；
もし充分なメモリが存在する場合、揮発性メモリに、前記結合マッピングを記憶するステップと；
もし充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶するステップと；
を更に有する付記８記載の方法。
（付記１０）
既存の結合マッピングを削除するステップは、
最近最も使われていない結合マッピングを削除するステップ、
を含む付記９記載の方法。
（付記１１）
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から前記特定されたドキュメントの各々の複合スコアを計算するステップ、
を更に有する付記１記載の方法。
（付記１２）
少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランクを付け、かつ、少なくとも前記特定されたドキュメントのサブセットを、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するステップ、
を更に有する付記１１記載の方法。
（付記１３）
結合クエリに応答してサーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスするエレクトロニックシステムであって、
クエリに応答して、インデックスを提供し、かつ、前記インデックスから結果の組を返すように構成されたサーチエンジンと；
前記インデックス、及び結果の組を記憶するストレージと；
結合エンジンであって：
ストレージに結合マッピングを提供するために、前記サーチエンジンにクエリを発し；
前記結合クエリのプライマリ及びセカンダリクエリに対するプライマリ及びセカンダリ結果の組を返すために、前記サーチエンジンにクエリを発し；
前記結合マッピング、及び結果の組を使用して、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定する；
前記結合エンジンと；
を有するシステム。
（付記１４）
前記サーチエンジンは、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すように更に構成される、
付記１３記載のシステム。
（付記１５）
前記結合エンジンは、ドキュメントと関連するフィールドの値を特定するために前記結合マッピングを使用するように更に構成される、
付記１３記載のシステム。
（付記１６）
前記結合エンジンは、フィールドの値と関連するドキュメントを特定するために前記結合マッピングを使用するように更に構成される、
付記１３記載のシステム。
（付記１７）
前記結合エンジンは、結合が実行されるフィールドを特定するために前記結合クエリを使用するように更に構成される、
付記１３記載のシステム。
（付記１８）
前記結合エンジンは、前記クエリに従って前記特定されたドキュメントにフィルターをかけるように更に構成される、
付記１３記載のシステム。
（付記１９）
前記結合エンジンは、前記クエリの前記プライマリ及びセカンダリクエリの間の内部結合として前記クエリを分解するように更に構成される、
付記１３記載のシステム。
（付記２０）
前記結合エンジンは、前記クエリの前記プライマリ及びセカンダリクエリの間の外部結合として前記クエリを分解するように更に構成される、
付記１３記載のシステム。
（付記２１）
前記ストレージは、揮発性メモリに前記結合マッピングを記憶するように更に構成される、
付記１３記載のシステム。
（付記２２）
前記ストレージは、
１）充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断し；
２）充分なメモリが存在する場合、揮発性メモリの前記結合マッピングを記憶し；かつ、
３）充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶する、ように構成される、
付記２１記載のシステム。
（付記２３）
前記ストレージは、最近最も使用されていない結合マッピングを削除するように更に構成される、
付記２２記載のシステム。
（付記２４）
前記結合エンジンは、
共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組から各々の前記特定されたドキュメントの複合スコアを計算するように更に構成される、
付記１３記載のシステム。
（付記２５）
前記結合エンジンは、少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランク付けするように更に構成される、
付記２４記載のシステム。
（付記２６）
前記サーチエンジンは、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの前記少なくともサブセットを、読み出し、かつ、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するように更に構成される、
付記２５記載のシステム。
（付記２７）
結合クエリに応答してレコードベースのデータストレージシステムのデータにアクセスするために、コンピュータ可読のプログラム部を有する製造製品であって、
前記プログラム部は：
ドキュメントをサーチし、かつ、結合マッピングを記憶するステップと；
インデックスを使用して、前記結合クエリのプライマリ及びセカンダリクエリのためのプライマリ及びセカンダリ結果の組を返すステップと；
前記結合マッピングを使用して、共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定するステップと；
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すステップと；
を実行する命令を有する、製造製品。
（付記２８）
前記結合マッピングは、ドキュメントと関連したフィールドの値を特定する、
付記２７記載の製造製品。
（付記２９）
前記結合マッピングは、フィールドの値と関連したドキュメントを特定する、
付記２７記載の製造製品。
（付記３０）
前記プログラム部が、
前記結合クエリを使用して、結合が実行されるフィールドを特定するステップ、
を実行する命令を更に含む、
付記２７記載の製造製品。
（付記３１）
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の内部結合を含む、
付記２７記載の製造製品。
（付記３２）
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の外部結合を含む、
付記２７記載の製造製品。
（付記３３）
前記プログラム部が、
前記結合クエリに従って、前記特定されたドキュメントにフィルターをかけるステップ、
を実行する命令を更に有する、
付記２７記載の製造製品。
（付記３４）
前記プログラム部が、
揮発性メモリに、前記結合マッピングを記憶するステップ、
を実行する命令を更に有する、
付記２７記載の製造製品。
（付記３５）
前記プログラム部が、
充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断するステップと；
もし充分なメモリが存在する場合、揮発性メモリに、前記結合マッピングを記憶するステップと；
もし充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶するステップと、
を実行する命令を更に有する、
付記２７記載の製造製品。
（付記３６）
既存の結合マッピングを削除するステップは、
最近最も使われていない結合マッピングを削除するステップ、
を実行する命令を有する、
付記３５記載の製造製品。
（付記３７）
前記プログラム部は、
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々の複合スコアを計算するステップ、
を実行するための命令を更に有する、
付記２７記載の製造製品。
（付記３８）
前記プログラム部は、
少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランクを付け、かつ、少なくとも前記特定されたドキュメントのサブセットを、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するステップ、
を実行する命令を更に有する、
付記３７記載の製造製品。
（付記３９）
サーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスする方法であって：
プライマリテーブルとしてテーブルを前記レコードベースのデータストレージシステムから選択するステップと；
前記プライマリテーブルからサーチエンジンインデックスを作成する作成ステップであって、前記サーチエンジンインデックスの各々のドキュメントは、前記プライマリテーブルの１つのレコードを示す、作成ステップと；
前記レコードベースのデータストレージシステムからデータを抽出するために要求を受信する受信ステップであって、前記要求は、複数のテーブルからのデータを含んでいる、受信ステップと；
複数のテーブルの各々のテーブルに対して、前記プライマリテーブルから外部キーを含む結合マッピングを作成するステップと；
受信された要求に従って、データを前記サーチエンジンインデックス、及び前記結合マッピングの各々から抽出するステップと、
を有する方法。
（付記４０）
前記受信された要求は、
前記プライマリテーブルと、一つ以上の複数のテーブルとの間の内部結合を含む、
付記３９記載の方法。
（付記４１）
前記受信された要求は、
前記プライマリテーブルと、一つ以上の複数のテーブルとの間の外部結合を含む、
付記３９記載の方法。
（付記４２）
前記サーチエンジンインデックスはディスクに記憶され、かつ、前記結合マッピングはＲＡＭに記憶される、
付記３９記載の方法。
【図１】
0005616335.tif 000006
【図２】
0005616335.tif 000007
【図３】
0005616335.tif 000008
【図４】
0005616335.tif 000009
【図５】
0005616335.tif 000010
【図６】
0005616335.tif 000011
【図７】
0005616335.tif 000012
【図８】
0005616335.tif 000013
【図９Ａ】
0005616335.tif 000014
【図９Ｂ】
0005616335.tif 000015
【図１０】
0005616335.tif 000016
【図１１】
0005616335.tif 000017
【図１２】
0005616335.tif 000018