JP5616335B2 - サーチエンジンインデックス内の結合データに対するクエリ - Google Patents

サーチエンジンインデックス内の結合データに対するクエリ Download PDF

Info

Publication number
JP5616335B2
JP5616335B2 JP2011514601A JP2011514601A JP5616335B2 JP 5616335 B2 JP5616335 B2 JP 5616335B2 JP 2011514601 A JP2011514601 A JP 2011514601A JP 2011514601 A JP2011514601 A JP 2011514601A JP 5616335 B2 JP5616335 B2 JP 5616335B2
Authority
JP
Japan
Prior art keywords
join
mapping
document
primary
query
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011514601A
Other languages
English (en)
Other versions
JP2011524587A5 (ja
JP2011524587A (ja
Inventor
スミス,ティム
ジョンソン,ウィリアム,ケイ,サード
タム−ダニエルズ,リク
プロブステイン,シド
Original Assignee
アティヴィオ,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アティヴィオ,インコーポレイテッド filed Critical アティヴィオ,インコーポレイテッド
Publication of JP2011524587A publication Critical patent/JP2011524587A/ja
Publication of JP2011524587A5 publication Critical patent/JP2011524587A5/ja
Application granted granted Critical
Publication of JP5616335B2 publication Critical patent/JP5616335B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、サーチエンジンインデックス内の結合データに対するクエリの技術に関する。
[関連出願]
本出願は、2008年6月17日に出願されたアメリカ仮出願番号第61/073156号(「サーチエンジン・インデックス内の結合されたデータに対するクエリ)の利益を享受する。上記の出願の全ての開示は、この出願に組み込まれる。
[発明の背景]
例えば、コンピュータシステム利用可能性の増大、及びイントラネット、及びインターネットのようなさまざまなネットワークを使用したコンピュータシステムへの接続の能力の増大によって、多数の人々が利用できる巨大な情報の蓄積が存在するようになった。たとえば、このように、大量の情報を個人が扱えるようになったことで、生産性の上昇を引き起こした。
しかし、このような情報へのアクセス及び処理の改善は、新たな課題を生み出す。たとえば、特に、情報が様々なフォーマットで様々な場所に蓄積されている場合、この種の大きな情報の蓄積をどのようにサーチし管理するかが課題となっている。多くの新規なツールが、現在絶えず拡大する電子的に利用できる情報を取扱うために開発された。
例えば、図1を参照する。レコードベースの既存のデータ蓄積100は、テーブルの列(column)と行(row)という概念で構築されている。テーブルは一連の列で定義され、各々の列は、具体的な(例えば、名前又は日付などのデータの特定のカテゴリに対応した)性質を持っており、そして、データはそのテーブルの各々の行に記憶される。例えば、顧客に関連するデータは、CUST_ID(顧客アイデンティファイア)、L_NAME(ラストネーム)、及びF_NAME(ファーストネーム)の列を含む顧客テーブル110に蓄積される。他のテーブル(購入テーブル115)は、顧客による購入に関連するデータを含む。そして、CUST_ID、PUR_ID(購入アイデンティファイア)及びPUR_DATE(購入日)を含むよう定義されてもよい。さらにまた、各々の購入は、複数の製品を含んでもよい。したがって、製品テーブル120は、PUR_ID列及びPRO_ID(製品アイデンティファイア)列を含む。この種の設計は、個々のカスタマーに対して複数の購入(各々は、複数の製品を有してもよい)をレコードすることを許容し、複数の重複データ(例えば、あらゆる購入のためのラストネームのデータを記憶しなければならないこと)がないようにする。例えば、カスタマー・ナンバー00001(アン・スミス)は、3つの購入(PUR_ID 9901、9902、及び9903)を行ったことがわかる。更に、それらの購入のうちの1つ(9901)は、2つの製品、AAAA、及びBBBBを含んでいることがわかる。しかしながら、顧客名、及び製品名のような特定の記述が他のテーブルに記憶されるため、1つのテーブル(例えば購入テーブル115)への単純なクエリが全ての所望の情報の報告を提供しないことになる。
複数のテーブルからデータを必要とするクエリ、及び他のデータ処理に対応するために、特定の列が外部キー(foreign key)として参照される。外部キーとは、他のテーブル(「参照された」テーブル)の列又は列の組に関連する1つのテーブル(通常は「参照する」テーブルと称する)の列(又は列の組)を特定する2つのテーブル間で関連する制約のことをいう。上の例を使用すると、CUST_ID列は、顧客テーブル110から購入テーブル115に対して外部キーの役割を果たす。そして、PUR_ID列は製品テーブル120に対して外部キーとしての役割を果たす。したがって、カスタマーの名前、及び購入日で、カスタマー00001によって購入される全ての製品のリストを読み出す要求は、以下のように規定できる。
Figure 0005616335
上記のクエリは、各々のテーブルの外部キーを有効に利用する。この種のアプローチは、データベース・インターフェースを情報サーチのために利用するアプリケーションのためには有効に働く。しかしながら、サーチエンジンの飛躍的な普及、及び単純なユーザインタフェースのため、従来のデータベースサーチ技術を使用したいという要求は弱まってしまった。
残念なことに、データ冗長度を減らし、かつ、データ正規化規則を課すデータベース設計技術は、現代のサーチエンジンが行うフルテキストインデクシング及びテキストドキュメントへのクエリを発することをサポートしない。
例えば、ワールドワイド・ウェブ(「WWW」又は「ウェブ」)は、巨大な量の情報にアクセスすることを提供する。そして、専門のサーチツール(「サーチエンジン」(例えばGoogle、Yahoo、及びMSN Search)は、静的なテキストをサーチすることに対して成功を収めた。しかしながら、従来のウェブベースのサーチエンジンは、企業の環境での使用に対してデザインされていない。なぜなら、データは多くの異なる形式で記憶されており、様々にローカライズされた記憶場所及びデータベースに保存されているからである。インターネット又はイントラネットにおけるデータの記憶場所には、サーチクエリに関連するレコードベースのデータが存在するが、このサーチエンジンは、インデキシング及び/又はデータへのアクセスの能力がない。類似した課題は、コンテンツの他の形式(例えばワープロドキュメント、グラフィック又はイメージ・ファイル、MP3クリップ、インタラクティブ・ブログ、及びリアルタイムに変化するその他のデータ)に対しても当てはまる。
複数のテーブルを参照するクエリを実行するサーチエンジンの従来方法は、以下の二つのカテゴリのうちの1つに分類される。(i)結合されたテーブルがインデックスタイムで結合されなければならない、非正規化(demoralization)、又は、(ii) サブディビジョン(subdivison)、ここで、クエリは、別個に処理される二つ以上のテーブルクエリに分離され、処理後のフェーズ(post−processing phase)で、その結果が結合される。非正規かは、幾つかの欠点がある。第1に挙げられるのは、インデクスのサイズが増加することである。なぜなら、非正規化で、複数の外部キーの数の倍率でその大きさが増大する。上述の処理後のフェーズのアプローチは、インデクスから大量のデータ(典型的には、一つ以上のテーブルの全部のコンテンツ)を抽出することになり、しかも結合制約(join constraints)に基づき、データを選び出さなければならない。このことは、また、リソースの非効率的な使用である。
[発明の開示]
レコードベースのデータベースの複数のテーブルに記憶されている構造化されたデータに能率的にクエリを発し読み出すために、サーチエンジンを利用する技術及びシステムが必要とされる。
コンピュータ可読のプログラム部分を含む方法及びこれに対応する装置は、結合クエリ(join query)に応答してサーチエンジンを用いてレコードベースのデータストレージシステムのデータにアクセスすることに関連する。複数のデータベーステーブルは、サーチエンジンを用いてインデクス付けされる。各々のデータベーステーブルの行はサーチエンジンのドキュメントにマップされ、かつ、テーブルの行はドキュメントフィールドにマップされる。ドキュメントはサーチされ、かつ、結合マッピング(joint mappings)が記憶される。インデックス(すなわちサーチエンジンインデックス)を使用することにより、プライマリ及びセカンダリ結果の組は、結合クエリのプライマリ及びセカンダリクエリに対して返される。結合マッピングを使用することにより、ドキュメントは、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組から特定される。更に、少なくとも特定されたドキュメントのサブセットが、共通フィールド値を有するプライマリ結果の組と、セカンダリ結果の組とから読み出される。
都合のよいことに、一部のアプリケーションにおいては、ディスクから大きいデータ容量を読み出さずに結合クエリが実行される。スケーラブルな情報検索(IR:Information Retrieval)ライブラリ(例えばLucene)の特徴を使用することにより、結合フィールド値を内部ドキュメントIDにマップする結合マッピングは、サーチエンジンインデックスから抽出される。結合クエリが検出された場合、プライマリクエリ、セカンダリクエリの組の一つ以上、及び対応する結合フィールドは結合クエリから抽出される。プライマリクエリ、及びセカンダリクエリは、インデックスに対して実行される。そして、プライマリ及びセカンダリ結果の組に結果としてなる。それから、結合クエリの結合制約は、共通フィールド値を有するプライマリ及びセカンダリ結果の組からドキュメントを特定するために結合マッピングを使用することにより実行される。ドキュメントが特定されたあと、クエリがなされたドキュメントがディスクから読み出される。
結合マッピングは、ドキュメントと関連したフィールドの値を特定するために使用されてもよい。あるいは、結合マッピングは、フィールドの値と関連したドキュメントを特定するために使用されてもよい。加えて、結合クエリは、結合が実行されるフィールドを特定するために使用されてもよい。結合クエリは、結合クエリのプライマリ及びセカンダリクエリ間の内部結合を有してもよい。あるいは、結合クエリは、結合クエリのプライマリ及びセカンダリクエリ間の外部結合を有してもよい。
更に、特定されたドキュメントは、結合クエリに従ってフィルターをかけられてもよい。結合マッピングは、揮発性メモリに記憶されてもよい。結合マッピングを記憶することは、i)充分な揮発性メモリが結合マッピングを記憶するために利用できるかを判断すること、ii)充分なメモリが存在する場合、揮発性メモリの結合マッピングを記憶すること; 及び、iii)充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、新規な結合マッピングを記憶すること、を含んでもよい。削除する場合、LRU法で結合マッピングが削除されてもよい。複合スコア(combined score)は、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組から各々の特定されたドキュメントのために計算されてもよい。更に、各々の特定されたドキュメントは、少なくとも複合スコアの関数として、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組からランクを付けられ、ランキングに従って、画面の結果リストに、少なくとも特定されたドキュメントのサブセットを表示してもよい。
結合クエリに応答する、サーチエンジンを使用するレコードベースのデータストレージシステムのデータにアクセスするエレクトロニックシステムは、サーチエンジン、ストレージ、及び結合エンジンを有してもよい。サーチエンジンは、インデックスを提供し、かつ、クエリに応答してインデックスから結果の組を返すように構成されてもよい。ストレージは、インデックス、及び結果の組を記憶してもよい。結合エンジンは、ストレージに結合マッピングを提供するためにサーチエンジンにクエリを発するように構成されてもよい。更に、結合エンジンは、結合クエリのプライマリ及びセカンダリクエリのためのプライマリ及びセカンダリ結果の組を返すためにサーチエンジンにクエリを発するように構成されてもよい。結合エンジンは、また、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組からドキュメントを特定するために結合マッピング、及び結果の組を使用するように構成されてもよい。サーチエンジンは、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組から少なくとも特定されたドキュメントのサブセットを読み出すように構成されてもよい。
上述の説明は、本発明についての例示の実施例の具体的説明によって明らかとなる。図において、類似した参照符号は、図面を通じて異なる面から見た同じ部分を表す。図面は、必ずしも比例するわけではなく、その代わりに、強調して本発明の実施例を例示するよう配置され得る。
一まとまりの顧客購入データの従来のテーブルベースのリレーショナルデータベーススキーマを示す図である。 特定の国に関連する一まとまりの経済概要の従来のテーブルベースのリレーショナルデータベーススキーマを示す図である。 図2のテーブルから作成される一まとまりのインデクス付けされたドキュメントを示す図である。 図2のテーブルからデータを含む完全に列挙されたドキュメントを示す図である。 従来のテーブルベースのリレーショナルデータベーススキーマの2つのテーブル間の内部結合を示す図である。 従来のテーブルベースのリレーショナルデータベーススキーマの2つのテーブル間の外部結合を示す図である。 インデックスを使用し、結合されたデータにクエリを発し、かつ、結合演算を実行する方法のフローチャートである。 インデックスを使用して結合されたデータにクエリを発する際に使用される結合マッピングを示す図である。 インデックスから得られる結合マッピングを使用して、結合されたデータにクエリを発し、かつ、結合演算を実行する、より具体的な方法のフローチャートである。 プライマリ及びセカンダリ結果の組のフィールド値の集合の関係を表すベン図である。 インデックスから得られる結合マッピングを使用して、結合されたデータにクエリを発し、かつ、結合演算を実行する別の具体的方法を示すフローチャートである。 ドキュメントにスコア及びランク付けを示す図である。 インデックスを使用して結合されたデータにクエリを発するシステムの概要図である。
[発明の詳細な説明]
本発明の実施例について以下に説明する。
本願明細書において引用された全ての特許、公開された出願、及びドキュメントの内容は本明細書に組み込まれたものとする。
リレーショナルデータベースは、データ・組に存在する共通属性を使用して、データをグループ分けするデータベースである。編成されたデータとしての「かたまり」は、人間がより容易に理解することができる。例えば、町の全ての不動産売買を含むデータの組は、売買がなされた年で分類することができる。又は、売買価格によって分類することもできる。あるいは、バイヤーの名字によって分類することができる。この種のグループ化は、リレーショナルモデル(このスキーマのための専門語)を使用する。それゆえに、この種のデータベースは、「リレーショナルデータベース」と呼ばれている。リレーショナルデータベースは、金融レコード、製造及びロジスティックの情報、人事データその他を記憶する際に、最も頻繁に選択されるものである。
厳密に言えば、リレーショナルデータベースは、一まとまりの関係(しばしば、テーブルと呼ばれる)である。データベースを一定の規則に従わせることに加えて、他の項目もデータベースの一部として考慮され、データを構成し組織立てることができる。上述のように、テーブルは一連の列によって定義される。列の各々は、特定の性質を有し、フィールドにマッピングされる(すなわち、データの特定のカテゴリに対応する。例えば、名前、日付籐である)。そして、そのテーブルの行としてデータが記憶される。
図2は、特定の国に関連する一まとまりの経済概要のための従来のテーブルベースのリレーショナルデータベーススキーマを示す図である。例えば、国に関係するデータのデータベースは、国テーブル210を含む。国テーブル210は、国フィールド、及び経済概要フィールドを含む。経済概要フィールドは、特定の国に関連する経済概要(例えば、国内総生成、インフレ、失業、通貨単位、天然資源)を含む。他のテーブル(メダルテーブル240)は、オリンピックにおいて特定の国が獲得した、金、銀、銅メダルの数のデータを含む。図示するように、国フィールド215は、メダルテーブル対する外部キー230として利用される。説明目的として、国テーブル210、及びメダルテーブル240は、3行の情報を含む。しかしながら、テーブルは、通常は多くの行の情報を含む。
一般的に、サーチエンジンインターフェースを使用して、レコードベースのデータベース管理システム(RDBMS)に記憶されたデータ及びドキュメントにインデクス付けを行い、かつ、これを読み出すために、技術及びシステムが提供される。サーチエンジンインデックスは、ユニークなドキュメント番号(「Doc ID」又は「ドキュメントID」が本明細書では同義の語として使われる)を各々のテーブルのためのキー(例えば外部及び/又はプライマリーキー)にマップするRDBMSのテーブルから作成される。RDBMS内のテーブルからのデータは、各々のレコード(通常はテーブルの行)のための「ドキュメント」をフィールド/値の組合せの文字列として作成するために使用される。サーチエンジンに送信されるクエリは、正しいインデックス値に関連するDoc IDを発見するために、サーチエンジンインデックスを参照してもよい。そして、Doc IDは、正しいドキュメントを見つけるために使用される。「結合(join)」文(共通の値に基づいて異なるテーブルからフィールドを連結する文)を含むクエリはプライマリクエリ、及び一つ以上のセカンダリクエリの組に分解されてもよい。そして、そのような場合、必要なテーブルのために、結合マッピング、及びドキュメントが作成される。結果として生じるドキュメントは、スコア及び/又はランクを付けられてもよく、かつ、サーチクエリに応答して、ユーザに示されてもよい。
データベースのレコードとして記憶されるデータは、インデックス又はサーチエンジンインデックスの(フィールド、値)ペアの組として、記憶されてもよい。この種のテーブル記法を使用することにより、各々のテーブル行は、フィールド名としてのテーブルの列と、フィールド値としての行値とを含む、サーチ可能なドキュメントを示す。上述の実施例を使用することにより、メダルテーブル240からのレコードは、以下のテーブル記法を使用して示すことができる。すなわち、
Figure 0005616335
各々のテーブル列「ドキュメント」にユニークなドキュメントIDが割り当てられている。複数のテーブルを含むデータベースは、単一のインデックスとして示されてもよい。(例えば、異なるテーブルからのレコードの全ては、同じインデックスで記憶することができ、かつ、ユニークなドキュメントIDを有することができる)。一部のインプリメンテーションにおいて、(例えばデータの型、データフォーマット及び/又はデータ使用に基づいた)テーブルのグループは、一まとまりのインデックスに結合されてもよい。ほとんどの場合、テーブルより少ないインデックスとなる。
図3は、図2のテーブルに適用されたこの技術の1つのインプリメンテーションを使用して形成される一まとまりのインデックス300を示す。インデックス又はテーブルの各々の行は、サーチ可能なドキュメントであるので、各々の行はユニークなドキュメントIDを含む。国テーブル210は外部キー230として使用される1つのフィールド(国フィールド)を含む。したがって、インデクス310は、各々の行のユニークなドキュメントID、及び各々のレコードに対応する外部キー値(国値)を含む。同様に、メダルテーブル240は、外部キー235(国フィールド)を有する。したがって、他のインデックス320は、メダルテーブル240のために作成される。インデクス320は、各々のサーチ可能なドキュメントを特定する各々の行(M1、M2、及びM3)のためのユニークなドキュメントID、及び各々のレコードのための対応する外部キー値を含む。他のインデックスは他のテーブル、報告の要件、及びデータベースによってサポートされるほかのアプリケーションの他の機能に基づいて作成されてもよい。
図4は、サーチエンジンインデックスに含まれる図2のテーブルに対応する一まとまりの完全に列挙されたドキュメント410、420である。図3に記載されているインデックスを使用し、かつ、各々がテーブル列に対応する、個々にサーチ可能なドキュメントとして別にデータを記憶することによって、外部キーを介して連結されるプライマリドキュメント集合と、及びセカンダリドキュメント集合とを、特定することができ、かつ、完全な結果集合を提示するために結合することができる。例えば、ドキュメント集合410は、各々のレコードに、国テーブル210におけるキー値ペアの文字列、及びフィールド値ペアを含む。特定の国の経済概要をサーチするクエリは、プライマリテーブルとして国テーブル210を使用する。
例えば、以下で、クエリを発する。
Figure 0005616335
「Select」文に続くフィールドは、国テーブル210のプライマリーキーである。クエリを処理する場合、インデクス310は、所望の国値(この場合「USA」)を含むドキュメントIDを特定するために最初にサーチされ、そして、ドキュメント集合410から対応するドキュメントIDを用いてドキュメントを読み出す。同様に、ドキュメント集合420は、図2のメダルテーブル240のデータを完全に列挙したリストを提供する。
いくつかの場合では、(例えば、共通値を有するフィールドに結合される複数のテーブルから、データを必要とする)結合文を有するクエリは、サーチエンジンに送信される。結合文は、データベースの2つのテーブルから、各々に共通の値を使用してレコードを結合する。これは、テーブルとして保存することができ、又はそのまま使用できる。結合(join)は、各々に共通の値を使用することにより、2つのテーブルからフィールドを結合(combine)するための手段である。結合文は、データベースの2つのテーブル間の内部結合又は外部結合を含んでもよい。内部結合は、2つの結合されたテーブルの各々のレコードがマッチするレコードをとることを必要とする。内部結合は、与えられた結合−述部(join−predicate)に基づいて、2つのテーブル(A、及びB)から、基本的にレコードを結合する。外部結合は、2つの結合されたテーブルの各々のレコードがマッチするレコードをとることを必要としない。他のいかなる一致するレコードも存在しない場合であっても、結合されたテーブルは、各々のレコードを保持する。
図5は、従来のテーブルベースのリレーショナルデータベーススキーマの2つのテーブル間の内部結合を示す図である。クエリの目的は、テーブル国510及びテーブルメダル540から合う国値を有する全てのドキュメントを生成することである。クエリは以下のようになる。
Figure 0005616335
内部結合は、国フィールド値にマッチした全てのドキュメントのドキュメント集合であって、各々のテーブルから各々のドキュメントの関連づけられたフィールドを含んでいる内部結合テーブル550を生成する。その結果、内部結合テーブル550は、外部キー(国)を含み、かつ、以下の関連するフィールドを含む。すなわち、経済概要、金、銀、及び銅である。内部結合機能は、値が国にマッチしたドキュメントを生成するだけであるので、テーブル国510から国値INDIAを含んでいるドキュメント、及びテーブルメダルから国値RUSSIAを含んでいるドキュメントは内部結合テーブル550において生成されなかった。
図6は、従来のテーブルベースのリレーショナルデータベーススキーマの2つのテーブル間の外部結合を示す図である。上述のように、外部結合は、2つの結合されたテーブルの各々のレコードがマッチするレコードをとることを必要としない。したがって、テーブル国610、及びテーブルメダル640間の完全な外部結合は、結合テーブル650を生成する。図示するように、マッチする国値がない場合であっても、結合テーブル650は各々のテーブルからのあらゆるレコードを含む。テーブル国610から国値INDIAを含んでいるドキュメント、及びテーブルメダル640から国値RUSSIAを含んでいるドキュメントが、結合テーブル650として生成される。テーブルメダル640が国値INDIAのドキュメントを有しないので、テーブルメダル640からのフィールド値に対応する結合テーブル650のフィールド値は空白である。同様に、テーブル国610からの国値RUSSIAのフィールド値は、Nullである。
完全な外部結合は、左外部結合、及び右外部結合に再分割されてもよい。結合状態がいかなるマッチするレコードも「右側の」テーブル(メダル640)で見つからない場合であっても、テーブル国610、及びメダル640の左外部結合(又は単に左結合)の結果は常に「左の」テーブル(国610)の全てのレコードを含む。このことは、左外部結合は、左のテーブル(国610)から全ての値、さらに右側のテーブル(メダル640)(又はマッチする結合述部が無い場合にはNull)から値に合致した値を返すことを意味する。したがって、結果として生じる結合テーブルは、国値RUSSIAを含んでいるドキュメントを除いて、外部結合テーブル650から全てのドキュメントを生成する。右外部結合(右結合)は、逆転するテーブルの処置を除き、左外部結合に非常に似ている。「右側の」テーブル(メダル640)からのあらゆる行は、少なくとも一回、結合されたテーブルに現れる。「左の」テーブル(国610)からのマッチする行が存在しない場合、Nullが国610のマッチを有しないそれらのレコードの国610からの列に現れる。したがって、国値INDIAを含んでいるドキュメントを除いて、結果として生じる結合テーブルは、外部結合テーブル650からの全てのドキュメントを生成する。
レコードベースのデータベース管理システム(RDBMS)において記憶されたデータ及びドキュメントにインデクス付けし、検索するための技術は、サーチエンジンインターフェースを使用して、インデックス(通常は一つ以上のテーブルの全コンテンツ)から大量のデータ(ドキュメント)を抽出し、ディスクから特定されたドキュメントを読み出し、かつ、結合制約に基づいてドキュメントを絞り込む(widowing down)ことを含む。しかしながら、ドキュメントの検索が結合制約を実行することを必要とするアプローチは、かなりの処理時間を必要とする。
図7は、インデックスを使用する結合されたデータにクエリを発し、かつ、それからフィルターをかけられるかなりの数のドキュメントを検索する必要のない結合演算を実行する方法700を示すフローチャートである。ステップ710で、方法は、レコードベースの管理システム(RDBMS)の少なくとも2つの異なるテーブルから情報を結合するようサーチエンジンインターフェースからクエリを受信することから開始される。クエリに応答して、方法は、715で、結合クエリのために必要な結合マッピングがメモリに記憶されているか、判断する。その場合は、方法は、ステップ730a、及び730bへと進む。そうでない場合には、方法は、720で、インデックス又はサーチエンジンインデックスの関連するドキュメントをサーチし、かつ、結合マッピングを記憶する。730aで、方法は、インデックスを使用して、結合クエリから分解されたプライマリクエリからドキュメントIDを含む第1の結果の組を特定し、かつ、これを返す。同時に、方法は、730bで、インデックスを使用して、結合クエリから分解されたセカンダリクエリからドキュメントIDを含んでいるセカンダリ結果の組を特定し、かつ、これを返す。それから、740で、方法は、記憶された結合マッピングを使用して、第1の結果の組、及びセカンダリ結果の組から、マッチしたフィールド値を持つドキュメントIDを特定する。方法は、750で、第1の結果の組及びセカンダリ結果の組からマッチしたフィールド値を有する特定されたドキュメントIDの少なくともサブセットを読み出す。方法700は、特定のシーケンスにおいてなされるように書かれているが、他のシーケンスも同様に、他の実施例において可能である。
上述のように、データは、(フィールド、値)のペアの組として、インデックスで記憶される。このように、図3に示したように、インデックスは、ドキュメントIDフィールド及び外部キー値からなるペアリングを保持してもよい。外部キーは、2つのテーブル間の関連する制約である。外部キーは、関連する1つの(参照する)テーブルの列又は列の組を特定し、関連する1つの(参照する)テーブルは、他の(参照された)テーブルの列又は列の組を参照する。したがって、サーチエンジンインデックスから、外部キー値へのドキュメントIDの、又はその値を有するドキュメントに関連するドキュメントIDに対する外部キー値の、結合マッピングから成る、結合テーブルが生成されてもよい。外部キー値がドキュメントIDにマップされ得るため、結合テーブルは特定のクエリのために動的につくられてもよい。加えて、結合テーブルは、外部キーとして利用できるあらゆるフィールドのために存在してもよい。結合テーブルは、キーが与えられたレコードを能率的に見つけ、かつ、対応する値を見つけるために、各々のテーブルからのキーをそれらに対応する値に関連づけるハッシュテーブルとして記憶してもよい。ハッシュテーブルは、ハッシュ関数を用いてキーを、その値が見つけられるべき所望の位置(バケット(bucket))を見つけるために、アレーにおいてインデックスとして用いられる数に変換してもよい。このテーブルは前処理段階の間に、生成されることができ、ストレージに保持され、又は、他の場合には、そのテーブルは、クエリの時に動的に生成され、キャッシュメモリに記憶される。
図8は外部キー「国」の結合マッピングを例示する。結合マッピングは、アレーのインデックスとして、結合テーブルに記憶されてもよい。結合マッピングA810は、外部キー「国」を含むRDBMSにドキュメントIDの組を含む。結合クエリに応答して、結合クエリは、サーチエンジンインデックスに、直ちに、RDBMSにおける二つの異なるテーブルからデータを結合するために結合クエリが採用する外部キーを有する全てのドキュメントを特定することを可能とする。結合マッピングB820は、特定の外部キー値に関連づけられたドキュメントIDの組を含む。図8に示すように、ドキュメントIDであるC1及びM1は、外部キー値「USA」に関連づけられている。結合マッピングB820は、結合クエリに応答して、RDBMSの少なくとも2つの異なるテーブルからデータを結合するために、直ちにサーチエンジンインデックスが、結合クエリが採用する特定の外部キー値を有するドキュメントを特定することを可能とする。
結合マッピングB820は、各々の値に対してビットマップとして示されてもよい。例えば、国の値「USA」に対するビットマップは、{10100...}として表される。これは、図2のテーブル国210及びテーブルメダル240に関連しており、このビットマップの各位置は、順に、ドキュメントID、C1、C2、M1、M2、及びM3であり、「1」は真の値、「0」は偽の値を表す。
図9Aは、インデックスから得られる結合マッピングを使用して、結合されたデータにクエリを発する、より具体的な方法900を示すフローチャートである。方法は、サーチエンジンインターフェースで受信される結合クエリを、プライマリ及びセカンダリクエリに分解するステップ910から始まる。プライマリクエリから説明すると、方法は、920aで、プライマリクエリに関連するドキュメントIDを含むプライマリ結果の組を返すために、インデックスを使用する。方法は、ステップ920aで、ディスクからドキュメントを読み出さず、むしろインデックスからドキュメントIDの結果の組を返す。同時に、方法は、920bで、インデックスから、セカンダリクエリに関連するセカンダリ結果の組を返す。図8に示したように、結合マッピングAを使用することにより、ステップ930aで、方法は、プライマリ値の組(V)として、プライマリ結果の組から各々の特定されたドキュメントIDのためのキー値を特定する。方法は、同様に、930bで、セカンダリ値の組(V)として、セカンダリ結果の組から各々の特定されたドキュメントIDのためのキー値を特定する。ステップ940で、方法は、プライマリ値の組及びセカンダリ値の組を比較し、かつ、マッチング値の組(V12)として、マッチする値をフィルタリングする。図9Bは、プライマリ及びセカンダリ結果の組と値の組との集合の関係である。上述のように、方法900はプライマリ値の組935と、セカンダリ値の組935bとを比較する。セクション945は、プライマリ値の組、及びセカンダリ値の組には共通関係があることを示している。方法は、共通関係を見つけ、940でマッチする値945をフィルタリングする。
図9Aを続けると、その後、方法900は、950において、図8において示した結合マッピングから、結合マッピングBを使用する。そしてステップ940からマッチする値を有するデータベースの全てのドキュメントを特定する。次に、960で、方法は、ステップ950の特定されたドキュメントと、以下のうちの1つとの間の共通ドキュメントIDのフィルタリングによって、クエリされたドキュメントIDを特定する。すなわち、プライマリ結果の組、セカンダリ結果の組、又はプライマリ及びセカンダリ結果の組の組合せである。それから970の方法は、各々の共通フィールド値を有するプライマリドキュメント及びセカンダリドキュメントの複合スコアを計算する各々のドキュメントのための評価システムによって、ドキュメントをランク付けする。ステップ980で、方法は、ドキュメントIDを使用することによりドキュメントをデータベースから取り出し、かつ、ランクに従ってドキュメントを提示する。方法900が特定のシーケンスを規定しているが、他のシーケンスも、同様に、他の実施例において可能である。
例えば、過去のオリンピックで、50個を超える金メダルを獲得した国の経済概要を要求する結合クエリが受信されたと仮定する。ステップ910で、方法900は、プライマリクエリ、及びセカンダリクエリに結合クエリを分解する。通常、プライマリクエリは、図2に示したように、テーブル国の全てのドキュメントに対してクエリを発する。しかしながら、方法は、920aで、データベースにクエリを発することを必要とせず、サーチエンジンインデックスにクエリを発することによって、テーブル国210のドキュメントに関連づけられたドキュメントIDを含むプライマリ結果の組を返す。同様に、方法は、920bで、セカンダリクエリに関連するテーブルメダルのドキュメントに関連づけられたドキュメントIDを含むセカンダリ結果の組を返す。ステップ920a、及び920bで方法900は、プライマリ結果の組のドキュメントID C1、C2、及びC3、及びセカンダリ結果の組のドキュメントMl、及びM3を特定する。
図8において例示される結合マッピングAを使用することにより、ステップ930a−bで、方法は、プライマリ結果の組、及びセカンダリ結果の組から、各々のドキュメントIDの外部キー「国」の値を特定する。プライマリ結果の組の値の組1(V)は、「国」の値として、「USA」、「South Africa(SA)」、及び「INDIA」を含む。セカンダリ結果の組の値の組2(V)は、「国」の値として「USA」、及び「RUSSIA」を含む。それから940の方法は、マッチする値のための値の組1、及び値の2組にフィルターをかける。このフィルタリングは、図9Bのベン図に示される。ここで、マッチする値945は「USA」である。
図8において例示した結合マッピングBを用いることによって、ステップ950で、方法は、値「USA」を有するデータベースの全てのドキュメントを特定する。この例示の実施例において、フィールド/キー「国」の結合テーブルは、フィールド/キー「国」を含むデータベースの全てのドキュメントを有する。別の実施例において、結合マッピング(joint mapping)はプライマリ結果の組、及びセカンダリ結果の組で生成されるドキュメントに限られていてもよい。
方法は、そして960において、クエリが経済概要を含んでいるドキュメントを取得することに興味があるため、プライマリ結果の組からドキュメントIDをもつ値「USA」のための結合マッピングBからドキュメントをインターセクトすることによって、クエリされたドキュメントIDを特定する。この例では、C1は、マッチする唯一のドキュメントである。それから、方法は970において、インターセクトされたドキュメントにランクを付ける。この例では、ランク付けすることは必要ではない。なぜなら、1つのドキュメントだけが特定されたからである。しかし、複数のドキュメントが特定される状況では、方法は計算によって各々の特定されたドキュメント及び全ての関連する子ドキュメント(child documents)を特定されたドキュメントに対する複合スコアでランク付けする。子ドキュメントとは、外部キーによって連結されるドキュメントのことをいう。この例では、ドキュメントC1に対する子ドキュメントは、ドキュメントMlである。それから、方法は、980において、ドキュメントC1をデータベースから取り出し、かつ、ドキュメントを表示上の結果リストに示す。
図10は、インデックスから得られる結合マッピングを使用する結合されたデータにクエリを発するより具体的な代替の方法1000のフローチャートである。方法は、サーチエンジンインターフェースで受信される結合クエリをプライマリ及びセカンダリクエリに分解する1010から開始される。プライマリクエリから、方法は、1020aで、プライマリクエリに関連するドキュメントIDを含むプライマリ結果の組を返すために、インデックスを使用する。方法は、ステップ1020aで、ディスクからドキュメントを読み出さず、むしろインデックスからドキュメントIDの結果の組を返す。同時に、方法は、1020bで、インデックスから、セカンダリクエリに関連するセカンダリ結果の組を返す。
図8に示したように結合マッピングAを使用することにより、ステップ1030で、結合フィールドの値は、プライマリ結果の組において特定された各々のドキュメントに対して抽出される。方法は、1040で、結合マッピングを用いて、各々のプライマリドキュメントに、共通の結合フィールド値を有するセカンダリドキュメントの組を特定することによって、各々のプライマリドキュメントに付加されるセカンダリドキュメントの組を決定する。結合クエリが内部結合を特定し、かつ、セカンダリドキュメントが見つからない場合、プライマリドキュメントは破棄される。次に、1060で、方法は、プライマリ及び/又はセカンダリ結果の組と、共通フィールド値を有するプライマリ及びセカンダリ結果の組から、特定されたドキュメントにフィルターをかける。1070で、方法は、各々のドキュメントのためのスコアリングシステムに基づいて、ドキュメントをランク付けする。このスコアリングシステムは、共通フィールド値を有する各々のプライマリドキュメント及びセカンダリドキュメントに対して複合スコアを計算する。それから、方法は、1080において、ドキュメントIDを使用することによりドキュメントをデータベースから取り出し、かつ、ランクに従ってドキュメントを提示する。方法1000には、特定のシーケンスが示されているが、他のシーケンスも、同様に、他の実施例に対して用いることが可能である。
例えば、過去のオリンピックで、50個を超える金メダルを獲得した国(COUNTRY)の経済概要(ECONOMIC SUMMARY)を要求した結合クエリが受信されたと仮定する。ステップ1010で、方法1000は、プライマリクエリ、及びセカンダリクエリに結合クエリを分解する。通常、プライマリクエリは、図2に示したように、テーブル国の全てのドキュメントのためにクエリを発する。しかしながら、方法は、1020aで、データベースにクエリを発することを必要としない。その代わり、サーチエンジンインデックスにクエリを発することによって、テーブル国210のドキュメントに関連づけられたドキュメントIDを含むプライマリ結果の組を返す。同様に、1020bで、方法は、セカンダリクエリに関連するテーブルメダルのドキュメントに関連づけられたドキュメントIDを含むセカンダリ結果の組を返す。ステップ1020a、及び1020bで、方法1000は、プライマリ結果の組のドキュメントID C1、C2、及びC3、及びセカンダリ結果の組のドキュメントMl、及びM3を特定する。
図8に示したように、結合マッピングAを使用することにより、ステップ1030で、結合フィールドの値は、プライマリ結果の組において特定された各々のドキュメントに対して抽出される。1040で、結合マッピングを用いて、各々のプライマリドキュメントと共通結合フィールド値を有するセカンダリドキュメントの組を特定することによって、各々のプライマリドキュメントに付加されるセカンダリドキュメントの組を決定する。
図8において例示される結合マッピングAを用いて、ステップ1030で、方法は、プライマリ結果の組、及びセカンダリ結果の組から各々のドキュメントIDに対して外部キー「国」(結合フィールド値)の値を特定する。プライマリ結果の組の値の組1(V)は、「国」の値「USA」、「South Africa(SA)」、及び「INDIA」を含む。結合マッピングを用いることによって、ステップ1040で、各々のプライマリドキュメントに対して共通の結合フィールド値を有するセカンダリドキュメントの組を特定することによって、各々のプライマリドキュメントに付加されるドキュメントの組を決定する。この場合、ドキュメントMlは、セカンダリ結果の組において、マッチするフィールド値を有する唯一のドキュメントである。方法はそれから、1060で、特定されたドキュメントを、プライマリ結果の組からのドキュメントIDでインターセクトすることによって、クエリがなされたドキュメントIDを特定する。なぜなら、クエリは、経済概要を含むドキュメントを取得することだけに興味を持っているからである。この例では、C1が、マッチする唯一のドキュメントである。それから1070の方法は、インターセクトされたドキュメントにランクを付ける。この例では、1つのドキュメントだけが特定されたので、ランク付けすることは必要ではない。しかし、複数のドキュメントが特定される状況では、方法は、特定されたドキュメント及び関連する全ての子ドキュメントに複合スコアを計算することによって、各々の特定されたドキュメントをランク付けする。子ドキュメントとは、外部キーによって連結されるドキュメントをいう。この例では、ドキュメントC1に対する子ドキュメントは、ドキュメントMlである。それから1080で、方法は、ドキュメントC1をデータベースから取り出し、かつ、ドキュメントを表示上の結果リストに示す。
上述したように、多くのインプリメンテーションにおいて、結合されているテーブルは共通データ要素に対して同じ命名法(same nomenclature)を使用してもよい。しかしながら、結合されているテーブルの共通データ要素が異なるフィールド名(異なる命名法:different nomenclature)を使用して記述されている可能性がある。データベースの設計の観点からは最適でないが、共通アプリケーションにデータを提供するように使用するためマージされた異種のシステムで、この種のミスマッチは起こり得る。しばしば本来一緒に作動するように設計されていない場合である。こうした状況では、共通データ要素のための異なる命名法を有する各々のテーブルのための結合テーブルが使用される。同様に、結合クエリが一つ以上の結合フィールドを含む場合、複数の結合テーブルがインプリメントされてもよい。
例えば、テーブルメダル240が、図2に示したように、列(「国(Country)」)ではなく、「CTRY」を使用したと仮定する。列「国(Country)」に対する結合テーブルは、テーブルメダル240からドキュメントを特定しないであろう。テーブル国210及びメダル240を結合することを必要とする結合クエリは、列「国(Country)」のための結合テーブル及び列「CTRY」のための結合テーブルを必要とする。上述の方法のステップ930b、及び1040で、方法は、セカンダリ結果の組から結合フィールド値を特定するために、結合テーブル「CTRY」を使用する。
一部のインプリメンテーションにおいて、結果として生じるドキュメントはプライマリテーブルから読み出される個別ドキュメント、又は結合マッピングを使用して選択されたドキュメント、あるいはこれら両方のさまざまな属性に基づいてスコア付けされる。例えば、スコア付けするテクニックとしては、プライマリドキュメントのためのスコアとして結合マッピングを使用して読み出される数のドキュメントを考慮する。そのような場合、多くの「子」を有するドキュメントは、ほとんど関連するドキュメントを持たないドキュメントより高いスコアを有する。したがって、高いスコアは、高い重要性を示す。場合によっては、「子カウント」スコアが階層の各々のレベルで各々のドキュメントのために計算され、かつ、プライマリドキュメントの総数スコアを取得するために累積的に合計される階層的なスコアリングアプローチが使用されてもよい。
スコアリング技術の1つの例はLuceneスコアリングである。これは与えられたドキュメントがクエリにどれくらい関連するかを決定するために情報サーチのベクトル空間モデル(VSM)及びブール・モデルの組合せを使用する。一般に、VSM法は、問い合わせ語が、集合の全てのドキュメントにおいて出現する回数に関連してドキュメントにおいて現れる頻度に基づいて、スコアを計算する。これによってスコアが高ければ高いほど、そのドキュメントはクエリにより大きく関連する。Luceneは、クエリの仕様に基づいてブール・モデルを使用し、最初にスコア付けが必要なドキュメントを絞り込む。
割り当てられたスコアは、他のデータの属性に基づいて、更に修正されてもよい(例えば、上昇または下降させられる)。例えば古さ(より古いレコードは、新しいものよりも低い重みを与えられる)、ソース、著者及び/又はその他である。スコアは、それから、クエリの応答としてのドキュメントの提示に影響を与える。例えば、カットオフスコアを使用することにより、関係が薄い結果を排除するために、あるいは、スコアに基づいて結果を表示するために、利用されてもよい(例えばランク付けされたリスト)。
図11は、スコアリング、及びランキングの技術を示す図である。例えば、過去のオリンピックで、50個を超える金メダルを獲得した国の経済概要を要求する結合クエリが受信されたと仮定する。したがって、テーブル国1110、及びテーブルメダル1140から、ドキュメントが分析される。上述の方法の何れかを用いて、結合クエリは、プライマリクエリ、及び一つ以上のセカンダリクエリに分解される。各々のクエリは、テーブルのドキュメントに関連づけられたドキュメントIDの組を有するサーチエンジンインデックスから結果の組を返す。
この場合、プライマリクエリは、テーブル国1110からのドキュメントに関連づけられたプライマリ結果の組1115にドキュメントID C1、C2及びC3を返す。結果の組1115は、クエリ関連づけられた各々のドキュメントIDに対するスコアを含んでもよい。プライマリクエリは、テーブル国1110から全ての国に興味を持つため、各々のドキュメントIDは、この例では、同じスコアを与えられる。セカンダリクエリは、テーブルメダル1140から50個を超える金メダルを獲得した国の全てのドキュメントを返す。したがって、セカンダリ結果の組1145は、適切なスコアを含むドキュメントMl、M3、及びM4を有する。この場合、ドキュメントIDに割り当てられたスコアは、50個を超える金のクエリに基づく。そして、この結果の組に対するスコアリングは、金メダルの数に基づく。このため、金メダルの数が一番高いドキュメントIDに一番大きなスコアが与えられる。結果の組1145は、ドキュメントID「M1」に4のスコア、ドキュメントID「M3」に3のスコア、そして、ドキュメントID「M4」に2のスコアを含む。
この例では、クエリは、テーブル国1110からドキュメントを生成することにだけ興味がある。しかしながら、テーブル国1110から関連づけられる各々のドキュメントIDは全て同じスコアを持つ。複合スコア・テーブル1150は、全てのプライマリ、及び関連するセカンダリドキュメントの複合スコアを含む。上述の方法を用いることによって、複合スコアが、各々のプライマリドキュメント、及び関連するセカンダリドキュメントに対して算出される。ドキュメントは、共通フィールド値に基づいて連結される。この場合、ドキュメントC1はMlにリンクされ、ドキュメントC2はM2にリンクされ、かつ、ドキュメントC3はM4にリンクされる。図示するように、ドキュメントは、ランク付けされ、かつ、複合スコアに従って提示される。ドキュメントC1、及びC3が返されることになる。ドキュメントC1には5のスコアが、そして、C3には3のスコア与えられる。したがって、ドキュメントC1は第1のドキュメントとランク付けされ、かつ、C3は第2のドキュメントとランク付けされる。図示するように、ドキュメントは、ランクに従って結果リスト1160に示される。
図12は、インデックスを使用して、結合されたデータにクエリを発するシステム1200を示す。システムは、ストレージ装置1202、及び処理装置1204を含む。処理装置1204は、結合エンジン1210、及びサーチエンジン1205を含む。処理装置1204はサーチエンジンインデックス、及び結合マッピングの作成、及びインデックスに対するサーチエンジンクエリの処理を含むシステム1200の機能的動作を提供する。ストレージ装置1202は、インデックス、及びドキュメントの(揮発性、及び不揮発性)記憶を提供するストレージ1220を含む。
サーチエンジン1205は、メインメモリにおいて実行され、結合エンジン1210からクエリ、及び命令を受信し、上述したように、RDBMS1215のテーブルからレコードベースのデータを読み出し、かつ、サーチエンジンインデックスを作成する。各々のテーブルに対して、結合クエリに関連して、サーチエンジン1205は、ドキュメントID及び外部キーを有するサーチエンジンインデックス、並びにサーチエンジンインデックスから対応するドキュメントIDを含むドキュメント及び対応するレコードから残りの非キーデータをつくる。結合エンジン1210は、ユーザから、要求を受信する。ユーザは、多くの場合、複数のテーブルからのデータを要求する。そして、結合エンジン1210は、サーチエンジン1205はクエリを発し、結合クエリから分解したプライマリ及びセカンダリクエリに対するプライマリ及びセカンダリ結果の組を返す。結合エンジン1210は、分解されたクエリに基づいてストレージに結合マッピングを提供するために、サーチエンジン1205にクエリを発する。結合マッピングを使用することにより、結合エンジン1210は、共通フィールド値を有するプライマリ結果の組、及びセカンダリ結果の組からドキュメントを特定する。サーチエンジン1205は、それからRDBMS1215から特定されたドキュメントを読み出してもよい。
ストレージ1220は、インデックス、及び結合マッピングの記憶を管理してもよい。例えば、1220は、特定のインデックスが大きく、しかもまれにしかアクセスされないことを判断し、ディスクに格納することが望ましいことを判断する。これに対して、他のインデクス及び/又は結合マッピングは、揮発性メモリ(例えばRAM)に記憶し、速くそして頻繁な利用に供してもよい。
結合エンジン1210は、結合が実行されるフィールドを特定するために、結合マッピングを使用してもよい。更に、結合エンジン1210は、ドキュメントと関連したフィールドの値を特定するために、結合マッピングを使用してもよい。あるいは、結合エンジン1210は、フィールドの値と関連したドキュメントを特定するために、結合マッピングを使用してもよい。結合エンジン1210は、また、全ての特定されたドキュメント及び関連する「子」ドキュメントの複合スコアを計算してもよい。結合エンジン1210は、また、特定されたドキュメントを複合スコアに基づいてランク付けしてもよい。結合エンジン1210は、それからRDBMS1135から特定されたドキュメントを読み出すためにサーチエンジン1205にクエリを発してもよく、かつ、ユーザにそれらを各々のドキュメントのランクによって調整されたリストに示してもよい。
実際には、1200は、システム又はウェブベースのアプリケーションを含むより大きなアプリケーションの内のモジュールまたは一部としてインプリメントされてもよい。例えば、従来のサーチエンジンインターフェースに利用してもよい。このような場合には、複数のクライアント1225は、ネットワーク1230を介してクエリを送信する。クエリは、ウェブ・サーバ1235で受信され、かつ、処理のためにシステム1200に転送される。クライアント1225に示されるよう、結果はほかのアプリケーションのページに一体化されてもよい。
クライアント1225は、パーソナルコンピュータで動作するソフトウエアとしてインプリメントされてもよい(例えばインテルプロセッサ又はアップルマッキントッシュコンピュータのPC)。そして、マイクロソフト・ウインドウズファミリオペレーティングシステム(ワシントンDC、レドモンドのマイクロソフトコーポレーション)、MAC OSオペレーティングシステム(カリフォルニア、クパチーノ、アップルコンピュータ)、そして多種のUnix、例えば、サンマイクロシステムズのSUN SOLARIS,そして、GNU/Linux(RED HAT社、ノースキャリフォルニア他)上で動作してもよい。クライアント1195は、また、スマート、又はダムターミナル、ネットワークコンピュータ、セットトップボックス、ゲーム・プレーヤ、モバイル・デバイス、ワイヤレス・デバイス、パーソナル携帯情報機器、メディア(例えば音楽及び/又はビデオ)プレーヤ、情報機器、ワークステーション、ミニコンピュータ、メインフレームコンピュータ又は他のいかなるデバイスをも含む、ハードウェアデバイスにインプリメントされてもよい。
クライアントとシステム1200を接続するネットワーク1230は、標準電話線、LAN又はWANリンク(例えばT1、T3、56kb、X.25)、ブロードバンド接続(ISDN、フレーム・リレー、ATM)、ワイヤレス・リンク(802.11、ブルートゥース、その他)、及びその他のいかなる適切な組合せも含まれる。望ましくは、ネットワーク1230はTCP/IPプロトコル通信を行うことができ、かつ、クライアント1225によって作られるHTTP/HTTPS要求はこの種のTCP/IPネットワークを通じて通信されてもよい。ネットワークのタイプは限定されず、かつ、いかなる適切なネットワークが使用されてもよい。通信ネットワーク1230は、ワイヤレスあるいは有線のイーサネットベースのイントラネット、ローカル又はワイドエリアネットワーク(LAN又はWAN)及び/又は多くの異なる通信媒体、及びプロトコルを提供するインターネットとして公知のグローバルな通信ネットワークであってもよい。これらの例は、発明を限定するものではない。
システム1200をサポートするために使用さ得るRDBMS1215の例としては、サンマイクロシステムズのMySQL Database Server、ORACLE Database Server又はマイクロソフトのSQLServer Database Serverが含まれる。
本発明は、ハードウェア、ソフトウエア又はハードウェア及びソフトウエアの組合せによって実現することができる。本発明の方法及びシステムのインプリメンテーションは、1つのコンピュータシステムの集中化した方法で実現することができ、あるいは、異なる要素がいくつかの相互に連結したコンピュータシステムで結合された分散化されたシステムで実現することができる。本願明細書において記載されている方法を実行するために適応したコンピュータシステム又は他の装置のいかなる種類も、本願明細書に記載されている機能を実行することに適する。
上記のパラグラフに記載されている方法を実行するコンピュータ可読の命令を含むコンピュータ可読媒体を有する様々な製品が、本発明の各種実施形態として提供されてもよい。特に、本発明の方法の機能は、例えば、コンピュータ可読媒体に埋め込まれていてもよいが、制限されてはならない。フロッピーディスク(ハードディスク)光ディスク(磁気テープ)PROM(EPROM)、CD−ROM又はDVD−ROMに記憶されてもよく、又はサーバからダウンロードされてもよい。本発明の機能は、いかなる数のコンピュータ可読の命令又は例えば言語(例えばFORTRAN、Pascal、C、C++、Java、C#、Tcl、BASIC、及びアセンブラ言語)でコンピュータ可読媒体上に記憶されてもよい。更に、コンピュータ可読の命令は、例えば、スクリプト(マクロ)に書かれてもよく、機能的に市販のソフトウエア(例えばEXCEL又はVISUAL BASIC)に埋め込まれてもよい。
本発明は、特に例示の実施例の参照によって図と共に説明したが、添付の請求の範囲に包含される本発明の範囲内において、それはさまざまな変更がなされてもよいことが、当業者によって理解される。
以上の実施例に関し、以下の付記を開示する。
(付記1)
結合クエリに応答してサーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスする方法であって、電子処理システムにおいて、当該方法は:
ドキュメントをサーチし、かつ、結合マッピングを記憶するステップと;
インデックスを使用して、前記結合クエリのプライマリ及びセカンダリクエリのためのプライマリ及びセカンダリ結果の組を返すステップと;
前記結合マッピングを使用して、共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定するステップと;
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すステップと;
を有する方法。
(付記2)
前記結合マッピングは、ドキュメントと関連するフィールドの値を特定する、
付記1記載の方法。
(付記3)
前記結合マッピングは、フィールドの値と関連するドキュメントを特定する、
付記1記載の方法。
(付記4)
前記結合クエリを使用して、結合が実行されるフィールドを特定するステップ、
を更に有する付記1記載の方法。
(付記5)
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の内部結合を含む、
付記1記載の方法。
(付記6)
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の外部結合を含む、
付記1記載の方法。
(付記7)
前記結合クエリに従って、前記特定されたドキュメントにフィルターをかけるステップ、
を更に含む付記1記載の方法。
(付記8)
揮発性メモリに、前記結合マッピングを記憶するステップ、
を更に有する付記1記載の方法。
(付記9)
充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断するステップと;
もし充分なメモリが存在する場合、揮発性メモリに、前記結合マッピングを記憶するステップと;
もし充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶するステップと;
を更に有する付記8記載の方法。
(付記10)
既存の結合マッピングを削除するステップは、
最近最も使われていない結合マッピングを削除するステップ、
を含む付記9記載の方法。
(付記11)
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から前記特定されたドキュメントの各々の複合スコアを計算するステップ、
を更に有する付記1記載の方法。
(付記12)
少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランクを付け、かつ、少なくとも前記特定されたドキュメントのサブセットを、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するステップ、
を更に有する付記11記載の方法。
(付記13)
結合クエリに応答してサーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスするエレクトロニックシステムであって、
クエリに応答して、インデックスを提供し、かつ、前記インデックスから結果の組を返すように構成されたサーチエンジンと;
前記インデックス、及び結果の組を記憶するストレージと;
結合エンジンであって:
ストレージに結合マッピングを提供するために、前記サーチエンジンにクエリを発し;
前記結合クエリのプライマリ及びセカンダリクエリに対するプライマリ及びセカンダリ結果の組を返すために、前記サーチエンジンにクエリを発し;
前記結合マッピング、及び結果の組を使用して、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定する;
前記結合エンジンと;
を有するシステム。
(付記14)
前記サーチエンジンは、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すように更に構成される、
付記13記載のシステム。
(付記15)
前記結合エンジンは、ドキュメントと関連するフィールドの値を特定するために前記結合マッピングを使用するように更に構成される、
付記13記載のシステム。
(付記16)
前記結合エンジンは、フィールドの値と関連するドキュメントを特定するために前記結合マッピングを使用するように更に構成される、
付記13記載のシステム。
(付記17)
前記結合エンジンは、結合が実行されるフィールドを特定するために前記結合クエリを使用するように更に構成される、
付記13記載のシステム。
(付記18)
前記結合エンジンは、前記クエリに従って前記特定されたドキュメントにフィルターをかけるように更に構成される、
付記13記載のシステム。
(付記19)
前記結合エンジンは、前記クエリの前記プライマリ及びセカンダリクエリの間の内部結合として前記クエリを分解するように更に構成される、
付記13記載のシステム。
(付記20)
前記結合エンジンは、前記クエリの前記プライマリ及びセカンダリクエリの間の外部結合として前記クエリを分解するように更に構成される、
付記13記載のシステム。
(付記21)
前記ストレージは、揮発性メモリに前記結合マッピングを記憶するように更に構成される、
付記13記載のシステム。
(付記22)
前記ストレージは、
1)充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断し;
2)充分なメモリが存在する場合、揮発性メモリの前記結合マッピングを記憶し;かつ、
3)充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶する、ように構成される、
付記21記載のシステム。
(付記23)
前記ストレージは、最近最も使用されていない結合マッピングを削除するように更に構成される、
付記22記載のシステム。
(付記24)
前記結合エンジンは、
共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組から各々の前記特定されたドキュメントの複合スコアを計算するように更に構成される、
付記13記載のシステム。
(付記25)
前記結合エンジンは、少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランク付けするように更に構成される、
付記24記載のシステム。
(付記26)
前記サーチエンジンは、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの前記少なくともサブセットを、読み出し、かつ、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するように更に構成される、
付記25記載のシステム。
(付記27)
結合クエリに応答してレコードベースのデータストレージシステムのデータにアクセスするために、コンピュータ可読のプログラム部を有する製造製品であって、
前記プログラム部は:
ドキュメントをサーチし、かつ、結合マッピングを記憶するステップと;
インデックスを使用して、前記結合クエリのプライマリ及びセカンダリクエリのためのプライマリ及びセカンダリ結果の組を返すステップと;
前記結合マッピングを使用して、共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定するステップと;
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すステップと;
を実行する命令を有する、製造製品。
(付記28)
前記結合マッピングは、ドキュメントと関連したフィールドの値を特定する、
付記27記載の製造製品。
(付記29)
前記結合マッピングは、フィールドの値と関連したドキュメントを特定する、
付記27記載の製造製品。
(付記30)
前記プログラム部が、
前記結合クエリを使用して、結合が実行されるフィールドを特定するステップ、
を実行する命令を更に含む、
付記27記載の製造製品。
(付記31)
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の内部結合を含む、
付記27記載の製造製品。
(付記32)
前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の外部結合を含む、
付記27記載の製造製品。
(付記33)
前記プログラム部が、
前記結合クエリに従って、前記特定されたドキュメントにフィルターをかけるステップ、
を実行する命令を更に有する、
付記27記載の製造製品。
(付記34)
前記プログラム部が、
揮発性メモリに、前記結合マッピングを記憶するステップ、
を実行する命令を更に有する、
付記27記載の製造製品。
(付記35)
前記プログラム部が、
充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断するステップと;
もし充分なメモリが存在する場合、揮発性メモリに、前記結合マッピングを記憶するステップと;
もし充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶するステップと、
を実行する命令を更に有する、
付記27記載の製造製品。
(付記36)
既存の結合マッピングを削除するステップは、
最近最も使われていない結合マッピングを削除するステップ、
を実行する命令を有する、
付記35記載の製造製品。
(付記37)
前記プログラム部は、
共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々の複合スコアを計算するステップ、
を実行するための命令を更に有する、
付記27記載の製造製品。
(付記38)
前記プログラム部は、
少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランクを付け、かつ、少なくとも前記特定されたドキュメントのサブセットを、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するステップ、
を実行する命令を更に有する、
付記37記載の製造製品。
(付記39)
サーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスする方法であって:
プライマリテーブルとしてテーブルを前記レコードベースのデータストレージシステムから選択するステップと;
前記プライマリテーブルからサーチエンジンインデックスを作成する作成ステップであって、前記サーチエンジンインデックスの各々のドキュメントは、前記プライマリテーブルの1つのレコードを示す、作成ステップと;
前記レコードベースのデータストレージシステムからデータを抽出するために要求を受信する受信ステップであって、前記要求は、複数のテーブルからのデータを含んでいる、受信ステップと;
複数のテーブルの各々のテーブルに対して、前記プライマリテーブルから外部キーを含む結合マッピングを作成するステップと;
受信された要求に従って、データを前記サーチエンジンインデックス、及び前記結合マッピングの各々から抽出するステップと、
を有する方法。
(付記40)
前記受信された要求は、
前記プライマリテーブルと、一つ以上の複数のテーブルとの間の内部結合を含む、
付記39記載の方法。
(付記41)
前記受信された要求は、
前記プライマリテーブルと、一つ以上の複数のテーブルとの間の外部結合を含む、
付記39記載の方法。
(付記42)
前記サーチエンジンインデックスはディスクに記憶され、かつ、前記結合マッピングはRAMに記憶される、
付記39記載の方法。

Claims (42)

  1. 結合クエリに応答してサーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスする方法であって、電子処理システムにおいて、当該方法は:
    ドキュメントをサーチし、かつ、結合マッピングを記憶するステップであって、結合マッピングは、外部キーをドキュメントに、及び外部キー値をドキュメントに関連づけるものである、ステップと;
    インデックスを使用して、前記結合クエリのプライマリ及びセカンダリクエリのためのプライマリ及びセカンダリ結果の組を返すステップと;
    前記結合マッピングを使用して、共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定するステップと;
    共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すステップと;
    を有する方法。
  2. 前記結合マッピングは、ドキュメントと関連するフィールドの値を特定する、
    請求項1記載の方法。
  3. 前記結合マッピングは、フィールドの値と関連するドキュメントを特定する、
    請求項1記載の方法。
  4. 前記結合クエリを使用して、結合が実行されるフィールドを特定するステップ、
    を更に有する請求項1記載の方法。
  5. 前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の内部結合を含む、
    請求項1記載の方法。
  6. 前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の外部結合を含む、
    請求項1記載の方法。
  7. 前記結合クエリに従って、前記特定されたドキュメントにフィルターをかけるステップ、
    を更に含む請求項1記載の方法。
  8. 揮発性メモリに、前記結合マッピングを記憶するステップ、
    を更に有する請求項1記載の方法。
  9. 充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断するステップと;
    もし充分なメモリが存在する場合、揮発性メモリに、前記結合マッピングを記憶するステップと;
    もし充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶するステップと;
    を更に有する請求項8記載の方法。
  10. 既存の結合マッピングを削除するステップは、
    最近最も使われていない結合マッピングを削除するステップ、
    を含む請求項9記載の方法。
  11. 共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から前記特定されたドキュメントの各々の複合スコアを計算するステップ、
    を更に有する請求項1記載の方法。
  12. 少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランクを付け、かつ、少なくとも前記特定されたドキュメントのサブセットを、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するステップ、
    を更に有する請求項11記載の方法。
  13. 結合クエリに応答してサーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスするエレクトロニックシステムであって、
    クエリに応答して、インデックスを提供し、かつ、前記インデックスから結果の組を返すように構成されたサーチエンジンと;
    前記インデックス、及び結果の組を記憶するストレージと;
    結合エンジンであって:
    ストレージに結合マッピングを提供するために、前記サーチエンジンにクエリを発し、結合マッピングは、外部キーをドキュメントに、及び外部キー値をドキュメントに関連づけるものであり、
    前記結合クエリのプライマリ及びセカンダリクエリに対するプライマリ及びセカンダリ結果の組を返すために、前記サーチエンジンにクエリを発し;
    前記結合マッピング、及び結果の組を使用して、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定する;
    前記結合エンジンと;
    を有するシステム。
  14. 前記サーチエンジンは、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すように更に構成される、
    請求項13記載のシステム。
  15. 前記結合エンジンは、ドキュメントと関連するフィールドの値を特定するために前記結合マッピングを使用するように更に構成される、
    請求項13記載のシステム。
  16. 前記結合エンジンは、フィールドの値と関連するドキュメントを特定するために前記結合マッピングを使用するように更に構成される、
    請求項13記載のシステム。
  17. 前記結合エンジンは、結合が実行されるフィールドを特定するために前記結合クエリを使用するように更に構成される、
    請求項13記載のシステム。
  18. 前記結合エンジンは、前記クエリに従って前記特定されたドキュメントにフィルターをかけるように更に構成される、
    請求項13記載のシステム。
  19. 前記結合エンジンは、前記クエリの前記プライマリ及びセカンダリクエリの間の内部結合として前記クエリを分解するように更に構成される、
    請求項13記載のシステム。
  20. 前記結合エンジンは、前記クエリの前記プライマリ及びセカンダリクエリの間の外部結合として前記クエリを分解するように更に構成される、
    請求項13記載のシステム。
  21. 前記ストレージは、揮発性メモリに前記結合マッピングを記憶するように更に構成される、
    請求項13記載のシステム。
  22. 前記ストレージは、
    1)充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断し;
    2)充分なメモリが存在する場合、揮発性メモリの前記結合マッピングを記憶し;かつ、
    3)充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶する、ように構成される、
    請求項21記載のシステム。
  23. 前記ストレージは、最近最も使用されていない結合マッピングを削除するように更に構成される、
    請求項22記載のシステム。
  24. 前記結合エンジンは、
    共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組から各々の前記特定されたドキュメントの複合スコアを計算するように更に構成される、
    請求項13記載のシステム。
  25. 前記結合エンジンは、少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランク付けするように更に構成される、
    請求項24記載のシステム。
  26. 前記サーチエンジンは、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの前記少なくともサブセットを、読み出し、かつ、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するように更に構成される、
    請求項25記載のシステム。
  27. 結合クエリに応答してレコードベースのデータストレージシステムのデータにアクセスするために、コンピュータ可読のプログラム部を有する製造製品であって、
    前記プログラム部は:
    ドキュメントをサーチし、かつ、結合マッピングを記憶するステップであって、結合マッピングは、外部キーをドキュメントに、及び外部キー値をドキュメントに関連づけるものである、ステップと;
    インデックスを使用して、前記結合クエリのプライマリ及びセカンダリクエリのためのプライマリ及びセカンダリ結果の組を返すステップと;
    前記結合マッピングを使用して、共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からドキュメントを特定するステップと;
    共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組から少なくとも前記特定されたドキュメントのサブセットを読み出すステップと;
    を実行する命令を有する、製造製品。
  28. 前記結合マッピングは、ドキュメントと関連したフィールドの値を特定する、
    請求項27記載の製造製品。
  29. 前記結合マッピングは、フィールドの値と関連したドキュメントを特定する、
    請求項27記載の製造製品。
  30. 前記プログラム部が、
    前記結合クエリを使用して、結合が実行されるフィールドを特定するステップ、
    を実行する命令を更に含む、
    請求項27記載の製造製品。
  31. 前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の内部結合を含む、
    請求項27記載の製造製品。
  32. 前記結合クエリは、前記結合クエリの前記プライマリ及びセカンダリクエリ間の外部結合を含む、
    請求項27記載の製造製品。
  33. 前記プログラム部が、
    前記結合クエリに従って、前記特定されたドキュメントにフィルターをかけるステップ、
    を実行する命令を更に有する、
    請求項27記載の製造製品。
  34. 前記プログラム部が、
    揮発性メモリに、前記結合マッピングを記憶するステップ、
    を実行する命令を更に有する、
    請求項27記載の製造製品。
  35. 前記プログラム部が、
    充分な揮発性メモリが前記結合マッピングを記憶するために利用できるかを判断するステップと;
    もし充分なメモリが存在する場合、揮発性メモリに、前記結合マッピングを記憶するステップと;
    もし充分なメモリが存在しない場合、既存の結合マッピングを削除し、かつ、前記結合マッピングを記憶するステップと、
    を実行する命令を更に有する、
    請求項27記載の製造製品。
  36. 既存の結合マッピングを削除するステップは、
    最近最も使われていない結合マッピングを削除するステップ、
    を実行する命令を有する、
    請求項35記載の製造製品。
  37. 前記プログラム部は、
    共通フィールド値を有する、前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々の複合スコアを計算するステップ、
    を実行するための命令を更に有する、
    請求項27記載の製造製品。
  38. 前記プログラム部は、
    少なくとも前記複合スコアの関数として、共通フィールド値を有する前記プライマリ結果の組、及び前記セカンダリ結果の組からの前記特定されたドキュメントの各々にランクを付け、かつ、少なくとも前記特定されたドキュメントのサブセットを、ディスプレイ上の結果のリスト内に、前記ランクに従って提示するステップ、
    を実行する命令を更に有する、
    請求項37記載の製造製品。
  39. サーチエンジンを使用して、レコードベースのデータストレージシステムのデータにアクセスする方法であって:
    プライマリテーブルとしてテーブルを前記レコードベースのデータストレージシステムから選択するステップと;
    前記プライマリテーブルからサーチエンジンインデックスを作成する作成ステップであって、前記サーチエンジンインデックスの各々のドキュメントは、前記プライマリテーブルの1つのレコードを示す、作成ステップと;
    前記レコードベースのデータストレージシステムからデータを抽出するために要求を受信する受信ステップであって、前記要求は、複数のテーブルからのデータを含んでいる、受信ステップと;
    複数のテーブルの各々のテーブルに対して、前記プライマリテーブルから外部キーを含む結合マッピングを作成するステップであって、結合マッピングは、外部キーをドキュメントに、及び外部キー値をドキュメントに関連づけるものである、ステップと;
    受信された要求に従って、データを前記サーチエンジンインデックス、及び前記結合マッピングの各々から抽出するステップと、
    を有する方法。
  40. 前記受信された要求は、
    前記プライマリテーブルと、一つ以上の複数のテーブルとの間の内部結合を含む、
    請求項39記載の方法。
  41. 前記受信された要求は、
    前記プライマリテーブルと、一つ以上の複数のテーブルとの間の外部結合を含む、
    請求項39記載の方法。
  42. 前記サーチエンジンインデックスはディスクに記憶され、かつ、前記結合マッピングはRAMに記憶される、
    請求項39記載の方法。
JP2011514601A 2008-06-17 2009-06-17 サーチエンジンインデックス内の結合データに対するクエリ Expired - Fee Related JP5616335B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US7315608P 2008-06-17 2008-06-17
US61/073,156 2008-06-17
PCT/US2009/003609 WO2009154742A1 (en) 2008-06-17 2009-06-17 Querying joined data within a search engine index

Publications (3)

Publication Number Publication Date
JP2011524587A JP2011524587A (ja) 2011-09-01
JP2011524587A5 JP2011524587A5 (ja) 2013-06-06
JP5616335B2 true JP5616335B2 (ja) 2014-10-29

Family

ID=40910969

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011514601A Expired - Fee Related JP5616335B2 (ja) 2008-06-17 2009-06-17 サーチエンジンインデックス内の結合データに対するクエリ

Country Status (5)

Country Link
US (1) US8073840B2 (ja)
EP (1) EP2310960A1 (ja)
JP (1) JP5616335B2 (ja)
CA (1) CA2728432C (ja)
WO (1) WO2009154742A1 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8099674B2 (en) 2005-09-09 2012-01-17 Tableau Software Llc Computer systems and methods for automatically viewing multidimensional databases
ES2644856T3 (es) * 2009-07-29 2017-11-30 Reversinglabs Corporation Desempaquetado automatizado de archivos ejecutables portátiles
CA2772746C (en) * 2009-08-31 2019-06-11 Exalead Trusted query system and method
US10417611B2 (en) 2010-05-18 2019-09-17 Salesforce.Com, Inc. Methods and systems for providing multiple column custom indexes in a multi-tenant database environment
US8694527B2 (en) 2010-06-30 2014-04-08 International Business Machines Corporation Simplified query generation from prior query results
US20120078941A1 (en) * 2010-09-27 2012-03-29 Teradata Us, Inc. Query enhancement apparatus, methods, and systems
US10331664B2 (en) * 2011-09-23 2019-06-25 Hartford Fire Insurance Company System and method of insurance database optimization using social networking
US9043330B2 (en) * 2011-12-29 2015-05-26 Business Objects Software Ltd. Normalized search
US9104678B1 (en) * 2011-12-31 2015-08-11 Richard Michael Nemes Methods and apparatus for information storage and retrieval using a caching technique with probe-limited open-address hashing
US9747363B1 (en) 2012-03-01 2017-08-29 Attivio, Inc. Efficient storage and retrieval of sparse arrays of identifier-value pairs
US8682925B1 (en) * 2013-01-31 2014-03-25 Splunk Inc. Distributed high performance analytics store
US10152511B2 (en) * 2012-09-14 2018-12-11 Salesforce.Com, Inc. Techniques for optimization of inner queries
US9633076B1 (en) * 2012-10-15 2017-04-25 Tableau Software Inc. Blending and visualizing data from multiple data sources
US8862566B2 (en) * 2012-10-26 2014-10-14 Equifax, Inc. Systems and methods for intelligent parallel searching
US9092507B2 (en) * 2013-01-15 2015-07-28 Marklogic Corporation Apparatus and method for computing n-way co-occurrences of data tuples in scalar indexes
CN103970780B (zh) * 2013-01-30 2017-02-08 鸿富锦精密工业(深圳)有限公司 多媒体装置及其索引管理方法
US10268639B2 (en) 2013-03-15 2019-04-23 Inpixon Joining large database tables
US9715576B2 (en) 2013-03-15 2017-07-25 II Robert G. Hayter Method for searching a text (or alphanumeric string) database, restructuring and parsing text data (or alphanumeric string), creation/application of a natural language processing engine, and the creation/application of an automated analyzer for the creation of medical reports
US10515231B2 (en) * 2013-11-08 2019-12-24 Symcor Inc. Method of obfuscating relationships between data in database tables
US9535956B2 (en) * 2014-01-31 2017-01-03 Oracle International Corporation Efficient set operation execution using a single group-by operation
US10545917B2 (en) 2014-02-19 2020-01-28 Snowflake Inc. Multi-range and runtime pruning
US9576039B2 (en) 2014-02-19 2017-02-21 Snowflake Computing Inc. Resource provisioning systems and methods
US10061808B2 (en) * 2014-06-03 2018-08-28 Sap Se Cached views
US20160055212A1 (en) * 2014-08-22 2016-02-25 Attivio, Inc. Automatic joining of data sets based on statistics of field values in the data sets
US10120905B2 (en) * 2014-12-22 2018-11-06 Amazon Technologies, Inc. Efficient determination of join paths via cardinality estimation
WO2016112109A1 (en) * 2015-01-07 2016-07-14 Vatbox, Ltd. Qualification-based generation of reduced data sets
US10437824B2 (en) * 2015-01-23 2019-10-08 Attivio, Inc. Querying across a composite join of multiple database tables using a search engine index
US9275155B1 (en) * 2015-01-23 2016-03-01 Attivio Inc. Querying across a composite join of multiple database tables using a search engine index
CN107239712A (zh) 2016-03-29 2017-10-10 阿里巴巴集团控股有限公司 基于应用程序的用户信息的隐藏方法及装置
EP3475849A4 (en) * 2016-05-04 2019-05-22 eBay Inc. DATA BANKSOPTIMIZER AND THEMATIC FILTERS
US10628416B2 (en) * 2016-05-31 2020-04-21 International Business Machines Corporation Enhanced database query processing
WO2017223250A1 (en) * 2016-06-21 2017-12-28 Wittkotter Erland Sample data extraction
US10878493B2 (en) 2016-06-21 2020-12-29 Erland Wittkotter Sample data extraction
US10437780B2 (en) 2016-07-14 2019-10-08 Snowflake Inc. Data pruning based on metadata
US11620315B2 (en) 2017-10-09 2023-04-04 Tableau Software, Inc. Using an object model of heterogeneous data to facilitate building data visualizations
US10839164B1 (en) * 2018-10-01 2020-11-17 Iqvia Inc. Automated translation of clinical trial documents
US11966406B2 (en) 2018-10-22 2024-04-23 Tableau Software, Inc. Utilizing appropriate measure aggregation for generating data visualizations of multi-fact datasets
US11966568B2 (en) 2018-10-22 2024-04-23 Tableau Software, Inc. Generating data visualizations according to an object model of selected data sources
US10996835B1 (en) 2018-12-14 2021-05-04 Tableau Software, Inc. Data preparation user interface with coordinated pivots
US11321392B2 (en) * 2019-02-19 2022-05-03 International Business Machines Corporation Light weight index for querying low-frequency data in a big data environment
US11016978B2 (en) * 2019-09-18 2021-05-25 Bank Of America Corporation Joiner for distributed databases
US11030256B2 (en) 2019-11-05 2021-06-08 Tableau Software, Inc. Methods and user interfaces for visually analyzing data visualizations with multi-row calculations
US10997217B1 (en) 2019-11-10 2021-05-04 Tableau Software, Inc. Systems and methods for visualizing object models of database tables
US11366858B2 (en) 2019-11-10 2022-06-21 Tableau Software, Inc. Data preparation using semantic roles
US11520774B1 (en) * 2019-12-27 2022-12-06 Snap Inc. Cross row consistent data accessing
US11281668B1 (en) 2020-06-18 2022-03-22 Tableau Software, LLC Optimizing complex database queries using query fusion
US11954223B2 (en) * 2020-10-12 2024-04-09 Servicenow, Inc. Data record search with field level user access control

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5594898A (en) * 1994-03-25 1997-01-14 Microsoft Corporation Method and system for joining database tables using compact row mapping structures
US5734887A (en) * 1995-09-29 1998-03-31 International Business Machines Corporation Method and apparatus for logical data access to a physical relational database
US5987453A (en) * 1997-04-07 1999-11-16 Informix Software, Inc. Method and apparatus for performing a join query in a database system
US5943665A (en) * 1997-09-09 1999-08-24 Netscape Communications Corporation Method and system for performing conceptual joins across fields of a database
US6718320B1 (en) * 1998-11-02 2004-04-06 International Business Machines Corporation Schema mapping system and method
US6338056B1 (en) * 1998-12-14 2002-01-08 International Business Machines Corporation Relational database extender that supports user-defined index types and user-defined search
US6665640B1 (en) 1999-11-12 2003-12-16 Phoenix Solutions, Inc. Interactive speech based learning/training system formulating search queries based on natural language parsing of recognized user queries
US7475058B2 (en) * 2001-12-14 2009-01-06 Microsoft Corporation Method and system for providing a distributed querying and filtering system
US7092954B1 (en) * 2001-12-31 2006-08-15 Ncr Corporation Optimizing an equi-join operation using a bitmap index structure
US6957210B1 (en) * 2001-12-31 2005-10-18 Ncr Corporation Optimizing an exclusion join operation using a bitmap index structure
US6957222B1 (en) * 2001-12-31 2005-10-18 Ncr Corporation Optimizing an outer join operation using a bitmap index structure
US7353350B2 (en) * 2002-07-23 2008-04-01 Research In Motion Limited Data store management system and method for wireless devices
JP2004110219A (ja) * 2002-09-17 2004-04-08 Hitachi Ltd データ処理システム及びジョイン処理方法
US20040230571A1 (en) 2003-04-22 2004-11-18 Gavin Robertson Index and query processor for data and information retrieval, integration and sharing from multiple disparate data sources
US7698267B2 (en) 2004-08-27 2010-04-13 The Regents Of The University Of California Searching digital information and databases
US20070260628A1 (en) * 2006-05-02 2007-11-08 Tele Atlas North America, Inc. System and method for providing a virtual database environment and generating digital map information
US7546306B2 (en) * 2006-02-16 2009-06-09 Sap Ag Object metamodel comprising views on a join graph
US7689553B2 (en) * 2006-03-30 2010-03-30 International Business Machines Corporation Execution cost reduction of sampled queries in a database
US7720838B1 (en) * 2006-06-21 2010-05-18 Actuate Corporation Methods and apparatus for joining tables from different data sources
US7702616B1 (en) * 2006-06-21 2010-04-20 Actuate Corporation Methods and apparatus for processing a query joining tables stored at different data sources

Also Published As

Publication number Publication date
WO2009154742A1 (en) 2009-12-23
EP2310960A1 (en) 2011-04-20
US20100005054A1 (en) 2010-01-07
US8073840B2 (en) 2011-12-06
CA2728432A1 (en) 2009-12-23
CA2728432C (en) 2015-04-28
JP2011524587A (ja) 2011-09-01

Similar Documents

Publication Publication Date Title
JP5616335B2 (ja) サーチエンジンインデックス内の結合データに対するクエリ
US8185525B2 (en) Ordering query results based on value range filtering
US7774328B2 (en) Browseable fact repository
US8027985B2 (en) Sorting data records contained in a query result
US8010544B2 (en) Inverted indices in information extraction to improve records extracted per annotation
US7925658B2 (en) Methods and apparatus for mapping a hierarchical data structure to a flat data structure for use in generating a report
US7505958B2 (en) Metadata management for a data abstraction model
US8615707B2 (en) Adding new attributes to a structured presentation
US7949652B2 (en) Filtering query results using model entity limitations
US7747640B2 (en) Method for regenerating selected rows for an otherwise static result set
US8380750B2 (en) Searching and displaying data objects residing in data management systems
US7584178B2 (en) Query condition building using predefined query objects
US20080228716A1 (en) System and method for accessing unstructured data using a structured database query environment
US20070143245A1 (en) System and method for managing presentation of query results
JPWO2004097679A1 (ja) データベース装置及び作成方法、データベース検索装置及び検索方法
US7761461B2 (en) Method and system for relationship building from XML
Burrows et al. Medieval manuscripts and their migrations: Using SPARQL to investigate the research potential of an aggregated Knowledge Graph
Chen et al. The Applications PHP, HTML and MYSQL in Development of Website–Query Function
US20100205197A1 (en) Two-valued logic database management system with support for missing information
JP2010518517A (ja) ユーザによるカスタマイズが可能な双方向医師リコールメッセージデータベースのための方法及びシステム
Patroumpas et al. Multi-Attribute Similarity Search for Interactive Data Exploration.
Ibragimov Optimizing Analytical Queries over Semantic Web Sources
US20140059039A1 (en) Methods and systems for searching and displaying a plurality of entities within an interactive user interface

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120330

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130329

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131001

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131008

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131101

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140318

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140618

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140812

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140911

R150 Certificate of patent or registration of utility model

Ref document number: 5616335

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees