発明の詳細な説明
以下の記載では、説明の目的のため、多くの特定の詳細が、本発明のさまざまな実施形態の完全な理解を提供するために述べられる。しかしながら、これらの特定の詳細のうちのいくつかがなくても本発明の実施形態は実践され得る、ということは、当業者には明らかであろう。他の例では、周知の構造および装置は、ブロック図の形で示される。
以下の記載は例示的な実施形態のみを提供しており、この開示の範囲、利用可能性、または構成を限定するよう意図されてはいない。むしろ、例示的な実施形態の以下の記載は、例示的な実施形態を実現するための実施可能な説明を当業者に提供するであろう。添付された請求項で述べられるようなこの発明の精神および範囲から逸脱することなく、要素の機能および配置においてさまざまな変更が行なわれてもよい、ということが理解されるべきである。
以下の記載では、実施形態の完全な理解を提供するために、特定の詳細が与えられる。しかしながら、これらの特定の詳細がなくても実施形態は実践され得る、ということは、当業者には理解されるであろう。たとえば、実施形態を必要以上に詳細に記して不明瞭にすることがないように、回路、システム、ネットワーク、プロセス、および他のコンポーネントは、ブロック図の形のコンポーネントとして示されてもよい。他の例では、実施形態を不明瞭にしないように、周知の回路、プロセス、アルゴリズム、構造、および手法は、不要な詳細なしで示されてもよい。
また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明され得ることに留意されたい。フローチャートは動作を順次プロセスとして説明し得るものの、動作の多くは並行してまたは同時に行なうことが可能である。加えて、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了すると終了するが、図に含まれない追加のステップを有していてもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応していてもよい。プロセスがある機能に対応している場合、その終了は、その機能が呼出し元の機能または主機能に戻ることに対応可能である。
「マシン読取可能媒体」という用語は、命令および/またはデータを格納し、含み、または担持することができる、携帯型または固定式記憶装置、光学記憶装置、ならびにさまざまな他の媒体を含むものの、それらに限定されない。コードセグメントまたはマシン実行可能命令が、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、もしくは、命令、データ構造またはプログラム文の任意の組合せを表わしてもよい。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡し、および/または受信することによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む任意の好適な手段を介して渡され、発送され、または送信されてもよい。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、必要なタスクを行なうためのプログラムコードまたはコードセグメントが、マシン読取可能媒体に格納されてもよい。プロセッサが、必要なタスクを行なってもよい。
ウェブサイト、インターネットポータル、イントラネットなどは、ユーザがクエリを入力することを可能にする検索能力を有していてもよい。製品、製品名、または他のクエリタームに関する質問を含み得るクエリは、クエリに関連する情報または情報へのリンクをユーザに提供するように、処理されて既存のコンテンツと比較されてもよい。
たとえば、検索機能性は、コンピュータ製品製造業者のウェブサイト上に含まれてもよい。検索機能性は、ユーザがクエリタームを入力することを可能にするテキスト入力ボックスであってもよい。クエリタームは、製造業者のある製品についての質問、ある製品に関する技術的問題についてのより多くの情報の要求などを含んでいてもよい。クエリは、クエリタームに関連するウェブサイトからコンテンツへのリンクまたはコンテンツをユーザに返すように処理されてもよい。
いくつかの実施形態では、クエリタームは、ウェブサイトにおける、またはコンテンツ管理システムにおけるワードまたはテキストと比較されてもよい。クエリのワードとマッチングするコンテンツの部分が、クエリによって返されてもよい。検索システムは、検索結果の所望の精度に基づいて、検索タームをコンテンツテキストとマッチングさせるための異なる方法を有していてもよい。場合によっては、結果の精度を向上させるために、コンテンツおよびクエリの言語分析が使用されてもよい。
場合によっては、クエリタームとコンテンツとの直接マッチングが使用されてもよい。場合によっては、ユーザによって入力されたタームそのもののみが、コンテンツテキストとマッチングされる。検索システムは、クエリタームとぴったりマッチングする結果のみを返してもよい。直接マッチングは良好な精度を提供し得るが、それは多くの用途にとって不適切であるかもしれない。ユーザは、コンテンツにおいて使用されるワードまたはフレーズを組込む完全文または質問を入力する場合がある。ユーザは、コンテンツにおいて使用されるワードの変化形を入力する場合がある。ワードのわずかな変化形により、ユーザに結果が提示されない場合がある。たとえば、ある製造業者のウェブサイトは、その製造業者の製品についての情報を含み得る。ウェブサイト上の製品の正式名称は、たとえば「Computec X 1000」および「Computec V」などの名称を含み得る。「Where can I buy the ComputecX」(私はどこでComputecXを購入できますか)というタームを有するクエリを入力するユーザは、結果をまったく受信しないかもしれない。
他の場合では、部分文字列検索が使用されてもよい。場合によっては、入力されたクエリタームの変化形または部分文字列が、コンテンツテキストの部分文字列にマッチングされてもよい。部分文字列検索は、より低い精度を提供するかもしれず、より多くの結果を返すかもしれない。多くの場合、部分文字列検索は、無関係の結果を返すかもしれない。上述の例を続けると、ユーザが「Computec 1000」というタームを有するクエリを入力する場合、システムはコンテンツを、双方の製品「Computec X 1000」および「Computec V」についての文字列とマッチングし得る部分文字列「Computec」および「1000」とマッチングさせようとするかもしれない。
ユーザから入力を受け取る検索システムは、返された結果の精度と返された結果の数とのバランスをとるべきである。直接検索タームマッピングは、少なすぎるクエリ結果をもたらすかもしれず、よくある変化形を見逃すかもしれない。一方、部分文字列検索は、無関係の製品または概念に向けられた多すぎる結果をもたらすかもしれない。
精度と無関係の結果の数との間のバランスを提供する検索システムが提示される。実施形態では、検索システムは、コンテンツの特定の部分に関連付けられ得る、製品名などの予約フレーズのリストを受信する。検索システムは、コンテンツに関連する予約フレーズのリストにおける各ワードについて、同義語のリストを生成してもよい。各予約フレーズの同義語は、あらゆる重複を除去するために、互いに比較されてもよい。重複が除去された後で、各予約キーワードは、独特の同義語に関連付けられるであろう。同義語は、文脈において、ユーザが入力したクエリテキストとマッチングされてもよい。マッチングするクエリテキストは、マッチングされた各同義語の関連付けられた予約フレーズに変換されてもよく、予約フレーズに関連するコンテンツがユーザに返されてもよい。
システムは、予約フレーズのリストを受信してもよい。予約フレーズのリストは、ウェブサイトまたは他の検索コンテンツに関連する重要なターム、製品、場所などのリストであってもよい。予約フレーズのリストは、たとえば、製造業者のウェブサイト上にリストされた製品に対応していてもよい。予約フレーズのリストは、ユーザによって手動で判断されてもよい。いくつかの実施形態では、予約フレーズのリストは、ウェブサイトまたは他のコンテンツをスキャンすることによって自動的に判断されてもよい。予約フレーズのリストは、コンテンツにおけるワードの頻度を判断することによって決定されてもよい。ありふれたワードでないものの、コンテンツにおいて高い頻度で現れるワードが、予約フレーズとして選択されてもよい。
予約フレーズのリストは、コンテンツで見つかるワードを含んでいてもよい。予約フレーズのリストは、コンテンツの特定の一部または部分に対応していてもよい。たとえば、コンピュータ製品製造業者のウェブサイトについては、予約フレーズのリストは製品名を含んでいてもよい。製造業者のウェブサイトは、各製品についてのウェブページ、文書などを含んでいてもよく、各製品名に関連付けられてもよい。
予約フレーズのリストは、各予約ワードに関連付けられ得る可能な代替的なタームまたは同義語を決定するために処理されてもよい。各予約フレーズは、追加の同義語に関連付けられてもよい。各予約ワードについて、ユーザによって手動で、および/またはシステムによって自動的に、同義語が決定され、予約フレーズに関連付けられてもよい。ユーザは、各予約ワードについて、よく使用されるリスト、または使用される代替的なワードを入力または提供してもよい。
いくつかの実施形態では、システムは、予約フレーズの各々について、部分文字列変化形を自動的に生成してもよい。場合によっては、各予約フレーズの2文字または3文字よりも長いすべての可能な部分文字列が、同義語として使用され、予約ワードに関連付けられてもよい。いくつかの実施形態では、部分文字列同義語を生成するための追加のルールが定義されてもよい。たとえば、場合によっては、予約フレーズから数を除去する部分文字列が生成されてもよい。製品名の場合、ユーザは、番号を記憶することが難しいと感じるかもしれず、製品を単にそれらの最初のワードまたは最初の番号で参照するかもしれない。たとえば、予約製品名「Computec X 1000」は、トークン化後に「Computec X」、「Computec」、および「Computec 1000」などの同義語を生成するように処理されてもよい。
予約フレーズの部分文字列に基づいて同義語を定義するための多くの異なるルールおよび方法が使用されてもよく、文脈、用途、および他の設定に依存してもよい。
いくつかの実施形態では、システムは、予約フレーズに関連付けられた代替的なワードを判断するために、他の内部または外部コンテンツをスキャンしてもよい。使用された、または予約フレーズに関連付けられた代替的なワードを判断するために、たとえば、ブログ、レビューサイト、オンラインフォーラムなどの追加のウェブサイトが、スキャンされ分析されてもよい。
いくつかの実施形態では、予約フレーズは、品詞または他のカテゴリーで注釈を付けられてもよい。予約フレーズが名詞、製品、場所、動詞などであるかどうかを示し得る各予約フレーズに、識別子が関連付けられてもよい。各予約フレーズについて決定された同義語は、予約ワードの指定された品詞または他のカテゴリーを継承してもよい。
実施形態では、各予約フレーズに関連付けられた同義語のリストは、重複を除去するために、比較され、または分析されてもよい。2つ以上の予約フレーズに関連付けられると分かった同義語は、各同義語が1つの予約ワードにのみ関連付けられるように、除去されてもよい。重複は、さまざまな検索およびマッチングアルゴリズムによって除去されてもよい。
予約フレーズのリストは、異なる品詞または他のグルーピングに分類されてもよい。たとえば、いくつかの予約フレーズは名詞として分類され、一方、他の予約フレーズは動詞として分類されてもよい。いくつかの実施形態では、同義語の重複が異なるグループからの予約フレーズに関連付けられている場合、同義語の重複はそのままにしておかれてもよい。たとえば、予約フレーズ「bicycling」は同義語「bike」を有するかもしれない。別の予約ワード「bicycle」は同じ同義語「bike」を有するかもしれない。bicyclingは動詞、bicycleは名詞であるため、2つの同義語「bike」は、各予約ワードの同義語リストにおいてそのままにしておかれてもよい。
さらに別の実施形態では、同義語重複が決定されると、リコール問題を引き起こす曖昧性を回避するために、同義語はすべて除去されてもよい。いくつかの実施形態では、1つの予約フレーズのみが同義語に関連付けられるように、同義語の1つのコピーのすべてが除去されてもよい。一実施形態では、最高ランクの予約フレーズに関連付けられた重複同義語がそのままにしておかれ、他のすべてが除去されてもよい。予約フレーズは、たとえば、それらがコンテンツに現れる回数といった1つ以上の要因に基づいてランク付けされてもよい。予約フレーズの頻度が多くなるにつれて、予約フレーズのランクはより高くなってもよい。いくつかの実施形態では、重複同義語は、それらの関連付けられた予約フレーズと比較されてもよい。予約フレーズに対する同義語の類似性は、編集距離または他の尺度に基づいて計算されてもよい。一実施形態では、編集距離は1文字ごとに適用可能であり、別の実施形態では、それは1トークンごとに適用可能である。
同義語のリストは、より多くの同義語を除去し得る追加のワードフィルタによって処理されてもよい。ワードフィルタは、たとえば2文字または3文字未満の同義語を除去してもよい。ワードフィルタは、フィルタ辞書またはフィルタリング用のワードのリストを含んでいてもよい。フィルタ辞書は、不快なワード、競合企業の製品名などを含んでいてもよい。
予約フレーズのリストおよび同義語のリストは、ユーザからのクエリ要求を処理するために使用されてもよい。ユーザがクエリ文字列を入力すると、文字列は、1つ以上の予約フレーズまたは同義語がクエリの部分とマッチングするかどうかを判断するために、分析されてもよい。いくつかの実施形態では、同義語、予約フレーズ、およびクエリ文字列間のマッチングは、品詞または他の言語特性を分析しマッチングさせることを含んでいてもよい。クエリ文字列のワードは、それらの文脈を判断し、ワードが名詞、動詞、場所などとして使用されているかどうかを決定するために、分析されてもよい。クエリ文字列におけるワードは、品詞および他のグルーピングがマッチングする場合のみ、同義語および/または予約フレーズにマッチングされてもよい。予約フレーズまたは同義語とマッチングしない、クエリ文字列におけるワードも、検索システムによって使用可能である。すなわち、クエリは複雑な場合があり、単なる予約フレーズよりも多くの情報を含むかもしれず、この情報も良好な検索結果の取得に関連し得る。
クエリ文字列の一部が予約フレーズのうちの1つとマッチングする場合、次に、マッチングする予約ワードを含むコンテンツに対して検索が行なわれてもよい。クエリ文字列の一部が同義語のうちの1つとマッチングする場合、次に、関連付けられた予約フレーズを含むコンテンツに対して検索が行なわれてもよい。場合によっては、各予約フレーズは、何らかのトピックとともに、コンテンツの特定の部分に索引付けまたはマッピングされてもよい。ユーザが予約フレーズまたはその同義語のうちの1つを含むクエリ文字列を入力すると、クエリがトピックとマッチングする場合には、索引付けされたコンテンツまたはコンテンツへのリンクがユーザに提示されてもよい。ユーザが「my Computec X 1000 is broken」(私のComputec X 1000が故障した)というクエリタームを入力する場合、トピックは、故障した何かに関するものであり、マッチングされた製品は「Computec X 1000」であり、ユーザには、故障した「Computec X 1000」をどうするかについてのコンテンツが提示され得る。
実施形態では、各予約フレーズの同義語のリストは、連続的におよび/または定期的に更新されてもよい。新しい予約フレーズが追加されるかまたは予約フレーズのリストから除去される際、各予約フレーズの同義語のリストは再計算されてもよい。新しい予約フレーズが追加される場合、新しい予約フレーズの同義語が判断され、重複同義語を除去するためにワードの既存のリストと比較されてもよい。予約フレーズがリストから除去される場合、残りの予約フレーズのうちのいくつかについての同義語のリストに、以前なら重複していたかもしれない同義語が追加されてもよい。
いくつかの実施形態では、ユーザのクエリ文字列におけるワードが記録されてもよい。コンテンツにおけるどのタームともマッチングしなかった、または結果をユーザに返さなかった、クエリ文字列におけるワードは、記録され保存されてもよい。システムは、結果を返さなかった特定のワードがユーザによって何回入力されたかを監視してもよい。マッチングしなかったワードおよびそれらの頻度のリストが、検討のために管理者に提供されてもよい。オペレータは、マッチングしなかったワードのうちの1つ以上を選択し、それらを予約ワードの同義語のリストに追加してもよい。いくつかの実施形態では、ユーザのクエリ文字列における特定のワードが、予め定められたしきい値を上回ってマッチングしなかった場合、管理者アラートがトリガされてもよい。場合によっては、あるワードが5回または10回以上マッチングしなかった場合、電子メールまたはアラートなどの管理者通知がもたらされてもよい。本発明の実施形態のさまざまな追加の詳細を、図面を参照して以下に説明する。
図1は、本発明のさまざまな実施形態が実現され得る例示的な分散型システムのコンポーネントを示すブロック図である。図示された実施形態では、分散型システム100は1つ以上のクライアントコンピューティング装置102、104、106、および108を含み、それらは、1つ以上のネットワーク110を通して、ウェブブラウザ、専用クライアント(たとえば、オラクル・フォームズ(Oracle Forms))などのクライアントアプリケーションを実行し、動作させるように構成される。サーバ112は、ネットワーク110を介して、リモートのクライアントコンピューティング装置102、104、106、および108と通信可能に結合されてもよい。
さまざまな実施形態では、サーバ112は、システムのコンポーネントのうちの1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。いくつかの実施形態では、これらのサービスは、ウェブベースのサービスまたはクラウドサービスとして、もしくはソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)モデルの下で、クライアントコンピューティング装置102、104、106、および/または108のユーザに提供されてもよい。クライアントコンピューティング装置102、104、106、および/または108を動作させるユーザは次に、これらのコンポーネントによって提供されるサービスを利用するためにサーバ112とやりとりするために、1つ以上のクライアントアプリケーションを利用してもよい。
図に示す構成では、システム100のソフトウェアコンポーネント118、120および122は、サーバ112上で実現されるとして図示されている。他の実施形態では、システム100のコンポーネントおよび/またはこれらのコンポーネントによって提供されるサービスのうちの1つ以上も、クライアントコンピューティング装置102、104、106、および/または108のうちの1つ以上によって実現されてもよい。クライアントコンピューティング装置を動作させるユーザは次に、これらのコンポーネントによって提供されるサービスを使用するために、1つ以上のクライアントアプリケーションを利用してもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。分散型システム100とは異なり得るさまざまな異なるシステム構成が可能であることが理解されるべきである。図に示す実施形態はこのため、実施形態システムを実現するための分散型システムの一例であり、限定的であるよう意図されてはいない。
クライアントコンピューティング装置102、104、106、および/または108は、携帯型ハンドヘルド装置(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))、またはウェアラブル装置(たとえば、グーグル・グラス(Google Glass)(登録商標)頭部装着型ディスプレイ)であってもよく、マイクロソフト・ウィンドウズ・モバイル(Microsoft Windows Mobile)(登録商標)などのソフトウェア、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)、ブラックベリー(登録商標)10、パームOSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(short message service:SMS)、ブラックベリー(登録商標)、または他の通信プロトコルに対応している。クライアントコンピューティング装置は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを例として含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティング装置は、たとえばグーグル・クローム(Google Chrome)OSなどのさまざまなGNU/Linuxオペレーティングシステムを何ら限定されることなく含む、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであり得る。それに代えて、またはそれに加えて、クライアントコンピューティング装置102、104、106、および108は、ネットワーク110を通して通信可能である、シンクライアントコンピュータ、インターネット対応ゲーミングシステム(たとえば、Kinect(登録商標)ジェスチャー入力装置を有する、または有さない、マイクロソフトXboxゲーミングコンソール)、および/またはパーソナルメッセージング装置といった、任意の他の電子装置であってもよい。
例示的な分散型システム100は4つのクライアントコンピューティング装置を有して図示されているが、任意の数のクライアントコンピューティング装置がサポートされてもよい。センサを有する装置などの他の装置が、サーバ112とやりとりしてもよい。
分散型システム100におけるネットワーク110は、TCP/IP(transmission control protocol/Internet protocol:伝送制御プロトコル/インターネットプロトコル)、SNA(systems network architecture:システムネットワークアーキテクチャ)、IPX(Internet packet exchange:インターネットパケット交換)、アップル・トーク(Apple Talk)などを何ら限定されることなく含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。単なる例として、ネットワーク110は、イーサネット(登録商標)、トークンリング(Token-Ring)などに基づくものといった、ローカルエリアネットワーク(local area network:LAN)であり得る。ネットワーク110は、ワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク(virtual private network:VPN)を何ら限定されることなく含む仮想ネットワーク、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、電気電子技術者協会(the Institute of Electrical and Electronics:IEEE)802.11プロトコルスイート、Bluetooth(登録商標)、および/または任意の他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/もしくは、これらのおよび/または他のネットワークの任意の組合せを含み得る。
サーバ112は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを例として含む)、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せで構成されてもよい。さまざまな実施形態では、サーバ112は、前述の開示で説明された1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ112は、本開示の一実施形態に従った上述の処理を行なうためのサーバに対応していてもよい。
サーバ112は、上述のもののうちのいずれかを含むオペレーティングシステム、および商業的に入手可能な任意のサーバオペレーティングシステムを実行してもよい。サーバ112はまた、さまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行してもよく、HTTP(hypertext transport protocol:ハイパーテキスト伝送プロトコル)サーバ、FTP(file transfer protocol:ファイル転送プロトコル)サーバ、CGI(common gateway interface:コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース(Sybase)、IBM(International Business Machines:インターナショナル・ビジネス・マシーンズ)などから商業的に入手可能なものを何ら限定されることなく含む。
いくつかの実現化例では、サーバ112は、クライアントコンピューティング装置102、104、106、および108のユーザから受信されたデータフィードおよび/またはイベント更新を分析して統合するための1つ以上のアプリケーションを含んでいてもよい。一例として、データフィードおよび/またはイベント更新は、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントを含み得る、1つ以上の第三者情報源および連続データストリームから受信されたツイッター(登録商標)フィード、フェースブック(登録商標)更新またはリアルタイム更新を含んでいてもよいが、それらに限定されない。サーバ112はまた、クライアントコンピューティング装置102、104、106、および108の1つ以上の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含んでいてもよい。
分散型システム100はまた、1つ以上のデータベース114および116を含んでいてもよい。データベース114および116は、さまざまな位置に存在していてもよい。例として、データベース114および116のうちの1つ以上は、サーバ112に対してローカルな(および/または、サーバ112内にある)非一時的記憶媒体上に存在していてもよい。それに代えて、データベース114および116は、サーバ112からリモートであってもよく、ネットワークベースの接続または専用接続を介してサーバ112と通信してもよい。一組の実施形態では、データベース114および116は、ストレージエリアネットワーク(storage-area network:SAN)に存在していてもよい。同様に、サーバ112に帰する機能を行なうための任意の必要なファイルが適宜、サーバ112上にローカルに格納されてもよく、および/またはリモートに格納されてもよい。一組の実施形態では、データベース114および116は、SQLフォーマットのコマンドに応答してデータを格納し、更新し、検索するように適合された、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでいてもよい。
図2は、本発明の実施形態によって提供されるサービスをクラウドサービスとして提供し得るシステム環境のコンポーネントを示すブロック図である。図示された実施形態では、システム環境200は、クラウドサービスを提供するクラウドインフラストラクチャシステム202とやりとりするためにユーザによって使用され得る1つ以上のクライアントコンピューティング装置204、206、および208を含む。クライアントコンピューティング装置は、クラウドインフラストラクチャシステム202によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム202とやりとりするためにクライアントコンピューティング装置のユーザによって使用され得る、ウェブブラウザ、専用クライアントアプリケーション(たとえば、オラクル・フォームズ)、または何らかの他のアプリケーションといったクライアントアプリケーションを動作させるように構成されてもよい。
図に示すクラウドインフラストラクチャシステム202は、図示されたもの以外のコンポーネントを有していてもよい、ということが理解されるべきである。また、図に示す実施形態は、この発明の一実施形態を取入れ得るクラウドインフラストラクチャシステムの単なる一例である。いくつかの他の実施形態では、クラウドインフラストラクチャシステム202は、図に示すものよりも多い、または少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組合せてもよく、もしくは、異なる構成または配置のコンポーネントを有していてもよい。
クライアントコンピューティング装置204、206、および208は、102、104、106、および108について上述したものと同様の装置であってもよい。
例示的なシステム環境200は3つのクライアントコンピューティング装置を有して図示されているが、任意の数のクライアントコンピューティング装置がサポートされてもよい。センサを有する装置などの他の装置が、クラウドインフラストラクチャシステム202とやりとりしてもよい。
ネットワーク210は、クライアント204、206、および208とクラウドインフラストラクチャシステム202との間のデータの通信および交換を容易にしてもよい。各ネットワークは、ネットワーク110について上述したものを含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。
クラウドインフラストラクチャシステム202は、サーバ112について上述したものを含み得る1つ以上のコンピュータおよび/またはサーバを含んでいてもよい。
ある実施形態では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスといった、クラウドインフラストラクチャシステムのユーザにとってオンデマンドで利用可能にされる多数のサービスを含んでいてもよい。クラウドインフラストラクチャシステムによって提供されるサービスは、そのユーザの必要性を満たすために動的にスケール変更され得る。クラウドインフラストラクチャシステムによって提供されるサービスの特定のインスタンス化は、ここに「サービスインスタンス」と呼ばれる。一般に、クラウドサービスプロバイダのシステムから、インターネットなどの通信ネットワークを介してユーザに利用可能とされる任意のサービスは、「クラウドサービス」と呼ばれる。典型的には、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを作り上げるサーバおよびシステムは、顧客自身の業務用サーバおよびシステムとは異なっている。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドでアプリケーションをオーダーし、使用してもよい。
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、クラウドベンダーによってユーザに提供されるかまたは当該技術分野において他の態様で公知であるようなストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、もしくは他のサービスへの、保護されたコンピュータネットワークアクセスを含んでいてもよい。たとえば、サービスは、インターネットを通した、クラウド上のリモートストレージへの、パスワードで保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク化された開発者による私的使用のための、ウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含み得る。
ある実施形態では、クラウドインフラストラクチャシステム202は、セルフサービスで、サブスクリプションベースで、弾力的にスケーラブルで、信頼でき、高可用性で、かつ安全な態様で顧客に配信される、アプリケーション、ミドルウェアおよびデータベースサービス提供物一式を含んでいてもよい。そのようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクル・パブリック・クラウド(Oracle Public Cloud)である。
さまざまな実施形態では、クラウドインフラストラクチャシステム202は、クラウドインフラストラクチャシステム202によって提供されるサービスに顧客のサブスクリプションを自動的にプロビジョニングし、管理し、追跡するように適合されてもよい。クラウドインフラストラクチャシステム202は、異なるデプロイメントモデルを介してクラウドサービスを提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム202がクラウドサービスを販売する組織によって所有され(たとえば、オラクルによって所有され)、サービスが一般大衆または異なる産業企業にとって利用可能とされる、パブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム202が単一の組織のためにのみ動作され、その組織内の1つ以上のエンティティのためのサービスを提供し得る、プライベートクラウドモデルの下で提供されてもよい。クラウドサービスはまた、クラウドインフラストラクチャシステム202、およびクラウドインフラストラクチャシステム202によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有される、コミュニティクラウドモデルの下で提供されてもよい。クラウドサービスはまた、2つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
いくつかの実施形態では、クラウドインフラストラクチャシステム202によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(SaaS)カテゴリー、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)カテゴリー、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)カテゴリー、または、ハイブリッドサービスを含むサービスの他のカテゴリーの下で提供される、1つ以上のサービスを含んでいてもよい。顧客は、クラウドインフラストラクチャシステム202によって提供される1つ以上のサービスを、サブスクリプションオーダーを介してオーダーしてもよい。クラウドインフラストラクチャシステム202は次に、顧客のサブスクリプションオーダーにおけるサービスを提供するために処理を行なう。
いくつかの実施形態では、クラウドインフラストラクチャシステム202によって提供されるサービスは、アプリケーションサービス、プラットフォームサービス、およびインフラストラクチャサービスを、何ら限定されることなく含んでいてもよい。いくつかの例では、アプリケーションサービスは、SaaSプラットフォームを介して、クラウドインフラストラクチャシステムによって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。たとえば、SaaSプラットフォームは、統合された開発およびデプロイメントプラットフォーム上にオンデマンドアプリケーション一式を構築し、配信するための能力を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための基本ソフトウェアおよびインフラストラクチャを管理し、制御してもよい。SaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用できる。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得できる。さまざまな異なるSaaSサービスが提供されてもよい。例は、大型組織のための販売実績管理、企業統合、およびビジネス柔軟性についてのソリューションを提供するサービスを、何ら限定されることなく含む。
いくつかの実施形態では、プラットフォームサービスは、PaaSプラットフォームを介して、クラウドインフラストラクチャシステムによって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスの例は、(オラクルなどの)組織が共有の共通アーキテクチャ上で既存のアプリケーションを統合できるようにするサービスと、プラットフォームによって提供される共有のサービスを活用する新しいアプリケーションを構築するための能力とを、何ら限定されることなく含んでいてもよい。PaaSプラットフォームは、PaaSサービスを提供するための基本ソフトウェアおよびインフラストラクチャを管理し、制御してもよい。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステムによって提供されるPaaSサービスを取得できる。プラットフォームサービスの例は、オラクルJava(登録商標)クラウドサービス(Java Cloud Service:JCS)、オラクル・データベース・クラウド・サービス(Database Cloud Service:DBCS)などを、何ら限定されることなく含む。
PaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを採用するとともに、デプロイメントされたサービスを制御することができる。いくつかの実施形態では、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえば、オラクル・フュージョン・ミドルウェア(Oracle Fusion Middleware)サービス)、およびJavaクラウドサービスを含んでいてもよい。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、データベースクラウドの形をしたデータベース・アズ・ア・サービスを顧客に提供することを可能にする共有のサービスデプロイメントモデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発してデプロイメントするためのプラットフォームを提供してもよく、Javaクラウドサービスは、顧客がクラウドインフラストラクチャシステムにおいてJavaアプリケーションをデプロイメントするためのプラットフォームを提供してもよい。
クラウドインフラストラクチャシステムにおいて、さまざまな異なるインフラストラクチャサービスが、IaaSプラットフォームによって提供されてもよい。これらのインフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のための、ストレージ、ネットワーク、ならびに他の基礎的コンピューティングリソースなどの基本コンピューティングリソースの管理および制御を容易にする。
ある実施形態では、クラウドインフラストラクチャシステム202はまた、クラウドインフラストラクチャシステムの顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース230を含んでいてもよい。一実施形態では、インフラストラクチャリソース230は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージ、およびネットワーキングリソースなどのハードウェアの予め統合され最適化された組合せを含んでいてもよい。
いくつかの実施形態では、クラウドインフラストラクチャシステム202におけるリソースは、複数のユーザによって共有され、要望ごとに動的に再割当てされてもよい。加えて、リソースは、異なる時間帯におけるユーザに割当てられてもよい。たとえば、クラウドインフラストラクチャシステム230は、第1の時間帯における第1の一組のユーザが、特定数の時間、クラウドインフラストラクチャシステムのリソースを利用することを可能にし、次に、異なる時間帯に位置する別の一組のユーザへの同じリソースの再割当てを可能にして、それによりリソースの利用を最大化してもよい。
ある実施形態では、クラウドインフラストラクチャシステム202の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム202によって提供されるサービスによって共有される、多くの内部共有サービス232が提供されてもよい。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
ある実施形態では、クラウドインフラストラクチャシステム202は、クラウドインフラストラクチャシステムにおけるクラウドサービス(たとえば、SaaS、PaaS、およびIaaSサービス)の包括的管理を提供してもよい。一実施形態では、クラウド管理機能性は、クラウドインフラストラクチャシステム202によって受信された顧客のサブスクリプションをプロビジョニングし、管理し、追跡するための能力などを含んでいてもよい。
一実施形態では、図に示すように、クラウド管理機能性は、オーダー管理モジュール220、オーダーオーケストレーションモジュール222、オーダープロビジョニングモジュール224、オーダー管理および監視モジュール226、ならびにアイデンティティ管理モジュール228などの1つ以上のモジュールによって提供されてもよい。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せであり得る、1つ以上のコンピュータおよび/またはサーバを含んでいてもよく、もしくはそれらを使用して提供されてもよい。
例示的な動作234では、クライアント装置204、206または208などのクライアント装置を使用する顧客は、クラウドインフラストラクチャシステム202によって提供される1つ以上のサービスを要求し、クラウドインフラストラクチャシステム202によって提供される1つ以上のサービスについてサブスクリプションオーダーを出すことにより、クラウドインフラストラクチャシステム202とやりとりしてもよい。ある実施形態では、顧客は、クラウドユーザインターフェイス(User Interface:UI)であるクラウドUI212、クラウドUI214および/またはクラウドUI216にアクセスし、これらのUIを介してサブスクリプションオーダーを出してもよい。顧客がオーダーを出したことに応答してクラウドインフラストラクチャシステム202が受信したオーダー情報は、顧客と、顧客が申し込むつもりである、クラウドインフラストラクチャシステム202によって提供される1つ以上のサービスとを識別する情報を含んでいてもよい。
顧客によってオーダーが出された後で、オーダー情報がクラウドUI212、214および/または216を介して受信される。
動作236で、オーダーがオーダーデータベース218に格納される。オーダーデータベース218は、クラウドインフラストラクチャシステム202によって動作され、他のシステム要素とともに動作される、いくつかのデータベースのうちの1つであり得る。
動作238で、オーダー情報はオーダー管理モジュール220に発送される。場合によっては、オーダー管理モジュール220は、オーダーを検証し、検証後にオーダーを予約するといった、オーダーに関連する請求および課金機能を行なうように構成されてもよい。
動作240で、オーダーに関する情報がオーダーオーケストレーションモジュール222に通信される。オーダーオーケストレーションモジュール222は、顧客によって出されたオーダーのためのサービスおよびリソースのプロビジョニングをオーケストレーションするために、オーダー情報を利用してもよい。場合によっては、オーダーオーケストレーションモジュール222は、オーダープロビジョニングモジュール224のサービスを使用して、申し込まれたサービスをサポートするようにリソースのプロビジョニングをオーケストレーションしてもよい。
ある実施形態では、オーダーオーケストレーションモジュール222は、各オーダーに関連付けられたビジネスプロセスの管理を可能にし、オーダーがプロビジョニングに進むべきか否かを判断するためにビジネス論理を適用する。動作242で、新規サブスクリプションのオーダーを受信すると、オーダーオーケストレーションモジュール222は、リソースを割当ててサブスクリプションオーダーを遂行するために必要とされるリソースを構成するようにという要求を、オーダープロビジョニングモジュール224に送信する。オーダープロビジョニングモジュール224は、顧客によってオーダーされたサービスのためのリソースの割当てを可能にする。オーダープロビジョニングモジュール224は、クラウドインフラストラクチャシステム202によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間の抽象化のレベルを提供する。オーダーオーケストレーションモジュール222はこのため、サービスおよびリソースが実際にオンザフライでプロビジョニングされるか否か、または予めプロビジョニングされて要求時にのみ割当てられるか否かといった実装詳細から切り離されてもよい。
動作244で、サービスおよびリソースが一旦プロビジョニングされると、提供されるサービスの通知が、クラウドインフラストラクチャシステム202のオーダープロビジョニングモジュール224によって、クライアント装置204、206および/または208上の顧客に送信されてもよい。
動作246で、顧客のサブスクリプションオーダーが、オーダー管理および監視モジュール226によって管理され、追跡されてもよい。場合によっては、オーダー管理および監視モジュール226は、使用されるストレージの量、転送されるデータの量、ユーザの数、システムアップタイムおよびシステムダウンタイムの量といった、サブスクリプションオーダーにおけるサービスについての使用統計を収集するように構成されてもよい。
ある実施形態では、クラウドインフラストラクチャシステム202は、アイデンティティ管理モジュール228を含んでいてもよい。アイデンティティ管理モジュール228は、クラウドインフラストラクチャシステム202においてアクセス管理および認証サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの実施形態では、アイデンティティ管理モジュール228は、クラウドインフラストラクチャシステム202によって提供されるサービスを利用したい顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報と、さまざまなシステムリソース(たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してそれらの顧客がどのアクションを行なうことが認可されているかを記述する情報とを含み得る。アイデンティティ管理モジュール228はまた、各顧客についての記述的情報と、その記述的情報が誰によってどのようにアクセスされ、修正され得るかについての記述的情報との管理を含んでいてもよい。
図3は、本発明の実施形態が実現され得る例示的なコンピュータシステムを示すブロック図である。システム300は、上述のコンピュータシステムのうちのいずれかを実現するために使用されてもよい。図に示すように、コンピュータシステム300は、バスサブシステム302を介して多くの周辺サブシステムと通信する処理部304を含む。これらの周辺サブシステムは、処理加速部306と、I/Oサブシステム308と、記憶サブシステム318と、通信サブシステム324とを含んでいてもよい。記憶サブシステム318は、有形のコンピュータ読取可能記憶媒体322と、システムメモリ310とを含む。
バスサブシステム302は、コンピュータシステム300のさまざまなコンポーネントおよびサブシステムを意図されるように互いに通信させるためのメカニズムを提供する。バスサブシステム302は単一のバスとして概略的に図示されているが、バスサブシステムの代替的な実施形態は複数のバスを利用してもよい。バスサブシステム302は、さまざまなバスアーキテクチャのうちのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、IEEE P1386.1規格で製造されるメザニンバスとして実現可能な、産業標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、強化ISA(EISA)バス、ビデオエレクトロニクス標準組織(Video Electronics Standards Association:VESA)ローカルバス、および周辺コンポーネント相互接続(Peripheral Component Interconnect:PCI)バスを含んでいてもよい。
1つ以上の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現され得る処理部304は、コンピュータシステム300の動作を制御する。処理部304には、1つ以上のプロセッサが含まれていてもよい。これらのプロセッサは、シングルコアまたはマルチコアプロセッサを含んでいてもよい。ある実施形態では、処理部304は、各処理部にシングルまたはマルチコアプロセッサが含まれた、1つ以上の独立した処理部332および/または334として実現されてもよい。他の実施形態では、処理部304はまた、2つのデュアルコアプロセッサをシングルチップへと集積することによって形成されるクアッドコア処理部として実現されてもよい。
さまざまな実施形態では、処理部304は、プログラムコードに応答してさまざまなプログラムを実行でき、同時に実行される複数のプログラムまたはプロセスを維持できる。任意の所与の時間において、実行されるべきプログラムコードのうちのいくつかまたはすべては、プロセッサ304に、および/または記憶サブシステム318にあり得る。好適なプログラミングを通して、プロセッサ304は、上述のさまざまな機能性を提供できる。コンピュータシステム300は加えて処理加速部306を含んでいてもよく、それは、デジタル信号プロセッサ(digital signal processor:DSP)、専用プロセッサなどを含み得る。
I/Oサブシステム308は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含んでいてもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、ディスプレイに組込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システム付き音声入力装置、マイクロホン、および他のタイプの入力装置を含んでいてもよい。ユーザインターフェイス入力装置は、たとえば、ジェスチャーおよび口頭コマンドを使用したナチュラルユーザインターフェイスを通して、マイクロソフトXbox(登録商標)360ゲームコントローラなどの入力装置をユーザが制御し、それとやりとりすることを可能にする、マイクロソフトKinect(登録商標)運動センサなどの運動感知および/またはジェスチャー認識装置を含んでいてもよい。ユーザインターフェイス入力装置はまた、ユーザから目の活動(たとえば、写真撮影中および/またはメニュー選択中の「まばたき」)を検出し、アイジェスチャーを入力装置(たとえば、グーグル・グラス(登録商標))への入力として変換する、グーグル・グラス(登録商標)まばたき検出器などのアイジェスチャー認識装置を含んでいてもよい。加えて、ユーザインターフェイス入力装置は、ユーザが音声コマンドを通して音声認識システム(たとえば、Siri(登録商標)ナビゲータ)とやりとりできるようにする音声認識感知装置を含んでいてもよい。
ユーザインターフェイス入力装置はまた、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルビデオカメラ、携帯型メディアプレイヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー測距器、および視線追跡装置などの音声/視覚装置を、何ら限定されることなく含んでいてもよい。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影装置、磁気共鳴撮像装置、ポジトロン放出断層撮影装置、医療用超音波検査装置などの医療用撮像入力装置を含んでいてもよい。ユーザインターフェイス入力装置はまた、たとえば、MIDIキーボード、デジタル楽器などの音声入力装置を含んでいてもよい。
ユーザインターフェイス出力装置は、表示サブシステム、表示灯、または、音声出力装置などの非視覚的ディスプレイを含んでいてもよい。表示サブシステムは、陰極線管(cathode ray tube:CRT)、液晶ディスプレイ(liquid crystal display:LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム300からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置およびメカニズムを含むよう意図されている。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデムといった、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示装置を、何ら限定されることなく含んでいてもよい。
コンピュータシステム300は、現在システムメモリ310内に位置するとして図示されたソフトウェア要素を含む記憶サブシステム318を含んでいてもよい。システムメモリ310は、処理部304上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されたデータとを格納してもよい。
コンピュータシステム300の構成およびタイプに依存して、システムメモリ310は揮発性(ランダムアクセスメモリ(random access memory:RAM)など)であってもよく、および/または不揮発性(読出専用メモリ(read-only memory:ROM)、フラッシュメモリなど)であってもよい。RAMは典型的には、処理部304に直ちにアクセス可能であり、および/または処理部304によって現在動作および実行中のデータおよび/またはプログラムモジュールを含む。いくつかの実現化例では、システムメモリ310は、スタティックランダムアクセスメモリ(static random access memory:SRAM)またはダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)などの複数の異なるタイプのメモリを含んでいてもよい。いくつかの実現化例では、起動中などにコンピュータシステム300内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入力/出力システム(basic input/output system:BIOS)が、典型的にはROMに格納されていてもよい。限定のためではなく例として、システムメモリ310はまた、クライアントアプリケーション、ウェブブラウザ、中央層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)などを含み得るアプリケーションプログラム312と、プログラムデータ314と、オペレーティングシステム316とを示す。例として、オペレーティングシステム316は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはLinuxオペレーティングシステムのさまざまなバージョン、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、グーグル・クローム(登録商標)OSなどを何ら限定されることなく含む)、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)10OS、パーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含んでいてもよい。
記憶サブシステム318はまた、いくつかの実施形態の機能性を提供する基本プログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されると上述の機能性を提供するソフトウェア(プログラム、コードモジュール、命令)が、記憶サブシステム318に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理部304によって実行されてもよい。記憶サブシステム318はまた、本発明に従って使用されるデータを格納するためのリポジトリを提供してもよい。
記憶サブシステム300はまた、コンピュータ読取可能記憶媒体322にさらに接続され得るコンピュータ読取可能記憶媒体リーダ320を含んでいてもよい。システムメモリ310とともに、およびオプションでシステムメモリ310と組合わされて、コンピュータ読取可能記憶媒体322は、リモート、ローカル、固定および/またはリムーバブルの記憶装置に加えて、コンピュータ読取可能情報を一時的におよび/またはより永続的に含み、格納し、送信し、検索するための記憶媒体を包括的に表わしてもよい。
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体322はまた、情報の格納および/または送信のためのあらゆる方法または技術で実現される揮発性および不揮発性でリムーバブルおよび非リムーバブルの媒体を含むがそれらに限定されない記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは使用されるあらゆる適切な媒体を含み得る。これは、RAM、ROM、電子的消去可能プログラマブルROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(digital versatile disk:DVD)または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、もしくは他の有形のコンピュータ読取可能媒体といった、有形のコンピュータ読取可能記憶媒体を含み得る。これは、所望の情報を送信するために使用可能であり、コンピューティングシステム300によってアクセスされ得るデータ信号、データ送信、または任意の他の媒体といった、非有形のコンピュータ読取可能媒体も含み得る。
例として、コンピュータ読取可能記憶媒体322は、非リムーバブルで不揮発性の磁気媒体から読出し、またはそれに書込むハードディスクドライブ、リムーバブルで不揮発性の磁気ディスクから読出し、またはそれに書込む磁気ディスクドライブ、ならびに、CD ROM、DVD、およびBlu−Ray(登録商標)ディスク、または他の光学媒体といった、リムーバブルで不揮発性の光ディスクから読出し、またはそれに書込む光ディスクドライブを含んでいてもよい。コンピュータ読取可能記憶媒体322は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digitalSD)カード、DVDディスク、デジタルビデオテープなどを含んでいてもよいが、それらに限定されない。コンピュータ読取可能記憶媒体322はまた、フラッシュメモリベースのソリッドステートドライブ(solid-state drive:SSD)、企業フラッシュドライブ、ソリッドステートROMといった、不揮発性メモリに基づいたSSD、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSDといった、揮発性メモリに基づいたSSD、および、DRAMベースのSSDとフラッシュメモリベースのSSDとの組合せを使用するハイブリッドSSDを含んでいてもよい。ディスクドライブおよびそれらの関連付けられたコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージをコンピュータシステム300に提供してもよい。
通信サブシステム324は、他のコンピュータシステムおよびネットワークへのインターフェイスを提供する。通信サブシステム324は、コンピュータシステム300とは別のシステムからデータを受信し、別のシステムにデータを送信するためのインターフェイスとして機能する。たとえば、通信サブシステム324は、コンピュータシステム300がインターネットを介して1つ以上の装置に接続できるようにしてもよい。いくつかの実施形態では、通信サブシステム324は、(たとえば、3G、4G、またはEDGE(enhanced data rates for global evolution:エンハンスト・データレート・フォー・グローバル・エボリューション)、WiFi(IEEE802.11ファミリー規格)、または他の移動通信技術、またはそれらの任意の組合せといった携帯電話技術、高度なデータネットワーク技術を使用した)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)トランシーバコンポーネント、全地球測位システム(global positioning system:GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム324は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(たとえば、イーサネット)を提供できる。
いくつかの実施形態では、通信サブシステム324はまた、コンピュータシステム300を使用し得る1人以上のユーザのために、構造化および/または非構造化データフィード326、イベントストリーム328、イベント更新330などの形をした入力通信を受信してもよい。
例として、通信サブシステム324は、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、リッチ・サイト・サマリー(Rich Site Summary:RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイム更新といった、ソーシャルネットワークおよび/または他の通信サービスのユーザからのデータフィード326をリアルタイムで受信するように構成されてもよい。
加えて、通信サブシステム324はまた、リアルタイムイベントのイベントストリーム328および/またはイベント更新330を含み得る、明確な終わりがなく本質的に連続的または無限であり得る連続データストリームの形をしたデータを受信するように構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などを含んでいてもよい。
通信サブシステム324はまた、構造化および/または非構造化データフィード326、イベントストリーム328、イベント更新330などを、コンピュータシステム300に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成されてもよい。
コンピュータシステム300は、ハンドヘルド携帯装置(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(たとえば、グーグル・グラス(登録商標)頭部装着型ディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含む、さまざまなタイプのうちの1つであり得る。
コンピュータおよびネットワークの絶えず変化する性質により、図に示すコンピュータシステム300の説明は、単に特定の一例として意図される。図に示すシステムよりも多い、または少ないコンポーネントを有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組合せで実現されてもよい。また、ネットワーク入力/出力装置などの他のコンピューティング装置への接続が採用されてもよい。ここに提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実現するための他のやり方および/または方法を理解するであろう。
図4は、本発明の一実施形態に従った文脈検索システムの要素を示すブロック図である。システム400は、予約フレーズのリストの同義語を決定し、および/または同義語および予約フレーズを使用して、ユーザクエリを処理するために使用されてもよい。システムは、ウェブサイト、文書、および/または他のコンテンツを含み得るコンテンツリポジトリ406を含んでいてもよい。コンテンツリポジトリは、たとえば、製品製造業者のウェブサイトであってもよい。システムは、予約フレーズ404の1つ以上のリストを含んでいてもよい。システムは、予約フレーズ404に関連付けられた同義語416の1つ以上のリストを含んでいてもよい。予約フレーズ404および同義語416のリストは生成されてもよく、または特にコンテンツ406に関連していてもよい。場合によっては、予約フレーズ404のリストは、外部ソースから、またはユーザから、システムによって受信されてもよい。場合によっては、コンテンツ分析エンジン412が、予約フレーズを決定するためにコンテンツ406をスキャンまたは処理するように構成されてもよい。システム400は、同義語エンジン408をさらに含んでいてもよい。同義語エンジンは、予約フレーズの各々について同義語を自動的に生成するように構成されてもよい。予約フレーズ404の同義語416は、予約フレーズの独特の部分文字列を受け取ることにより、同義語エンジン408によって生成されてもよい。いくつかの実施形態では、同義語エンジン408は、コンテンツ分析エンジン412を利用することによってコンテンツにおける関連ワードを分析し、外部コンテンツを分析し、および/またはユーザクエリを監視することにより、同義語を生成してもよい。
ユーザインターフェイス414は、クエリを入力するためにユーザによって使用されてもよい。クエリは、コンテンツ406に関連する質問または検索であってもよい。これらの検索のゴールは、クエリのトピックを決定すること、および、クエリに存在する予約フレーズまたは同義語を決定することであるべきである。一実施形態では、ユーザインターフェイス414は、ウェブブラウザに表示されたウェブページ、もしくは、ユーザのコンピュータまたはモバイルコンピューティング装置上に表示されたアプリケーションであってもよい。ユーザインターフェイスは、検索またはクエリを入力するためのテキストボックスまたは他の入力エリアを含んでいてもよい。ユーザインターフェイス414からのクエリは、クエリ処理エンジン402に送信されてもよい。ユーザインターフェイス414がクエリ処理エンジン402から遠隔にある場合、ユーザインターフェイス414からのクエリは、ネットワーク410を介して送信されてもよい。クエリ処理エンジン402は、クエリ、クエリの文脈を分析し、クエリのワードのうちのいずれかが予約フレーズ404および同義語416とマッチングするかどうかを決定してもよい。クエリ処理エンジン402は、同義語416とマッチングするクエリワードを、関連付けられた予約フレーズにマッピングしてもよい。クエリ処理エンジンは、関連する予約フレーズを、コンテンツ406の特定のエリアにマッピングしてもよい。関連するコンテンツまたは関連するコンテンツへのリンクが、ユーザインターフェイス414に返され、送信されてもよい。
いくつかの実施形態では、クエリ処理エンジン402は、ユーザクエリを監視および記録するとともに、ユーザクエリがコンテンツ406のエリアに順調にマッピングされたかどうかを監視および記録してもよい。クエリ処理エンジン402は、ユーザクエリにおけるマッチングしなかったワードの各々が何回入力されたかを記録してもよい。クエリの履歴およびそれらのコンテンツ406への順調なマッピングが、システムが使用する同義語416および予約フレーズ404を改良するために使用されてもよい。
図5は、本発明の実施形態に従った同義語エンジンの要素の追加の詳細を示すブロック図である。同義語エンジン408は、予約フレーズのリストの同義語を決定するために使用されてもよい。同義語エンジン408は、予約フレーズ404の同義語のリストを自動的に生成するために、予約フレーズ404およびコンテンツを処理するためのさまざまなモジュールを含んでいてもよい。同義語エンジンは、部分文字列分析モジュール502と、言語分析モジュール504と、ワードフィルタ506と、コンテンツマッチングモジュール508と、重複検出モジュール510と、さまざまな辞書512とを含んでいてもよい。実施形態では、さまざまなモジュールの機能性は組合せられてもよく、または異なる数のモジュールに分割されてもよく、同義語エンジン408のいくつかの実施形態は、ここに説明された機能性の部分集合を含む。
予約フレーズ404の1つ以上のリストが、同義語エンジン408によって受信されてもよい。予約フレーズ404のリストは、グルーピングまたは言語指示子を含んでいてもよい。グルーピングは、予約フレーズが名詞、場所、動詞などであるかどうか、といった指示子を含んでいてもよい。指示子が予約フレーズのために利用できない場合、言語分析モジュール504が、予約フレーズの言語特性を決定するために使用されてもよい。場合によっては、たとえば、予約フレーズが名詞または動詞であるかどうか、といった言語特性は、予約ワードから直接判断されてもよい。場合によっては、予約フレーズは単独では曖昧すぎるかもしれない。いくつかの実施形態では、言語分析モジュール504は、コンテンツ分析エンジン412から、予約フレーズを含むコンテンツを要求してもよい。コンテンツ分析エンジン412は、予約フレーズを含む、コンテンツの完全な文、段落、または他の部分を返してもよい。コンテンツにおける予約フレーズの使い方に基づいて、言語分析モジュール504は、予約フレーズの言語特性を判断してもよい。言語分析モジュール504は、予約フレーズが名詞、動詞などとして一貫して使用されているかどうかを判断してもよい。予約フレーズのグルーピングおよび言語特性は、各予約フレーズ、および各予約ワードについて判断された同義語に関連付けられてもよい。
部分文字列分析モジュール502は、各予約ワードの可能な部分文字列のリストを生成するために使用されてもよい。部分文字列分析モジュール502は、予約フレーズを、同義語として使用するためのさまざまな部分文字列へと分解してもよい。場合によっては、部分文字列分析モジュール502は、部分文字列同義語を生成するための一組のルールを含んでいてもよい。たとえば、部分文字列モジュールは、少なくとも3文字の長さの部分文字列を生成することに限定されてもよい。追加のルールは、部分文字列が予約ワードと同じ文字で始まることを含んでいてもよい。部分文字列同義語を生成するためのルールの別の例では、モジュール502は、数字を除去し英字のみを残すことによって部分文字列を生成するように構成されてもよい。
類語辞典、辞書などを含み得る辞書512は、予約フレーズの追加の同義語を判断するために使用されてもよい。辞書512は、関連ワードのリストおよび/または言語特性を判断するために使用されてもよい。
いくつかの実施形態では、コンテンツマッチングモジュール508は、予約フレーズの同義語をコンテンツから直接判断するために使用されてもよい。コンテンツマッチングモジュール508は、予約フレーズと交換可能に使用されるワードを決定するために、コンテンツを分析してもよい。
同義語エンジン408のモジュールによる生成された同義語のリストは、重複検出モジュール510によって処理されてもよい。重複検出モジュール510は、2つ以上の予約ワードについて同義語として決定されたかもしれないワードを決定するように構成されてもよい。重複検出モジュール510は、重複同義語を決定し、重複を除去してもよい。場合によっては、重複検出モジュール510は、重複同義語を決定し、1つの重複以外のすべてを削除してもよい。重複入力の除去は、各重複同義語に関連付けられた予約フレーズの重要性またはランキングに基づいていてもよい。最高ランクの予約フレーズに関連付けられた重複同義語は同義語のリストに残され、一方、他の重複同義語はすべて除去されてもよい。
実施形態では、ワードフィルタモジュール506は、同義語のリストをさらに処理するために使用されてもよい。フィルタモジュール506は、同義語のリストを禁止ワードのリストと比較し、および/または、ルールを使用して同義語を分析してもよい。禁止ワードのうちのいずれかとマッチングする同義語は、フィルタモジュール506によってフィルタリングまたは除去されてもよい。1つ以上のルールにマッチングする同義語も、フィルタリングまたは除去されてもよい。ルールは、たとえば、同義語は少なくとも3文字の長さであること、または、同義語は予約ワードと同じ文字で始まることを含んでいてもよい。
図6は、本発明の一実施形態に従った、予約フレーズの同義語を判断するためのプロセスを示すフローチャートである。方法600は、前述のシステムを使用して行なわれてもよい。たとえば、図5の同義語エンジン408または図4のシステム400が使用されてもよい。そのようなシステムのコンポーネントは、ハードウェア、ソフトウェア、および/またはファームウェアを使用して実現されてもよい。
ステップ602で、システムは、予約フレーズの1つ以上のリストを受信してもよい。予約フレーズは、ユーザ、またはシステムの異なる部分から受信されてもよい。予約フレーズのリストは、ウェブサイトなどのコンテンツで見つけることができる名称または製品またはワードを含んでいてもよい。予約フレーズは、コンテンツの特定の部分に関連付けられ、またはリンクされてもよい。ステップ604で、予約フレーズの文脈が決定されてもよい。文脈は、予約ワードから判断されてもよい。予約フレーズの言語特性を判断するために、辞書および他の参考資料が使用されてもよい。場合によっては、予約フレーズが使用されるコンテンツが、予約フレーズの文脈を決定するために検索されてもよい。予約フレーズが使用される文が、それらの言語特性、関連するトピックなどを含み得るそれらの文脈を判断するために分析されてもよい。
ステップ606で、システムは、予約フレーズの判断された文脈を少なくとも部分的に使用して、予約フレーズの同義語を判断してもよい。同義語は、参考資料、コンテンツ分析、部分文字列分析などを介して判断されてもよい。ステップ608で、望ましくない同義語がフィルタリングされてもよい。望ましくない同義語は、2つ以上の予約ワード、競合企業製品名などに関連付けられる重複同義語を含んでいてもよい。ステップ610で、残された同義語は、関連付けられた予約フレーズの文脈を継承してもよい。
図7は、本発明の一実施形態に従った、予約フレーズおよびそれらの同義語を使用したユーザクエリの処理の追加の詳細を示すフローチャートである。方法700は、前述のシステムを使用して行なわれてもよい。たとえば、図5の同義語エンジン408または図4のシステム400が使用されてもよい。そのようなシステムのコンポーネントは、ハードウェア、ソフトウェア、および/またはファームウェアを使用して実現されてもよい。
ステップ702で、クエリ文字列が受信されてもよい。クエリは、ユーザインターフェイスを介してユーザから受信され、ネットワークを介してクエリシステムに送信されてもよい。場合によっては、クエリは、システムの異なる部分または異なるシステムから受信されてもよい。ステップ704で、クエリ文字列は、任意の予約フレーズまたは予約フレーズの同義語がクエリ文字列の一部であるかどうかを決定するために、分析され処理されてもよい。ステップ706で、決定された同義語および/または予約フレーズの位置および文脈が決定されてもよい。クエリ文字列における位置、クエリ文字列の構造などに少なくとも部分的に基づいて、クエリ文字列におけるマッチングワードの言語特性といった特性が、システムによって判断されてもよい。クエリ文字列におけるワードの文脈を、予約フレーズおよび同義語の文脈と比較して、それらがマッチングするかどうかを判断してもよい。文脈がマッチングする場合、クエリ文字列の同義語および/または予約フレーズは、マッチングと考えられてもよい。クエリ文字列がマッチング同義語を含む場合、ステップ708で、同義語は、関連付けられた予約フレーズにマッピングされてもよい。ステップ710で、マッピングされた予約フレーズは、クエリ文字列を処理するために使用されてもよい。予約フレーズは、コンテンツの特定の部分またはコンテンツへのリンクに関連付けられてもよい。クエリ文字列において決定された予約フレーズに関連付けられたコンテンツまたはコンテンツへのリンクは、ユーザに返されてもよい。
図8は、本発明の一実施形態に従った、予約フレーズの同義語を判断するためのプロセスを示すフローチャートである。方法800は、前述のシステムを使用して行なわれてもよい。たとえば、図5の同義語エンジン408または図4のシステム400が使用されてもよい。そのようなシステムのコンポーネントは、ハードウェア、ソフトウェア、および/またはファームウェアを使用して実現されてもよい。
ステップ802で、予約フレーズが受信されてもよい。予約フレーズは、予約ワードの同義語を生成するための1つ以上のステップを使用して処理されてもよい。いくつかの実施形態では、ステップ804で、予約フレーズは、予約フレーズの部分文字列を潜在的な同義語として決定するために処理されてもよい。部分文字列生成は、文字の最小および/または最大数といったルールを含んでいてもよい。場合によっては、部分文字列は、元の予約ワードの一部ではない追加の語尾を含んでいてもよい。代替的な語尾、接尾辞、および/または接頭辞を有する部分文字列が、潜在的な同義語として使用されるように生成されてもよい。たとえば「ed」または「ing」といった接尾辞は、いくつかの予約フレーズにとって適切かもしれない。
いくつかの実施形態では、ステップ806で、予約フレーズは、予約ワードの一般的なまたは周知の同義語を決定するために、辞書、類語辞典などを使用して処理されてもよい。いくつかの実施形態では、ステップ808で、予約フレーズは、ターゲットコンテンツを使用して処理されてもよい。予約ワードと交換可能に使用されるワードを判断するために、コンテンツのテキストが分析されてもよい。交換可能なワードは、予約ワードの同義語の潜在的な候補としてマーキングされてもよい。ステップ810で、決定された同義語はさらに処理され、同義語ルールおよび/または禁止ワードのリストと比較されてもよい。同義語ルールは、同義語の文字の最小または最大数、非英字の数などを決定するルールを含んでいてもよい。ステップ812で、ルールにマッチングしない、または禁止ワードのリストの一部であるあらゆる同義語がフィルタリングされてもよい。
前述の説明では、例示のために、方法は特定の順序で説明された。代替的な実施形態では、方法は、説明されたものとは異なる順序で行なわれてもよい、ということが理解されるべきである。上述の方法はハードウェアコンポーネントによって行なわれてもよく、もしくは、汎用または専用プロセッサ、もしくは命令でプログラミングされた論理回路といったマシンに方法を行なわせるために使用され得るマシン実行可能命令のシーケンスで具現化されてもよい、ということも理解されるべきである。これらのマシン実行可能命令は、1つ以上のマシン読取可能媒体またはメモリ装置、たとえば、CD−ROMまたは他のタイプの光ディスク、フロッピー(登録商標)ディスケット、ROM、RAM、EPROM、EEPROM、磁気カードまたは光カード、フラッシュメモリ、もしくは、電子命令を格納するのに好適である他のタイプのマシン読取可能媒体またはメモリ装置上に格納されてもよい。それに代えて、方法は、ハードウェアとソフトウェアとの組合せによって行なわれてもよい。
この発明の例示的で現在好ましい実施形態がここに詳細に説明されてきたが、発明の概念は他のやり方でさまざまに具現化され採用されてもよいこと、および、添付された請求項は、先行技術によって限定される場合を除き、そのような変更を含むと解釈されるよう意図されていることが理解されるべきである。