(57)【要約】  プロデューサノード(122)は、階層型のツリー形状の処理アーキテクチャ(102)に含まれてもよく、該アーキテクチャは、プロデューサノード(126)及びプロデューサノード(122、126、129)の事前定義済みのサブセット内の少なくとも1つの他のプロデューサノード(126)への分散を含むアーキテクチャ(102)内でクエリ(106)を分散するように構成される少なくとも1つのディストリビュータノード(120)を含む。ディストリビュータノード(120)は、プロデューサノード(122)からの結果、及び少なくとも1つの他のプロデューサノード(126)からの結果を受信し、コンパイル済みの結果(108)をそこから出力するようにさらに構成されてもよい。プロデューサノード(102)は、プロデューサノード(120)に関連付けられているプロデューサインデックスの検索に適合するクエリ特徴(402-406)を使用してクエリ表現を取得し、それによりプロデューサノード(122)から結果を取得するためにディストリビュータノード(120)から受信されるクエリ(106)を処理するように構成されるクエリプリプロセッサ(134)と、クエリ表現を入力して、それに基づいて、プロデューサノード(122、126、129)の事前定義済みのサブセット内の少なくとも1つの他のプロデューサノード(126)によるクエリ(106)の処理により、少なくとも1つの他のプロデューサノードの結果がコンパイル済みの結果(108)内に含まれるようになるかどうかについての予測を出力するように構成されるクエリ分類器(142)とを含むことができる。【選択図】図1A
2012530289.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ可読媒体に格納された命令を含むコンピュータシステム(100)であって、
階層型のツリー形状の処理アーキテクチャ(102)のプロデューサノード(122)であって、該アーキテクチャは、該プロデューサノード(122)及びプロデューサノード(122、126、129)の事前定義済みのサブセット内の少なくとも1つの他のプロデューサノード(126、129)への分散を含む該アーキテクチャ内でクエリ(106)を分散するように構成される少なくとも1つのディストリビュータノード(120)を含み、該ディストリビュータノード(120)は、該プロデューサノード(122)からの結果及び該少なくとも1つの他のプロデューサノード(126、129)からの結果を受信して、コンパイル済みの結果(108)をそこから出力するようにさらに構成され、
該プロデューサノード(122)に関連付けられているプロデューサインデックスの検索に適合するクエリ特徴(402〜406)を使用してクエリ表現を取得し、それにより該プロデューサノード(122)から該結果を取得するために該ディストリビュータノード(120)から受信されるクエリ(106)を処理するように構成されるクエリプリプロセッサ(134)と、
該クエリ表現を入力して、それに基づいて、プロデューサノード(122、126、129)の該事前定義済みのサブセット内の該少なくとも1つの他のプロデューサノード(126、129)による該クエリの処理により、該少なくとも1つの他のプロデューサノード(126、129)の結果が該コンパイル済みの結果(108)内に含まれるようになるかどうかについての予測を出力するように構成されるクエリ分類器(142)とを含む該プロデューサノード(122)を備える、前記コンピュータシステム。
【請求項２】
前記クエリ分類器(142)が、前記プロデューサノード(122)及び前記少なくとも1つの他のプロデューサノード(126、129)がそれぞれの結果を並行して前記ディストリビュータノード(120)に提供するように、前記クエリ表現を取得すると同時かつ該プロデューサノード(122)からの該結果を生成することの前に、前記予測を該ディストリビュータノード(120)に提供するように構成される、請求項1記載のシステム(100)。
【請求項３】
前記クエリ分類器(142)が、前記アーキテクチャ内の複数の他のプロデューサノード(126、129)から前記少なくとも1つの他のプロデューサノード(126)を決定して、該少なくとも1つの他のプロデューサノード(126)を前記クエリが転送されるべきターゲットノードとして識別するように構成される、請求項1又は2のいずれか一項記載のシステム(100)。
【請求項４】
前記クエリ分類器(142)が、前記クエリ表現に関連付けられている少なくとも2つのクエリ特徴(402〜406)を入力して、それに基づいて前記予測を計算するように構成される、請求項1から3のいずれか一項記載のシステム(100)。
【請求項５】
前記クエリ分類器(142)が、前記クエリ表現に関連付けられているクエリ特徴(402〜406)のセットから前記少なくとも2つのクエリ特徴(402〜406)を選択するように構成される、請求項4記載のシステム(100)。
【請求項６】
前記少なくとも2つのクエリ特徴(402〜406)のうちの少なくとも1つが、前記クエリ(106)内の語句の語句カウントを含む、請求項4記載のシステム(100)。
【請求項７】
前記クエリ分類器(142)が、前記少なくとも1つの他のプロデューサノード(126、129)が前記コンパイル済みの結果内に含まれる可能性が高い範囲を表す値域内の値を含む前記予測を提供するように構成される、請求項1から6のいずれか一項記載のシステム(100)。
【請求項８】
前記クエリ分類器(142)が、前記少なくとも1つの他のプロデューサ(126)が該少なくとも1つの他のプロデューサノード(126)からの前記結果の提供に使用するために前記クエリを処理する必要のある範囲を表す値域内の値を含む前記予測を提供するように構成される、請求項1から7のいずれか一項記載のシステム(100)。
【請求項９】
前記プロデューサノード(122)が、前記クエリ表現に関連付けられているクエリ特徴、前記少なくとも1つの他のプロデューサノード(126)からの結果、及び複数の機械学習アルゴリズムの1つを含む分類データ(138)を入力するように構成され、それに基づいて、前記予測の出力に使用するために前記クエリ分類器(142)に出力するための分類モデルを構築するように構成される分類マネージャ(140)を備える、請求項1から8のいずれか一項記載のシステム(100)。
【請求項１０】
前記分類マネージャ(140)が、前記少なくとも1つの他のノード(126)からの前記結果を追跡し、前記分類データ及びそれと共に前記分類モデルを更新するように構成される、請求項9記載のシステム(100)。
【請求項１１】
前記プロデューサノード(122)が、前記ディストリビュータノード(120)をトリガして、前記クエリ分類器(142)による指示の有無に関わらず、前記少なくとも1つの他のプロデューサノード(126)に前記クエリのサブセットを定期的に送信させ、それに基づいて前記分類データを更新させるように構成されるモニタ(136)を備える、請求項9記載のシステム(100)。
【請求項１２】
前記プロデューサノード(122)からの前記結果が、前記プロデューサインデックスを使用して該プロデューサノード(122)に関連付けられているデータソース(124)から取得され、前記少なくとも1つの他のプロデューサノード(126)からの該結果は対応するインデックスを使用して該少なくとも1つの他のプロデューサノード(126)に関連付けられているデータソース(128)から取得され、該少なくとも1つの他のプロデューサノード(126)が、該プロデューサノード(124)と比較して、アクセスのコスト効果が低い、請求項1から11のいずれか一項記載のシステム(100)。
【請求項１３】
少なくとも1つのプロセッサが少なくとも以下の操作を実施するコンピュータ実施の方法(200)であって、
階層型のツリー形状の処理アーキテクチャ(102)内の少なくとも1つのディストリビュータノード(120)からプロデューサノード(122)においてクエリ(106)を受信すること(202)であって、該アーキテクチャが、該プロデューサノード(122)及び少なくとも1つの他のプロデューサノード(126)への分散を含む該アーキテクチャ(102)内でクエリを分散するように構成される該少なくとも1つのディストリビュータノード(120)を含み、該ディストリビュータノード(120)が、該プロデューサノード(122)からの結果及び該少なくとも1つの他のプロデューサノード(126)からの結果を受信して、コンパイル済みの結果(108)をそこから出力するようにさらに構成されることと、
該プロデューサノード(122)に関連付けられているプロデューサインデックスの検索に適合するクエリ特徴(402〜406)を使用してクエリ表現を取得し、それにより該プロデューサノード(122)から該結果を取得するために該ディストリビュータノード(120)から受信される該クエリ(106)を前処理すること(204)と、
該クエリ表現を使用して該クエリを分類(206)し、それに基づいて、該少なくとも1つの他のプロデューサノード(126)による該クエリの処理により、該少なくとも1つの他のプロデューサノードの結果が該コンパイル済みの結果(108)内に含まれるようになるかどうかについての予測を出力することとを備える、前記方法。
【請求項１４】
前記クエリを前記分類すること(206)が、
前記プロデューサノード(122)及び前記少なくとも1つの他のプロデューサノード(126)がそれぞれの結果を並行して前記ディストリビュータノード(120)に提供するように、前記クエリ表現を取得すると同時かつ該プロデューサノード(122)からの該結果を生成する前に、前記予測を該ディストリビュータノード(120)に提供することを備える、請求項13記載の方法(200)。
【請求項１５】
前記クエリを前記分類すること(206)が、
前記クエリ表現に関連付けられているクエリ特徴、前記少なくとも1つの他のプロデューサノード(126)からの結果、及び複数の機械学習アルゴリズムの1つを含む分類データ(138)を入力することと、
それに基づいて、前記予測の出力に使用するために分類モデルを構築することとを備える、請求項13又は14記載の方法(200)。
【請求項１６】
前記クエリを前記分類すること(206)が、
前記ディストリビュータノード(120)をトリガして、前記予測による指示の有無に関わらず、前記少なくとも1つの他のプロデューサノード(126)に前記クエリのサブセットを定期的に送信させ、それに基づいて前記分類データを更新させることを備える、請求項15記載の方法(200)。
【請求項１７】
コンピュータ可読媒体に有形に具現されるコンピュータプログラム製品であって、実行されると、データ処理装置に、
階層型のツリー形状の処理アーキテクチャ(102)内の少なくとも1つのディストリビュータノード(120)からプロデューサノード(122)においてクエリ(106)を受信すること(202)であって、該アーキテクチャが、該プロデューサノード(122)及び少なくとも1つの他のプロデューサノード(126)への分散を含む該アーキテクチャ(102)内でクエリを分散するように構成される該少なくとも1つのディストリビュータノード(120)を含み、該ディストリビュータノード(120)が、該プロデューサノード(122)からの結果及び該少なくとも1つの他のプロデューサノード(126)からの結果を受信して、コンパイル済みの結果(108)をそこから出力するようにさらに構成されることと、
該プロデューサノード(122)に関連付けられているプロデューサインデックスの検索に適合するクエリ特徴(402〜406)を使用してクエリ表現を取得し、それにより該プロデューサノード(122)から該結果を取得するために該ディストリビュータノード(120)から受信される該クエリ(106)を前処理すること(204)と、
該クエリ表現を使用して該クエリを分類(206)し、それに基づいて、該少なくとも1つの他のプロデューサノード(126)による該クエリの処理により、該少なくとも1つの他のプロデューサノードの結果が該コンパイル済みの結果(108)内に含まれるようになるかどうかについての予測を出力することとを行わせるように構成される実行可能コードを含む、前記コンピュータプログラム製品。
【請求項１８】
前記クエリを分類する(206)際に、前記実行される命令が、前記データ処理装置に、
前記プロデューサノード(122)及び前記少なくとも1つの他のプロデューサノード(126)がそれぞれの結果を並行して前記ディストリビュータノード(120)に提供するように、前記クエリ表現を取得すると同時かつ該プロデューサノード(122)からの該結果を生成することの前に、前記予測を該ディストリビュータノード(120)に提供させる、請求項17記載のコンピュータプログラム製品。
【請求項１９】
前記クエリを分類する(206)際に、前記実行される命令が、前記データ処理装置に、
前記クエリ表現に関連付けられているクエリ特徴、前記少なくとも1つの他のプロデューサノード(126)からの結果、及び複数の機械学習アルゴリズムの1つを含む分類データ(138)を入力させ、
それに基づいて、前記予測の出力に使用するために分類モデルを構築させる、請求項17又は18のいずれか一項記載のコンピュータプログラム製品。
【請求項２０】
前記クエリを分類する際に、前記実行される命令が、前記データ処理装置に、
前記ディストリビュータノード(120)をトリガさせて、前記予測による指示の有無に関わらず、前記少なくとも1つの他のプロデューサノードに前記クエリのサブセットを定期的に送信させ、
それに基づいて前記分類データ(138)を更新させる、請求項19記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
(関連出願の相互参照)
本出願は、いずれも引用により全体として本明細書中に組み込まれている、2009年6月10日に出願された「階層アーキテクチャ内の結果最適化のための生産的分散(PRODUCTIVE DISTRIBUTION FOR RESULT OPTIMIZATION WITHIN A HIERARCHICAL ARCHITECTURE)」と題する米国仮出願第61/185,978号の優先権を米国特許法第119条(e)の下に主張する、2009年10月30日に出願された「階層アーキテクチャ内の結果最適化のための生産的分散(PRODUCTIVE DISTRIBUTION FOR RESULT OPTIMIZATION WITHIN A HIERARCHICAL ARCHITECTURE)」と題する米国非仮出願第12/609,788号の優先権を主張する継続出願である。
【０００２】
(技術分野)
この説明は、コンピュータネットワークの階層アーキテクチャ内のジョブ分散に関する。
【背景技術】
【０００３】
(背景)
データ検索及び処理のための従来のシステムは、結果生成の正確度及び適時性、コンピューティングリソースの使用のような特徴を最適化しようと試み、さらにユーザのシステムに関する知識及びシステムとの対話を最小化しようと試みる。そのような試みには関連するさまざまな課題がある。
【０００４】
たとえば、データ検索において、潜在的ユーザが最も正確なデータに直接(したがってタイムリーな)アクセスを行えるように、すべての必要なデータをデータの潜在的ユーザに近接する場所に格納することが理論的に可能である。しかし、多くのシステムにおいて、ユーザが分散しており、(ユーザの分散と相まって)データのサイズが任意の単一の場所への格納を妨げることが生じる場合もある。さらに、特定のサイズのデータを、正確かつタイムリーに検索することが困難となり、データが過密状態になるとコンピューティングリソースがボトルネックを経験することもある。
【０００５】
したがって、多くのシステムにおいて、データ(及びその処理)は、上記の問題を反映するような方法で分散されてもよい。たとえば、特定のタイプ又はサブセットのデータを、異なる地理的場所に分散することにより、分散したユーザのアクセスが容易になり、コンピューティングリソースをさらに効率的に割り振られることができる。特に、そのような分散システムは、構造化されて編成された方法でデータ分散をもたらす階層型又はツリーベースのアーキテクチャに依存できる。
【０００６】
しかし、そのような分散システムは一般に、それぞれ独自の問題を抱えている。たとえば、そのような分散システムは一般に、たとえばクエリ及び結果がネットワークにわたり伝達される必要があるので、付加的な待ち時間をもたらす。さらに、そのような分散システムは、より小型で高速なデータベースがより多くの/異なる場所で複製されて、それにより大型の低速のデータベースよりもより迅速かつ恒常的にアクセスされるように、データの分散を構造化する可能性がある。さらに一般的に、そのような分散システムは、他のリソースに比べてアクセスに比較的多くのコストを要する一部のリソースを有することもある。その意味において、そのようなコストは、時間、資金、コンピューティングリソース、又は当該のシステム内の(又は関係づけられている)任意の限られたリソースにおけるコストになる場合もある。その結果、システムから得られる結果を最適化するより広いコンテキスト内でそのようなコストを管理することが困難になる可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００７】
(要旨)
1つの一般的な態様によれば、プロデューサノードは、階層型のツリー形状の処理アーキテクチャに含まれてもよく、該アーキテクチャは、プロデューサノード及びプロデューサノードの事前定義済みのサブセット内の少なくとも1つの他のプロデューサノードへの分散を含むアーキテクチャ内でクエリを分散するように構成された少なくとも1つのディストリビュータノードを含む。ディストリビュータノードは、プロデューサノードからの結果、及び少なくとも1つの他のプロデューサノードからの結果を受信し、コンパイル済みの結果をそこから出力するようにさらに構成されてもよい。プロデューサノードは、プロデューサノードに関連付けられているプロデューサインデックスの検索に適合するクエリ特徴を使用してクエリ表現を取得し、それによりプロデューサノードから結果を取得するためにディストリビュータノードから受信されるクエリを処理するように構成されるクエリプリプロセッサと、クエリ表現を入力して、それに基づいて、プロデューサノードの事前定義済みのサブセット内の少なくとも1つの他のプロデューサノードによるクエリの処理により、少なくとも1つの他のプロデューサノードの結果がコンパイル済みの結果内に含まれるようになるかどうかについての予測を出力するように構成されるクエリ分類器とを備えることができる。
【０００８】
実施態様は、以下の特徴の1つ以上を含むことができる。たとえば、クエリ分類器は、プロデューサノード及び少なくとも1つの他のプロデューサノードがそれぞれの結果を並行してディストリビュータノードに提供するように、クエリ表現を取得することと同時かつプロデューサノードからの結果を生成する前に、予測をディストリビュータノードに提供するように構成されてもよい。
【０００９】
クエリ分類器は、アーキテクチャ内の複数の他のプロデューサノードから少なくとも1つの他のプロデューサノードを決定して、少なくとも1つの他のプロデューサノードをクエリが転送されるべきターゲットノードとして識別するように構成されてもよい。クエリ分類器は、クエリ表現に関連付けられている少なくとも2つのクエリ特徴を入力して、それに基づいて予測を計算するように構成されてもよい。この場合、クエリ分類器は、クエリ表現に関連付けられているクエリ特徴のセットから少なくとも2つのクエリ特徴を選択するように構成されてもよい、及び/又は少なくとも2つのクエリ特徴のうちの少なくとも1つがクエリ内の語句の語句カウントを含むことができる。
【００１０】
クエリ分類器は、少なくとも1つの他のプロデューサノードがコンパイル済み結果内に含まれる可能性が高い範囲を表す値域内の値を含む予測を提供するように構成されてもよい。クエリ分類器は、少なくとも1つの他のプロデューサノードが少なくとも1つの他のプロデューサノードからの結果の提供に使用するためにクエリを処理する必要のある範囲を表す値域内の値を含む予測を提供するように構成されてもよい。
【００１１】
プロデューサノードは、クエリ表現に関連付けられているクエリ特徴、少なくとも1つの他のプロデューサノードからの結果、及び複数の機械学習アルゴリズムの1つを含む分類データを入力するように構成され、それに基づいて、予測の出力に使用するためにクエリ分類器に出力するための分類モデルを構築するように構成される分類マネージャを含むことができる。分類マネージャは、少なくとも1つの他のノードからの結果を追跡し、分類データ及びそれと共に分類モデルを更新するように構成されてもよい。加えて、又は代替として、プロデューサノードは、ディストリビュータノードをトリガして、クエリ分類器による指示の有無に関わらず、少なくとも1つの他のプロデューサノードにクエリのサブセットを定期的に送信させ、それに基づいて分類データを更新させるように構成されるモニタを含むことができる。
【００１２】
プロデューサノードからの結果は、プロデューサインデックスを使用してプロデューサノードに関連付けられているデータソースから取得されてもよく、少なくとも1つの他のプロデューサノードからの結果は対応するインデックスを使用して少なくとも1つの他のプロデューサノードに関連付けられているデータソースから取得され、少なくとも1つの他のプロデューサノードは、プロデューサノードと比較した場合、アクセスにはさほど費用効果が高くはない。
【００１３】
もう1つの一般的な態様によれば、少なくとも1つのプロセッサが少なくとも以下の操作を実装するコンピュータ実装方法は、階層型のツリー形状の処理アーキテクチャ内の少なくとも1つのディストリビュータノードからプロデューサノードにおいてクエリを受信することであって、該アーキテクチャが、プロデューサノード及び少なくとも1つの他のプロデューサノードへの分散を含むアーキテクチャ内でクエリを分散するように構成される少なくとも1つのディストリビュータノードを含み、ディストリビュータノードが、プロデューサノードからの結果及び少なくとも1つの他のプロデューサノードからの結果を受信して、コンパイル済みの結果をそこから出力するようにさらに構成されることを含むことができる。該方法は、プロデューサノードに関連付けられているプロデューサインデックスの検索に適合するクエリ特徴を使用してクエリ表現を取得し、それによりプロデューサノードから結果を取得するためにディストリビュータノードから受信されるクエリを前処理することと、クエリ表現を使用してクエリを分類し、それに基づいて、少なくとも1つの他のプロデューサノードによるクエリの処理により、少なくとも1つの他のプロデューサノードの結果がコンパイル済みの結果内に含まれるようになるかどうかについての予測を出力することとを含むことができる。
【００１４】
実施態様は、以下の特徴の1つ以上を含むことができる。たとえば、クエリを分類することは、プロデューサノード及び少なくとも1つの他のプロデューサノードがそれぞれの結果を並行してディストリビュータノードに提供するように、クエリ表現を取得すると同時かつプロデューサノードからの結果を生成する前に、予測をディストリビュータノードに提供することを含むことができる。
【００１５】
加えて、又は代替として、クエリを分類することは、クエリ表現に関連付けられているクエリ特徴、少なくとも1つの他のプロデューサノードからの結果、及び複数の機械学習アルゴリズムの1つを含む分類データを入力すること、及びそれに基づいて、予測の出力に使用するために分類モデルを構築することを含むことができる。加えて、クエリを分類することは、ディストリビュータノードをトリガして、予測による指示の有無に関わらず、少なくとも1つの他のプロデューサノードにクエリのサブセットを定期的に送信させ、それに基づいて分類データを更新させることを含むことができる。
【００１６】
もう1つの一般的な態様によれば、1つのコンピュータプログラム製品は、コンピュータ可読媒体に有形に具現されてもよく、実行されると、データ処理装置に、階層型のツリー形状の処理アーキテクチャ内の少なくとも1つのディストリビュータノードからプロデューサノードにおいてクエリを受信することであって、該アーキテクチャが、プロデューサノード及び少なくとも1つの他のプロデューサノードへの分散を含むアーキテクチャ内のクエリを分散するように構成される少なくとも1つのディストリビュータノードを含み、ディストリビュータノードが、プロデューサノードからの結果及び少なくとも1つの他のプロデューサノードからの結果を受信して、コンパイル済みの結果をそこから出力するようにさらに構成されることと、プロデューサノードに関連付けられているプロデューサインデックスの検索に適合するクエリ特徴を使用してクエリ表現を取得し、それによりプロデューサノードから結果を取得するためにディストリビュータノードから受信されるクエリを前処理することと、クエリ表現を使用してクエリを分類し、それに基づいて、少なくとも1つの他のプロデューサノードによるクエリの処理により、少なくとも1つの他のプロデューサノードの結果がコンパイル済みの結果内に含まれるようになるかどうかについての予測を出力することとを行わせるように構成される実行可能コードを含むことができる。
【００１７】
実施態様は、以下の特徴の1つ以上を含むことができる。たとえば、クエリの分類において、実行される命令は、データ処理装置に、プロデューサノード及び少なくとも1つの他のプロデューサノードがそれぞれの結果を並行してディストリビュータノードに提供するように、クエリ表現を取得すると同時かつプロデューサノードからの結果を生成する前に、予測をディストリビュータノードに提供させることができる。
【００１８】
クエリの分類において、実行される命令は、データ処理装置に、クエリ表現に関連付けられているクエリ特徴、少なくとも1つの他のプロデューサノードからの結果、及び複数の機械学習アルゴリズムの1つを含む分類データを入力させ、それに基づいて、予測の出力に使用するために分類モデルを構築させることができる。クエリの分類において、実行される命令は、データ処理装置に、ディストリビュータノードをトリガさせて、予測による指示の有無に関わらず、少なくとも1つの他のプロデューサノードにクエリのサブセットを定期的に送信させ、それに基づいて分類データを更新させることができる。
【００１９】
1つ以上の実施態様の詳細は、添付の図面及び以下の説明において示される。その他の特徴は、説明及び図面、並びに特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【００２０】
【図１Ａ】階層アーキテクチャ内の結果最適化の生産的な分散のためのシステムを示すブロック図である。
【００２１】
【図１Ｂ】図1Aのシステムの例示的な操作を示す流れ図である。
【００２２】
【図２】図1Aのプロデューサノードの例示的な操作を示す流れ図である。
【００２３】
【図３】図1Aのシステムの分類マネージャの追加の例示的な操作を示す流れ図である。
【００２４】
【図４Ａ−Ｃ】分類モデルを構築するために使用される分類データを示す表である。
【００２５】
【図５】図1Aのシステムが動作することのできる例示的なコンピューティング環境を示すブロック図である。
【発明を実施するための形態】
【００２６】
(詳細な説明)
図1Aは、階層アーキテクチャ内の結果最適化の生産的な分散のためのシステム100を示すブロック図である。図1Aにおいて、ユーザ104に所望される検索及びその他の操作を容易にするための階層型のツリー形状のアーキテクチャが示される。さらに詳細には、アーキテクチャ102は、クエリ106を受け入れて、コンパイル済みの結果108をユーザに返すことができ、コンパイル済みの結果108の有用性/正確度を最適化するような方法でそれを行うことができ、しかも同時にアーキテクチャ102の操作のリソース、及び操作に関連するコストを効果的に管理することができる。
【００２７】
図1Aの例において、ユーザ104がクエリ106をサブミットして、それと共にコンパイル済みの結果108を受信することができるように適切なグラフィカルユーザインターフェイス(GUI)又は他のインターフェイスが実施されうるディスプレイ109をユーザが操作することがわかる。たとえば、ディスプレイ109は、任意の標準的なモニタ、プロジェクタ、又はその他の表示装置を表すことができ、対応するインターフェイスは、インターネットブラウザ又はその他のGUIを含むことができる。言うまでもなく、ディスプレイ109は、明確かつ簡潔にするために、図1Aに具体的には示されていない適切なコンピューティングリソース(たとえば、ラップトップコンピュータ、パーソナルコンピュータ、又はハンドヘルドコンピュータ)に関連付けられていてもよい。例示の実施態様において、ユーザ104及びディスプレイ109は、クエリ106を生成してコンパイル済みの結果108を予期する別の計算システム(複数可)に置き換えられてもよい。
【００２８】
一般的に言えば、上記で参照されるアーキテクチャ102は、後段で詳細に説明されるように、複数の実行可能なデータソースを含むことができる。したがって、コンパイル済みの結果108は、それらのデータソースのうちの異なる1つからの結果を含むことができる。特に、示されるように、コンパイル済みの結果110、112、116は、1つのデータソース(「S」)に関連付けられているが、コンパイル済みの結果(複数可)114は、別のデータソース(「T」)に関連付けられている。アーキテクチャ102内に複数の使用可能なデータソースを備えることで、ユーザ104又はアーキテクチャ102のオペレータのいずれも、アーキテクチャ102へのアクセスに先立って、どのデータソースがさまざまなコンパイル済みの結果110〜116を含むか、及び使用可能な結果がコンパイル済みの結果108に出現するのに十分な品質であるかどうかについての特定の知識を有していない可能性があることが理解されよう。
【００２９】
アーキテクチャ102において、たとえばプロデューサノード122(データソース「S」124に関連付けられている)、プロデューサノード126(データソース「T」128に関連付けられている)、及びプロデューサノード129(データソース「U」130に関連付けられている)のうちの1つの適切なプロデューサノードに転送するためのクエリ及びその他のジョブ要求を処理するように構成されるディストリビュータノード118及びディストリビュータノード120が示される。ディストリビュータノード(複数可)118、120はまた、コンパイル済みの結果108へのコンパイルのためにプロデューサノード122、126、129のうちの1つ以上から返される結果を受信するように構成されてもよい。したがって、アーキテクチャ102は、階層型のツリー形状のアーキテクチャが、クエリの結果のプロデューサである複数のリーフノード内及びリーフノード間でクエリを分散及び収集する複数の内部ディストリビュータノードを含むさらに一般的な事例の簡略化された例を表す。
【００３０】
図1Aにおいて、及びこの説明全体を通じて、アーキテクチャ102は主として、データソース124、128、130を検索するためのクエリに関して説明される。しかし、このコンテキストにおけるクエリという用語はより広範な意味を有し、さらに一般的には説明されるアーキテクチャ102の特定の例又は主題の範囲内の分散に適切となりうる実質的に任意のジョブ又はタスクを表すものと見なされてもよいことを理解されたい。たとえば、そのようなジョブは、レポート作成、実行されるべき計算、達成されるべきタスク、又はプロデューサノード122、126、129が結果を生成できる実質的に任意のジョブを含むことができる。
【００３１】
次いで、本発明の説明のために、プロデューサ122、126、129は、対応するデータソース124、128、130に関連し、データソース124、128、130のドキュメントの実際のコンテンツ内を検索する必要を軽減又は回避するインデックスを含むか、又はインデックスに関連付けられてもよいことが仮定される。この点において、ドキュメントという用語は、データソース124、128、130内に格納することができ、本発明の例において、ドキュメントの検索を容易にするために対応するプロデューサノード122、126、129に関連してインデックス付けすることができるデータ又はデータ構造体の任意の個別の部分を示すものと理解されるべきである。
【００３２】
つまり、たとえば、そのようなインデックスは、たとえばドキュメント内の単語又は語句、若しくは(オーディオ、ビデオ、又はグラフィカルコンテンツを含む)コンテンツを特徴付けるメタデータを含む、対応するデータソース内のドキュメントのコンテンツ(複数可)に関する構造化された情報を含むことができる。そのようなインデックス付け技法の例は、当技術分野においてよく知られており、本発明の説明の理解を容易にするために必要な場合を除いて、本明細書においてさらに説明することはない。
【００３３】
上記で参照されるように、データソース124、128、130はアーキテクチャ120の内部に含まれ、したがってアーキテクチャ102の他の要素と適合する場合が一般的である。すなわち、たとえばアーキテクチャ102全体を通じて分散されるクエリは、最終的にコンパイル済みの結果108にコンパイルされる結果を得るために、さまざまディストリビューションノード118及びプロデューサノード122、126、128によって使用されてもよい。
【００３４】
しかし、その際に、既に説明されているように、異なるプロデューサノード122、126、128及び関連するデータソース124、128、130が、そのアクセスに関連するコスト(複数可)に関して重大な相違がありうることを理解されたい。たとえば、プロデューサノード126が、ディストリビュータノード120及び/又はプロデューサノード122から地理的に離れており、そのためプロデューサノード126にアクセスするために介在ネットワーク(複数可)を横断することでアクセス待ち時間をもたらすことも生じうる。もう1つの例において、プロデューサノード128は、クエリに応答するには限られた容量しか有していない場合、及び/又は大容量であるため検索時間が容認しがたいほど長い(応答に計算の待ち時間をもたらす)場合もある。さらにもう1つの例において、場合によっては、特定のデータソースにアクセスすることに関連して文字通りの財務コストがあることもある。
【００３５】
アーキテクチャ102の特定のプロデューサノードにアクセスするアクセスコストに関連するそれらの問題及び関連する問題を軽減するため、アーキテクチャ102のオペレータは、一部のデータ(及び関連するデータソース)がより広くアクセスされて所望されるデータを含むことがあり(たとえば、図1Aの例において、データソース124はそのようなデータソースを表すものと考えられる)、したがって他のデータソースよりも上位に(ひいては、より容易にかつ頻繁にアクセス可能に)配置する必要があるという一般的な知識を備えている場合がある。さらに、より広くアクセスされ、より頻繁に所望される結果を有する可能性のあるそのようなデータソースは、アップデータ、アクセス、及び検索が比較的高速かつ容易に行われるように、含まれる可能な結果の総量をより少なくするように構築されてもよい。逆に、はるかに大量で、より離れているか、又はアクセスによりコストがかかる可能性のある他のデータソースは、アーキテクチャ102内でより下位に配置されて、さほど頻繁にアクセスされなくてもよい。たとえば、図1Aにおいて、プロデューサノード126及びデータソース128は地理的に離れているが、プロデューサノード129及びデータソース130はクエリに応答するための容量が限られているという場合もあり得る。
【００３６】
そのようなアーキテクチャにおいて、クエリ106は、所望のクエリ結果を含む可能性が最も高い、及び/又はそのような結果をタイムリーで費用効果の高い方法で提供する能力に優れたソースであるプロデューサノード122に最初に分散されてもよいことが明らかである。言うまでもなく、プロデューサノード122及びデータソース124は、実際には、クエリ106の結果の完全又は最善のセットを含んでいない場合もある。そのようなシナリオにおいて、1つのオプションは、データソース124から得られる結果の量又は質を判断するのを待ち、次いで、必要と考えられる場合、さらに続いて残りのプロデューサノード126、129のうちの1つ以上にアクセスすることである。
【００３７】
しかし、このオプションにおいて、クエリ結果のそのような量又は質が、プロデューサノード(複数可)126、129のそのようなアクセスに関連するコスト及び作業を保証するかどうかを知ることは困難である。特に、ディストリビュータノード118、120がアーキテクチャ102内でクエリを分散(たとえば、ルーティング)することに責任を負う範囲内において、そのようなディストリビュータノード(複数可)に、どのプロデューサノード122、126、129をクエリ106の転送先に選択するかに関するインテリジェントな意志決定を行わせるための情報又は計算リソースのいずれかを持たせることは、困難である場合もある。そのような情報は、プロデューサノード(複数可)122、126、129のうちの1つ以上にはローカルであり、たとえばディストリビュータノード120にとってはすぐに使用できるわけではないこともある。したがって、ディストリビュータノード120が、たとえばプロデューサノード126へのクエリ106の分散が、クエリ106及びコンパイル済みの結果108に関して有用であるかどうかを決定することは困難である場合もある。
【００３８】
この点について、及び用語の点では、アーキテクチャ102のデータソースは、コンパイル済みの結果108内に含まれるクエリ結果を返す場合、生産的であると言うことができる。たとえば、図1Aにおいて、提示されるコンパイル済みの結果110〜116は、クエリ106に対する最善の使用可能なクエリ結果を表す。示され、説明されているように、結果114は、プロデューサノード126がクエリ106及びコンパイル済みの結果108に関して生産的であったと言われうるように、データソース128から得られる。仮定的に、プロデューサノード129がコンパイル済みの結果108を提供する際にアクセスされた場合、データソース130が、プロデューサノード129がクエリ106及びコンパイル済みの結果108に関して非生産的であると見なされるように、データソース(複数可)124、128からの結果に対してランク付けされるときに、コンパイル済みの結果内に包含する価値があると判断された結果を提供しなかったことがわかる。
【００３９】
この用語を使用することで、クエリ106の生産的な結果を返さないプロデューサノード126、129のあらゆるアクセスは、ユーザがアクセスを開始するために必要とされる作業と引き換えにそのようなアクセスから何ら利益を受けていないので、リソースの浪費及びユーザ104に(たとえば、計算及び/又はアクセス待ち時間により)不便が生じる可能性があると見なされてもよいことが明らかである。たとえば、データソース124が最初に多数の結果を生成し、そのような結果がプロデューサ(複数可)126、129にアクセスすることにより改善されていたかどうか、すなわち結果が大幅に改善されたか、わずかに改善されたか、又は全く改善されないかを知ることは困難になる状況も生じることがある。
【００４０】
説明されるような、わずかに改善されるか又は全く改善されない後者の2つの事例において、プロデューサ(複数可)126、129の1つ又は両方にアクセスすることは概して、リソースをうまく使用できていないことになりうる。さらに、そのようなシナリオにおいて、(たとえば、プロデューサノード122が結果をほとんど、又は全く提供しない場合など)2次プロデューサノード(複数可)126、129のアクセスが必要であることをプロデューサノード122のアクセスが強く指示する状況であっても、及びそのようなアクセスの結果が生産的である場合であっても、指示が行われる/提供される時点と2次プロデューサノード(複数可)126、129が実際にアクセスされてそこから結果が得られる時点との間に不利な遅延が生じることが依然としてわかる。
【００４１】
したがって、図1Aのシステム100において、プロデューサノード122は、プロデューサノード(複数可)126、129のアクセスが望ましい場合に(たとえば、そのようなアクセスが生産的となり、コンパイル済みの結果108に含めるためにそこから生産的な結果が得られることになるような場合に)事前対応的に予測する能力が備えられる。さらに、図1Aにおいて、そのような予測は、プロデューサノード122自身がデータソース124にアクセスする前(及び/又はアクセスと同時に)行われてもよい。このようにして、プロデューサノード122、126、及び/又は129によるクエリ処理は、基本的に並列に処理することができ、さらに、プロデューサノード(複数可)126、129からの生産的な結果、及びアーキテクチャ102内のリソースの効率的な使用をもたらす可能性をさらに高めることができる。
【００４２】
具体的には、示されるように、プロデューサノード122は、コンピューティングデバイス132を使用して、又はコンピューティングデバイス132に関連して実行されてもよい。コンピューティングデバイス132が、説明されているタスクの実行に適した、図5に関して後段でさらに詳細に説明されるような、実質的に任意のコンピューティングデバイスであってもよいことを理解されたい。
【００４３】
図1Aにおいて、クエリ106を受信して、プロデューサノード122の対応するインデックスと共に使用するためのクエリ106を準備し、それによりデータソース124から結果を得るように構成されるクエリプリプロセッサ134が示される。言い換えれば、クエリプリプロセッサ134は、クエリを入力して、プロデューサノード122(及び関連するインデックス)並びにデータソース124に関してクエリのより完全及び/又はより適合する表示であるクエリ表現を出力する。
【００４４】
そのようなクエリ前処理の例は一般に、当技術分野においてよく知られており、説明の理解を容易にするために必要な場合を除いて、本明細書においてさらに説明することはない。しかし、一般に、そのようなクエリ前処理が、関連するクエリ特徴のセットを得るためのクエリ106の分析を含むことができることを理解されたい。単に非限定的な例として、一部のそのようなクエリ特徴は、たとえばクエリの長さ(すなわち、文字の数)、クエリの語句の数、クエリのブール構造、クエリの1つ以上の語句の同義語、クエリの語句の意味と類似する意味論的意味を持つ単語、クエリの語句と類似するスペル(又はミススペル)を持つ単語、及び/又はクエリの句分析を含むことができる。
【００４５】
後者に関して、そのような句分析は、たとえば各句の長さ、クエリ内でどの単語が相互に近接するかについての分析を含むことができ、及び/又はクエリ106内で近接する2つ以上の単語がどの程度頻繁に他の環境で(たとえば概してインターネット上で)相互に近接して出現するかについての分析を含むことができる。そのような分析は、クエリに関連するものと見なされうる特定のトピック又は主題を考慮に入れることができる(たとえば、コーパス固有の知識、特に特定の句又は他の単語の関連を含む傾向がある特定のタイプの結果ドキュメントの特定のタイプを含む特化されたコーパス)。その他の例において、そのような分析は、そのようなコーパス固有の知識の考慮を意図的に避けることができ、語句及び相互に対するそれらの関係をすべての使用可能な/適格な主題に関して総称的に考慮することができる。
【００４６】
一般に、そのようなクエリ前処理は、データソース124からの望ましい結果がユーザ104のために取得される可能性を高めることができる。たとえば、クエリ106の同義語及び潜在的なミススペルを含めることにより、プロデューサノード122は、データソース124から比較的大きな結果のセットを取得することができる。次いで、それらの結果がソート/フィルタリング/ランク付け、又は処理されるとき、同義語及びミススペルが含まれなかった場合に比べて、結果が望ましい成果をもたらす可能性が高くなる。一般に、処理時間及び/又は計算リソースが制限されている範囲内において、それらのクエリ特徴の全部又は大部分でさえも考慮することが困難であるか、若しくは望ましくない場合もあり、(同様に)クエリ特徴が考慮される/実施される範囲を制限することが望ましい場合もある(たとえば、含まれる同義語の数を制限することが望ましい場合もある)。
【００４７】
説明されるように、データソース124のインデックスに関してさまざまな方法及びさまざまな範囲でそのようなクエリ前処理の一般的な概念を使用する標準的なシステムが存在する。図1Aの例において、プロデューサノード122は、そのようなクエリ前処理の結果の一部又はすべてを、データソース124のインデックスにアクセスするためだけではなく、クエリ106の分類を行うためにも使用し、それによりデータソース124へのアクセスと同時にプロデューサノード(複数可)126、129にアクセスすることが必要であるか又は望ましいかどうか(すなわち、そのようなアクセスが、コンパイル済みの結果108に関して生産的であるか、又は生産的になる可能性が高いかどうか)について予測を提供する。次いで、そのような予測を使用して、ディストリビュータノード120は、クエリ106に関してプロデューサノード(複数可)126、129にアクセスするかどうか、及びいつアクセスするかについてより多くの情報を得ることができる。
【００４８】
したがって、たとえば、そのようなアクセスは、発生する場合、生産的である可能性が高く、生産的でない(したがって、システムリソース及び/又はユーザ時間を浪費する)ような場合、発生する可能性は低い。さらに、プロデューサノード(複数可)126、129のそのようなアクセスは、開始前にプロデューサノード122のアクセスが完了するのを待つ必要はなく、むしろ、コンパイル済みの結果108が能率的で時間効率のよい方法で提供されるように基本的に並列で進行されてもよい。
【００４９】
具体的には、図1Aの例において、分類マネージャ140が含まれており、これは分類データ138にアクセスして、クエリ分類器142が、プロデューサノード(複数可)126、129のアクセスがクエリ106のコンパイル済みの結果に関して生産的であるかどうかについて前述の予測を行うことができるモデルを構築する。たとえば、図3及び図4に関して後段で詳細に説明されるように、分類マネージャ140は、クエリ分類器142によって実施されるべき分類モデルを構築するために機械学習技法を実施することができる。
【００５０】
一般に、分類マネージャ140は、プロデューサノード122において受信された比較的多数のクエリを、他のプロデューサノード126、129の1つ以上に送信することによって動作することができる。次いで、モニタ136は、そのようなクエリを観察して追跡し、それらの結果を分類マネージャ140に報告するために使用されてもよい。したがって、分類データ138は、たとえば、クエリプリプロセッサにより使用されるさまざまなクエリ特徴のタイプ又は特性、プロデューサノード122で受信されるクエリのそのようなクエリ特徴の実際の値、及び格納されているクエリ及びクエリ特徴(並びにその値)に関してプロデューサノード126、129の1つ以上からモニタ136によって追跡された結果を含むことができる。
【００５１】
次いで、分類マネージャ140は、クエリ分類器142に出力され、クエリ分類器142に使用されるべき(図3及び図4に関して後段で説明される)分類モデルを構築することができる。次いで、その後にクエリ106がプロデューサノード122によって実際に受信される場合、クエリ分類器142は、クエリプリプロセッサ134からのクエリ106の前処理、及び分類マネージャ140からの分類モデルを入力することができ、この情報を使用してクエリ106がプロデューサノード(複数可)126、129に送信されるべきであるか(コンパイル済みの結果108に関して生産的である可能性が高いので)、又は送信されるべきではないか(非生産的であり、コンピューティングリソース及びユーザ時間の浪費となる可能性が高いので)について予測を行うことができる。
【００５２】
この点に関して、既に説明されているように、クエリプリプロセッサが、事前定義済みのクエリ特徴の一部又は全部を考慮し、それに応じてそのデータソース124のインデックスにアクセスするためにクエリ106を処理する。同様にクエリプリプロセッサ134の結果を使用するクエリ分類器142及び分類マネージャ140に関して、クエリプリプロセッサ134がクエリ106のクエリ表現を提供すると言うことができる。
【００５３】
つまり、そのようなクエリ表現は、自身に関連するデータ及びメタデータ、並びに事前定義済みのクエリ特徴に関連するデータ及びメタデータを含むクエリ106の拡張された(又は場合によっては、縮小された)及び/又は分析されたバージョンであると見なされてもよい。場合によっては、分類マネージャ140/クエリ分類器142によって使用されるそのようなクエリ表現は、データソース124にアクセスするためにプロデューサノード122のインデックスによって使用される同じクエリ表現であってもよい。その他の例において、分類マネージャ140/クエリ分類器142によって使用されるクエリ表現は、データソース124にアクセスするためにプロデューサノード122のインデックスによって使用されるクエリ表現とは異なっていてもよい(たとえば、分類モデルを構築するためにクエリ特徴の異なるサブセット又はその値を使用してもよい)。特に、分類モデルは、アーキテクチャ102及びそのコンテンツの動的な特性を反映するように、時間の経過に伴って更新されてもよく、したがって分類モデルの異なる実施態様においてクエリ特徴の異なるサブセット(複数可)を必要とするか又は使用することができる。他方では、データソース124にアクセスするためにプロデューサノード122のインデックスによって使用されるクエリ表現は、比較的静的であるか又は変化がより緩やかである場合もあり、クエリ特徴のより一定したセットを使用することができる。
【００５４】
このように、クエリプリプロセッサ134からのクエリ表現及び分類マネージャ140からの分類モデル(並びにモニタ136からの関連データ及び/又は分類データ138)に基づいて、クエリ分類器142は、たとえばプロデューサノード126へのクエリ106の分散がコンパイル済みの結果108に関して生産的であるかどうかの予測を基本的に提供する、クエリ106の分類を行うことができる。
【００５５】
さらに具体的には、クエリ分類器142は、そのような分類/予測をディストリビュータノード120に転送することができ、それに応じてディストリビュータノード120はクエリを転送してもよい(又は転送しないこともある)。一部の例示の実施態様において、ディストリビュータノード120は、単に予測を受信し、それに応じて、たとえばクエリフォーワーダ168を使用してクエリ106を転送するように(又はしないように)構成されてもよい。その他の例示の実施態様において、ディストリビュータノード120は、クエリ106を他のプロデューサノード(複数可)に分散するかどうか、いつ分散するか、どのように分散するかに関してより高レベルの決定を行うように構成されてもよい。
【００５６】
後者に関して、たとえば、ディストリビュータノード120は、クエリ分類器142からの予測を処理して、クエリフォーワーダ168によるクエリ106の転送に関してインテリジェントな決定を行うように構成されるクエリリゾルバ166を含むことができる。たとえば、一部の例示の実施態様において、クエリ分類器142は、クエリ106のプロデューサノード126への転送が生産的であるかどうかについて単純なはい/いいえの決定としてクエリの分類を提供することができる。その他の実施態様において、クエリ分類器142は、範囲内の値として予測を提供することができ、範囲は、識別されたプロデューサノード(複数可)が生産的な結果を含む可能性が高いかどうかの相対的な可能性を指示する(ここで、場合によっては、生産的な結果の可能性はさらに、コンパイル済みの結果108の第1ページ又は他の最高セット内にあると予測される「高度に生産的な」クエリのような、予測された生産性の範囲を示すカテゴリに分解されてもよい)。
【００５７】
次いで、クエリリゾルバ166は、そのような情報と、クエリ106を分散するかどうか、いつ、及びどのように分散するかを入力することができる。たとえば、クエリリゾルバ166は、ネットワークが現在輻輳しているかどうか、又は特定のクエリによる特定のプロデューサノードの特定のアクセスにどれほどコストがかかるか、といった要因を検討することができる。したがって、クエリリゾルバ166は、たとえば、得られる結果の有用性の予測される可能性及び範囲と比較して、所与のプロデューサノードにアクセスする既知の/予測されるコストを使用して基本的にコスト対効果分析を実行することができる。
【００５８】
図1Aにおいて、さまざまなコンポーネントが、離れた/別個の位置(たとえば、異なる地理的位置及び/又は異なるネットワーク位置)における個別の要素として示される。たとえば、前述のように、クエリリゾルバ166はディストリビュータノード120と同じ場所に配置されているように示されるが、これは、ディストリビュータノード120が現在のネットワーク条件又はアーキテクチャ102に関連する他のステータス情報について通知を受ける比較的よい位置にある場合、及び/又はアーキテクチャ102の階層内で下部にあるすべてのプロデューサノード122、126、129に関してそのような情報を得る場合もあるからである。その結果、クエリリゾルバ166は、クエリ106を転送するかどうか、いつ転送するか、どのように転送するかについて、説明される決定を行うことができる位置にあってもよい。同様に、クエリプリプロセッサ134及びクエリ分類器142は、プロデューサノード122の単一のコンピューティングデバイス132内に含まれているように示される。
【００５９】
しかし、さまざまな実際的な実施態様において、図1Aのさまざまな変形が可能である。特に、説明されるさまざまな機能は、単一のコンポーネント/デバイスで各々実行されてもよいか、又はクエリプリプロセッサ134が別個の(たとえばアップストリームの)デバイスで一部又は全部の前処理機能を実行する場合のように、分散された方法(たとえば、複数のデバイスを使用)で実行されてもよい。逆に、複数のデバイス/要素で示される機能は、実際には、単一のデバイス(たとえば、クエリリゾルバ166で実行されてもよいか、又はその少なくとも一部の機能は、プロデューサノード122に関連付けられて示されるコンピューティングデバイス132で実行されてもよい。さらに、(たとえば、2つ以上のプロデューサノード122、126、128からの結果をコンパイル済みの結果108にコンパイルするためのディストリビュータノード120のコンパイラのような)当技術分野で知られている特定の要素は、明確かつ簡潔にするために図1Aにおいて明示的には示されていない。したがって、そのような既知のコンポーネントを示されるコンポーネント(及びその変形)の一部又は全部と共に使用する、システム100のさらなる他の実施態様は当業者には明らかとなろう。
【００６０】
図1Bは、図1Aのシステムの例示的な操作を示す流れ図100である。示されているように、流れ図100の操作は、明確にして理解を深めるために、図1Aの対応する参照番号と同じように示されラベル付けされる。
【００６１】
したがって、図1A及び図1Bにおいて、クエリ106は、たとえばディストリビュータノード118において、ユーザ104から受信される(144)。ディストリビュータノード118は、クエリ106をディストリビュータ120に転送し(146)、次いでディストリビュータ120はクエリ106をプロデューサノード122に転送する(148)。特に、上記で説明されるように、ディストリビュータ120は、プロデューサノード122がアーキテクチャ102内でクエリ106の最も頻繁にアクセスされ、最も所望され、最も容易にアクセスされ、最小の、及び/又は最新の結果を含むものと知っていることが、本明細書における例(複数可)について仮定される。したがって、すべてのそのようなクエリは、最初に直ちにプロデューサノード122に渡され得る。
【００６２】
クエリ106を受信すると、プロデューサノード122は、たとえばクエリプリプロセッサ134を使用して、クエリ106の前処理を開始することができる(149、150)。言い換えれば、説明されるように、クエリプリプロセッサ134は、クエリ106及びクエリプリプロセッサ134に関連付けられているクエリ特徴を分析して、データソース124のインデックスへのアクセスに使用するためのクエリ表現を得ることができる(149)。同時に、及び/又は同じ処理の一環として、クエリプリプロセッサ134は、クエリ特徴を分析し、クエリ分類を提供するために、クエリ分類器142によって使用される同一又は異なるクエリ表現を、分類データ138及び分類マネージャ140の分類モデルと併せて出力することができる(150)。次いで、プロデューサノード122は、クエリ分類をディストリビュータノード120に転送し(151)、それにより他のプロデューサノード(複数可)126、129の1つ以上にアクセスすることの生産性の可能性に関する予測を提供する。
【００６３】
この説明から、たとえばクエリ分類器142のような、プロデューサノード122が、データソース124のインデックスにアクセスするためのクエリ106の前処理に先立ち、及び/又は前処理と同時に、並びにデータソース124に関してのクエリ106の実際の解決(152)に先立ち、クエリ分類の予測をディストリビュータノード120に送信するように構成されることがわかる。言い換えれば、示されているように、そのようなクエリ解決(152)は、クエリ106をプロデューサノード(複数可)126、129に転送する際、ディストリビュータノード120の操作と基本的に並行して進行してもよい。その結果、たとえばアーキテクチャ102の応答時間が、コンパイル済みの結果108の品質と共に、クエリ106に対して向上されうるように、クエリ106に関して転送の決定(複数可)を行うためにディストリビュータノード120のデータソース124から得られる実際の結果を待つ必要はないことがわかる。
【００６４】
次いで、図1Bにおいてさらに、プロデューサノード122は、データソース124に対してクエリ106の解決を完了することができ(152)、その結果をディストリビュータノード120に提供することができる(154)。前述のように、これらの操作は、プロデューサノード126へのクエリ106の転送(156)、及び、プロデューサノード126がデータソース128の結果をディストリビュータ120に転送する操作(160)が必然的に続くデータソース128に対するプロデューサノード126によるクエリ106の後続の解決(158)と並行であってもよく、たとえば重複してもよい。
【００６５】
図1Bの例の少なくとも2つのプロデューサノード122、126から結果が受信されると、ディストリビュータ120は、ディストリビュータ118に転送し(162)、最終的にユーザ104に転送する(164)ために結果をコンパイル済みの結果108にマージすることができる。
【００６６】
図1Bにおいて、プロデューサノード126へのクエリ106の後続の転送により示されるように、クエリ分類器142が、プロデューサノード(複数可)126の生産性に関して肯定的な予測を出力する例(複数可)が示される。予測は、コンパイル済みの結果108が実際に、データソース124からの結果110、112、116内にデータソース128からの結果114を含むので、正しいことが示される。
【００６７】
言うまでもなく、その他の例において、予測は否定であってもよい(たとえば、その他のプロデューサノード(複数可)が生産的な結果を提供しないであろうという強い予想)。そのような場合、ディストリビュータノード120は、少なくとも1つの他のプロデューサノードの予想される生産性に関する少なくとも名目上肯定の予測が確定的に提供される場合を除いて(この場合、クエリ分類器142は分類/予測をディストリビュータノード120に転送する必要はない)、クエリ106をプロデューサノード122を超えて転送しないようにデフォルトの動作で構成されてもよい。
【００６８】
その他の例において、図1Aにおけるように、クエリ106が転送されうるその他のプロデューサノード126、129の可能性が多数あるという状況が生じることもある。この状況において、クエリ分類器142は、クエリ106を、使用可能なプロデューサノードの一部についてのみ生産的な結果をもたらすと予測される(たとえば、プロデューサノード129ではなく、プロデューサノード126から生産的な結果をもたらすと予測される)ものとして分類する場合がある。この場合、及び類似するシナリオにおいて、プロデューサノード122は、クエリ分類を、クエリ106の転送先のターゲットノードとしての少なくとも1つの他のプロデューサノードの識別と共に転送することができる。言い換えれば、たとえば分類マネージャ140及びモニタ136、ひいてはクエリ分類器142は、同一のクエリについて結果として得られる分類/予測が、異なる使用可能なプロデューサノードに関して異なっていてもよいように、異なる使用可能な関連するプロデューサノード126、129の独立した分析に基づいてそれぞれの機能を実行することができる。
【００６９】
図2は、図1Aのプロデューサノード122の例示的な操作を示す流れ図200である。図2において、一連の、別個の、線形の操作として例示の操作を提供する操作202、204、206が示される。しかし、例示の操作は、実際に、重複する、及び/又は部分的に並行して進行してもよいか、又は(本明細書において他に特定の順序が要求されない限りにおいて)図2に示される順序とは異なる順序で生じてもよい。さらに、図2に明示的に示されていない追加又は代替的な動作が含まれてもよい。
【００７０】
次いで、図2において、操作は、階層型のツリー形状の処理アーキテクチャ内の少なくとも1つのディストリビュータノードからプロデューサノードにおいてクエリを受信すること(202)であって、該アーキテクチャが、プロデューサノード及び少なくとも1つの他のプロデューサノードへの分散を含むアーキテクチャ内のクエリを分散するように構成される少なくとも1つのディストリビュータノードを含み、ディストリビュータノードが、プロデューサノードからの結果及び少なくとも1つの他のプロデューサノードからの結果を受信して、コンパイル済みの結果をそこから出力するようにさらに構成されることを含む。たとえば、図1A及び図1Bに関して詳細に説明されるように、クエリ106は、プロデューサノード122においてアーキテクチャ102のディストリビュータノード120から受信されてもよく、ディストリビュータノード120は、示されるように、プロデューサノード122、126、129への分散を含むアーキテクチャ102内でクエリを分散し、それらのうちの少なくとも2つから結果を受信して、そこからコンパイル済みの結果108を提供するように構成される。
【００７１】
操作は、プロデューサノードに関連付けられているプロデューサインデックスの検索に適合するクエリ特徴を使用してクエリ表現を取得して、それによりプロデューサノードから結果を取得するために、ディストリビュータノードから受信されるクエリを前処理(204)することをさらに含むことができる。たとえば、クエリプリプロセッサ134は、前述のように、特定のクエリ106内のそのような特徴の実際の値に関連する特定のクエリ特徴を使用して、データソース124のインデックスに対して処理するためのクエリ106を準備することができる。同時に、クエリプリプロセッサ134は、同じクエリ特徴(たとえば、その同じ又は異なるサブセット)を使用して、クエリ表現を構築することができ、クエリ表現はデータソース124のインデックスへのアクセスに使用されるクエリ表現と同じか又は異なるクエリ表現であってもよい。
【００７２】
最後に図2において、操作は、クエリ表現を使用してクエリを分類し(206)、それに基づいて、少なくとも1つの他のプロデューサノードによるクエリの処理により、少なくとも1つの他のプロデューサノードの結果がコンパイル済みの結果内に含まれるようになるかどうかについての予測を出力することを含むことができる。たとえば、クエリ分類器142は、クエリ表現をクエリ106の特定の関連する値と共に入力し、分類マネージャ140及びモニタ136からの分類モデル、及び対応する分類データ138を入力し、それによりディストリビュータノード120の予測としての役割を果たすクエリ106の分類を出力するように構成されてもよい。説明されるように、予測は、クエリ106が、少なくとも1つの他のプロデューサノード126に転送された場合に、生産的な結果を提供する可能性及び/又は範囲についての指示を提供する。
【００７３】
したがって、図2は、プロデューサノード122の一部の例示的な基本操作を示す。既に説明されているように、多数の追加又は代替的な変形が可能である。たとえば、アーキテクチャ102が、図1Aに示されるアーキテクチャよりも相当に大きい、及び/又ははるかに複雑である場合もあることを理解されたい。たとえば、追加のプロデューサノードはディストリビュータノード118、120と通信してもよく、及び/又はこの例(複数可)に示されているよりも多くのディストリビュータノードが含まれてもよい。
【００７４】
さらに、図1Aにおいて、プロデューサノード122のみが、本明細書において説明されるクエリ分類/予測機能を含むものとして示される。しかし、アーキテクチャ102のプロデューサノードのうちの2つ以上が、そのような機能の一部又は全部、若しくはその変形を含むことができる状況が生じてもよい。そのような特徴は、たとえば、各プロデューサノードが、当該のプロデューサノードによって容易に取得できるが、アーキテクチャ102の他の要素(ディストリビュータノード又はプロデューサノード)が取得するのはより困難又はコストがかかるローカルに使用可能な情報を有することができるので、利益をもたらすことができる。その他の例において、最もカスタマイズされ最適化された予測を提供するため、さまざまな分類モデルが、アーキテクチャ102のさまざまな部分内で実施されてもよい。
【００７５】
図3は、図1Aのシステムの分類マネージャ140の追加の例示的な操作を示す流れ図300である。さらに具体的には、図3において、分類マネージャ140は、教師あり機械学習(SML)技法(複数可)を実行するものとして示され、SMLは一般に、たとえばプロデューサノード(複数可)126、129に分散される現在又は将来のクエリがコンパイル済みの結果108に関して生産的であるかどうかの一般的な予測を取得するためにプロデューサノード(複数可)126、129へのクエリの過去の分散から推論するなど、一般的な仮説を生成するために外部事例から推論する方法を表す。
【００７６】
図3において、クエリ特徴が決定される(302)。たとえば、分類マネージャ140は、クエリプリプロセッサ及び/又は分類データ138と通信して、分類モデルの構築に有用となりうるクエリプリプロセッサ134によって使用されるすべての可能なクエリ特徴を識別する。
【００７７】
次いで、それらのクエリ特徴に対して、値が決定されてもよい(304)。たとえば、モニタ136は、クエリのセット(たとえば、1000のクエリ)をプロデューサノード126(及び/又はプロデューサノード129)に送信(又は送信されるようにトリガする)ことができる。次いで、データソース128(及び/又はデータソース130)からのそれらのクエリの結果は、モニタ136によって追跡及び測定され、クエリ特徴の値は、たとえば分類データ138に格納されてもよい。たとえば、クエリ特徴がクエリの複数の語句を含む場合、モニタ136は、クエリの語句の実際のカウントをそのクエリ特徴の値として決定することができる。同様に、クエリ特徴が、特定の句又は他のクエリ構造に割り当てられたスコアを含む場合、クエリごとにそのようなスコアの実際の値は取得されて格納されてもよい。
【００７８】
次いで、トレーニングデータセットが定義されてもよい(306)。たとえば、分類マネージャ140は、クエリ特徴及び対応する値のサブセット、並びにクエリ/クエリ特徴に対してプロデューサノード(複数可)126、129から得られた対応するクエリ結果を選択することができる。クエリ特徴及びクエリ値の異なるサブセットが、対応するクエリ結果に関連付けるために、操作300の異なる繰り返しの間に選択されてもよいことを理解されたい。場合によっては、比較的少数のクエリ特徴/値が使用されてもよく、これは軽量で計算及び追跡が容易になるという利点を有する。その他の場合には、より多数のクエリ特徴/値が使用されてもよく、さらに正確又は包括的な分類結果をもたらすことができる。
【００７９】
分類アルゴリズムが選択されてもよい(308)。そのような分類アルゴリズムは複数存在するので、ここで必要に応じて選択されてもよい。説明されるように、分類アルゴリズム(及び結果として得られる分類モデル)の成功の基準又は有用性は、クエリ106をプロデューサノード(複数可)126、129に渡すことがコンパイル済みの結果108に関して生産的になるかどうかの予測に、そのようなアルゴリズム/モデルが実際に成功するかどうかということである。しかし、追加又は代替的な基準も存在する。
【００８０】
たとえば、後段でさらに詳細に説明されるように、分類マネージャ140、及び最終的にはクエリ分類器142は、たとえば不正確な予測のような、間違いをおかす可能性があることが理解されよう。つまり、たとえば、クエリ分類器142は、実際にはクエリ106をプロデューサノード126に送信することがコンパイル済みの結果108に関して生産的ではない場合に、クエリ106がプロデューサノード126に送信されるべきであると予測することがある。一方、たとえば、クエリ分類器142は、実際にはクエリ106をプロデューサノード126に送信することがコンパイル済みの結果108に関して生産的であったかもしれない場合に、クエリ106がプロデューサノード126に送信されるべきではないと予測することがある。
【００８１】
前者の場合、クエリ106を送信して非生産的な結果を得るという過ちの代償は、(クエリ106は、前述のように、プロデューサノード122、126において並列に処理されるので遅延が少ないことを除いては)既存のシステムと類似する、プロデューサノード126と不必要な通信を行うために無駄に使用されたネットワークリソースの損失である。一方、生産的な結果が得られたであろう場合にクエリ106を送信しないという過ちは、さらに問題となる可能性を秘めている。そのような過ちは本明細書において損失と呼ばれ、送信されていればユーザに提供されていたはずの有用な結果がユーザから奪われるという事態をまねくことになる。
【００８２】
したがって、失われるクエリ/結果を最小化しながら、生産的なクエリの送信を最大化しようと試みる分類アルゴリズムが選択されてもよい。この場合も同様に、そのような分類アルゴリズムの例は一般によく知られているので、本明細書において詳細に説明することはない。そのような例は、たとえば、決定ツリーのノードは分類されるクエリ結果の特徴を表し、ツリーの枝はノードが仮定する値を表すように、クエリ結果がクエリ特徴値に基づいてソートされる決定ツリーアルゴリズムを含むことができる。次いで、結果は、ルートノードからツリー全体を通して決定ツリーを全検索して、それらの各々の値を使用してノードをソートすることにより分類されてもよい。次いで、決定ツリーは、たとえばルートノード(複数可)から対応するリーフノード(複数可)へのパスごとに規則を作成することによって、(最終的に分類モデルを形成する)分類規則のセットに変換されてもよい。
【００８３】
その他の分類アルゴリズムも存在し、それにより生じる結果を誘発するためのその他の技法も知られている。たとえば、シングルレイヤ又はマルチレイヤのパーセプトロン(perceptron)技法、並びにニューラルネットワーク、統計的学習アルゴリズム(たとえば、ベイジアンネットワーク(Bayesian network))、例に基づく学習、及び/又はサポートベクトルマシン(support vector machine)が使用されてもよい。この場合も同様に、これら又はその他のアルゴリズムの1つ以上が選択され検査されて、最終的に生産的結果の予測におけるそれらの成功及び/又は損失の結果の回避におけるそれらの成功に基づいて実施されてもよい。
【００８４】
分類アルゴリズムが選択されると、対応するトレーニングデータセットが評価されてもよい(310)。たとえば、分類マネージャ140は、クエリ特徴、クエリ値、及び対応するクエリ結果の選択済みのトレーニングデータセット(サブセット)を使用して分類アルゴリズムを実施するように構成されてもよい。たとえば、第1のトレーニングデータセットは、プロデューサノード1226に関してクエリの結果に対応し、第2のトレーニングデータセットは、プロデューサノード129に関して対応してもよい。さらに、異なるトレーニングセットが、プロセス300の異なる繰り返しの間にプロデューサノードごとに検査されてもよい。
【００８５】
結果が満足である場合(312)、それらは分類モデルとして形式化されて、現在及び将来のクエリの評価に使用するため、示されるように、クエリ分類器142に渡されてもよい。それ以外の場合、示されるように、流れ図300の操作を再実行して満足な結果を得る(312)ために、操作302〜310のいずれかが選択されて変更されてもよい。
【００８６】
前述のように、操作300は、初期分類モデルを定式化するまでの初期点において実行されてもよい。次いで、クエリ分類器142は、それに応じてある期間にわたり分類モデルを実施することができる。しかし、時間の経過に伴って、分類モデルが古いものになり、着信クエリの分類にあまり効果的ではなくなる状態が生じることがある。
【００８７】
この状況を回避するため、モニタ136は、プロデューサノード(複数可)126、129を定期的にトリガして、そこから得られる結果を検査、及び/又はそれに応じて分類モデルを更新することができる。つまり、たとえば、モニタ136は、クエリ分類器がプロデューサノード126からの生産的な結果を予測するかどうかにかかわらず、クエリをプロデューサノード126に送信することができる。次いで、分類マネージャ140は、分類モデルが引き続き満足であるか、又は更新する必要があるかどうかを決定するために、予測される結果に対して結果を比較することができる。
【００８８】
図4A〜図4Cは、分類モデルを構築するために使用される分類データを示す表である。図4Aにおいて、クエリ特徴1 402及びクエリ特徴2 404という、(たとえば、クエリプリプロセッサ134により決定される)2つの特徴が考慮されると仮定される。第3のクエリ特徴であるクエリ特徴3 406は、存在するものと示されているが、検査されている特定のトレーニングデータセットについて考慮されない。示されているように、クエリ特徴402は、A又はBのいずれかの値を有することができるが、クエリ特徴404はC又はDの値を有することができる。
【００８９】
次いで、合計1000のクエリは、たとえばプロデューサノード126に送信されてもよい。この場合、列408、410は送信の結果を追跡する。たとえば、1000のクエリの第1のクエリは、プロデューサノード126に送信されてもよく、生産的な結果が得られる場合、結果は列408内で1回カウントされ、クエリが送信されるべき(すべきだった)ことを指示する。一方、第2のクエリがクエリ特徴ACと共に送信されて、非生産的な結果に達した場合、結果は列410内で1回カウントされ、クエリがドロップされるべき(されるべきだった)ことを指示する。
【００９０】
このように1000のクエリの送信は続行することができ、結果は列408、410が満杯になるまで追跡されてもよい。次いで、新しく受信するクエリで行われるべき将来のアクションに関する決定が行われてもよい。
【００９１】
たとえば、クエリ特徴の組み合わせ(クエリ表現)ACについて、87の結果が送信を指示したが、45の結果がドロップを指示した。したがって、特徴ACを有する将来のクエリは、列412に示されるように、送信されるべきであることが決定されてもよい。同様に、クエリ特徴BDについて、92の「送信すべき」結果及び28の「ドロップすべき」結果は、そのようなクエリの将来のインスタンスが送信されるべきであることを指示する。逆に、クエリ特徴ADについて、20の「送信すべき」結果及び198の「ドロップすべき」結果は、そのようなクエリの将来のインスタンスがドロップされるべきであることを指示する。
【００９２】
特徴BCを有するクエリの場合、224のクエリが「送信すべき」と指示されるが、307は「ドロップすべき」と指示される。したがって、将来のクエリにどのアクションを取るべきかは明らかではない。
【００９３】
図4Bのさらなる分析において、1000のクエリは特徴BCと共に送信され、列414において、そのようなクエリがすべて送信される場合、実際に403が(生産的な結果が得られたので)送信されていることがわかるが、列416において、そのようなクエリが送信されると、380は実際にドロップされるべきであったことがわかる。逆に、ドロップされる場合、列414は、送信されるべきであった20のクエリとドロップされるべきであった198のクエリを示している。
【００９４】
したがって、送信されるべきであったが送信されなかった20のクエリは、ユーザ104への生産的な結果を拒否した損失クエリを表す。一方、198のクエリは、ドロップされた及びドロップされるべきだった(すなわち、いずれにせよ生産的な結果をもたらすことはなかった)クエリを表し、したがってネットワークトラフィック及びリソースの節約を表す。このようにして、生産的なクエリの2%は、ネットワークトラフィックの19.8%を節約するために失われる。
【００９５】
同様の分析が図4Cにも適用され、ここでは、クエリ特徴BCを有する1000のクエリをドロップする影響に対して結果が検討される。列418、420から、生産的である244の結果(24.4%)がドロップされて失われるが、505(50.5%)が正しくドロップされる(そして対応するネットワークトラフィックの量が保持される)ことがわかる。
【００９６】
図5は、図1Aのシステムが動作することのできる例示的なコンピューティング環境を示すブロック図である。さらに具体的には、図5は、図1Aのシステムを実施するために使用されうる例示的又は典型的なコンピューティングデバイス及び関連する要素を示すブロック図である。
【００９７】
具体的には、図5は、本明細書において説明される技法と共に使用されうる、汎用コンピュータデバイス500及び汎用モバイルコンピュータデバイス550の例を示す。コンピューティングデバイス500は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、及びその他の適切なコンピュータのような、デジタルコンピュータのさまざまな形態を表すことが意図される。コンピューティングデバイス550は、携帯情報端末、携帯電話、スマートフォン、及びその他の類似するコンピューティングデバイスのような、モバイルデバイスのさまざまな形態を表すことが意図される。本明細書において示されるコンポーネント、それらの接続及び関係、並びにそれらの機能は、例示的なものに過ぎないことを意味しており、本文書において説明及び/又は特許請求の範囲に記載される本発明の実施態様を限定することを意味してはいない。
【００９８】
コンピューティングデバイス500は、プロセッサ502、メモリ504、ストレージデバイス506、メモリ504及び高速拡張ポート510に接続する高速インターフェイス508、並びに低速バス514及びストレージデバイス506に接続する低速インターフェイス512を含む。コンポーネント502、504、506、508、510、及び512は各々、さまざまなバスを使用して相互接続されており、共通のマザーボード上、又は必要に応じてその他の方法で取り付けられてもよい。プロセッサ502は、高速インターフェイス508に結合されたディスプレイ516のような、外部入出力デバイス上にGUIのグラフィカル情報を表示するためにメモリ504又はストレージデバイス506に格納されている命令を含む、コンピューティングデバイス500内で実行する命令を処理することができる。その他の実施態様において、複数のプロセッサ及び/又は複数のバスが、必要に応じて、複数のメモリ及び複数のタイプのメモリと共に使用されてもよい。また、複数のコンピューティングデバイス500を、各々のデバイスが必要な操作の一部を提供するように(たとえば、サーババンク、ブレードサーバのグループ、又はマルチプロセッサシステムとして)接続してもよい。
【００９９】
メモリ504は、コンピューティングデバイス500内の情報を格納する。1つの実施態様において、メモリ504は揮発性メモリユニット(複数可)である。その他の実施態様において、メモリ504は不揮発性メモリユニット(複数可)である。メモリ504はまた、磁気又は光ディスクのような、別の形態のコンピュータ可読媒体であってもよい。
【０１００】
ストレージデバイス506は、コンピューティングデバイス500の大容量ストレージを提供することができる。1つの実施態様において、ストレージデバイス506は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、又はテープデバイス、フラッシュメモリ又はその他の類似するソリッドステートメモリデバイス、若しくはストレージエリアネットワーク又は他の構成におけるデバイスを含むデバイスのアレイのような、コンピュータ可読媒体であってもよいか、又はコンピュータ可読媒体を含むことができる。コンピュータプログラム製品は、情報キャリアにおいて有形に具現されてもよい。コンピュータプログラム製品はまた、実行されるとき、上記で説明されるような1つ以上の方法を実行する命令を含むことができる。情報キャリアは、メモリ504、ストレージデバイス506、又はプロセッサ502上のメモリのような、コンピュータ又は機械可読の媒体である。
【０１０１】
該高速コントローラ508は、コンピューティングデバイス500の帯域幅集約的な操作を管理し、低速コントローラ512は、低帯域幅集約的な操作を管理する。そのような機能の割り振りは、例示的なものに過ぎない。1つの実施態様において、高速コントローラ508は、メモリ504、ディスプレイ516(たとえば、グラフィックスプロセッサ又はアクセラレータを通じて)、及びさまざまな拡張カード(図示せず)を受け入れることができる高速拡張ポート510に結合される。実施態様において、低速コントローラ512は、ストレージデバイス506及び低速拡張ポート514に結合される。さまざまな通信ポート(たとえば、USB、ブルートゥース、イーサネット、無線イーサネット)を含むことができる低速拡張ポートは、キーボード、ポインティングデバイス、スキャナのような1つ以上の入出力デバイス、若しくはたとえばネットワークアダプタを通じてスイッチ又はルータのようなネットワーキングデバイスに結合されてもよい。
【０１０２】
コンピューティングデバイス500は、図に示されるように、多数のさまざまな形態で実施されてもよい。たとえば、標準サーバ520、又はそのようなサーバのグループで多数回実施されてもよい。コンピューティングデバイス500はまた、ラックサーバシステム524の一部として実施されてもよい。加えて、ラップトップコンピュータ522のようなパーソナルコンピュータにおいて実施されてもよい。あるいは、コンピューティングデバイス500からのコンポーネントは、デバイス550のようなモバイルデバイス(図示せず)の他のコンポーネントと組み合わされてもよい。そのようなデバイスは各々、コンピューティングデバイス500、550の1つ以上を含むことができ、システム全体は、相互に通信する複数のコンピューティングデバイス500、550で構成されてもよい。
【０１０３】
コンピューティングデバイス550は、特に、プロセッサ552、メモリ564、ディスプレイ554のような入出力デバイス、通信インターフェイス566、及び送受信機568を含む。デバイス550はまた、追加のストレージを提供するために、マイクロドライブ又はその他のデバイスのようなストレージデバイスを備えていてもよい。コンポーネント550、552、564、554、566、及び568は各々、さまざまなバスを使用して相互接続されており、いくつかのコンポーネントは、共通のマザーボード上、又は必要に応じてその他の方法で取り付けられてもよい。
【０１０４】
プロセッサ552は、メモリ564に格納されている命令を含むコンピューティングデバイス550内の命令を実行することができる。プロセッサは、別個の複数のアナログ及びデジタルプロセッサを含むチップのチップセットとして実施されてもよい。プロセッサは、たとえば、ユーザインターフェイス、デバイス550によって実行されるアプリケーション、デバイス550による無線通信の制御のような、デバイス550のその他のコンポーネントの協調をもたらすことができる。
【０１０５】
プロセッサ552は、制御インターフェイス558及びディスプレイ554に結合されたディスプレイインターフェイス556を通じてユーザと通信することができる。ディスプレイ554は、たとえば、TFT LCD(薄膜トランジスタ液晶ディスプレイ(Thin-Film-Transistor Liquid Crystal Display))又はOLED(有機発光ダイオード(Organic Light Emitting Diode))ディスプレイ、又はその他の適切なディスプレイ技術であってもよい。ディスプレイインターフェイス556は、ディスプレイ554にグラフィカル及びその他の情報をユーザに提示させるための適切な回路を備えることができる。制御インターフェイス558は、ユーザからコマンドを受信して、それらをプロセッサ552にサブミットするために変換することができる。加えて、外部インターフェイス562は、デバイス550がその他のデバイスと近隣エリア通信を行えるように、プロセッサ552との通信に提供されてもよい。外部インターフェイス562は、たとえば、一部の実施態様における有線通信のため、又はその他の実施態様における無線通信のために提供することができ、複数のインターフェイスもまた使用されてもよい。
【０１０６】
メモリ564は、コンピューティングデバイス550内の情報を格納する。メモリ564は、コンピュータ可読媒体(複数可)、揮発性メモリユニット(複数可)、又は不揮発性メモリユニット(複数可)のうちの1つ以上として実施されてもよい。拡張メモリ574もまた、たとえばSIMM(Single In Line Memory Module)カードインターフェイスを含む拡張インターフェイス572を通じてデバイス550に提供され接続されてもよい。そのような拡張メモリ574は、デバイス550の追加のストレージスペースをもたらすことができるか、又はデバイス550のアプリケーション又はその他の情報を格納することもできる。特に、拡張メモリ574は、上記で説明されるプロセスを実行するか又は補足するための命令を含むことができ、機密保護情報もまた含むことができる。したがって、たとえば、拡張メモリ574は、デバイス550のセキュリティモジュールとして提供されてもよく、デバイス550を安全に使用できるようにする命令でプログラムされてもよい。加えて、ハッキング不可能な方法でSIMMカード上に識別情報を配置することなど、機密保護アプリケーションは、追加情報と共にSIMMカードを介して提供されてもよい。
【０１０７】
たとえば、メモリは、後段で説明されるように、フラッシュメモリ及び/又はNVRAMメモリを含むことができる。1つの実施態様において、コンピュータプログラム製品は、情報キャリアにおいて有形に具現される。コンピュータプログラム製品は、実行されるとき、上記で説明されるような1つ以上の方法を実行する命令を含む。情報キャリアは、たとえば送受信機568又は外部インターフェイス562を介して受信されうる、メモリ564、拡張メモリ574、又はプロセッサ552上のメモリのような、コンピュータ又は機械可読の媒体である。
【０１０８】
デバイス550は、必要に応じてデジタル信号処理回路を含むことができる通信インターフェイス566を通じて無線で通信することができる。通信インターフェイス566は、特にGSMボイスコール、SMS、EMS、又はMMSメッセージング、CDMA、TDMA、PDC、WCDMA、CDMA2000、又はGPRSのような、さまざまなモード又はプロトコルによる通信を提供することができる。そのような通信は、たとえば、無線周波数送受信機568を通じて行われてもよい。加えて、短距離通信は、ブルートゥース、WiFi、又はその他のそのような送受信機(図示せず)などを使用して行われてもよい。加えて、GPS(全地球測位システム(Global Positioning System))受信機モジュール570は、追加のナビゲーション及び位置に関連する無線データをデバイス550に提供することができ、このデータはデバイス550で稼働するアプリケーションによって必要に応じて使用されてもよい。
【０１０９】
デバイス550はまた、ユーザから口頭の情報を受信してそれを使用可能なデジタル情報に変換することができるオーディオコーデック560を使用して音声により通信することもできる。オーディオコーデック560は同様に、たとえばデバイス550のハンドセットにおいて、スピーカ経由などにより、ユーザに可聴音を生成することができる。そのような音は、音声電話コールからの音を含むことができ、録音された音(たとえば、ボイスメッセージ、音楽ファイルなど)を含むことができ、またデバイス550で動作しているアプリケーションにより生成された音を含むこともできる。
【０１１０】
コンピューティングデバイス550は、図に示されるように、多数のさまざまな形態で実施されてもよい。たとえば、コンピューティングデバイス550は、携帯電話580として実施されてもよい。コンピューティングデバイス550はまた、スマートフォン582、携帯情報端末、又はその他の類似するモバイルデバイスの一部として実施されてもよい。
【０１１１】
本明細書において説明されるシステム及び技法のさまざまな実施態様は、デジタル電子回路、集積回路、特殊設計のASIC(特殊用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はその組み合わせで実現されてもよい。それらのさまざまな実施態様は、ストレージシステムからデータ及び命令を受信してストレージシステムにデータ及び命令を送信するように結合された、特殊用途又は汎用であってもよい少なくとも1つのプログラマブルプロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含むプログラマブルシステム上で実行可能及び/又は解釈可能な1つ以上のコンピュータプログラムにおいて実施することができる。
【０１１２】
それらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも呼ばれる)は、プログラマブルプロセッサの機械命令を含み、高水準プロシージャ型及び/又はオブジェクト指向言語において、及び/又はアセンブリ/機械語において実施されてもよい。本明細書において使用されるように、「機械可読媒体」、「コンピュータ可読媒体」という用語は、機械可読信号として機械命令を受信する機械可読媒体を含む、機械命令及び/又はデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置及び/又はデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブル論理デバイス(PLD))を示す。「機械可読信号」という用語は、機械命令及び/又はデータをプログラマブルプロセッサに提供するために使用される任意の信号を示す。
【０１１３】
ユーザとの対話を提供するため、本明細書において説明されるシステム及び技法は、情報をユーザに表示するための(たとえばCRT(ブラウン管)又はLCD(液晶ディスプレイ)モニタのような)表示デバイス、並びにキーボード及び(たとえばマウス又はトラックボールのような)ユーザがコンピュータに入力を行うことができるポインティングデバイスを有するコンピュータで実施されてもよい。その他の種類のデバイスも、ユーザとの対話を提供するために使用されてもよく;たとえば、ユーザに提供されるフィードバックは(たとえば視覚フィードバック、聴覚フィードバック、又は触覚フィードバックのような)任意の形態の知覚的フィードバックであってもよく;ユーザからの入力は、音響、発語、又は触覚入力を含む任意の形態で受信されてもよい。
【０１１４】
本明細書において説明されるシステム及び技法は(たとえばデータサーバのような)バックエンドコンポーネントを含むか、又は(たとえばアプリケーションサーバのような)ミドルウェアコンポーネントを含むか、又は(たとえばユーザが本明細書において説明されるシステム及び技法の実施態様と対話することができるグラフィカルユーザインターフェイス又はWebブラウザを有するクライアントコンピュータのような)フロントエンドコンポーネントを含むか、若しくはそのようなバックエンド、ミドルウェア、又はフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムにおいて実施されてもよい。システムのコンポーネントは、(たとえば通信ネットワークのような)デジタルデータ通信の任意の形態又は媒体によって相互接続されてもよい。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、及びインターネットを含む。
【０１１５】
コンピューティングシステムは、クライアント及びサーバを含むことができる。クライアント及びサーバは一般に、相互に離れており、通常は通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータで稼働し、相互にクライアント-サーバの関係を有するコンピュータプログラムによって生じる。
【０１１６】
加えて、図面に示される任意の論理フローは、望ましい結果を達成するために、示される特定の順序、又は連続の順序を必要とはしない。加えて、その他のステップが提供されてもよいか、ステップは説明されるフローから省略されてもよく、その他のコンポーネントが、説明されるシステムに追加されるか又は除外されてもよい。したがって、その他の実施態様は、後段の特許請求の範囲に含まれる。
【０１１７】
特に詳細に説明された上記の実施態様が例示又は可能な実施態様に過ぎないこと、及び含めてもよい多くの他の組み合わせ、追加、又は代替があることを理解されたい。
【０１１８】
さらに、コンポーネントの特定の命名、用語の大文字化、属性、データ構造、若しくは任意の他のプログラミング又は構造的態様は、必須又は重要ではなく、本発明又はその特徴を実施する機構は、異なる名称、フォーマット、又はプロトコルを有することができる。さらに、システムは、説明されるようにハードウェア及びソフトウェアの組み合わせを介して、又は完全にハードウェア要素で実施されてもよい。さらに、本明細書において説明されるさまざまなシステムコンポーネント間の機能の特定の部分は例示的なものに過ぎず、必須ではない;単一システムコンポーネントによって実行される機能は、代わりに複数コンポーネントによって実行されてもよく;複数コンポーネントによって実行される機能は、代わりに単一コンポーネントによって実行されてもよい。
【０１１９】
上記の説明の一部は、情報への操作のアルゴリズム及びシンボルによる表現の観点から特徴を提示する。それらのアルゴリズムによる説明及び表現は、データ処理の技術分野の当業者によって使用され、他の当業者にその作業の要旨を最も効果的に伝達することができる。それらの操作は、機能的又は論理的に説明されているが、コンピュータプログラムによって実施されるものと理解される。さらに、操作のそれらの配置をモジュールとして、又は機能名により示すことが、一般性を失うことなく、場合によっては便利であることも明らかとなっている。
【０１２０】
特に具体的な記述がない限り、上記の説明から明らかなように、説明全体を通じて、「処理(processing)」、又は「演算(computing)」、又は「(計算(calculating)」、又は「決定(determining)」、又は「表示(displaying)」、又は「提供(providing)」などの用語を使用する説明は、コンピュータシステムメモリ又はレジスタ若しくは他のそのような情報ストレージ、伝送又は表示デバイス内の物理的(電子的)量として表されるデータを操作及び変換する、コンピュータシステム、又は類似する電子コンピューティングデバイスのアクション及びプロセスを示す。
【０１２１】
本明細書において説明される特定の態様の操作及び命令は、アルゴリズム(複数可)の形態をとる。プロセス操作及び命令は、ソフトウェア、ファームウェア、又はハードウェアにおいて具現されてもよく、ソフトウェアにおいて具現される場合、リアルタイムのネットワークオペレーティングシステムにより使用されるさまざまなプラットフォーム上に常駐し、それらから操作されるようにダウンロードされてもよいことに留意されたい。
【０１２２】
本明細書において説明される操作を実行するための装置は、要求される目的のために特別に構築されてもよいか、又はコンピュータによってアクセスすることができ、汎用コンピュータを説明される操作又は類似する操作を実行するように設計された特殊用途コンピュータにするコンピュータ可読媒体上に格納されたコンピュータプログラムによって選択的にアクティブ化又は再構成される汎用コンピュータを備えることもできる。そのようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD-ROM、光磁気ディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気又は光カード、特殊用途向け集積回路(ASIC)などの任意のタイプのディスク、又は電子命令を格納するために適した、各々コンピュータシステムバスに結合された任意のタイプの媒体のような(ただし、これらに限定されることはない)コンピュータ可読ストレージ媒体に格納されてもよい。さらに、本明細書において参照されるコンピュータは、シングルプロセッサを含むことができ、コンピューティング容量の増大に備えてマルチプロセッサ設計を採用するアーキテクチャであってもよい。
【０１２３】
実施態様は、たとえばデータサーバのようなバックエンドコンポーネントを含むか、又はたとえばアプリケーションサーバのようなミドルウェアコンポーネントを含むか、又はたとえばユーザが実施態様と対話することができるグラフィカルユーザインターフェイス又はWebブラウザを有するクライアントコンピュータのようなフロントエンドコンポーネントを含むか、若しくはそのようなバックエンド、ミドルウェア、又はフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムにおいて実施されてもよい。コンポーネントは、たとえば通信ネットワークのようなデジタルデータ通信の任意の形態又は媒体によって相互接続されてもよい。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、及びたとえばインターネットのようなワイドエリアネットワーク(WAN)を含む。
【０１２４】
本明細書において提示されるアルゴリズム及び操作は、任意の特定のコンピュータ又はその他の装置に本質的に関連するものではない。さまざまな汎用システムもまた、本明細書における教示に従ってプログラムと共に使用されてもよいか、又は説明される操作、又は類似する操作を実行するためにさらに特化された装置を構築することが便利であることが判明する場合もある。多様なそれらのシステムの構造は、等価の変形と共に、当業者には明らかとなろう。加えて、本発明の説明は、任意の特定のプログラミング言語を参照して説明されてはいない。さまざまなプログラミング言語が、本発明の説明の教示を実施するために使用されてもよく、特定の言語のあらゆる明示的又は暗黙的参照は例示として提供される。
【０１２５】
説明された実施態様の特定の特徴が本明細書において説明されるように示されたが、当業者には多数の修正、代替、変更、及び等価が考案されよう。したがって、添付の特許請求の範囲は、すべてのそのような修正及び変更を、実施態様の範囲内に含まれるものとして扱うことが意図されていることを理解されたい。
【図１Ａ】
2012530289.tif 000003
【図１Ｂ】
2012530289.tif 000004
【図２】
2012530289.tif 000005
【図３】
2012530289.tif 000006
【図４】
2012530289.tif 000007
【図５】
2012530289.tif 000008
【国際調査報告】
2012530289.tif 000009