図1は、ソーシャルネットワーキング・システムに関連付けられている例示的なネットワーク環境100を示している。ネットワーク環境100は、ネットワーク110によって互いにつながっているクライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170を含む。図1は、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の特定の構成を示しているが、本開示は、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の任意の適切な構成を想定している。限定ではなく、例として、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170のうちの複数は、ネットワーク110を迂回して、互いに直接つながることが可能である。別の例として、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170のうちの複数は、物理的にまたは論理的に、全体としてまたは部分的に互いに同一場所に配置されることが可能である。その上、図1は、特定の数のクライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を示しているが、本開示は、任意の適切な数のクライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を想定している。限定ではなく、例として、ネットワーク環境100は、複数のクライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を含むことができる。
本開示は、任意の適切なネットワーク110を想定している。限定ではなく、例として、ネットワーク110の1つまたは複数の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイド・エリア・ネットワーク(WAN)、ワイヤレスWAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、セルラー電話ネットワーク、またはこれらのうちの複数の組合せを含むことができる。ネットワーク110は、1つまたは複数のネットワーク110を含むことができる。
リンク150は、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170を通信ネットワーク110に、または互いに接続することができる。本開示は、任意の適切なリンク150を想定している。特定の実施形態においては、1つまたは複数のリンク150は、1つもしくは複数の有線リンク(たとえば、デジタル・サブスクライバ・ライン(DSL)もしくはデータ・オーバ・ケーブル・サービス・インタフェース仕様(DOCSIS)など)、ワイヤレス・リンク(たとえば、Wi−Fiもしくはワールドワイド・インターオペラビリティー・フォー・マイクロウェーブ・アクセス(WiMAX)など)、または光リンク(たとえば、同期光ネットワーク(SONET)もしくは同期デジタル階層(SDH)など)を含む。特定の実施形態においては、1つまたは複数のリンク150はそれぞれ、アド・ホック・ネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部分、PSTNの一部分、セルラー・テクノロジーベースのネットワーク、衛星通信テクノロジーベースのネットワーク、別のリンク150、または複数のそのようなリンク150の組合せを含む。リンク150は、ネットワーク環境100の全体を通じて必ずしも同じである必要はない。1つまたは複数の第1のリンク150は、1つまたは複数の点において1つまたは複数の第2のリンク150とは異なることが可能である。
特定の実施形態においては、クライアント・システム130は、クライアント・システム130によって実装またはサポートされる適切な機能を実行することができる、ハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含む電子デバイスであることが可能である。限定ではなく、例として、クライアント・システム130は、デスクトップ・コンピュータ、ノートブック・コンピュータもしくはラップトップ・コンピュータ、ネットブック、タブレット・コンピュータなどのコンピュータ・システム、eブック・リーダ、GPSデバイス、カメラ、携帯情報端末(PDA)、ハンドヘルド電子デバイス、セルラー電話、スマートフォン、その他の適切な電子デバイス、またはそれらの任意の適切な組合せを含むことができる。本開示は、任意の適切なクライアント・システム130を想定している。クライアント・システム130は、クライアント・システム130のネットワーク・ユーザがネットワーク110にアクセスすることを可能にすることができる。クライアント・システム130は、自分のユーザがその他のクライアント・システム130のその他のユーザと通信することを可能にすることができる。
特定の実施形態においては、クライアント130は、MICROSOFT INTERNET EXPLORER、GOOGLE CHROME、またはMOZILLA FIREFOXなどのウェブ・ブラウザ132を含むことができ、1つまたは複数のアドオン、プラグイン、またはTOOLBARもしくはYAHOO TOOLBARなどのその他の拡張を有することができる。クライアント・システム130のユーザは、ウェブ・ブラウザ132を特定のサーバ(サーバ162、またはサードパーティ・システム170に関連付けられているサーバなど)へ導くユニフォーム・リソース・ロケータ(URL)またはその他のアドレスを入力することができ、ウェブ・ブラウザ132は、ハイパー・テキスト転送プロトコル(HTTP)要求を生成して、そのHTTP要求をサーバに通信することができる。サーバは、そのHTTP要求を受け入れて、そのHTTP要求に応答して1つまたは複数のハイパー・テキスト・マークアップ言語(HTML)ファイルをクライアント・システム130に通信することができる。クライアント・システム130は、ユーザに提示するためにサーバからのHTMLファイルに基づいてウェブページをレンダリングすることができる。本開示は、任意の適切なウェブページ・ファイルを想定している。限定ではなく、例として、ウェブページは、特定のニーズに従って、HTMLファイル、拡張可能ハイパー・テキスト・マークアップ言語(XHTML)ファイル、または拡張可能マークアップ言語(XML)ファイルからレンダリングすることができる。そのようなページは、限定ではなく、例として、JAVASCRIPT(登録商標)、JAVA(登録商標)、MICROSOFT SILVERLIGHTで書かれたスクリプトなどのスクリプト、AJAX(Asynchronous JAVASCRIPT(登録商標) and XML)などのマークアップ言語とスクリプトの組合せなどを実行することもできる。本明細書においては、ウェブページへの参照は、適切な場合には、(そのウェブページをレンダリングするためにブラウザが使用することができる)1つまたは複数の対応するウェブページ・ファイルを含み、その逆もまた同様である。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、オンライン・ソーシャル・ネットワークをホストすることができるネットワークアドレス可能なコンピューティング・システムであることが可能である。ソーシャルネットワーキング・システム160は、たとえば、ユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャルグラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、格納すること、受け取ること、および送信することが可能である。ソーシャルネットワーキング・システム160は、ネットワーク環境100のその他のコンポーネントによって直接、またはネットワーク110を介してアクセスされることが可能である。特定の実施形態においては、ソーシャルネットワーキング・システム160は、1つまたは複数のサーバ162を含むことができる。それぞれのサーバ162は、単一のサーバ、または複数のコンピュータもしくは複数のデータセンターにわたる分散サーバであることが可能である。サーバ162は、限定ではなく、例として、ウェブ・サーバ、ニュース・サーバ、メール・サーバ、メッセージ・サーバ、広告サーバ、ファイル・サーバ、アプリケーション・サーバ、Exchangeサーバ、データベース・サーバ、プロキシ・サーバ、本明細書において記述されている機能もしくはプロセスを実行するのに適している別のサーバ、またはそれらの任意の組合せなど、さまざまなタイプのものであることが可能である。特定の実施形態においては、それぞれのサーバ162は、サーバ162によって実装またはサポートされる適切な機能を実行するためのハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含むことができる。特定の実施形態においては、ソーシャルネットワーキング・システム164は、1つまたは複数のデータ・ストア164を含むことができる。データ・ストア164は、さまざまなタイプの情報を格納するために使用されることが可能である。特定の実施形態においては、データ・ストア164内に格納されている情報は、特定のデータ構造に従って編成されることが可能である。特定の実施形態においては、それぞれのデータ・ストア164は、リレーショナル・データベース、カラムナ(columnar)・データベース、相関(correlation)データベース、または好適なデータベースであることが可能である。本開示は、複数の特定のタイプのデータベースを記載するかまたは例示するが、本開示は、好適なタイプのデータベースのうちのいずれかを考慮する。特定の実施形態は、クライアント・システム130、ソーシャルネットワーキング・システム160、またはサードパーティ・システム170が、データ・ストア164内に格納されている情報を管理すること、取り出すこと、修正すること、追加すること、または削除することを可能にするインタフェースを提供することができる。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、1つまたは複数のソーシャルグラフを1つまたは複数のデータ・ストア164内に格納することができる。特定の実施形態においては、ソーシャルグラフは、複数のノード(複数のユーザ・ノード(それぞれが、特定のユーザに対応している)、または複数のコンセプト・ノード(それぞれが、特定のコンセプトに対応している)を含むことができる)と、ノード同士をつなげる複数のエッジとを含むことができる。ソーシャルネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザに、その他のユーザと通信および対話する能力を提供することができる。特定の実施形態においては、ユーザたちは、ソーシャルネットワーキング・システム160を介してオンライン・ソーシャル・ネットワークに参加し、次いで、自分たちがつながりたいと望むソーシャルネットワーキング・システム160のその他の複数のユーザにつながり(すなわち、関係)を付加することができる。本明細書においては、「友達」という用語は、ユーザがソーシャルネットワーキング・システム160を介して、つながり、関連付け、または関係を形成しているソーシャルネットワーキング・システム160のその他の任意のユーザを指すことができる。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、ソーシャルネットワーキング・システム160によってサポートされるさまざまなタイプのアイテムまたはオブジェクトに関してアクションを取る能力をユーザに提供することができる。限定ではなく、例として、それらのアイテムおよびオブジェクトは、ソーシャルネットワーキング・システム160のユーザが属することが可能であるグループもしくはソーシャル・ネットワーク、ユーザが関心を抱く可能性があるイベントもしくはカレンダー・エントリー、ユーザが使用することができるコンピュータベースのアプリケーション、ユーザがサービスを介してアイテムを購入もしくは販売することを可能にするトランザクション、ユーザが実行することができる広告との対話、またはその他の適切なアイテムもしくはオブジェクトを含むことができる。ユーザは、ソーシャルネットワーキング・システム160において、またはサードパーティ・システム170の外部システム(ソーシャルネットワーキング・システム160とは別個のものであって、ネットワーク110を介してソーシャルネットワーキング・システム160に結合されている)によって表されることが可能である任意のものと対話することができる。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、さまざまなエンティティ同士をリンクできることが可能である。限定ではなく、例として、ソーシャルネットワーキング・システム160は、ユーザたちが互いに対話すること、ならびにサードパーティ・システム170もしくはその他のエンティティからのコンテンツを受け取ることを可能にすることができ、またはユーザたちがアプリケーション・プログラミング・インタフェース(API)もしくはその他の通信チャネルを通じてこれらのエンティティと対話することを可能にすることができる。
特定の実施形態においては、サードパーティ・システム170は、1つもしくは複数のタイプのサーバ、1つもしくは複数のデータ・ストア、1つもしくは複数のインタフェース(APIを含むが、それには限定されない)、1つもしくは複数のウェブ・サービス、1つもしくは複数のコンテンツ・ソース、1つもしくは複数のネットワーク、または(たとえば、サーバが通信することができる)その他の任意の適切なコンポーネントを含むことができる。サードパーティ・システム170は、ソーシャルネットワーキング・システム160を運営しているエンティティとは異なるエンティティによって運営されることが可能である。しかしながら、特定の実施形態においては、ソーシャルネットワーキング・システム160およびサードパーティ・システム170は、ソーシャルネットワーキング・システム160またはサードパーティ・システム170のユーザにソーシャルネットワーキング・サービスを提供するために互いに連携して機能することができる。この意味において、ソーシャルネットワーキング・システム160は、サードパーティ・システム170などのその他のシステムがインターネットを介してソーシャルネットワーキング・サービスおよび機能をユーザに提供するために使用することができるプラットフォーム、またはバックボーンを提供することができる。
特定の実施形態においては、サードパーティ・システム170は、サードパーティ・コンテンツ・オブジェクト・プロバイダを含むことができる。サードパーティ・コンテンツ・オブジェクト・プロバイダは、コンテンツ・オブジェクトの1つまたは複数のソースを含むことができ、それらのソースは、クライアント・システム130に通信されることが可能である。限定ではなく、例として、コンテンツ・オブジェクトは、ユーザにとって関心がある物またはアクティビティーに関する情報、たとえば、映画の開始時刻、映画のレビュー、レストランのレビュー、レストランのメニュー、製品の情報およびレビュー、またはその他の適切な情報などを含むことができる。限定ではなく、別の例として、コンテンツ・オブジェクトは、インセンティブ・コンテンツ・オブジェクト、たとえば、クーポン、ディスカウント・チケット、ギフト券、またはその他の適切なインセンティブ・オブジェクトを含むことができる。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、さまざまなサーバ、サブシステム、プログラム、モジュール、ログ、およびデータ・ストアを含むことができる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、ウェブ・サーバ、アクション・ロガー、API要求サーバ、関連性およびランキング・エンジン、コンテンツ・オブジェクト分類子、通知コントローラ、アクション・ログ、サードパーティ・コンテンツ・オブジェクト露出ログ、推測モジュール、承認/プライバシー・サーバ、検索モジュール、広告ターゲティング・モジュール、ユーザインターフェース・モジュール、ユーザプロフィール・ストア、つながりストア、サードパーティ・コンテンツ・ストア、またはロケーション・ストアのうちの1つまたは複数を含むことができる。ソーシャルネットワーキング・システム160は、適切なコンポーネント、たとえば、ネットワーク・インターフェース、セキュリティー・メカニズム、ロード・バランサ、フェイルオーバ・サーバ、管理およびネットワークオペレーション・コンソール、その他の適切なコンポーネント、またはそれらの任意の適切な組合せを含むこともできる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、ユーザ・プロフィールを格納するための1つまたは複数のユーザプロフィール・ストアを含むことができる。ユーザ・プロフィールは、たとえば、経歴情報、人口統計学的情報、挙動情報、ソーシャルな情報、またはその他のタイプの記述的情報、たとえば、職業経験、学歴、趣味もしくは好み、関心、親近感、またはロケーションを含むことができる。関心情報は、1つまたは複数のカテゴリーに関連した関心を含むことができる。カテゴリーは、一般的または具体的であることが可能である。限定ではなく、例として、ユーザが、あるブランドの靴に関する記事に対して「いいね!」を表明した場合には、カテゴリーは、そのブランド、または「靴」もしくは「衣類」という一般的なカテゴリーであることが可能である。ユーザに関するつながり情報を格納するために、つながりストアが使用されることが可能である。つながり情報は、類似のもしくは共通の職業経験、グループ・メンバーシップ、趣味、学歴を有しているか、または何らかの形で関連しているか、もしくは共通の属性を共有しているユーザどうしを示すことができる。つながり情報は、さまざまなユーザおよびコンテンツ(内部および外部の両方)の間におけるユーザ定義のつながりを含むこともできる。ネットワーク110を介してソーシャルネットワーキング・システム160を1つもしくは複数のクライアント・システム130または1つもしくは複数のサードパーティ・システム170にリンクさせるために、ウェブ・サーバが使用されることが可能である。ウェブ・サーバは、ソーシャルネットワーキング・システム160と、1つまたは複数のクライアント・システム130との間においてメッセージを受け取って回送するためにメール・サーバまたはその他のメッセージング機能を含むことができる。API要求サーバは、サードパーティ・システム170が、1つまたは複数のAPIを呼び出すことによってソーシャルネットワーキング・システム160からの情報にアクセスすることを可能にすることができる。ソーシャルネットワーキング・システム160内のユーザまたはソーシャルネットワーキング・システム160の外部のユーザのアクションに関してウェブ・サーバから通信を受け取るために、アクション・ロガーが使用されることが可能である。アクション・ログとともに、サードパーティコンテンツ・オブジェクトへのユーザの露出についてのサードパーティコンテンツオブジェクト・ログが保持されることが可能である。通知コントローラは、コンテンツ・オブジェクトに関する情報をクライアント・システム130に提供することができる。情報は、通知としてクライアント・システム130へ出力されることが可能であり、または情報は、クライアント・システム130から受け取られた要求に応答してクライアント・システム130から引き出されることが可能である。サードパーティ・システム170などのサードパーティから受け取られたコンテンツ・オブジェクトを格納するために、サードパーティコンテンツオブジェクト・ストアが使用されることが可能である。ユーザに関連付けられているクライアント・システム130から受け取られたロケーション情報を格納するために、ロケーション・ストアが使用されることが可能である。広告価格設定モジュールが、ソーシャルな情報、現在時刻、ロケーション情報、またはその他の適切な情報を組み合わせて、関連がある広告を、通知の形式でユーザに提供することができる。
ソーシャルネットワーキング・システム160は、たとえば、ユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャルグラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、格納すること、受け取ること、および送信することが可能である。特定の実施形態においては、ソーシャルネットワーキング・システム160はまた、ユーザによって生成されたコンテンツ・オブジェクトを含み、それらのコンテンツ・オブジェクトは、ソーシャルネットワーキング・システム160とのユーザの対話を向上させることができる。ユーザによって生成されたコンテンツは、ユーザがソーシャルネットワーキング・システム160に付加、アップロード、送信、または「ポスト(post)」することができる任意のものを含むことができる。限定ではなく、例として、ユーザは、クライアント・システム130からソーシャルネットワーキング・システム160へポスト(post)を通信する。ポストは、ステータス更新もしくはその他のテキスト・データ、ロケーション情報、写真、ビデオ、リンク、音楽、またはその他の類似したデータもしくはメディアなどのデータを含むことができる。コンテンツは、ニュースフィードまたはストリームなどの「通信チャネル」を通じてサードパーティによってソーシャルネットワーキング・システム160に付加されることも可能である。データ(たとえばコンテンツ・オブジェクト)の集合がデータベースとして格納されることが可能であり、そのデータベースは、複数のパーティションへと分割される。それぞれのパーティションは、別々のサーバ162上に、または別々の物理的なロケーションにおいて格納されることが可能である。パーティションどうしは、複数のサーバ162にわたって分散されることが可能であり(その一方で、それぞれのパーティションは、地理的に多様なロケーションにおいて複製されることが可能であり)、パーティション分割は、データベースにアクセスする際のパフォーマンスおよび信頼性を改善することもできる。データベースは、そのデータベースの行(または列)を別々に格納すること(すなわち「シャーディング(sharding)」)によってパーティション分割されることが可能である。データベースは、ハッシング・アルゴリズムを使用することによってパーティション分割されることも可能である。データベースは、そのデータベースによって保持されているデータの何らかの現実世界の(real-world)セグメント化(たとえば、米国のそれぞれのタイム・ゾーンにいるユーザどうし)によってパーティション分割されることも可能である。特定の実施形態においては、データまたはコンテンツ・オブジェクトは、複数のパーティション内に格納されることが可能であり、それぞれのパーティションは、単一のコンテンツ・オブジェクト・タイプのコンテンツ・オブジェクトを保持する。
特定の実施形態においては、ソーシャルネットワーキング・システム160にアップロードされたコンテンツ・オブジェクトは、データ・ストア164内に格納されることが可能である。アップロードされたまたは共有されたコンテンツ・オブジェクトに関連付けられているデータ・ストア情報(たとえば、受け取られたコンテンツ・オブジェクトに対してユーザが「いいね!」を表明していること)は、ソーシャルネットワーキング・システム160の検索インデックスによって格納されることが可能である。以降で記述されているように、ソーシャルネットワーキング・システム160のサーバプロセスは、ソーシャルネットワーキング・システム160上のアクティビティーに応答して1つまたは複数のデータ・ストア164の検索インデックスを更新することができる。特定の実施形態においては、ユーザによって生成されたコンテンツ・オブジェクト(たとえば、アップロードされたイメージ)は、ソーシャルネットワーキング・システム160の、以降で記述されているソーシャルグラフの特定のノードに対応することが可能である。その特定のノードと別のノードとをつなげるエッジは、受け取られたオブジェクトと、その他のノードに対応するユーザ(またはコンセプト)との間における関係を示すことができる。限定ではなく、例として、コンテンツ・オブジェクトに関連付けられている情報、またはソーシャルグラフにおけるコンテンツ・オブジェクトに対応するノードにつながっている1つまたは複数のエッジの情報は、1つまたは複数のデータ・ストア164内に格納されることが可能である。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、承認サーバを含むことができ、承認サーバは、ユーザが、たとえば、適切なプライバシー設定を設定することなどによって、自分のアクションをソーシャルネットワーキング・システム160によって記録されること、またはその他のシステム(たとえば、サードパーティ・システム170)と共有されることのオプトインまたはオプトアウトを行うことを可能にする。ソーシャルネットワーキング・システム160のユーザの1つまたは複数のプライバシー設定を実施するために、ソーシャルネットワーキング・システム160の承認サーバが使用されることが可能である。ユーザのプライバシー設定は、ユーザに関連付けられている特定の情報またはコンテンツ・オブジェクトがどのように共有されることが可能であるかを判定する。特定の実施形態においては、以降で記述されている、ユーザによって生成または共有される、および検索結果としての提示のためにソーシャルネットワーキング・システム160によって提供されるコンテンツ・オブジェクトは、ソーシャルネットワーキング・システム160のユーザのプライバシー設定によって制限されることが可能である。
図2は、ソーシャルネットワーキング・システムの例示的な検索インデックスの例示的なパーティション分割を示している。本開示は、特定のタイプのコンピューティング・システム上に格納されている特定のタイプのコンテンツ・オブジェクトを伴って検索インデックス上で検索クエリーを実行することについて示し、記述しているが、本開示は、任意の適切なタイプのコンピューティング・システム上に格納されている任意の適切なタイプのコンテンツを伴って検索インデックスを検索することを想定している。特定の実施形態においては、ユーザは、ソーシャルネットワーキング・システムのユーザ・インターフェース(UI)のクエリー・フィールド内にテキストを入力することによって、クエリーをソーシャルネットワーク・システムに送信することができる。限定ではなく、例として、ユーザは、特定の主題(たとえば、ユーザ、コンセプト、外部コンテンツ、またはリソース)について記述するフレーズ(しばしば「検索クエリー」と呼ばれる)を提供することによって、その主題に関連している情報を検索することができる。次いでソーシャルネットワーキング・システムは、検索クエリーにマッチするコンテンツを識別するために、1つまたは複数のパーティション42を検索することができる。検索は、さまざまな検索アルゴリズムを使用してクエリー・フレーズに基づいて行われることが可能であり、検索クエリーに関連している可能性が最も高いリソースまたはコンテンツ(たとえば、ユーザプロフィール・ページ、コンテンツプロフィール・ページ、または外部リソース)を識別する検索結果を生成することができる。それに応答して、検索は、その検索クエリーに関連している可能性が高いコンテンツまたはコンテンツ・オブジェクトを識別することができ、それらのコンテンツまたはコンテンツ・オブジェクトのそれぞれは、個別に「検索結果」と呼ばれること、または総称して、その検索クエリーに対応する「検索結果」と呼ばれることが可能である。識別されたコンテンツまたはコンテンツ・オブジェクトは、たとえば、ソーシャルグラフ要素(すなわち、ユーザ・ノード、コンセプト・ノード、またはエッジ)、プロフィール・ページ、外部ウェブページ、またはそれらの任意の組合せを含む場合がある。本開示は、ソーシャルネットワーキング・システムに関する任意の適切なオブジェクト・タイプを想定している。
図2の例においては、パーティション42のうちの1つまたは複数は、ソーシャルネットワーキング・システムのコンテンツ・オブジェクトをインデックス付けする(index)ことができる。限定ではなく、例として、ソーシャルネットワーキング・システムのそれぞれのコンテンツ・オブジェクトまたはユーザは、識別子情報、たとえば一意の識別番号などに少なくとも部分的に基づいてインデックス付けされることが可能である。特定の実施形態においては、それぞれのパーティション42は、それぞれのデータ・ストレージ・デバイス内に格納されているコンテンツ・オブジェクトに関する識別子情報にアクセスするように構成されることが可能である。それぞれのパーティション42内に格納されているコンテンツ・オブジェクトは、ソーシャルネットワーキング・システムの検索インデックスによってインデックス付けされることが可能である。特定の実施形態においては、検索インデックスのうちで、それぞれのパーティション42に関連付けられている部分は、1つもしくは複数のインデックス・サーバ(index server)48または1つもしくは複数の用語サーバ(term server)46によってアクセスされることが可能である。本明細書において記述されている用語サーバ46は、適切な場合には、用語データベース・サーバを指し、インデックス・サーバ48は、インデックス・データベース・サーバを指す。データベース・サーバは、ソーシャルネットワーキング・システムにアクセスするクライアント・システムのためにデータベース・サービスを提供することができる。さらに、それぞれのインデックス・サーバ48または用語サーバ46は、1つまたは複数のコンピューティング・デバイス(たとえば、上述のサーバ・デバイス162)上で実行される工程を含むことができ、同じコンピューティング・デバイス上で実行されることが可能である。
特定の実施形態においては、用語サーバ46およびインデックス・サーバ48は、上述の1つまたは複数のコンテンツ・オブジェクト・タイプに関連付けられている識別子情報を含むことができる。特定の実施形態においては、用語サーバ46は、検索インデックスのそれぞれの部分を、特定の検索語または「用語シャーディング(term sharding)」に関連付けられているソーシャルネットワーキング・システム上に「ポストされた」実質的にすべてのコンテンツ・オブジェクト・タイプ(たとえば、イメージ、ビデオ、ステータス更新、または「いいね!」)を包含するコンテンツ・オブジェクトに関する識別子情報に関連付けられているポスティング・リスト(posting list)へと編成することができる。さらに、用語サーバ46のポスティング・リストによって包含される検索語は、所定のヒットしきい値数を下回るそれぞれの検索語または「ヒット(hit)」に関連付けられている複数のコンテンツ・オブジェクトを伴うものに限定されることが可能である。特定の実施形態においては、インデックス・サーバ48は、検索インデックスのそれぞれの部分を、特定の検索語または「ドキュメント・シャーディング(doc sharding)」に関連付けられているソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクト・タイプ(たとえばイメージ)のコンテンツ・オブジェクトに対応する識別子情報を伴うポスティング・リストへと編成することができる。さらに、それぞれのインデックス・サーバ48のポスティング・リストは、所定のヒットしきい値数を上回る特定の検索語に関連付けられている複数のコンテンツ・オブジェクトに対応する識別子情報を含むことができる。
特定の実施形態においては、所定のヒットしきい値数は、コンテンツ・オブジェクト・タイプ、たとえば人々、写真、もしくはイベントなど、または特定の検索語に少なくとも部分的に基づいて変わることが可能である。限定ではなく、例として、所定のヒットしきい値数は、それぞれの検索語の所定のパーセンテージ(たとえば99%)内に含まれている「ヒット」の数によって特定されることが可能である。特定の実施形態においては、所定のヒットしきい値数は、コンピューティング・デバイス(たとえばサーバ)のインデックスから用語へのサーバ割り当て率、所定のヒットしきい値数を変えることの待ち時間もしくはスループット分析、パーティション・アグリゲータ(partition aggregator)44へ、もしくはパーティション・アグリゲータ44から用語サーバ46のポスティング・リストを送信するための総ネットワーク利用度、特定の検索語を含む検索クエリーの頻度、特定の検索語に関するライブ・アップデートの頻度、検索語の特定の群に固有の制約、またはそれらの任意の組合せに少なくとも部分的に基づいて特定されることが可能である。限定ではなく、例として、検索語の特定の群に固有の制約としてありうるのは、ユーザが、5000人までの友達を有することを許可されているならば、すべての「友達」ポスティング・リストが用語サーバ46内に含まれるように、「友達」という検索語に関する所定のヒットしきい値数が5000に設定されることが可能であるということである。
特定の実施形態においては、トップ・アグリゲータ(top aggregator)40が、それぞれのパーティション42のパーティション・アグリゲータ44に配信されている検索クエリーを受け取るように構成されることが可能である。限定ではなく、例として、検索クエリーは、ソーシャルネットワーキング・システムの1つまたは複数のコンピューティング・デバイス(たとえば、上述のサーバ162)によってホストされているサーバプロセスとして実施されることが可能である。限定ではなく、例として、トップ・アグリゲータ40は、「カンナム・スタイル」という検索クエリーを、たとえば(<カンナム><スタイル>)などの検索語へと解析することができ、その検索クエリーにマッチすることができるあらゆるコンテンツ・オブジェクト・タイプの検索結果を生成することができる。
特定の実施形態においては、トップ・アグリゲータ40は、所定のヒットしきい値数を上回る複数のコンテンツ・オブジェクトを伴う検索語のリスト(たとえば、ハッシュ・セット)に基づいてそれぞれの検索語を分類することができる。本明細書において記述されている「短い」検索語とは、適切な場合には、ハッシュ・セット内に含まれていない検索語を指すことが可能であり、「長い」検索語とは、ハッシュ・セット内に含まれている検索語を指すことが可能である。特定の実施形態においては、それぞれのパーティション42のパーティション・アグリゲータ44は、トップ・アグリゲータ40からの検索クエリーを解析して、その検索クエリーから、パーティション42に関連している特定の「短い」検索語を抽出することができる。特定の実施形態においては、パーティション42に関連している検索語に対応するハッシュ・セット内に含まれている1つまたは複数の「長い」検索語の抽出は、それぞれのパーティション42のパーティション・アグリゲータ44によって実行されることが可能である。限定ではなく、例として、「カンナム・スタイル」という検索クエリーは、トップ・アグリゲータ40によって、<カンナム>および<スタイル>という検索語へと解析されることが可能である。さらに、<カンナム>という検索語は、ハッシュ・セット内に含まれていない場合があり、「短い」検索語とみなされる場合があり、その一方で<スタイル>は、ハッシュ・セット内に含まれている場合があり、「長い」検索語とみなされる場合がある。特定の実施形態においては、トップ・アグリゲータ40から検索語を受け取るパーティション・アグリゲータ44が、特定の「短い」検索語(たとえば<カンナム>)を、用語サーバ46のうちの1つまたは複数へのクエリーにマップさせるための特定の機能を実行することができる。特定の実施形態においては、パーティション・アグリゲータ44は、特定の「短い」検索語に対応するソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクトを識別する情報を含む1つまたは複数のポスティング・リストを1つまたは複数の用語サーバ46から取り出すことができる。
特定の実施形態においては、パーティション42に関連している検索語に対応するハッシュ・セット内に含まれている1つまたは複数の「長い」検索語の抽出は、それぞれのパーティション42のパーティション・アグリゲータ44によって実行されることが可能である。限定ではなく、例として、「カンナム・スタイル」という検索クエリーは、トップ・アグリゲータ40によって、<カンナム>および<スタイル>という検索語へと解析されることが可能である。特定の実施形態においては、トップ・アグリゲータ40から検索語を受け取るパーティション・アグリゲータ44が、送信される特定の「短い」検索語を、用語サーバ46のうちの1つまたは複数へのクエリーにマップさせる(map)ための特定の機能を実行することができる。特定の実施形態においては、パーティション・アグリゲータ44は、特定の「短い」検索語に対応するソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクトを識別する情報を含む1つまたは複数のポスティング・リストを1つまたは複数の用語サーバ46から取り出すことができる。用語サーバ46は、特定の「短い」検索語に対応する取り出されたポスティング・リストをパーティション・アグリゲータ44へ送信することができる。
特定の実施形態においては、トップ・アグリゲータ40からの検索クエリーは、それぞれのパーティション・アグリゲータ44によって、1つまたは複数の「短い」検索語を、それらの「短い」検索語に対応する用語サーバ46からのポスティング・リストのうちの1つまたは複数と置き換えるように修正されることが可能である。限定ではなく、例として、修正された検索クエリーは、たとえば<スタイル>:<5,7,10>など、用語サーバ46からのポスティング・リストに基づいて生成されることが可能である。特定の実施形態においては、パーティション・アグリゲータ44は、修正された検索クエリーを、対応するインデックス・サーバ48へ送信することができる。パーティション・アグリゲータ44は、特定の「長い」検索語および用語サーバ46からの検索結果に対応するソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクトを識別する情報を含む1つまたは複数のポスティング・リストを1つまたは複数のインデックス・サーバ48から受け取ることができる。限定ではなく、例として、<スタイル>という検索語に対応するインデックス・サーバ48上のポスティング・リストは、コンテンツ・アイテムに対応する識別子情報<3,4,7,10>を含むことができ、修正された検索クエリーの結果は、<7,10>であることが可能である。
別の実施形態においては、それぞれのパーティション42のパーティション・アグリゲータ44は、「長い」検索語または「短い」検索語に関連付けられている情報を格納することができない。その代わりに、パーティション・アグリゲータ44は、解析された検索語のうちのすべてを、関連付けられている用語サーバ46へ送信することができる。特定の実施形態においては、用語サーバ46は、「短い」検索語および「長い」検索語のリストを含むことができる。限定ではなく、例として、用語サーバ46へ送信されたそれぞれの検索語によって、特定の「短い」検索語に対応するソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクトを識別する情報を含む1つまたは複数のポスティング・リストが選出される(return)ことができる。さらに、用語サーバ46は、解析された検索語のうちの1つまたは複数が「長い」検索語であるということ、および「長い」検索語に関するクエリーはインデックス・サーバ48へ回送されるべきであるということを示すフラグを生成することができる。特定の実施形態においては、「長い」検索語に関するクエリーは、パーティション・アグリゲータ44を通じてインデックス・サーバ48へ回送されることが可能である。特定の実施形態においては、「長い」検索語に関するクエリーは、用語サーバ46によってインデックス・サーバ48へ直接回送されることが可能である。上述されているように、インデックス・サーバ48は、特定の「長い」検索語に対応するソーシャルネットワーキング・システム上に「ポストされた」特定のコンテンツ・オブジェクトを識別する情報を含む1つまたは複数のポスティング・リストを1つまたは複数のインデックス・サーバ48から取り出すことができる。
特定の実施形態においては、トップ・アグリゲータ40は、パーティション・アグリゲータ40から受け取られた検索結果上で1つまたは複数のオペレーションを実行することができる。限定ではなく、例として、トップ・アグリゲータ40は、用語46サーバおよびインデックス48サーバからのすべての検索語の検索結果どうしの重なる部分(intersection)である検索結果をユーザに返すことができる。たとえば、<カンナム>という検索語に対応する検索結果に関する用語サーバ46のクエリーは、ソーシャルネットワーキング・システム上にポストされた特定のコンテンツ・オブジェクトに対応する識別子情報<5,7,10>を生成することができる。別の例として、インデックス・サーバ48は、<スタイル>という検索語に関するコンテンツ・アイテム<3,4,7,10>に対応する識別子情報を生成することができる。パーティション42の用語サーバ46およびインデックス・サーバ48からパーティション・アグリゲータ44へ送信された検索結果どうしの重なる部分に基づいて、ユーザに返される検索結果は、<7,10>であることが可能である。
特定の実施形態においては、ソーシャルネットワーキング・システムは、ソーシャルネットワーキング・システム上でのユーザによるアクティビティー、たとえば、コンテンツ・オブジェクト(たとえばイメージ)がアップロードもしくは生成されること、またはコンテンツ・オブジェクトに関連付けられているアクティビティー(たとえば、「いいね!」を表明すること、もしくはコメントすること)などに少なくとも部分的に基づいて検索インデックスの1つまたは複数のパーティション42を更新することができる。さらに、検索インデックスの1つまたは複数のパーティション42は、たとえば1週間に1回など、所定のインターバルで更新されることが可能である。特定の実施形態においては、それぞれのインデックス・サーバ48のポスティング・リストは、所定のインターバルで更新されることが可能である識別子情報を伴う基本レイヤと、新たなコンテンツ・オブジェクトがソーシャルネットワーキング・システムにアップロードされることなど、ソーシャルネットワーキング・システム上でのアクティビティーに応答して更新されることが可能である識別子情報を伴う更新レイヤとを含むことができる。限定ではなく、例として、インデックス・サーバ48へ送信される「長い」検索語を伴うクエリーは、基本レイヤの識別子情報、ならびに上述のソーシャルネットワーキング・システム上での最近のアクティビティーに対応する更新レイヤの識別子情報を含むポスティング・リストにアクセスすることができる。特定の実施形態においては、基本レイヤの識別子情報は、所定のインターバル中の更新レイヤの識別子情報を含むように更新されることが可能である。さらに、更新レイヤは、その更新レイヤの識別子情報で基本レイヤの識別子情報を更新した後に、初期状態に戻されることが可能である。特定の実施形態においては、用語サーバ44のポスティング・リストの識別子情報は、所定のインターバル中に発生した最近のアクティビティーを含むように定期的に更新されることが可能である。
特定の実施形態においては、更新レイヤの識別子情報は、対応するコンテンツ・オブジェクトの状態の変化、たとえば、そのコンテンツ・オブジェクトの削除または「いいね!」を取り消すことなどに応答して、特定の検索語に関連付けられている検索結果としてコンテンツ・オブジェクトの削除を示すことができる。特定の実施形態においては、インデックス・サーバ48は、基本レイヤから提供される識別子情報と、更新レイヤによって提供される識別子情報とを区別する情報を提供することができる。特定の実施形態においては、パーティション・アグリゲータ42は、「短い」用語クエリーに関して用語サーバ46によって提供された識別子情報と、「長い」検索語クエリーに関してインデックス・サーバ48によって提供された識別子情報との重なる部分を特定することができる。さらに、パーティション・アグリゲータ42は、用語サーバ46の更新レイヤからの識別子情報を、用語サーバ46によって提供された識別子情報とインデックス・サーバ48によって提供された識別子情報との重なる部分と統合することができる。限定ではなく、例として、それぞれの用語サーバ46に対する<カンナム>という検索語のクエリーは、識別子情報<5,7,10>を生成することができ、それぞれのインデックス・サーバ48の基本レイヤに対する<スタイル>という検索語のクエリーは、識別子情報<3,4,7,10>を生成することができ、それらのクエリーどうしの重なる部分は、<7,10>ということになる。さらに、識別子情報<20>に関連付けられているコンテンツ・オブジェクトが、<スタイル>という検索語に関連付けられているインデックス・サーバ48の更新レイヤに付加される場合には、<スタイル>という検索語のクエリーも、検索結果として<20>を生成することができる。別の例として、インデックス・サーバ48の基本レイヤの更新後のソーシャルネットワーキング・システム上でのアクティビティー(たとえば、コンテンツ・オブジェクトを削除すること)は、識別子情報<10>に関連付けられているコンテンツ・オブジェクトを除去することができ、識別子情報<10>が除去されているということを更新レイヤ上で示すことができる。<カンナム><スタイル>という検索語のクエリーからの検索結果は、削除されたコンテンツ・オブジェクト<10>がそれらの検索結果から除去された後に、<7>を生成することができる。
特定の実施形態においては、それぞれの用語サーバ46およびインデックス・サーバ48のポスティング・リストは、所定のインターバルで更新されることが可能である識別子情報を伴う基本レイヤと、新たなコンテンツ・オブジェクトがソーシャルネットワーキング・システムにアップロードされることなど、ソーシャルネットワーキング・システム上でのアクティビティーに応答して更新されることが可能である識別子情報を伴う更新レイヤとを含むことができる。特定の実施形態においては、最近アップロードされたコンテンツ・オブジェクトに関連付けられている1つまたは複数の検索語が、上述のハッシュ・リストと比較されて、その識別子情報が用語サーバ46、インデックス・サーバ48、またはその両方のポスティング・リストに関連しているかどうかを判定することが可能である。限定ではなく、例として、最近のアクティビティーが「短い」検索語に関連しているという判定に基づいて、それぞれの用語サーバ46の更新レイヤは、最近アップロードされたコンテンツ・オブジェクトに対応する識別子情報で更新されることが可能である。別の例として、最近のアクティビティーが「長い」検索語に関連しているという判定に基づいて、それぞれのインデックス・サーバ48の更新レイヤは、最近アップロードされたコンテンツ・オブジェクトに対応する識別子情報で更新されることが可能である。特定の実施形態においては、削除されたコンテンツ・オブジェクトに対応する識別子情報は、すべてのパーティション42へブロードキャストされることが可能であり、その対応する識別子情報は、その特定の識別子情報を含む用語サーバ46およびインデックス・サーバ48の両方のすべてのポスティング・リストから除去されることが可能である。
特定の実施形態においては、特定の検索語に関連付けられている特定の用語サーバ46の識別子情報は、1つまたは複数のインデックス・サーバ48のポスティング・リストへ「プロモートされる(promoted)」ことが可能であり、その識別子情報は、特定の検索語に関するヒットの数が所定のヒットしきい値数を超えていることに応答して、その特定の用語サーバ46のポスティング・リストから除去されることが可能である。限定ではなく、例として、1つまたは複数の用語サーバ46における1つまたは複数のポスティング・リストの生成は、ソーシャルネットワーキング・システムへの1つまたは複数の検索語の最初の付加に対応するように実行されることが可能である。検索語は、所定のヒットしきい値数に少なくとも部分的に基づいて用語サーバ46からインデックス・サーバ48へ「プロモートされる」ことが可能である。限定ではなく、例として、ポスティング・リストのコンテンツ・オブジェクトの数が所定のヒットしきい値数よりも少ない限り、用語サーバ46のポスティング・リスト内の新たな用語に関してポスティング・リストが生成されることが可能である。新たに付加された検索語に関連付けられているポスティング・リストのコンテンツ・オブジェクトに対応する識別子情報は、上述のコンテンツ・オブジェクト・タイプ(たとえば、イメージまたはステータス更新)でマークされることが可能である。ポスティング・リストのコンテンツ・オブジェクトの数が所定のヒットしきい値数を超えているという判定に基づいて、ポスティング・リストのうちで、その検索語に関連付けられている部分は、その検索語に関連付けられている用語サーバ46のポスティング・リスト内のコンテンツ・オブジェクトのコンテンツ・オブジェクト・タイプに従って、その検索語に関連付けられている1つまたは複数のインデックス・サーバ48のポスティング・リストに分散される。
検索語の「プロモート(promotion)」中に失敗が発生した場合には、新たにアクティブになったサーバが、「プロモートされている」検索語に関して1つまたは複数の用語サーバ46にクエリーを行うことができる。「プロモートされている」検索語に関連付けられているすべての識別子情報が、インデックス・サーバ48の関連のあるポスティング・リストにおいて成功裏に作成されたとして確認されると、その検索語およびその関連付けられているポスティング・リストは、それぞれの用語サーバ46から削除されることが可能である。限定ではなく、例として、識別子情報は、検索語に関連付けられているインデックス・サーバ48のポスティング・リストに挿入するために用語サーバ46からインデックス・サーバ48へ出力されることが可能である。
特定の実施形態においては、用語サーバ46およびインデックス・サーバ48の新たな基本レイヤは、アイドルのコンピューティング・デバイス(たとえばサーバ)のローテーションを通じて実行されることが可能である。プライマリー・アーキテクチャ(primary architecture)のコンピューティング・デバイスがダウンした場合には、その特定のコンピューティング・デバイスへ送信されたあらゆる要求が、バックアップ・アーキテクチャ内の対応するコンピューティング・デバイスへリダイレクトされる(re-directed)ことが可能である。あるいは、あらゆる要求が、バックアップ・アーキテクチャ内のトップ・アグリゲータ40へリダイレクトされることが可能であり、トップ・アグリゲータ40は、それらの要求を適切なコンピューティング・デバイスへ導くことができる。特定の実施形態は、複数の用語サーバ46、複数のインデックス・サーバ48、またはそれらの任意の組合せを単一のコンピューティング・デバイス上でホストすることを容易にすることができる。コンピューティング・デバイスは、バックアップ・アーキテクチャ上で再び分散されることが可能であり、それによって、プライマリー・アーキテクチャ内の単一のコンピューティング・デバイスが失敗した場合に、その特定のコンピューティング・デバイスへの要求は、バックアップ・アーキテクチャ内の複数のコンピューティング・デバイスの間で分散される。コンピューティング・デバイスどうしは、複製のためにコンピューティング・デバイスの予備の論理的なグループを1つ含む、コンピューティング・デバイスの論理的なグルーピング(たとえば、フル・ラック、ハーフラック、クォーターラック)へと編成されることが可能である。複製または更新中に、論理的なグルーピングは、ラウンドロビン様式(round-robin fashion)で更新されることが可能であり、その場合、動作中の論理的なグルーピングに関する新しいデータが、予備の論理的なグルーピングにコピーされることが可能である。動作中の論理的なグルーピングへの要求は、予備の論理的なグルーピングへリダイレクトされることが可能であり、次いで、動作中の論理的なグルーピングは、予備の論理的なグルーピングになる。
特定の実施形態においては、トップ・アグリゲータ40は、特定のコンテンツ・オブジェクトに対応する識別子情報を、ユーザへの提示のためにそれぞれのパーティション・アグリゲータ44によって提供される1つまたは複数の検索結果へとアグリゲートすることができる。特定の実施形態においては、トップ・アグリゲータ40は、それぞれのパーティション42へ送信されたそれぞれの検索クエリーの検索結果をアグリゲートすることができる。限定ではなく、例として、トップ・アグリゲータ40は、それらの検索クエリー結果上でOR演算を実行して、最終的な検索結果のセットを生み出すことができる。ソーシャルネットワーキング・システムは、それらの検索結果を形成するコンテンツ・オブジェクトを、たとえば、ソーシャルグラフ内の特定のオブジェクトに対応するノードにつなげるエッジの数(すなわち、知られている関係の数)などによってランク付けすることができる。限定ではなく、例として、ソーシャルネットワーキング・システムは、イメージを、そのイメージに関連付けられている「いいね!」の数によってランク付けすることができる。別の例として、ソーシャルネットワーキング・システムは、イメージを、そのイメージ上でタグ付けされているユーザの数によってランク付けすることもできる。
図3は、更新レイヤを伴う例示的な検索のための例示的な方法を示している。この方法は、工程300において開始することができ、工程300では、1つまたは複数のコンピューティング・デバイスが、ある検索語に関連付けられている1つまたは複数のコンテンツ・オブジェクトに関連付けられているアクティビティーの更新を受け取る。特定の実施形態においては、その検索語は、所定のしきい値数を超える複数のコンテンツ・オブジェクトに関連付けられている。特定の実施形態においては、その検索語に関連付けられているコンテンツ・オブジェクトは、1つまたは複数のインデックス・サーバのリスト上でインデックス付けされている。そのリストは、それらのコンテンツ・オブジェクトに対応する識別子情報を含む。工程302において、1つまたは複数のコンピューティング・デバイスが、更新に応答してインデックス・サーバのうちの1つまたは複数のリストを修正し、その時点で、この方法は終了することができる。本開示は、図3の方法の特定の工程どうしを、特定の順序で生じるものとして記述し、示しているが、本開示は、任意の適切な順序で生じる図3の方法の任意の適切な工程どうしを想定している。その上、本開示は、図3の方法の特定の工程を実行する特定のコンポーネントについて記述し、示しているが、本開示は、図3の方法の任意の適切な工程を実行する任意の適切なコンポーネントの任意の適切な組合せを想定している。
図4は、組み込まれた更新を伴う例示的な検索のための例示的な方法を示している。この方法は、工程350において開始することができ、工程350では、1つまたは複数のコンピューティング・デバイスが、ある検索語に関連付けられている1つまたは複数のコンテンツ・オブジェクトに関連付けられているアクティビティーの更新を受け取る。特定の実施形態においては、それらのコンテンツ・オブジェクトは、1つもしくは複数のインデックス・サーバまたは用語サーバのリスト上でインデックス付けされている検索語に関連付けられている。特定の実施形態においては、用語サーバのリストは、1つまたは複数のコンテンツ・オブジェクト・タイプの識別子情報を含むことができる。インデックス・サーバのリストは、単一のコンテンツ・オブジェクト・タイプの識別子情報を含むことができる。工程352は、1つまたは複数のコンピューティング・デバイスによって、検索語が、所定のしきい値数を超える複数の関連付けられているコンテンツ・オブジェクトを有するかどうかを判定する。工程354において、1つまたは複数のコンピューティング・デバイスは、その判定に少なくとも部分的に基づいて、および更新に応答して、用語サーバまたはインデックス・サーバのうちの1つもしくは複数の検索語に関連付けられているリストを修正し、その時点で、この方法は終了することができる。本開示は、図4の方法の特定の工程どうしを、特定の順序で生じるものとして記述し、示しているが、本開示は、任意の適切な順序で生じる図4の方法の任意の適切な工程どうしを想定している。その上、本開示は、図4の方法の特定の工程を実行する特定のコンポーネントについて記述し、示しているが、本開示は、図4の方法の任意の適切な工程を実行する任意の適切なコンポーネントの任意の適切な組合せを想定している。
図5は、例示的なソーシャルグラフを示している。特定の実施形態においては、ソーシャルネットワーキング・システム160は、1つまたは複数のソーシャルグラフ200を1つまたは複数のデータ・ストア内に格納することができる。特定の実施形態においては、ソーシャルグラフ200は、複数のノード(複数のユーザ・ノード202、または複数のコンセプト・ノード204を含むことができる)と、ノード同士をつなげる複数のエッジ206とを含むことができる。図5において示されている例示的なソーシャルグラフ200は、教示上の目的から、2次元のビジュアル・マップ表示で示されている。特定の実施形態においては、ソーシャルネットワーキング・システム160、クライアント・システム130、またはサードパーティ・システム170は、適切なアプリケーションに関してソーシャルグラフ200および関連したソーシャルグラフ情報にアクセスすることができる。ソーシャルグラフ200のノードおよびエッジは、データ・オブジェクトとして、たとえば(ソーシャルグラフ・データベースなどの)データ・ストア内に格納されることが可能である。そのようなデータ・ストアは、ソーシャルグラフ200のノードまたはエッジの1つまたは複数の検索可能なまたはクエリー可能なインデックスを含むことができる。
特定の実施形態においては、ユーザ・ノード202は、ソーシャルネットワーキング・システム160のユーザに対応することができる。限定ではなく、例として、ユーザは、ソーシャルネットワーキング・システム160と、またはソーシャルネットワーキング・システム160を介して対話または通信する個人(人間のユーザ)、エンティティ(たとえば、企業、ビジネス、もしくはサードパーティ・アプリケーション)、または(たとえば、個人もしくはエンティティの)グループであることが可能である。特定の実施形態においては、あるユーザがソーシャルネットワーキング・システム160とのアカウントに登録した場合には、ソーシャルネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202を作成し、そのユーザ・ノード202を1つまたは複数のデータ・ストア内に格納することができる。本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、登録されているユーザ、および登録されているユーザに関連付けられているユーザ・ノード202を指すことができる。追加として、または代替として、本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、ソーシャルネットワーキング・システム160に登録されていないユーザを指すことができる。特定の実施形態においては、ユーザ・ノード202は、ユーザによって提供された情報、またはソーシャルネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、ユーザは、自分の名前、プロフィール画像、連絡先情報、生年月日、性別、婚姻状況、家族状況、勤務先、学歴、好み、関心、またはその他の人口統計学的情報を提供することができる。特定の実施形態においては、ユーザ・ノード202は、ユーザに関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、ユーザ・ノード202は、1つまたは複数のウェブページに対応することができる。
特定の実施形態においては、コンセプト・ノード204は、コンセプトに対応することができる。限定ではなく、例として、コンセプトは、場所(たとえば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(たとえば、ソーシャルネットワーク・システム160に関連付けられているウェブサイト、もしくはウェブアプリケーション・サーバに関連付けられているサードパーティ・ウェブサイトなど)、エンティティ(たとえば、人、企業、グループ、スポーツ・チーム、もしくは有名人など)、ソーシャルネットワーキング・システム160内に、もしくはウェブアプリケーション・サーバなどの外部サーバ上に配置されることが可能であるリソース(たとえば、オーディオ・ファイル、ビデオ・ファイル、デジタル写真、テキスト・ファイル、構造化されたドキュメント、もしくはアプリケーションなど)、物的もしくは知的財産(たとえば、彫塑、絵画、映画、ゲーム、曲、アイディア、写真、もしくは執筆作品など)、ゲーム、アクティビティー、アイディアもしくは理論、別の適切なコンセプト、または複数のそのようなコンセプトに対応することができる。コンセプト・ノード204は、ユーザによって提供されたコンセプトの情報、またはソーシャルネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、コンセプトの情報は、名前もしくはタイトル、1つもしくは複数のイメージ(たとえば、本の表紙のイメージ)、ロケーション(たとえば、住所もしくは地理的ロケーション)、(URLに関連付けられることが可能である)ウェブサイト、連絡先情報(たとえば、電話番号もしくはEメール・アドレス)、その他の適切なコンセプト情報、またはそのような情報の任意の適切な組合せを含むことができる。特定の実施形態においては、コンセプト・ノード204は、コンセプト・ノード204に関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、コンセプト・ノード204は、1つまたは複数のウェブページに対応することができる。
特定の実施形態においては、ソーシャルグラフ200内のノードは、ウェブページ(「プロフィール・ページ」と呼ばれる場合もある)を表すこと、またはウェブページによって表されることが可能である。プロフィール・ページは、ソーシャルネットワーキング・システム160によってホストされること、またはソーシャルネットワーキング・システム160にとってアクセス可能であることが可能である。プロフィール・ページは、サードパーティ・サーバ170に関連付けられているサードパーティ・ウェブサイト上にホストされることも可能である。限定ではなく、例として、特定の外部ウェブページに対応するプロフィール・ページは、その特定の外部ウェブページであることが可能であり、そのプロフィール・ページは、特定のコンセプト・ノード204に対応することができる。プロフィール・ページは、その他のユーザのうちのすべてまたは選択されたサブセットによって閲覧できることが可能である。限定ではなく、例として、ユーザ・ノード202は、対応するユーザプロフィール・ページを有することができ、そのユーザプロフィール・ページにおいては、対応するユーザが、コンテンツを付加すること、言明を行うこと、またはその他の形で自分自身を表現することが可能である。限定ではなく、別の例として、コンセプト・ノード204は、対応するコンセプトプロフィール・ページを有することができ、そのコンセプトプロフィール・ページにおいては、1人または複数のユーザが、特にコンセプト・ノード204に対応するコンセプトに関連して、コンテンツを付加すること、言明を行うこと、または自分自身を表現することが可能である。
特定の実施形態においては、コンセプト・ノード204は、サードパーティ・システム170によってホストされているサードパーティ・ウェブページまたはリソースを表すことができる。サードパーティ・ウェブページまたはリソースは、数ある要素の中でも、コンテンツ、選択可能なもしくはその他のアイコン、または、アクションもしくはアクティビティーを表す(たとえば、JAVASCRIPT(登録商標)、AJAX、もしくはPHPコードで実装されることが可能である)その他の対話可能なオブジェクトを含むことができる。限定ではなく、例として、サードパーティ・ウェブページは、「いいね!」、「チェックイン」、「食べる」、「推奨する」、または別の適切なアクションもしくはアクティビティーなどの選択可能なアイコンを含むことができる。サードパーティ・ウェブページを閲覧しているユーザは、それらのアイコンのうちの1つ(たとえば、「食べる」)を選択することによってアクションを実行して、クライアント・システム130に、そのユーザのアクションを示すメッセージをソーシャルネットワーキング・システム160へ送信させることができる。そのメッセージに応答して、ソーシャルネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、サードパーティ・ウェブページまたはリソースに対応するコンセプト・ノード204との間においてエッジ(たとえば、「食べる」エッジ)を作成して、エッジ206を1つまたは複数のデータ・ストア内に格納することができる。
特定の実施形態においては、ソーシャルグラフ200内の1対のノードが、1つまたは複数のエッジ206によって互いにつながることが可能である。1対のノードをつなげるエッジ206は、それらの1対のノードの間における関係を表すことができる。特定の実施形態においては、エッジ206は、1対のノードの間における関係に対応する1つまたは複数のデータ・オブジェクトまたは属性を含むことまたは表すことが可能である。限定ではなく、例として、第1のユーザは、第2のユーザが第1のユーザの「友達」であるということを示すことができる。この表示に応答して、ソーシャルネットワーキング・システム160は、「友達要求」を第2のユーザに送信することができる。第2のユーザがその「友達要求」を承認した場合には、ソーシャルネットワーキング・システム160は、ソーシャルグラフ200内で第1のユーザのユーザ・ノード202を第2のユーザのユーザ・ノード202につなげるエッジ206を作成して、エッジ206をソーシャルグラフ情報としてデータ・ストア24のうちの1つまたは複数の中に格納することができる。図2の例においては、ソーシャルグラフ200は、ユーザ「A」のユーザ・ノード202と、ユーザ「B」のユーザ・ノード202との間における友達関係を示すエッジ206と、ユーザ「C」のユーザ・ノード202と、ユーザ「B」のユーザ・ノード202との間における友達関係を示すエッジとを含む。本開示は、特定のユーザ・ノード202同士をつなげる特定の属性を伴う特定のエッジ206を記述している、または示しているが、本開示は、ユーザ・ノード202同士をつなげる任意の適切な属性を伴う任意の適切なエッジ206を想定している。限定ではなく、例として、エッジ206は、友達関係、家族関係、ビジネスもしくは雇用関係、ファン関係、フォロワー関係、ビジター関係、サブスクライバ関係、上下関係、互恵的関係、非互恵的関係、別の適切なタイプの関係、または複数のそのような関係を表すことができる。その上、本開示は一般に、ノード同士をつながっているものとして記述しているが、本開示はまた、ユーザ同士またはコンセプト同士をつながっているものとして記述している。本明細書においては、つながっているユーザ同士またはコンセプト同士への言及は、適切な場合には、1つまたは複数のエッジ206によってソーシャルグラフ200内でつながっているそれらのユーザ同士またはコンセプト同士に対応するノード同士を指すことができる。
特定の実施形態においては、ユーザ・ノード202とコンセプト・ノード204との間におけるエッジ206は、ユーザ・ノード202に関連付けられているユーザによって、コンセプト・ノード204に関連付けられているコンセプトに対して実行された特定のアクションまたはアクティビティーを表すことができる。限定ではなく、例として、図5において示されているように、ユーザは、コンセプトに対して「いいね!を表明すること」、「通うこと」、「プレイすること」、「聴くこと」、「料理すること」、「勤務すること」、または「観ること」を行った可能性があり、それらのそれぞれは、エッジタイプまたはサブタイプに対応することができる。コンセプト・ノード204に対応するコンセプトプロフィール・ページは、たとえば、選択可能な「チェックイン」アイコン(たとえば、クリック可能な「チェックイン」アイコンなど)、または選択可能な「いいね」アイコンを含むことができる。限定ではなく、別の例として、クライアント・システムのソーシャライズド・ダッシュ(socialized dash)は、選択可能な「チェックイン」アイコン(たとえば、クリック可能な「チェックイン」アイコンなど)、または選択可能な「いいね」アイコンを含む。同様に、ユーザがこれらのアイコンをクリックした後に、ソーシャルネットワーキング・システム160は、それぞれのアクションに対応するユーザのアクションに応答して「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく、別の例として、あるユーザ(ユーザ「C」)が、特定のアプリケーション(オンライン音楽アプリケーションであるSPOTIFY)を使用して特定の曲(「イマジン」)を聴く場合がある。このケースにおいては、ソーシャルネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202と、その曲およびアプリケーションに対応するコンセプト・ノード204との間において、(図5に示されているような)「聴いた」エッジ206および「使用した」エッジを作成して、そのユーザがその曲を聴いてそのアプリケーションを使用したということを示すことができる。その上、ソーシャルネットワーキング・システム160は、その曲に対応するコンセプト・ノード204と、そのアプリケーションに対応するコンセプト・ノード204との間において、(図5に示されているような)「再生した」エッジ206を作成して、その特定の曲がその特定のアプリケーションによって再生されたということを示すことができる。このケースにおいては、「再生した」エッジ206は、外部アプリケーション(SPOTIFY)によって外部オーディオ・ファイル(「イマジン」という曲)に関して実行されたアクションに対応する。本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなげる特定の属性を伴う特定のエッジ206について記述しているが、本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなげる任意の適切な属性を伴う任意の適切なエッジ206を想定している。その上、本開示は、単一の関係を表すユーザ・ノード202とコンセプト・ノード204との間におけるエッジについて記述しているが、本開示は、1つまたは複数の関係を表すユーザ・ノード202とコンセプト・ノード204との間におけるエッジを想定している。限定ではなく、例として、エッジ206は、ユーザが特定のコンセプトに対して「いいね!」を表明しているということ、およびその特定のコンセプトを使用したということの両方を表すことができる。あるいは、別のエッジ206は、(図2において、ユーザ「E」を表すユーザ・ノード202と、「SPOTIFY」を表すコンセプト・ノード204との間において示されているような)ユーザ・ノード202とコンセプト・ノード204との間におけるそれぞれのタイプの関係(または、単一の関係が複数集まったもの)を表すことができる。
特定の実施形態においては、ソーシャルネットワーキング・システム160は、ソーシャルグラフ200内でユーザ・ノード202とコンセプト・ノード204との間においてエッジ206を作成することができる。限定ではなく、例として、(たとえば、ユーザのクライアント・システム130によってホストされているウェブ・ブラウザまたは専用のアプリケーションを使用することなどによって)コンセプトプロフィール・ページを閲覧しているユーザは、「いいね!」アイコンをクリックまたは選択することにより、コンセプト・ノード204によって表されているコンセプトを自分が気に入っているということを示すことができ、その「いいね!」アイコンをクリックまたは選択することは、ユーザのクライアント・システム130に、そのコンセプトプロフィール・ページに関連付けられているそのコンセプトをそのユーザが気に入っているということを示すメッセージをソーシャルネットワーキング・システム160へ送信させることができる。そのメッセージに応答して、ソーシャルネットワーキング・システム160は、そのユーザとコンセプト・ノード204との間における「いいね!」エッジ206によって示されているように、そのユーザに関連付けられているユーザ・ノード202とコンセプト・ノード204との間においてエッジ206を作成することができる。特定の実施形態においては、ソーシャルネットワーキング・システム160は、エッジ206を1つまたは複数のデータ・ストア内に格納することができる。特定の実施形態においては、エッジ206は、特定のユーザ・アクションに応答してソーシャルネットワーキング・システム160によって自動的に形成されることが可能である。限定ではなく、例として、第1のユーザが、画像をアップロードすること、映画を観ること、または曲を聴くことを行った場合には、エッジ206は、第1のユーザに対応するユーザ・ノード202と、それらのコンセプトに対応するコンセプト・ノード204との間において形成されることが可能である。本開示は、特定の様式で特定のエッジ206を形成することについて記述しているが、本開示は、任意の適切な様式で任意の適切なエッジ206を形成することを想定している。
図6は、例示的なコンピュータ・システム60を示している。特定の実施形態においては、1つまたは複数のコンピュータ・システム60が、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を実行する。特定の実施形態においては、1つまたは複数のコンピュータ・システム60が、本明細書において記述されているまたは示されている機能を提供する。特定の実施形態においては、1つまたは複数のコンピュータ・システム60上で稼働するソフトウェアが、本明細書において記述されているもしくは示されている1つもしくは複数の方法の1つもしくは複数の工程を実行し、または本明細書において記述されているもしくは示されている機能を提供する。特定の実施形態は、1つまたは複数のコンピュータ・システム60の1つまたは複数の部分を含む。本明細書においては、コンピュータ・システムへの言及は、適切な場合には、コンピューティング・デバイスを包含することができる。その上、コンピュータ・システムへの言及は、適切な場合には、1つまたは複数のコンピュータ・システムを包含することができる。
本開示は、任意の適切な数のコンピュータ・システム60を想定している。本開示は、任意の適切な物理的な形態を取るコンピュータ・システム60を想定している。限定ではなく、例として、コンピュータ・システム60は、組み込みコンピュータ・システム、システムオンチップ(SOC)、シングルボード・コンピュータ・システム(SBC)(たとえば、コンピュータオンモジュール(COM)もしくはシステムオンモジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、インタラクティブ・キオスク、メインフレーム、コンピュータ・システムのメッシュ、モバイル電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらのうちの複数の組合せであることが可能である。適切な場合には、コンピュータ・システム60は、1つもしくは複数のコンピュータ・システム60を含むこと、単一型もしくは分散型であること、複数のロケーションにわたること、複数のマシンにわたること、複数のデータセンターにわたること、または、クラウド(1つもしくは複数のネットワーク内の1つもしくは複数のクラウド・コンポーネントを含むことができる)内に常駐することが可能である。適切な場合には、1つまたは複数のコンピュータ・システム60は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を、実質的な空間上のまたは時間上の制限を伴わずに実行することができる。限定ではなく、例として、1つまたは複数のコンピュータ・システム60は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程をリアル・タイムで、またはバッチ・モードで実行することができる。1つまたは複数のコンピュータ・システム60は、適切な場合には、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を別々の時点で、または別々のロケーションで実行することができる。
特定の実施形態においては、コンピュータ・システム60は、プロセッサ62、メモリ64、ストレージ66、入力/出力(I/O)インタフェース68、通信インタフェース70、およびバス72を含む。本開示は、特定の数の特定のコンポーネントを特定の構成で有する特定のコンピュータ・システムについて記述し、示しているが、本開示は、任意の適切な数の任意の適切なコンポーネントを任意の適切な構成で有する任意の適切なコンピュータ・システムを想定している。
特定の実施形態においては、プロセッサ62は、コンピュータ・プログラムを構成している命令などの命令を実行するためのハードウェアを含む。限定ではなく、例として、命令を実行するために、プロセッサ62は、内部レジスタ、内部キャッシュ、メモリ64、またはストレージ66から命令を取り出し(またはフェッチし)、それらの命令をデコードして実行し、次いで、1つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ64、またはストレージ66に書き込むことができる。特定の実施形態においては、プロセッサ62は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ62を想定している。限定ではなく、例として、プロセッサ62は、1つまたは複数の命令キャッシュ、1つまたは複数のデータ・キャッシュ、および1つまたは複数の変換ルックアサイド・バッファ(TLB)を含むことができる。命令キャッシュ内の命令は、メモリ64またはストレージ66内の命令のコピーであることが可能であり、命令キャッシュは、プロセッサ62によるそれらの命令の取り出しをスピードアップすることができる。データ・キャッシュ内のデータは、プロセッサ62において実行される命令が機能する際に基づくメモリ64もしくはストレージ66内のデータのコピー、プロセッサ62において実行される後続の命令によるアクセスのための、もしくはメモリ64もしくはストレージ66への書き込みのためのプロセッサ62において実行された以前の命令の結果、またはその他の適切なデータであることが可能である。データ・キャッシュは、プロセッサ62による読み取りオペレーションまたは書き込みオペレーションをスピードアップすることができる。TLBは、プロセッサ62のための仮想アドレス変換をスピードアップすることができる。特定の実施形態においては、プロセッサ62は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ62を想定している。適切な場合には、プロセッサ62は、1つまたは複数の演算ロジック・ユニット(ALU)を含むこと、マルチコア・プロセッサであること、または1つもしくは複数のプロセッサ62を含むことが可能である。本開示は、特定のプロセッサについて記述し、示しているが、本開示は、任意の適切なプロセッサを想定している。
特定の実施形態においては、メモリ64は、プロセッサ62が実行するための命令、またはプロセッサ62が機能する際に基づくデータを格納するためのメイン・メモリを含む。限定ではなく、例として、コンピュータ・システム60は、命令をストレージ66または別のソース(たとえば、別のコンピュータ・システム60など)からメモリ64にロードすることができる。次いでプロセッサ62は、命令をメモリ64から内部レジスタまたは内部キャッシュにロードすることができる。命令を実行するために、プロセッサ62は、命令を内部レジスタまたは内部キャッシュから取り出し、それらの命令をデコードすることができる。命令の実行中または実行後に、プロセッサ62は、1つまたは複数の結果(それらは、中間の結果または最終的な結果である場合がある)を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ62は、それらの結果のうちの1つまたは複数をメモリ64に書き込むことができる。特定の実施形態においては、プロセッサ62は、(ストレージ66またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ64内の命令のみを実行し、(ストレージ66またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ64内のデータ上でのみ機能する。1つまたは複数のメモリ・バス(それらはそれぞれ、アドレス・バスおよびデータ・バスを含むことができる)は、プロセッサ62をメモリ64に結合することができる。バス72は、以降で記述されているような1つまたは複数のメモリ・バスを含むことができる。特定の実施形態においては、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ62とメモリ64との間に常駐し、プロセッサ62によって要求されるメモリ64へのアクセスを容易にする。特定の実施形態においては、メモリ64は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、適切な場合には、揮発性メモリであることが可能である。適切な場合には、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であることが可能である。その上、適切な場合には、このRAMは、シングルポートRAMまたはマルチポートRAMであることが可能である。本開示は、任意の適切なRAMを想定している。メモリ64は、適切な場合には、1つまたは複数のメモリ64を含むことができる。本開示は、特定のメモリについて記述し、示しているが、本開示は、任意の適切なメモリを想定している。
特定の実施形態においては、ストレージ66は、データまたは命令のためのマス・ストレージを含む。限定ではなく、例として、ストレージ66は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらのうちの複数の組合せを含むことができる。ストレージ66は、適切な場合には、取り外し可能なまたは取り外し不能な(すなわち、固定された)媒体を含むことができる。ストレージ66は、適切な場合には、コンピュータ・システム60の内部または外部に存在することが可能である。特定の実施形態においては、ストレージ66は、不揮発性のソリッドステート・メモリである。特定の実施形態においては、ストレージ66は、読み取り専用メモリ(ROM)を含む。適切な場合には、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書替え可能ROM(EAROM)、またはフラッシュ・メモリ、またはこれらのうちの複数の組合せであることが可能である。本開示は、任意の適切な物理的な形態を取るマス・ストレージ66を想定している。ストレージ66は、適切な場合には、プロセッサ62とストレージ66との間における通信を容易にする1つまたは複数のストレージ・コントロール・ユニットを含むことができる。適切な場合には、ストレージ66は、1つまたは複数のストレージ66を含むことができる。本開示は、特定のストレージについて記述し、示しているが、本開示は、任意の適切なストレージを想定している。
特定の実施形態においては、I/Oインタフェース68は、コンピュータ・システム60と1つまたは複数のI/Oデバイスとの間における通信のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム60は、適切な場合には、これらのI/Oデバイスのうちの1つまたは複数を含むことができる。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータ・システム60との間における通信を可能にすることができる。限定ではなく、例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、ビデオ・カメラ、別の適切なI/Oデバイス、またはこれらのうちの複数の組合せを含むことができる。I/Oデバイスは、1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/Oデバイス、およびそれらのI/Oデバイスのための任意の適切なI/Oインタフェース68を想定している。適切な場合には、I/Oインタフェース68は、プロセッサ62がこれらのI/Oデバイスのうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。I/Oインタフェース68は、適切な場合には、1つまたは複数のI/Oインタフェース68を含むことができる。本開示は、特定のI/Oインタフェースについて記述し、示しているが、本開示は、任意の適切なI/Oインタフェースを想定している。
特定の実施形態においては、通信インタフェース70は、コンピュータ・システム60と、1つもしくは複数のその他のコンピュータ・システム60または1つもしくは複数のネットワークとの間における通信(たとえば、パケットベースの通信など)のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、通信インタフェース70は、イーサネット(登録商標)もしくはその他の有線ベースのネットワークと通信するためのネットワーク・インタフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWI−FIネットワークなどのワイヤレス・ネットワークと通信するためのワイヤレスNIC(WNIC)もしくはワイヤレス・アダプタを含むことができる。本開示は、任意の適切なネットワーク、およびそのネットワークのための任意の適切な通信インタフェース70を想定している。限定ではなく、例として、コンピュータ・システム60は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、またはインターネットの1つまたは複数の部分、またはこれらのうちの複数の組合せと通信することができる。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、有線またはワイヤレスであることが可能である。例として、コンピュータ・システム60は、ワイヤレスPAN(WPAN)(たとえば、ブルートゥースWPANなど)、WI−FIネットワーク、WI−MAXネットワーク、セルラー電話ネットワーク(たとえば、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM(登録商標))ネットワークなど)、またはその他の適切なワイヤレス・ネットワーク、またはこれらのうちの複数の組合せと通信することができる。コンピュータ・システム60は、適切な場合には、これらのネットワークのうちの任意のネットワークのための任意の適切な通信インタフェース70を含むことができる。通信インタフェース70は、適切な場合には、1つまたは複数の通信インタフェース70を含むことができる。本開示は、特定の通信インタフェースについて記述し、示しているが、本開示は、任意の適切な通信インタフェースを想定している。
特定の実施形態においては、バス72は、コンピュータ・システム60のコンポーネント同士を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、バス72は、アクセラレイティッド・グラフィックス・ポート(AGP)もしくはその他のグラフィックス・バス、エンハンスト・インダストリー・スタンダード・アーキテクチャ(EISA)バス、フロントサイド・バス(FSB)、ハイパートランスポート(HT)インターコネクト、インダストリー・スタンダード・アーキテクチャ(ISA)バス、インフィニバンド・インターコネクト、ローピンカウント(LPC)バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル(VLB)バス、または別の適切なバス、またはこれらのうちの複数の組合せを含むことができる。バス72は、適切な場合には、1つまたは複数のバス72を含むことができる。本開示は、特定のバスについて記述し、示しているが、本開示は、任意の適切なバスまたはインターコネクトを想定している。
本明細書においては、1つまたは複数の非一時的なコンピュータ可読記憶媒体は、適切な場合には、1つもしくは複数の半導体ベースのもしくはその他の集積回路(IC)(たとえば、フィールドプログラマブル・ゲート・アレイ(FPGA)もしくは特定用途向け集積回路(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、その他の任意の適切な非一時的なコンピュータ可読記憶媒体、またはこれらのうちの複数の組合せを含むことができる。非一時的なコンピュータ可読記憶媒体は、適切な場合には、揮発性、不揮発性、または揮発性と不揮発性の組合せであることが可能である。
本明細書においては、「または(もしくは)」は、包含的であり、排他的ではない(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AまたはB」は、「A、B、またはその両方」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。その上、「および(ならびに)」は、包括的および個別的の両方である(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AおよびB」は、「まとめて、または個別に、AおよびB」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。