(58)【調査した分野】(Int.Cl.,DB名)
前記検索クエリ入力の前記分類に少なくとも一部基づいて特定のオブジェクト・タイプの識別された前記オブジェクトのうちの1以上のスコアを変更する工程をさらに備える、請求項3に記載の方法。
前記特定のバーティカルによって記憶される前記オブジェクト・タイプは、ユーザ、写真、投稿、ウェブページ、アプリケーション、ロケーション、およびユーザ・グループからなる群から選択される、請求項7に記載の方法。
前記特定のバーティカルを検索する工程は、複数のバーティカルから検索され、前記複数のバーティカルの各バーティカルは、異なるオブジェクト・タイプのオブジェクトを記憶する、請求項1に記載の方法。
複数のノードと、前記ノード同士を接続する複数のエッジとを備えるソーシャル・グラフにアクセスする工程をさらに備え、前記ノードの2つの間の前記エッジの各々は、それらの間の単一の分離度を表し、前記ノードは、
前記第1のユーザに対応する第1のノードと、
前記オンライン・ソーシャル・ネットワークに関連付けられている複数のオブジェクトに各々が対応する複数の第2のノードと、を備える、請求項1に記載の方法。
各検索結果モジュールは、1以上のノードおよび1以上のエッジに対する参照を備える構造化クエリに対応し、前記構造化クエリは、前記検索結果モジュールに対応する前記クエリ・コマンドに基づく、請求項10に記載の方法。
前記検索クエリ入力は、クライアント・デバイスから受信したユーザ生成のキャラクタ・ストリングを備え、前記ユーザ生成のキャラクタ・ストリングは、前記第1のユーザによってクエリ・フィールド内に入力され、前記キャラクタ・ストリングの各キャラクタがユーザによって入力されるにつれて前記クライアント・デバイスにおいてレンダリングされる、請求項1に記載の方法。
前記検索する工程は、1以上のストリング・マッチング・アルゴリズムを使用し、前記1以上のnグラムを、前記オブジェクトの1以上の各々に関連付けられているキャラクタのストリングとマッチングしようと試みる工程を備える、請求項1に記載の方法。
各クエリ・コマンドは、1以上のソーシャル・グラフ制約を備え、前記ソーシャル・グラフ制約は、前記ユーザに関連付けられているソーシャル・グラフにおける特定のソーシャル・グラフ要素への参照を備える、請求項1に記載の方法。
前記ソーシャル・グラフ制約の1つは、前記第1のユーザが前記検索結果モジュールにおいて、前記ソーシャル・グラフ内において最大2つの分離度だけ離れて前記オブジェクトにつながっているという制約である、請求項15に記載の方法。
1以上のプロセッサと、前記プロセッサに結合され、前記プロセッサによって実行可能な命令を備えるメモリとを備えるシステムであって、前記プロセッサは、前記命令を実行したとき、
前記検索クエリ入力をパースし、前記1以上のnグラムから1以上のキーワードを識別する工程と、
識別された前記キーワードの1以上について複数のクエリ・コマンドを生成する工程であって、各クエリ・コマンドは、
前記検索クエリ入力に基づいて、複数のオブジェクト・タイプから特定のオブジェクト・タイプと、
前記検索クエリ入力の前記nグラムの1以上にそれぞれ一致する1以上のオブジェクトの1以上の識別子と、
それぞれの前記クエリ・コマンドによって指定された識別子を有する前記1以上のオブジェクトに関する関係の1以上のタイプと、を指定する、生成する工程と、
各クエリ・コマンドについて、それぞれの前記クエリ・コマンドによって指定された識別子を有する前記オブジェクトの1以上に関する関係の前記タイプの関係を有する前記特定のオブジェクト・タイプの1以上のオブジェクトを記憶する特定のバーティカルを検索する工程と、
前記複数のクエリ・コマンドに各々が対応する複数の検索結果モジュールを生成する工程であって、各検索結果モジュールは、それぞれの前記クエリ・コマンドによって指定された前記特定のオブジェクト・タイプの前記オブジェクトに対する1以上の参照を備える、工程と、
前記検索結果モジュールの1以上を備えるインタフェースを提示する命令を、前記検索クエリに応答して前記クライアント・デバイスに送る工程と、が行われるように構成される、システム。
【発明を実施するための形態】
【0006】
特定の実施形態では、ソーシャル・ネットワーキング・システムのユーザは、検索クエリを使用してシステムに関連付けられているオブジェクトを求めて検索することができる。
【0007】
特定の実施形態では、ユーザから受け取られた検索クエリ入力に応答して、ソーシャル・ネットワーキング・システムは、1または複数のバーティカルにアクセスし、検索クエリ入力のキャラクタ・ストリングに一致するオブジェクトを求めて検索する。次いで、ソーシャル・ネットワーキング・システムは、識別されたオブジェクトに基づいて、たとえばクエリ・フィールドに関連付けられているドロップダウン・メニュー内でユーザに対して表示するためにそれらのオブジェクトに対する参照を送ってもよい。次いで、クエリしているユーザは、参照の中で選択し、その参照に対応するオブジェクトがソーシャル・ネットワーキング・システムによって取り出されるべきであることを示すことができる。
【0008】
特定の実施形態では、ソーシャル・ネットワーキング・システムは、ユーザのクライアント・システムから非構造化テキスト・クエリを受信することができる。このテキスト・クエリは、複数のクエリを生成するソーシャル・ネットワーキング・システムのサブ要求ジェネレータによって処理されてもよい。サブ要求ジェネレータによって生成されるクエリは、テキスト・クエリに基づく1もしくは複数のキーワード検索、および/または特定のソーシャル・グラフ要素に対する参照を備える1もしくは複数の構造化クエリを含み得る。限定するものではなく例として、非構造化テキスト・クエリ「写真 友達」は、「写真 友達」というキーワード・クエリと、(特定のソーシャル・グラフ要素に対する参照を備える)「私の友達の写真」および「私の友達による写真」のための構造化クエリとを生み出すことができる。サブ要求ジェネレータは、特定のスコアまたは重み付けを生成された各クエリに関連付け、クエリの相対的な重要性または関連性を示してもよい。
【0009】
特定の実施形態では、サブ要求ジェネレータによって生成されたクエリは、検索クエリに一致する検索結果を取り出すために、ソーシャル・ネットワーキング・システムに関連付けられている1または複数のデータ・ストアに送られてもよく、各検索結果は、関連付けられている関連性スコアと共に返されてもよい。次いで、異なるバーティカルによって返された検索結果が、モジュールをスコア付けおよびランク付けすることができる「ブレンダ」によって集約されてもよい。モジュールのスコアは、特定のモジュールにおける結果の個々のスコアに基づいてもよい。モジュールのスコアもまた、クエリの意図/クラスに基づいてもよい。
【0010】
システムの概観
図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を含むことができる。
【0011】
本開示は、任意の適切なネットワーク110を想定している。限定ではなく、例として、ネットワーク110の1つまたは複数の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイド・エリア・ネットワーク(WAN)、ワイヤレスWAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、セルラー電話ネットワーク、またはこれらのうちの複数の組合せを含むことができる。ネットワーク110は、1つまたは複数のネットワーク110を含むことができる。
【0012】
リンク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とは異なることが可能である。
【0013】
特定の実施形態においては、クライアント・システム130は、クライアント・システム130によって実装またはサポートされる適切な機能を実行することができる、ハード
ウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含む電子デバイスであることが可能である。限定ではなく、例として、クライアント・システム130は、デスクトップ・コンピュータ、ノートブック・コンピュータもしくはラップトップ・コンピュータ、ネットブック、タブレット・コンピュータなどのコンピュータ・システム、eブック・リーダ、GPSデバイス、カメラ、携帯情報端末(PDA)、ハンドヘルド電子デバイス、セルラー電話、スマートフォン、その他の適切な電子デバイス、またはそれらの任意の適切な組合せを含むことができる。本開示は、任意の適切なクライアント・システム130を想定している。クライアント・システム130は、クライアント・システム130のネットワーク・ユーザがネットワーク110にアクセスすることを可能にすることができる。クライアント・システム130は、自分のユーザがその他のクライアント・システム130のその他のユーザと通信することを可能にすることができる。
【0014】
特定の実施形態においては、クライアント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つまたは複数の対応するウェブページ・ファイルを含み、その逆もまた同様である。
【0015】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークをホストすることができるネットワークアドレス可能なコンピューティング・システムであることが可能である。ソーシャル・ネットワーキング・システム160は、たとえば、ユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャル・グラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、記憶すること、受け取ること、および送信することが可能である。ソーシャル・ネットワーキング・システム160は、ネットワーク環境100のその他のコンポーネントによって直接、またはネットワーク110を通じてアクセスされることが可能である。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のサーバ162を含むことができる。それぞれのサーバ162は、単一のサーバ、または複数のコンピュータもしくは複数のデータセンターにわたる分散サーバであることが
可能である。サーバ162は、限定ではなく、例として、ウェブ・サーバ、ニュース・サーバ、メール・サーバ、メッセージ・サーバ、広告サーバ、ファイル・サーバ、アプリケーション・サーバ、Exchangeサーバ、データベース・サーバ、プロキシ・サーバ、本明細書において記述されている機能もしくはプロセスを実行するのに適している別のサーバ、またはそれらの任意の組合せなど、さまざまなタイプのものであることが可能である。特定の実施形態においては、それぞれのサーバ162は、サーバ162によって実装またはサポートされる適切な機能を実行するためのハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム164は、1つまたは複数のデータ・ストア164を含むことができる。データ・ストア164は、さまざまなタイプの情報を記憶するために使用されることが可能である。特定の実施形態においては、データ・ストア164内に記憶されている情報は、特定のデータ構造に従って編成されることが可能である。特定の実施形態においては、それぞれのデータ・ストア164は、リレーショナル・データベースであることが可能である。特定の実施形態は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、またはサードパーティ・システム170が、データ・ストア164内に記憶されている情報を管理すること、取り出すこと、修正すること、追加すること、または削除することを可能にするインタフェースを提供することができる。
【0016】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のソーシャル・グラフを1つまたは複数のデータ・ストア164内に記憶することができる。特定の実施形態においては、ソーシャル・グラフは、複数のノード(複数のユーザ・ノード(それぞれが、特定のユーザに対応している)、または複数のコンセプト・ノード(それぞれが、特定のコンセプトに対応している)を含むことができる)と、ノード同士をつなげる複数のエッジとを含むことができる。ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザに、その他のユーザと通信および対話する能力を提供することができる。特定の実施形態においては、ユーザたちは、ソーシャル・ネットワーキング・システム160を通じてオンライン・ソーシャル・ネットワークに参加し、次いで、自分たちがつながりたいと望むソーシャル・ネットワーキング・システム160のその他の複数のユーザにつながり(すなわち、関係)を付加することができる。本明細書においては、「友達」という用語は、ユーザがソーシャル・ネットワーキング・システム160を通じて、つながり、関連付け、または関係を形成しているソーシャル・ネットワーキング・システム160のその他の任意のユーザを示すことができる。
【0017】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ソーシャル・ネットワーキング・システム160によってサポートされるさまざまなタイプのアイテムまたはオブジェクトに関してアクションを取る能力をユーザに提供することができる。限定ではなく、例として、それらのアイテムおよびオブジェクトは、ソーシャル・ネットワーキング・システム160のユーザが属することが可能であるグループもしくはソーシャル・ネットワーク、ユーザが関心を抱く可能性があるイベントもしくはカレンダー・エントリー、ユーザが使用することができるコンピュータベースのアプリケーション、ユーザがサービスを通じてアイテムを購入もしくは販売することを可能にするトランザクション、ユーザが実行することができる広告との対話、またはその他の適切なアイテムもしくはオブジェクトを含むことができる。ユーザは、ソーシャル・ネットワーキング・システム160において、またはサードパーティ・システム170の外部システム(ソーシャル・ネットワーキング・システム160とは別個のものであって、ネットワーク110を通じてソーシャル・ネットワーキング・システム160に結合されている)によって表されることが可能である任意のものと対話することができる。
【0018】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、さまざまなエンティティ同士をリンクできることが可能である。限定ではなく、例として、ソーシャル・ネットワーキング・システム160は、ユーザたちが互いに対話すること、ならびにサードパーティ・システム170もしくはその他のエンティティからのコンテンツを受け取ることを可能にすることができ、またはユーザたちがアプリケーション・プログラミング・インタフェース(API)もしくはその他の通信チャネルを通じてこれらのエンティティと対話することを可能にすることができる。
【0019】
特定の実施形態においては、サードパーティ・システム170は、1つもしくは複数のタイプのサーバ、1つもしくは複数のデータ・ストア、1つもしくは複数のインタフェース(APIを含むが、それには限定されない)、1つもしくは複数のウェブ・サービス、1つもしくは複数のコンテンツ・ソース、1つもしくは複数のネットワーク、または(たとえば、サーバが通信することができる)その他の任意の適切なコンポーネントを含むことができる。サードパーティ・システム170は、ソーシャル・ネットワーキング・システム160を運営しているエンティティとは異なるエンティティによって運営されることが可能である。しかしながら、特定の実施形態においては、ソーシャル・ネットワーキング・システム160およびサードパーティ・システム170は、ソーシャル・ネットワーキング・システム160またはサードパーティ・システム170のユーザにソーシャルネットワーキング・サービスを提供するために互いに連携して機能することができる。この意味において、ソーシャル・ネットワーキング・システム160は、サードパーティ・システム170などのその他のシステムがインターネットを通じてソーシャルネットワーキング・サービスおよび機能をユーザに提供するために使用することができるプラットフォーム、またはバックボーンを提供することができる。
【0020】
特定の実施形態においては、サードパーティ・システム170は、サードパーティ・コンテンツ・オブジェクト・プロバイダを含むことができる。サードパーティ・コンテンツ・オブジェクト・プロバイダは、コンテンツ・オブジェクトの1つまたは複数のソースを含むことができ、それらのソースは、クライアント・システム130に通信されることが可能である。限定ではなく、例として、コンテンツ・オブジェクトは、ユーザにとって関心がある物またはアクティビティに関する情報、たとえば、映画の開始時刻、映画のレビュー、レストランのレビュー、レストランのメニュー、製品の情報およびレビュー、またはその他の適切な情報などを含むことができる。限定ではなく、別の例として、コンテンツ・オブジェクトは、インセンティブ・コンテンツ・オブジェクト、たとえば、クーポン、ディスカウント・チケット、ギフト券、またはその他の適切なインセンティブ・オブジェクトを含むことができる。
【0021】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160はまた、ユーザによって生成されたコンテンツ・オブジェクトを含み、それらのコンテンツ・オブジェクトは、ソーシャル・ネットワーキング・システム160とのユーザの対話を高めることができる。ユーザによって生成されたコンテンツは、ユーザがソーシャル・ネットワーキング・システム160に付加、アップロード、送信、または「投稿」することができる任意のものを含むことができる。限定ではなく、例として、ユーザは、クライアント・システム130からソーシャル・ネットワーキング・システム160へ投稿を通信する。投稿は、ステータス更新もしくはその他のテキスト・データ、ロケーション情報、写真、映像、リンク、音楽、またはその他の類似したデータもしくはメディアなどのデータを含むことができる。コンテンツは、ニュース・フィードまたはストリームなどの「通信チャネル」を通じてサードパーティによってソーシャル・ネットワーキング・システム160に付加されることも可能である。
【0022】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、さま
ざまなサーバ、サブシステム、プログラム、モジュール、ログ、およびデータ・ストアを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ウェブ・サーバ、アクション・ロガー、API要求サーバ、関連性およびランキング・エンジン、コンテンツ・オブジェクト分類子、通知コントローラ、アクション・ログ、サードパーティ・コンテンツ・オブジェクト露出ログ、推測モジュール、認可/プライバシー・サーバ、検索モジュール、広告ターゲティング・モジュール、ユーザインタフェース・モジュール、ユーザプロフィール・ストア、つながりストア、サードパーティ・コンテンツ・ストア、またはロケーション・ストアのうちの1つまたは複数を含むことができる。ソーシャル・ネットワーキング・システム160は、適切なコンポーネント、たとえば、ネットワーク・インタフェース、セキュリティー・メカニズム、ロード・バランサ、フェイルオーバ・サーバ、管理およびネットワークオペレーション・コンソール、その他の適切なコンポーネント、またはそれらの任意の適切な組合せを含むこともできる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ユーザ・プロフィールを記憶するための1つまたは複数のユーザプロフィール・ストアを含むことができる。ユーザ・プロフィールは、たとえば、経歴情報、人口統計学的情報、挙動情報、ソーシャルな情報、またはその他のタイプの記述的情報、たとえば、職業経験、学歴、趣味もしくは好み、関心、親近感、またはロケーションを含むことができる。関心情報は、1つまたは複数のカテゴリに関連した関心を含むことができる。カテゴリは、一般的または具体的であることが可能である。限定ではなく、例として、ユーザが、あるブランドの靴に関する記事に対して「いいね!」の表明をした場合には、カテゴリは、そのブランド、または「靴」もしくは「衣類」という一般的なカテゴリであることが可能である。ユーザに関するつながり情報を記憶するために、つながりストアが使用されることが可能である。つながり情報は、類似のもしくは共通の職業経験、グループ・メンバーシップ、趣味、学歴を有しているか、または何らかの形で関連しているか、もしくは共通の属性を共有しているユーザ同士を示すことができる。つながり情報は、さまざまなユーザおよびコンテンツ(内部および外部の両方)の間におけるユーザ定義のつながりを含むこともできる。ネットワーク110を通じてソーシャル・ネットワーキング・システム160を1つもしくは複数のクライアント・システム130または1つもしくは複数のサードパーティ・システム170にリンクさせるために、ウェブ・サーバが使用されることが可能である。ウェブ・サーバは、ソーシャル・ネットワーキング・システム160と、1つまたは複数のクライアント・システム130との間においてメッセージを受け取って回送するためにメール・サーバまたはその他のメッセージング機能を含むことができる。API要求サーバは、サードパーティ・システム170が、1つまたは複数のAPIを呼び出すことによってソーシャル・ネットワーキング・システム160からの情報にアクセスすることを可能にすることができる。ソーシャル・ネットワーキング・システム160の上のまたは外のユーザのアクションに関してウェブ・サーバから通信を受け取るために、アクション・ロガーが使用されることが可能である。アクション・ログとともに、サードパーティコンテンツ・オブジェクトへのユーザの露出についてのサードパーティコンテンツオブジェクト・ログが保持されることが可能である。通知コントローラは、コンテンツ・オブジェクトに関する情報をクライアント・システム130に提供することができる。情報は、通知としてクライアント・システム130へ押し出されることが可能であり、または情報は、クライアント・システム130から受け取られた要求に応答してクライアント・システム130から引き出されることが可能である。ソーシャル・ネットワーキング・システム160のユーザの1つまたは複数のプライバシー設定を実施するために、認可サーバが使用されることが可能である。ユーザのプライバシー設定は、ユーザに関連付けられている特定の情報がどのように共有されることが可能であるかを特定する。認可サーバは、ユーザが、たとえば、適切なプライバシー設定を設定することなどによって、自分のアクションをソーシャル・ネットワーキング・システム160によって記録されること、またはその他のシステム(たとえば、サードパーティ・システム170)と共有されることのオプトインまたはオプトアウトを行うことを可能にすることができる。サードパーティ
・システム170などのサードパーティから受け取られたコンテンツ・オブジェクトを記憶するために、サードパーティコンテンツオブジェクト・ストアが使用されることが可能である。ユーザに関連付けられているクライアント・システム130から受け取られたロケーション情報を記憶するために、ロケーション・ストアが使用されることが可能である。広告価格設定モジュールが、ソーシャルな情報、現在時刻、ロケーション情報、またはその他の適切な情報を組み合わせて、関連がある広告を、通知の形式でユーザに提供することができる。
【0023】
ソーシャル・グラフ
図2は、例示的なソーシャル・グラフ200を示している。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のソーシャル・グラフ200を1つまたは複数のデータ・ストア内に記憶することができる。特定の実施形態においては、ソーシャル・グラフ200は、複数のノード(複数のユーザ・ノード202、または複数のコンセプト・ノード204を含むことができる)と、ノード同士をつなげる複数のエッジ206とを含むことができる。
図2において示されている例示的なソーシャル・グラフ200は、教示上の目的から、2次元のビジュアル・マップ表示で示されている。特定の実施形態においては、ソーシャル・ネットワーキング・システム160、クライアント・システム130、またはサードパーティ・システム170は、適切なアプリケーションに関してソーシャル・グラフ200および関連したソーシャル・グラフ情報にアクセスすることができる。ソーシャル・グラフ200のノードおよびエッジは、データ・オブジェクトとして、たとえば(ソーシャル・グラフ・データベースなどの)データ・ストア内に記憶されることが可能である。そのようなデータ・ストアは、ソーシャル・グラフ200のノードまたはエッジの1つまたは複数の検索可能なまたはクエリ可能なインデックスを含むことができる。
【0024】
特定の実施形態においては、ユーザ・ノード202は、ソーシャル・ネットワーキング・システム160のユーザに対応することができる。限定ではなく、例として、ユーザは、ソーシャル・ネットワーキング・システム160と、またはソーシャル・ネットワーキング・システム160を通じて対話または通信する個人(人間のユーザ)、エンティティ(たとえば、企業、ビジネス、もしくはサードパーティ・アプリケーション)、または(たとえば、個人もしくはエンティティの)グループであることが可能である。特定の実施形態においては、あるユーザがソーシャル・ネットワーキング・システム160とのアカウントに登録した場合には、ソーシャル・ネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202を作成し、そのユーザ・ノード202を1つまたは複数のデータ・ストア内に記憶することができる。本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、登録されているユーザ、および登録されているユーザに関連付けられているユーザ・ノード202を示すことができる。追加として、または代替として、本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、ソーシャル・ネットワーキング・システム160に登録されていないユーザを示すことができる。特定の実施形態においては、ユーザ・ノード202は、ユーザによって提供された情報、またはソーシャル・ネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、ユーザは、自分の名前、プロフィール画像、連絡先情報、生年月日、性別、婚姻状況、家族状況、勤務先、学歴、好み、関心、またはその他の人口統計学的情報を提供することができる。特定の実施形態においては、ユーザ・ノード202は、ユーザに関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、ユーザ・ノード202は、1つまたは複数のウェブページに対応することができる。
【0025】
特定の実施形態においては、コンセプト・ノード204は、コンセプトに対応すること
ができる。限定ではなく、例として、コンセプトは、場所(たとえば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(たとえば、ソーシャル・ネットワーク・システム160に関連付けられているウェブサイト、もしくはウェブアプリケーション・サーバに関連付けられているサードパーティ・ウェブサイトなど)、エンティティ(たとえば、人、企業、グループ、スポーツ・チーム、もしくは有名人など)、ソーシャル・ネットワーキング・システム160内に、もしくはウェブアプリケーション・サーバなどの外部サーバ上に配置されることが可能であるリソース(たとえば、オーディオ・ファイル、営業ファイル、デジタル写真、テキスト・ファイル、構造化されたドキュメント、もしくはアプリケーションなど)、物的もしくは知的財産(たとえば、彫塑、絵画、映画、ゲーム、曲、アイディア、写真、もしくは執筆作品など)、ゲーム、アクティビティ、アイディアもしくは理論、別の適切なコンセプト、または複数のそのようなコンセプトに対応することができる。コンセプト・ノード204は、ユーザによって提供されたコンセプトの情報、またはソーシャル・ネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、コンセプトの情報は、名前もしくはタイトル、1つもしくは複数のイメージ(たとえば、本の表紙のイメージ)、ロケーション(たとえば、住所もしくは地理的ロケーション)、(URLに関連付けられることが可能である)ウェブサイト、連絡先情報(たとえば、電話番号もしくはEメール・アドレス)、その他の適切なコンセプト情報、またはそのような情報の任意の適切な組合せを含むことができる。特定の実施形態においては、コンセプト・ノード204は、コンセプト・ノード204に関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、コンセプト・ノード204は、1つまたは複数のウェブページに対応することができる。
【0026】
特定の実施形態においては、ソーシャル・グラフ200内のノードは、ウェブページ(「プロフィール・ページ」と呼ばれる場合もある)を表すこと、またはウェブページによって表されることが可能である。プロフィール・ページは、ソーシャル・ネットワーキング・システム160によってホストされること、またはソーシャル・ネットワーキング・システム160にとってアクセス可能であることが可能である。プロフィール・ページは、サードパーティ・サーバ170に関連付けられているサードパーティ・ウェブサイト上にホストされることも可能である。限定ではなく、例として、特定の外部ウェブページに対応するプロフィール・ページは、その特定の外部ウェブページであることが可能であり、そのプロフィール・ページは、特定のコンセプト・ノード204に対応することができる。プロフィール・ページは、その他のユーザのうちのすべてまたは選択されたサブセットによって閲覧できることが可能である。限定ではなく、例として、ユーザ・ノード202は、対応するユーザ・プロフィール・ページを有することができ、そのユーザ・プロフィール・ページにおいては、対応するユーザが、コンテンツを付加すること、言明を行うこと、またはその他の形で自分自身を表現することが可能である。限定ではなく、別の例として、コンセプト・ノード204は、対応するコンセプトプロフィール・ページを有することができ、そのコンセプトプロフィール・ページにおいては、1人または複数のユーザが、特にコンセプト・ノード204に対応するコンセプトに関連して、コンテンツを付加すること、言明を行うこと、または自分自身を表現することが可能である。
【0027】
特定の実施形態においては、コンセプト・ノード204は、サードパーティ・システム170によってホストされているサードパーティ・ウェブページまたはリソースを表すことができる。サードパーティ・ウェブページまたはリソースは、数ある要素の中でも、コンテンツ、選択可能なもしくはその他のアイコン、または、アクションもしくはアクティビティを表す(たとえば、JAVASCRIPT(登録商標)、AJAX、もしくはPHPコードで実装されることが可能である)その他の対話可能なオブジェクトを含むことができる。限定ではなく、例として、サードパーティ・ウェブページは、「いいね!」、「
チェックイン」、「食べる」、「推奨する」、または別の適切なアクションもしくはアクティビティなどの選択可能なアイコンを含むことができる。サードパーティ・ウェブページを閲覧しているユーザは、それらのアイコンのうちの1つ(たとえば、「食べる」)を選択することによってアクションを実行して、クライアント・システム130に、そのユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システム160へ送信させることができる。そのメッセージに応答して、ソーシャル・ネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、サードパーティ・ウェブページまたはリソースに対応するコンセプト・ノード204との間においてエッジ(たとえば、「食べる」エッジ)を作成して、エッジ206を1つまたは複数のデータ・ストア内に記憶することができる。
【0028】
特定の実施形態においては、ソーシャル・グラフ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内でつながっているそれらのユーザ同士またはコンセプト同士に対応するノード同士を示すことができる。
【0029】
特定の実施形態においては、ユーザ・ノード202とコンセプト・ノード204との間におけるエッジ206は、ユーザ・ノード202に関連付けられているユーザによって、コンセプト・ノード204に関連付けられているコンセプトに対して実行された特定のアクションまたはアクティビティを表すことができる。限定ではなく、例として、
図2において示されているように、ユーザは、コンセプトに対して「いいね!を表明すること」、「通うこと」、「プレイすること」、「聴くこと」、「料理すること」、「勤務すること」、または「観ること」を行った可能性があり、それらのそれぞれは、エッジ・タイプまたはサブタイプに対応することができる。コンセプト・ノード204に対応するコンセプトプロフィール・ページは、たとえば、選択可能な「チェックイン」アイコン(たとえば、クリック可能な「チェックイン」アイコンなど)、または選択可能な「お気に入りに追加」アイコンを含むことができる。同様に、ユーザがこれらのアイコンをクリックした後
に、ソーシャル・ネットワーキング・システム160は、それぞれのアクションに対応するユーザのアクションに応答して「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく、別の例として、あるユーザ(ユーザ「C」)が、特定のアプリケーション(オンライン音楽アプリケーションであるSPOTIFY)を使用して特定の曲(「イマジン」)を聴く場合がある。このケースにおいては、ソーシャル・ネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202と、その曲およびアプリケーションに対応するコンセプト・ノード204との間において、(
図2に示されているような)「聴いた」エッジ206および「使用した」エッジを作成して、そのユーザがその曲を聴いてそのアプリケーションを使用したということを示すことができる。その上、ソーシャル・ネットワーキング・システム160は、その曲に対応するコンセプト・ノード204と、そのアプリケーションに対応するコンセプト・ノード204との間において、(
図2に示されているような)「再生した」エッジ206を作成して、その特定の曲がその特定のアプリケーションによって再生されたということを示すことができる。このケースにおいては、「再生した」エッジ206は、外部アプリケーション(SPOTIFY)によって外部オーディオ・ファイル(「イマジン」という曲)に関して実行されたアクションに対応する。本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなげる特定の属性を伴う特定のエッジ206について記述しているが、本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなげる任意の適切な属性を伴う任意の適切なエッジ206を想定している。その上、本開示は、単一の関係を表すユーザ・ノード202とコンセプト・ノード204との間におけるエッジについて記述しているが、本開示は、1つまたは複数の関係を表すユーザ・ノード202とコンセプト・ノード204との間におけるエッジを想定している。限定ではなく、例として、エッジ206は、ユーザが特定のコンセプトに対して「いいね!」の表明をしているということ、およびその特定のコンセプトを使用したということの両方を表すことができる。あるいは、別のエッジ206は、(
図2において、ユーザ「E」を表すユーザ・ノード202と、「SPOTIFY」を表すコンセプト・ノード204との間において示されているような)ユーザ・ノード202とコンセプト・ノード204との間におけるそれぞれのタイプの関係(または、単一の関係が複数集まったもの)を表すことができる。
【0030】
特定の実施形態においては、ソーシャル・ネットワーキング・システム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を形成することを想定している。
【0031】
オブジェクト・タイプに基づくインデックス付け
図3は、ソーシャル・ネットワーキング・システム160のオブジェクトを記憶するための例示的なパーティショニングを示す。複数のデータ・ストア164(これは「バーティカル」とも呼ばれ得る)は、ソーシャル・ネットワーキング・システム160のオブジェクトを記憶し得る。データ・ストアにおいて記憶されるデータ(例えば、ソーシャル・グラフ200についてのデータ)の量は、非常に大きくなり得る。限定ではなく、例として、米国カリフォルニア州メンロー・パークのフェースブック(登録商標)・インコーポレイティッド社によって使用されるソーシャル・グラフは、10
8のオーダーの多数のノードと10
10のオーダーの多数のエッジとを有し得る。典型的には、ビッグデータベースなどのビッグデータの集合は、多数のパーティションに分割され得る。データベースの各パーティションについてのインデックスは、データベース全体についてのインデックスよりも小さいため、パーティショニングは、データベースにアクセスする際のパフォーマンスを改善し得る。パーティションは、多くのサーバにわたって分散され得るため、パーティショニングは、データベースにアクセスする際のパフォーマンスおよび信頼性も改善し得る。通常は、データベースは、データベースの行(または列)を別個に記憶することによってパーティショニングされ得る。特定の実施形態において、データベースは、オブジェクト・タイプに基づいてパーティショニングされ得る。データ・オブジェクトは、複数のパーティションにおいて記憶され、各パーティションは、単一のオブジェクト・タイプのデータ・オブジェクトを保持する。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、期待される検索クエリの結果と同じオブジェクト・タイプのオブジェクトを記憶する特定のパーティションへ検索クエリを提出することによって、検索クエリに応答する検索結果を取り出し得る。本開示は、オブジェクトを特定の方法で記憶することを説明するが、本開示は、オブジェクトを任意の適切な方法で記憶することも企図する。
【0032】
特定の実施形態において、各オブジェクトは、ソーシャル・グラフ200の特定のノードに対応し得る。特定のノードと別のノードとをつないでいるエッジ206は、これらのノードに対応するオブジェクト間の関係を示し得る。オブジェクトを記憶することに加えて、特定のデータ・ストアは、オブジェクトに関係するソーシャル・グラフ情報も記憶し得る。代替的に、特定のオブジェクトに関するソーシャル・グラフ情報は、オブジェクトとは異なるデータ・ストアに記憶されてもよい。ソーシャル・ネットワーキング・システム160は、新たに受信されるオブジェクトと、受信されるオブジェクトに関連付けられている関係とに基づいて、データ・ストアの検索インデックスを更新し得る。
【0033】
特定の実施形態において、各データ・ストア164は、複数のオブジェクト・タイプのうちの特定の1つのオブジェクトをそれぞれのデータストレージデバイス340に記憶するように構成され得る。オブジェクト・タイプは、例えば、ユーザ、写真、投稿、コメント、メッセージ、イベント・リスト、ウェブページ、アプリケーション、ユーザ・プロフィール・ページ、コンセプトプロフィール・ページ、ユーザ・グループ、オーディオ・ファイル、映像、オファー/クーポン、または別の適切なタイプのオブジェクトであってもよい。本開示は、特定のタイプのオブジェクトを説明するが、本開示は、任意の適切なタイプのオブジェクトも企図する。限定ではなく、例として、
図3において示されるユーザ・バーティカルP1は、ユーザ・オブジェクトを記憶し得る。ユーザ・バーティカルP1において記憶される各ユーザ・オブジェクトは、識別子(例えば、ストリング)と、ユーザ名と、オンライン・ソーシャル・ネットワークのユーザについてのプロフィール写真とを含み得る。ソーシャル・ネットワーキング・システム160は、ユーザ・バーティカル
P1において、言語、ロケーション、学歴、連絡先情報、興味、交際ステータス、友達/連絡先のリスト、家族のメンバーのリスト、プライバシー設定などのユーザ・オブジェクトに関連付けられている情報も記憶し得る。限定ではなく、例として、
図3に示される投稿バーティカルP2は、投稿オブジェクトを記憶し得る。投稿バーティカルP2において記憶される各投稿オブジェクトは、識別子と、ソーシャル・ネットワーキング・システム160に投稿された投稿についてのテキスト・ストリングとを備え得る。ソーシャル・ネットワーキング・システム160は、投稿バーティカルP2において、タイム・スタンプ、作成者、プライバシー設定、投稿に「いいね!」の表明をするユーザ、「いいね!」の数、コメント、コメントの数、ロケーションなどの投稿オブジェクトに関連付けられている情報も記憶し得る。限定ではなく、例として、写真バーティカルP3は、写真オブジェクト(または、映像もしくはオーディオなどの他のメディア・タイプのオブジェクト)を記憶し得る。写真バーティカルP3において記憶される各写真オブジェクトは、識別子と写真とを備え得る。ソーシャル・ネットワーキング・システム160は、写真バーティカルP3において、タイム・スタンプ、作成者、プライバシー設定、写真においてタグ付けされているユーザ、写真に「いいね!」の表明をするユーザ、コメントなどの写真オブジェクトに関連付けられている情報も記憶し得る。特定の実施形態において、各データ・ストアは、記憶された各オブジェクトに関連付けられている情報をデータストレージデバイス340において記憶するようにも構成され得る。
【0034】
特定の実施形態において、各バーティカル164において記憶されるオブジェクトは、1つまたは複数の検索インデックスによってインデックス付けされ得る。検索インデックスは、1つまたは複数のコンピューティング・デバイス(例えば、サーバ)を備えるそれぞれのインデックス・サーバ330によってホストされ得る。インデックス・サーバ330は、ソーシャル・ネットワーキング・システム160(またはサードパーティシステム)のユーザまたは他のプロセスによってソーシャル・ネットワーキング・システム160へ提出されるデータ(例えば、写真および写真に関連付けられている情報)に基づいて、検索インデックスを更新し得る。インデックス・サーバ330は、検索インデックスを周期的に(例えば、24時間ごとに)も更新し得る。インデックス・サーバ330は、検索用語を備えるクエリを受信し、その検索用語に対応する1つまたは複数の検索インデックスからの検索結果にアクセスし、その検索結果を取り出す。いくつかの実施形態において、特定のオブジェクト・タイプに対応するバーティカルは、複数の物理的パーティションまたは論理的パーティションを備え、各々がそれぞれの検索インデックスを備える。
【0035】
特定の実施形態において、ソーシャル・ネットワーキング・システム160は、PHP(ハイパーテキスト・プリプロセッサ)プロセス310から検索クエリを受信し得る。PHPプロセス310は、ソーシャル・ネットワーキング・システム160の1つまたは複数のサーバ162によってホストされる、1つまたは複数のコンピューティング・プロセスを備え得る。検索クエリは、ソーシャル・ネットワーキング・システム160(またはサードパーティシステム170)のユーザまたは別のプロセスによってPHPプロセスへ提出されるテキスト・ストリングまたは検索クエリであり得る。
【0036】
インデックスおよび検索クエリに関するさらなる情報は、2012年7月27日に出願された米国特許出願第13/560212号、2012年7月27日に出願された米国特許出願第13/560901号、および2012年12月21日に出願された米国特許出願第13/723861号において見出され、これらの出願の各々が、本願明細書に援用される。
【0037】
タイプアヘッドおよび検索クエリ
特定の実施形態において、1つまたは複数のクライアント側および/またはバックエンド(サーバ側)プロセスは、ソーシャル・グラフ要素(例えば、ユーザ・ノード202、
コンセプト・ノード204、またはエッジ206)と、ソーシャル・ネットワーキング・システム160によってホストされ、またはソーシャル・ネットワーキング・システム160においてアクセス可能であり得る(例えば、ユーザ・プロフィール・ページ、コンセプトプロフィール・ページ、検索結果ウェブページ、またはオンライン・ソーシャル・ネットワークの別の適切なページなどの)要求されるウェブページと共にレンダリングされる入力フォームにおいてユーザによって現在入力されている情報とのマッチングを行うように自動的に試行し得る「タイプアヘッド(typeahead)」機能を実装および利用し得る。特定の実施形態において、ユーザが宣言を行うためにテキストを入力するにつれて、タイプアヘッド機能は、宣言において入力されているテキスト文字のストリングと、ユーザ、コンセプト、またはエッジに対応する文字のストリング(例えば、氏名、説明)およびソーシャル・グラフ200におけるそれらの対応する要素とを一致させようと試行し得る。特定の実施形態において、一致が見出される場合、タイプアヘッド機能は、既存のソーシャル・グラフ要素の(例えば、ノード名/タイプ、ノードID、エッジ名/タイプ、エッジID、または別の適切な参照もしくは識別子などの)ソーシャル・グラフ要素への参照でフォームを自動的に埋める(populate)。タイプアヘッドプロセスについてのさらなる情報は、2010年4月19日に出願された米国特許出願第12/763162号、および2012年7月23日に出願された米国特許出願第13/556072号において見出され、これらの出願の各々が、本願明細書に援用される。
【0038】
図4は、オンライン・ソーシャル・ネットワークの例示的なウェブページを示す。特定の実施形態では、ユーザは、クエリ・フィールド450内にテキストを入力することによってソーシャル・ネットワーク・システム160にクエリを提出することができる。オンライン・ソーシャル・ネットワークのユーザは、オンライン・ソーシャル・ネットワーク(たとえば、ユーザ、コンセプト、ウェブページ、外部のコンテンツまたはリソース)に関連付けられている特定のコンテンツ・オブジェクト(以下「オブジェクト・タイプ」)またはコンテンツオブジェクトタイプ(以下、「オブジェクト・タイプ」)を求めて、しばしば「検索クエリ」と呼ばれるオブジェクトまたはオブジェクト・タイプについて説明する短い語句を検索エンジンに提供することによって検索することができる。クエリは、テキスト・クエリであっても、1または複数のキャラクタ・ストリング(1または複数のnグラムを含んでもよい)を備えてもよい。一般に、ユーザは、1または複数のキャラクタを備えるキャラクタ・ストリングをクエリ・フィールド450内に入力し、そのキャラクタ・ストリングに実質的に一致するソーシャル・ネットワーキング・システム160上のオブジェクトを求めて検索することがある。次いで、ソーシャル・ネットワーキング・システム160は、クエリに一致するオブジェクトを識別するために1または複数のバーティカル164を検索してもよい。検索エンジンは、クエリに基づいて、様々な検索アルゴリズムを使用して検索を行い、検索クエリに関係する可能性が最も高いオブジェクト(たとえば、ユーザ・プロフィール・ページ、コンテンツプロフィール・ページ、または外部のリソース)を識別する検索結果を生成してもよい。検索を行うために、ユーザは、検索クエリを検索エンジンに入力し、または送ってもよい。それに応答して、検索エンジンは、検索クエリに関係する可能性が高い1または複数のリソースを識別してもよく、そのそれぞれは、個々に「検索結果」と呼ばれることも、まとめて、検索クエリに対応する「検索結果」と呼ばれることもある。識別されるオブジェクトは、たとえばソーシャル・グラフ要素(すなわち、ユーザ・ノード202、コンセプト・ノード204、エッジ206)、プロフィール・ページ、外部のウェブページ、またはそれらの任意の組合せを含んでもよい。次いで、ソーシャル・ネットワーキング・システム160は、識別されたオブジェクトに対応する検索結果と共に検索結果ウェブページを生成し、検索結果ウェブページをユーザに送ってもよい。特定の実施形態では、検索エンジンは、その検索を、オンライン・ソーシャル・ネットワークに関連付けられているオブジェクトに限定してもよい。しかし、特定の実施形態では、検索エンジンは、サードパーティ・システム170、インターネットもしくはワールド・ワイド・ウェブ、または他の好適なソースなど、他のソース
に関連付けられているオブジェクトを求めて検索してもよい。本開示は、を特定の方法でソーシャル・ネットワーキング・システム160にクエリすることについて述べているが、本開示は、任意の好適な方法でソーシャル・ネットワーキング・システム160にクエリすることを企図する。
【0039】
検索クエリおよび検索結果に関連して、特定の実施形態は、そのそれぞれを本願明細書に援用する2006年8月11日に出願された米国特許出願第11/503093号、2010年12月22日に出願された米国特許出願第12/977027号、2010年12月23日に出願された米国特許出願第12/米国特許出願第12/978265号、および2012年12月31日に出願された米国特許出願第13/732101号に開示されている1または複数のシステム、構成要素、要素、機能、方法、動作、または工程を使用することがある。
【0040】
クエリの書き換えおよびクエリ・コマンドの生成
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、クエリしているユーザから受け取られたクエリ(たとえば、テキスト・クエリまたは構造化クエリ)に基づいてクエリ・コマンドを生成することができる。次いで、クエリ・コマンドは、ソーシャル・ネットワーキング・システム160のデータ・ストア164内のオブジェクトに対する検索で使用されてもよい。特定の実施形態では、クエリ・コマンドは、ソーシャル・ネットワーキング・システム160の1または複数のデータ・ストアまたはバーティカルのための検索インデックスを使用する検索のために提供されてもよい。クエリ・コマンドは、1または複数のクエリ制約を備えてもよい。各クエリ制約は、パース・アルゴリズムによってクエリをパースすることに基づいて、ソーシャル・ネットワーキング・システム160によって識別されてもよい。各クエリ制約は、特定のオブジェクト・タイプを求める要求であってもよい。特定の実施形態では、クエリ・コマンドは、記号表現またはs式におけるクエリ制約を備えてもよい。ソーシャル・ネットワーキング・システム160は、構造化クエリ「Photos I like(写真 私 好む)」をクエリ・コマンド(photos_liked_by:<me>)へパースすることができる。クエリ・コマンド(photos_liked_by:<me>)は、単一の写真の結果タイプと共にユーザ(すなわち、クエリしているユーザに対応する<me>)によって好まれる写真のためのクエリを示す。クエリ制約は、たとえば、ソーシャル・グラフ制約(たとえば、特定のノードもしくはノードタイプを求める要求、または特定のエッジもしくはエッジ・タイプに接続されたノードを求める要求)、オブジェクト制約(たとえば、特定のオブジェクトまたはオブジェクト・タイプを求める要求)、ロケーション制約(たとえば、特定の地理的ロケーションに関連付けられているオブジェクトまたはソーシャルグラフ・エンティティを求める要求)、他の好適な制約、またはそれらの任意の組合せを含んでもよい。特定の実施形態では、クエリ・コマンドは、プレフィックスおよびオブジェクトを備えてもよい。オブジェクトは、ソーシャル・グラフ200内の特定のノードに対応してもよく、一方、プレフィックスは、ソーシャル・グラフ200内の特定のノードに接続する特定のエッジ206またはエッジタイプ(関係の特定のタイプを示す)に接続してもよい。限定するものではなく例として、クエリ・コマンド(pages_liked_by:<user>)は、プレフィックスpages_liked_byおよびオブジェクト<user>を備える。本開示は、特定のクエリ・コマンドを特定の方法で生成することについて述べているが、本開示は、任意の好適なクエリ・コマンドを任意の好適な方法で生成することを企図する。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、「弱いand」(WAND)または「強いor」(SOR)を備えるクエリ・コマンドを生成してもよい。WANDおよびSOR演算子に関するさらなる情報は、2012年7月27日に出願された米国特許出願第13/560901号および2013年5月3日に出願された米国特許出願第13/887049号に見出すことができ、これらを本願明細書に援用する。
【0041】
特定の実施形態では、クエリ・コマンドを生成するために使用されるパース・アルゴリズムは、1または複数のパース構成パラメータを備えてもよい。パース構成パラメータは、ユーザから受け取られたクエリの特定のタイプのためのクエリ・コマンドをどのように生成するか指定することができる。パース構成パラメータは、たとえば、指定された数のデータ・ストア164から取り出されることになる指定されたオブジェクト・タイプの指定された数のオブジェクトのための指定された数のクエリ制約を有するクエリ・コマンドを生成するための命令を指定してもよい。換言すれば、パース構成パラメータは、検索されるべきオブジェクトのタイプ、およびアクセスを受けるべきバーティカル164のタイプ/数を指定してもよい。アクセスされる各バーティカル164について、パース構成パラメータは、各バーティカル164から取り出すためにオブジェクトの数を指定してもよい。限定するものではなく例として、検索クエリ入力「kais」に応答して、ソーシャル・ネットワーキング・システム160は、以下のクエリ・コマンドを生成することができる。
【0042】
(AND(name:“kais”)
(OR friends of:(friends of:<me>):num to score:50)
(OR pages:<>:num to score:25))
このクエリ・コマンドは、第1のクエリ制約(OR friends of:(friends of:<me>):num to score:50)を含み、これは、ソーシャル・ネットワーキング・システム160に、ユーザ・バーティカル164にアクセスし、ストリング「kais」に一致する、クエリしているユーザの友達の友達であるユーザを求めて検索し、上位50個の結果を取り出すように命令する。第2のクエリ制約(OR
pages:<>:num to score:25)は、ソーシャル・ネットワーキング・システム160に、ウェブページ・バーティカル164にアクセスし、ストリング「kais」に一致するページを求めて検索し、上位25個の結果を取り出すように命令する。しかし、このプロセスは、ソーシャル・ネットワーキング・システム160が十分な数の検索結果を生成するために特定のオブジェクト・タイプのオブジェクトを過剰に取り出さなければならない場合、不十分なものとなり得る。クエリを処理するとき消費される処理(CPU)電力の量を改善するために、ソーシャル・ネットワーキング・システム160は、オブジェクト・タイプの数および各バーティカル164から取り出されるオブジェクトの数を最小限に抑え、一方、依然として上位N位のスコアのオブジェクトを取り出すために十分な数のオブジェクトを取り出すパース構成パラメータを使用してもよい。限定するものではなく例として、先の例を続けると、上位10個の検索結果を生成するために、ソーシャル・ネットワーキング・システム160は、上位25人の友達の友達と、上位15個のページとを取り出すだけでよい。これは、たとえば26位から50位にランクされる友達の友達がすべて、上位10個の検索結果の外になる最終スコアを有するからであってもよい。したがって、同じ品質の検索結果を維持するために、より少ないユーザが引かれる必要があるだけである。これは、処理電力が各検索クエリによって消費されることを可能にする。パース構成パラメータは、より多くの、もしくはより少ないオブジェクト・タイプ(およびおそらくは追加のバーティカル164)が検索されるように、または各オブジェクト・タイプのより多くの、もしくはより少ないオブジェクトが取り出されるように改訂されてもよい。本開示は、特定のクエリ・コマンドを特定の方法で生成することについて述べているが、本開示は、任意の好適なクエリ・コマンドを任意の好適な方法で生成することを企図する。
【0043】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、クエリ・コマンドのクエリ制約に実質的に一致する1または複数のバーティカル164からオブジェクトを取り出してもよい。ソーシャル・ネットワーキング・システム160は、クエリ・
コマンドによって指定された、ユーザから受け取られた検索クエリに応答して1または複数のバーティカル164にアクセスしてもよい。各バーティカル164は、オンライン・ソーシャル・ネットワークに関連付けられている1または複数のオブジェクトを記憶してもよい。検索クエリに応答してアクセスされるバーティカル164の数およびタイプは、クエリ・コマンドのクエリ制約に基づいてもよい。各バーティカル164は、クエリ制約によって指定されたオブジェクト・タイプのオンライン・ソーシャル・ネットワークに関連付けられているオブジェクトを記憶してもよい。限定するものではなく例として、ユーザのためのクエリ・コマンドのクエリ制約の1つについて、ソーシャル・ネットワーキング・システム160は、クエリに一致する1人または複数のユーザを識別するためにユーザ・バーティカルP1にアクセスしてもよい。ソーシャル・ネットワーキング・システム160は、たとえば、1または複数のストリング・マッチング・アルゴリズムを使用し、キャラクタ・ストリングをオブジェクトの1または複数のそれぞれに関連付けられているキャラクタのストリングとマッチングすることによってなど、任意の好適な方法で一致するオブジェクトを識別してもよい。限定するものではなく例として、検索クエリ入力「kais」に応答して、ソーシャル・ネットワーキング・システム160は、1または複数のユーザ・バーティカルP1および1または複数の投稿バーティカルP2にアクセスし、これらのバーティカル内に記憶されたオブジェクト(たとえば、ユーザ・プロフィール・ページまたは投稿)を識別するために、アクセスされたバーティカルを検索してもよい。ソーシャル・ネットワーキング・システム160は、以下のクエリ・コマンドをアクセスされた各バーティカルに提出してもよい。
【0044】
(AND(name:”kais”)
(OR friends of:(friends of:<me>):num to score:50)
(OR pages:<>:num to score:25))
ソーシャル・ネットワーキング・システム160は、各バーティカル164のインデックス・サーバ330にアクセスし、インデックス・サーバ330にクエリ・コマンドに一致する結果を返させてもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、ユーザ・バーティカルP1のインデックス・サーバ330にアクセスし、インデックス・サーバ330にユーザ<Kaisen L>、<Nathen
Kaiser>、<Catie Kaiser>および<Alex Kaiser>(それぞれがユーザ識別子によって表される)を識別させてもよい。すなわち、ユーザ<Kaisen L>、<Nathen Kaiser>、<Catie Kaiser>および<Alex Kaiser>は、「kais」に一致する名前を有し得る。さらに、これらの識別されたユーザのそれぞれは、クエリ制約(friends of:(friends of:<me>))と一致し、これは、クエリしているユーザの友達の友達であるユーザに対応するオブジェクトを要求する。また、ソーシャル・ネットワーキング・システム160は、投稿バーティカルP2のインデックス・サーバ330にアクセスし、インデックス・サーバ330にバンド<Kaiser Chiefs>を参照する投稿を識別させてもよい。すなわち、バンド<Kaiser Chiefs>は、「kais」に一致する名前を有し得る。さらに、識別された投稿は、クエリ制約(posts:<>)に一致し、これは、投稿に対応するオブジェクトを要求する。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、1または複数の検索結果を識別するために、ソーシャル・グラフ200を、特定のノードから特定の接続エッジ206(またはエッジタイプ)に沿って、クエリ・コマンドによって指定されるオブジェクトに対応するノードまで横断することによって、クエリ・コマンドに一致するオブジェクトを識別してもよい。限定するものではなく例として、クエリ・コマンド(pages_liked_by:<user>)は、ソーシャル・ネットワーキング・システム160によって、ソーシャル・グラフ200を、<user>に対応するユーザ・ノード202から、「いいね」タイプ・エッジ206に沿って、<user>によって「いいね」を表明されたペー
ジに対応するコンセプト・ノード204まで横断することによって実行されてもよい。本開示は、特定の方法でオブジェクトを求めて検索することについて述べているが、本開示は、任意の好適な方法でオブジェクトを求めて検索することを企図する。
【0045】
特定の実施形態では、一致するオブジェクトを識別するためにバーティカル164を検索するとき、ソーシャル・ネットワーキング・システム160は、特定のバーティカル164内の一致するノードを識別し、その閾値数までスコア付けするだけでよい。ソーシャル・ネットワーキング・システム160がクエリ(または特定のクエリ制約)に応答してバーティカル164からオブジェクトを取り出すとき、それらのオブジェクトは、インデックス付けされたオブジェクトの静的スコアまたは静的ランクに基づいて取り出されてもよい。限定するものではなく例として、閾値数までの静的ランクを有するオブジェクトは取り出されて、クエリしているユーザに返信するために検索結果を決定するように、たとえば、様々な要因に基づいて取り出されたオブジェクトについて最終スコアを計算することができるスコア付けアルゴリズムによってさらに処理されてもよい。バーティカル164内に記憶された各オブジェクトは、静的スコア付けアルゴリズムに基づいて所定の静的スコアに関連付けられてもよい。特定の実施形態では、各オブジェクトの所定の静的スコアは、クエリの特定のタイプについてのオブジェクトの所定のランキングであってもよい。限定するものではなく例として、構造化クエリが「アレックス(Alex)の友達」(これは、「アレックスの友達の写真」または「アレックスの友達の友達」など、より大きなクエリの一部分であってもよい)を備えるとき、ユーザ「アレックス」の友達に対応するユーザ・ノード202は、この構造化クエリに対する所定の静的スコアを有してもよい。アレックスの上位3人の友達は、たとえば、「ラリー」「モー」および「ジョー」がこの順番でランク付けされたものであってもよい。したがって、クエリ「アレックスの友達」(またはクエリ・コマンドfriends of:<Alex>)に応答してユーザ・バーティカルP1を検索するとき、「ラリー」「モー」および「ジョー」が上位3個のオブジェクトとして取り出されてもよい。バーティカル164を検索するとき、ソーシャル・ネットワーキング・システム160は、オブジェクトの静的スコアに基づいてオブジェクトを取り出してもよく、最高/最良の静的スコアを有するオブジェクトが取り出されてもよい。次いで、一致するオブジェクトの閾値数が、ソーシャル・ネットワーキング・システム160によってスコア付けおよびランク付けされてもよい。閾値数は、検索結果を向上させるように、または検索結果の処理を最適化するように選択されてもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、ユーザを要求するクエリ・コマンドに応答してユーザ・バーティカルP1内で上位N個の一致するオブジェクト(すなわち、スコア付けする数、または本明細書で使用されている例におけるs式について「num to score」)を識別するだけでよい。上位N個のオブジェクトは、ユーザ・バーティカルP1に対応する検索インデックスにおけるオブジェクトのそれらの静的スコア(たとえば、クエリしているユーザに対するユーザの現在のソーシャル・グラフ・アフィニティに基づくランキング)によって決定されてもよい。静的スコアは、静的スコア付けアルゴリズムを使用してソーシャル・ネットワーキング・システム160によって予め決定されてもよい。しかし、このプロセスは、どのオブジェクトを検索結果としてユーザに返信するか決定するスコア付けアルゴリズムに従って上位N位のスコアのオブジェクトを見出すためにバーティカル164から過剰な数のオブジェクトを取り出さなければならない場合、不十分なものとなり得る。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、クエリに応答して特定のバーティカル164にアクセスしてもよく、各オブジェクトが、関連付けられている静的ランクを有する場合、100個の一致するオブジェクトを取り出す。次いで、これらの100個のオブジェクトについて、スコア付けアルゴリズムによって(たとえば、ソーシャル・グラフ・アフィニティに基づいて)最終スコアが計算されてもよい。スコア付けアルゴリズムによる上位5位のスコアのオブジェクトは、たとえば、4、12、20、78、95の静的ランクを有するオブジェクトであってもよい。このプロセスは、たとえば、上位N個
のオブジェクトの静的ランクが最終ランクによる上位N個のオブジェクトと同じである場合、改善され得る。オブジェクトの静的ランクを検索エンジンによって計算される最終ランクとより緊密に整合することによって、ソーシャル・ネットワーキング・システムは、十分な数の検索結果を生成するために取り出しスコア付けする必要がある、一致するオブジェクトの数を削減することができる。特定の実施形態では、オブジェクトの静的スコアは、検索クエリそれ自体に基づいてもよい。換言すれば、特定のクエリまたはクエリタイプに応じて、オブジェクトは、そのクエリまたはクエリタイプに対して異なる静的スコアを有することがある。限定するものではなく例として、num to scoreが500である場合、上位500個のオブジェクトが識別され得る。次いで、これらの500個のオブジェクトは、1または複数の要因(たとえば、検索クエリまたは他のクエリ制約に対する一致、ソーシャル・グラフ・アフィニティ、検索履歴など)に基づいてスコア付けされてもよく、次いで、上位M個の結果が、クエリしているユーザに対して表示するための検索結果として生成されてもよい。特定の実施形態では、1または複数回のランク付け後の上位の結果が、最終回のランク付けのためにアグリゲータ320に送られてもよく、そこで、クエリしているユーザに提示する前に、識別されたオブジェクトが再順序付けされても、冗長な結果が落とされても、任意の他のタイプの結果処理が行われてもよい。本開示は、特定の数のオブジェクトを識別することについて述べているが、本開示は、任意の好適な数のオブジェクトを識別することを企図する。さらに、本開示は、オブジェクトを特定の方法でランク付けすることについて述べているが、本開示は、オブジェクトを任意の好適な方法でランク付けすることを企図する。
【0046】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、クエリ制約に一致すると識別された1または複数のオブジェクトをスコア付けしてもよい。取り出された/識別された各オブジェクトのためのスコア(最終スコアとも呼ばれる)は、たとえば特定のスコア付けアルゴリズムを使用することによるなど、任意の好適な方法で計算されてよい。識別された各オブジェクトは、ソーシャル・グラフ200の特定のユーザ・ノード202またはコンセプト・ノード204に対応し得る。クエリ・コマンドが複数のクエリ制約を含むとき、ソーシャル・ネットワーキング・システム160は、個々に、または一緒に各クエリ制約に一致するノードをスコア付けしてもよい。ソーシャル・ネットワーキング・システム160は、識別されたノードのオブジェクト・タイプに対応するデータ・ストア164にアクセスすることによって、識別されたノードの第1のセットをスコア付けしてもよい。限定するものではなく例として、クエリ制約(extract authors:(term posts liked by:<Mark>))に一致する識別されたノードを生成するとき、ソーシャル・ネットワーキング・システム160は、ユーザ・バーティカル164内のユーザのセット(<Tom>,<Dick>,<Harry>)を識別することができる。次いで、ソーシャル・ネットワーキング・システム160は、ユーザ<Mark>に対するそれらのそれぞれのソーシャル・アフィニティ(親和性)に基づいてユーザ<Tom>、<Dick>、<Harry>をスコア付けしてもよい。たとえば、次いで投稿バーティカル164のソーシャル・ネットワーキング・システム160は、ユーザ<Mark>によって「いいね」を表明された投稿のリスト内の投稿の数に基づいてユーザ<Tom>、<Dick>、<Harry>の識別されたノードをスコア付けしてもよい。ユーザ<Tom>、<Dick>、<Harry>は、ユーザ<Mark>によって「いいね」を表明された以下の投稿、すなわち、<post1>、<post2>、<post3>、<post4>、<post5>、<post6>の著者である可能性がある。ユーザ<Dick>が<post1>、<post2>、<post3>の著者であり、ユーザ<Tom>が<post5>および<post6>の著者であり、ユーザ<Harry>が<post4>の著者である場合、ソーシャル・ネットワーキング・システム160は、ユーザ<Dick>がユーザ<Mark>によって「いいね」を表明された投稿のリスト内の大部分の投稿の著者であるのでユーザ<Dick>を最高としてスコア付けしてもよく、<Tom>および<Harry>は、連続してよ
り低いスコアを有する。限定するものではなく別の例として、先の例を使用して、ソーシャル・ネットワーキング・システム160は、投稿を投稿の「いいね」のカウントにマッピングする正引きインデックスにアクセスしてもよい。インデックス・サーバは、正引きインデックスにアクセスし、ユーザ<Mark>によって「いいね」を表明された投稿のリストの各投稿について「いいね」のカウントを取り出してもよい。インデックス・サーバは、「いいね」のそれぞれのカウントに基づいて投稿のリスト(すなわち、<post1>、<post2>、<post3>、<post4>、<post5>、<post6>)内の投稿をスコア付けし、上位のスコア付けされた投稿(たとえば、上位3位のスコア付けされた投稿または最も「いいね」が表明された投稿)のソーシャル・ネットワーキング・システム160著者に第1の識別されたノードとして返してもよい。特定の識別されたノードについて各適切なスコア付け要因が検討された後で、その識別されたノードのための全体的なスコアが決定されてもよい。次いで、ノードのスコア付けに基づいて、ソーシャル・ネットワーキング・システム160は、識別されたノードの1または複数のセットを生成してもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、閾値スコアより大きいスコアを有するノードに対応する識別されたノードのセットを生成するだけでよい。限定するものではなく別の例として、ソーシャル・ネットワーキング・システム160は、スコア付けされたノードをランク付けし、次いで、閾値ランク(たとえば、上位10個、上位20個など)より大きいランクを有するノードに対応する識別されたノードのセットを生成するだけでよい。本開示は、一致するノードを特定の方法でスコア付けすることについて述べているが、本開示は、一致するノードを任意の好適な方法でスコア付けすることを企図する。
【0047】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、クエリしているユーザ(またはクエリしているユーザのユーザ・ノード202)に関連付けられているソーシャル・グラフ・アフィニティに基づいて検索結果をスコア付けしてもよい。取り出されたオブジェクトをスコア付けするために使用されるスコア付けアルゴリズムは、ソーシャル・グラフ・アフィニティを要因として使用してもよい。ソーシャル・ネットワーキング・システム160は、様々なソーシャルグラフ・エンティティの互いのソーシャル・グラフ・アフィニティ(本明細書では「親和性」と呼ばれることがある)を決定してもよい。親和性は、ユーザ、コンセプト、コンテンツ、アクション、広告、オンライン・ソーシャル・ネットワークに関連付けられている他のオブジェクト、またはそれらの任意の好適な組合せなど、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト間の関係の強さまたは関心のレベルを表すことができる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、親和性係数(本明細書では「係数」と呼ばれることがある)を使用してソーシャル・グラフ・アフィニティを測定または定量化してもよい。係数は、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト間の関係の強さを表し、または定量化してもよい。この係数はまた、確率、またはアクションにおけるユーザの関心に基づいてユーザが特定のアクションを実施する予想確率を測定する関数を表すことができる。特定の実施形態では、ソーシャル・グラフ・アフィニティは、検索結果をスコア付けするとき要因として使用されてもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、構造化クエリ「私の友達の写真」に応答して、クエリ・コマンド(photos_of(users:<friends>))を生成してもよく、このクエリの検索意図は、ユーザの友達を示すグループ写真を閲覧することであると決定してもよい。ユーザの友達が写真内でタグ付けされた写真に対応する、識別されたコンセプト・ノード204をスコア付けするとき、ソーシャル・ネットワーキング・システム160は、クエリしているユーザに対する、写真内でタグ付けされたユーザの、クエリしているユーザのそれぞれのソーシャル・グラフ・アフィニティ(たとえば、親和性係数によって測定されたもの)に基づいて写真によりよくスコア付けしてもよい。さらに、クエリしているユーザの友達をより多く示す写真は、ユーザの友達をあまり示さない写真より高くタグ付けされてもよい。なぜ
なら、より多くの友達が写真内でタグ付けされていることは、その特定の写真に対する、クエリしているユーザの親和性を高め得るからである。本開示は、親和性に基づいて特定の方法で検索結果をスコア付けすることについて述べているが、本開示は、親和性に基づいて任意の好適な方法で検索結果をスコア付けすることを企図する。さらに、ソーシャル・グラフ・アフィニティおよび親和性に関連して、特定の実施形態は、そのそれぞれを本願明細書に援用する2006年8月11日に出願された米国特許出願第11/503093号、2010年12月22日に出願された米国特許出願第12/977027号、2010年12月23日に出願された米国特許出願第12/978265号、および2012年10月1日に出願された米国特許出願第13/632869号に開示されている1または複数のシステム、構成要素、要素、機能、方法、動作、または工程を使用することがある。
【0048】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、取り出されたオブジェクトの最終スコアと静的スコアの比較に基づいて、取り出されたオブジェクトの1または複数について1または複数の改訂された静的スコアを決定してもよい。インデックス付けされたオブジェクトに関連付けられている静的スコアは、アーカイブされた検索クエリを使用して行われる実験に基づいて静的スコアを改訂することによって改善され得る。アーカイブされたクエリをパースし、クエリ・コマンドを生成することができ、第1の数のオブジェクトをそれらの静的スコアに基づいて取り出すために、クエリ・コマンドをバーティカル164に提出することができる。取り出されたオブジェクトは、計算されたそれらの最終スコアを有することができる。次いで、最終スコアを静的スコアと比較することができ、静的スコアを、最終スコアにより密に一致するように修正することができる。これは、静的スコアが様々なクエリについて最終スコアに可能な限り密に一致するように最適化されるように、様々なクエリについて行うことができる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、改訂された静的スコアに基づいて、静的スコア付けアルゴリズムを改訂してもよい。静的スコア付けアルゴリズムは、取り出されたオブジェクトのうちの1または複数の、改訂された静的スコアのうちの1または複数にそれぞれ基づいて、オブジェクトのための所定の静的スコアを計算するために改訂されてもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、各オブジェクトのための所定の静的スコアと各オブジェクトのための計算された最終スコアとの差を決定することによって静的スコアを改訂してもよい。次いで、ソーシャル・ネットワーキング・システム160は、決定された差に基づいて、オブジェクトのうちの1または複数の静的スコアのうちの1または複数を改訂してもよい。限定するものではなく例として、先の例を続けると、スコア付けアルゴリズムによる最終スコアによる上位5個のオブジェクトは、たとえば、4、12、20、78、95の静的ランクを有するオブジェクトであってもよい。すべてのオブジェクトの静的ランクは、これらのオブジェクトが1から5により近い静的ランクを有するように、上方に改訂されてもよい。理論的には、理想的な静的ランクは、1、2、3、4、5になることに留意されたい。しかし、最終スコアはソーシャル・グラフ・アフィニティおよびユーザ履歴など様々な要因に基づいてもよいので、第1のクエリしているユーザまたは第1のクエリタイプに対する理想的な静的ランクは、第2のクエリしているユーザまたは第2のクエリタイプに対する理想的な静的ランクとは異なることがあり得る。したがって、オブジェクトの静的ランクは、様々なユーザおよびクエリタイプに対してオブジェクトの最終ランクとより密に一致するように改訂されてもよい。本開示は、静的スコア付けアルゴリズムを特定の方法で改訂することについて述べているが、本開示は、静的スコア付けアルゴリズムを任意の好適な方法で改訂することを企図する。
【0049】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、取り出されたオブジェクトの最終スコアとクエリ制約の指定された数のオブジェクトの比較に基づいて、1または複数の改訂されたパース構成パラメータを生成してもよい。パース・アルゴ
リズムは、アーカイブされた検索クエリを使用して行われる実験に基づいて、クエリ制約がどのように生成されるかを改訂することによって改善され得る。アーカイブされたクエリをパースし、クエリ・コマンドを生成し、それを第1の数のオブジェクトを取り出すために1または複数のバーティカル164に提出することができる。次いで、ソーシャル・ネットワーキング・システム160は、取り出されたオブジェクトのための最終スコアを計算してもよく、次いで、それらの最終スコアを解析し、指定されたオブジェクト・タイプについて取り出されたオブジェクトの数を削減しつつ上位N位のスコアの結果のいくつかまたはすべてを依然として取り出すことができるかどうか決定してもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、指定されたオブジェクト・タイプの指定された数のオブジェクトの1または複数が、改訂されたパース構成パラメータに基づいて削減されるように、パース構成パラメータに基づいてパース・アルゴリズムを改訂してもよい。限定するものではなく例として、特定のクエリに応答してパース・アルゴリズムによって生成される特定のクエリ・コマンドs式について、ソーシャル・ネットワーキング・システム160は、「num to score」によって指定されたオブジェクトの指定された数が削減され、一方、上位N位のスコアの結果のいくつかまたはすべてを依然として取り出す(たとえば、検索結果の閾値品質を維持するように十分な数の上位N位のスコアの結果を取り出す)ようにそのクエリ・コマンドを生成するために使用されるパース構成パラメータを改訂してもよい。num to scoreを削減することができる場合には、パース・アルゴリズム(または特定のパース構成パラメータ)は、より少ないオブジェクトまたはオブジェクト・タイプを取り出すように改訂されてもよい。num to scoreが削減される量は、ソーシャル・ネットワーキング・システム160によって消費される処理電力に直接相関され得る。これらの実験がアーカイブされたクエリを使用して行われるとき、ソーシャル・ネットワーキング・システム160は、スコア品質対CPU電力(または単純にnum to score)のデータを生成し、そのデータを使用し、特定のクエリまたはクエリタイプについて、ソーシャル・ネットワーキング・システム160が依然として十分な高品質の結果(すなわち、高いスコアの結果)を取り出し、一方、消費される電力を著しく削減する点を見出すことができる。換言すれば、処理電力の十分な節約がある場合、一部の検索結果品質を犠牲にすることは価値があり得る。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、改訂されたパース構成パラメータに基づいてパース・アルゴリズムによって生成されるクエリ・コマンドからクエリ制約の1または複数が除去されるように、パース構成パラメータに基づいてパース・アルゴリズムを改訂してもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、アクセスするための指定された数のデータ・ストア164の1または複数が改訂されたパース構成パラメータに基づいて削減されるように、パース構成パラメータに基づいてパース・アルゴリズムを改訂してもよい。限定するものではなく例として、先の例を続けると、検索クエリ入力「kais」に応答して、ソーシャル・ネットワーキング・システム160は、以下のクエリ・コマンドを生成することができる。
【0050】
(AND(name:“kais”)
(OR friends of:(friends of:<me>):num to score:50)
(OR pages:<>:num to score:25))
投稿バーティカルP2からの取り出されたページの最終スコアの解析が、取り出されたページのどれも上位N個の結果内にないことを示す場合には、クエリ制約全体が除去されてもよい。換言すれば、パース・アルゴリズムは、投稿バーティカルP2がこのクエリタイプに応答して検索されないように改訂されてもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、閾値スコア以上の最終スコアを有するすべてのオブジェクトを取り出すために、データ・ストアから取り出されることを必要とするオブジェクトの数に基づいてパース・アルゴリズムを改訂してもよい。限定するものではなく例
として、ソーシャル・ネットワーキング・システムは、閾値スコア以上のスコア(またはランク)を有する、取り出された各オブジェクトを識別してもよい。次いで、ソーシャル・ネットワーキング・システム160は、各クエリ・コマンドの各クエリ制約について、閾値スコア以上のスコアを有する、識別された各オブジェクトを取り出すために、データ・ストアから取り出されることを必要とするいくつかのオブジェクトを決定してもよい。次いで、データ・ストアから取り出されることを必要とする決定された数のオブジェクトに基づいて、ソーシャル・ネットワーキング・システム160は、パース構成パラメータの1または複数を改訂してもよい。本開示は、パース・アルゴリズムを特定の方法で改訂することについて述べているが、本開示は、パース・アルゴリズムを任意の好適な方法で改訂することを企図する。
【0051】
検索結果の生成
特定の実施形態では、クエリしているユーザから受け取られたクエリに応答して、ソーシャル・ネットワーキング・システム160は、1または複数の検索結果を生成してもよく、これらの検索結果は、クエリに対応する。ソーシャル・ネットワーキング・システム160は、クエリを満たす、または他の形でクエリに一致するオブジェクト(たとえば、ユーザ、写真、プロフィール・ページ(またはプロフィール・ページのコンテンツ)など)を識別してもよい。各検索結果は、ソーシャル・グラフ200のノードに対応してもよい。次いで、識別された各オブジェクトに対応する検索結果が生成され得る。限定するものではなく例として、クエリ「マットおよびステファニーの写真」に応答して、ソーシャル・ネットワーキング・システム160は、ユーザの「マット」および「ステファニー」が共に写真内でタグ付けされている写真を識別することができる。次いで、この写真に対応する検索結果が生成され、ユーザに送られてもよい。特定の実施形態では、各検索結果は、1または複数のオブジェクトに関連付けられてもよく、クエリに対応するクエリ・コマンドの各クエリ制約は、その特定の検索結果に関連付けられているオブジェクトの1または複数によって満たされる。限定するものではなく例として、先の例を続けると、構造化クエリ「マットおよびステファニーの写真」に応答して、ソーシャル・ネットワーキング・システム160は、クエリをパースし、クエリ・コマンド(intersect(photos_of:<Matt>),(photos_of:<Stephanie>))を生成し、これを実行し、ユーザの「マット」および「ステファニー」(共に構造化クエリ内で参照されていた)が共に写真内でタグ付けされている(すなわち、彼らのユーザ・ノード202がタグド・イン・タイプ・エッジ(tagged−in−type edge)206によって写真に対応するコンセプト・ノード204に接続される)写真に対応する検索結果を生成することができる。換言すれば、(photos_of:<Matt>)および(photos_of:<Stephanie>)のための制約は共にその写真によって満たされる。なぜなら、その写真は、ユーザの「マット」および「ステファニー」のためのユーザ・ノード202に接続されているからである。クエリに一致するものとして識別されたノードは、スコア付け(およびおそらくはランク付け)されてもよく、次いで、1または複数(たとえば、閾値数)が、ユーザに対して表示するために検索結果として生成されてもよい。本開示は、検索結果を特定の方法で生成することについて述べているが、本開示は、検索結果を任意の好適な方法で生成することを企図する。
【0052】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、1または複数の検索結果をクエリしているユーザに送ってもよい。検索結果は、たとえば検索結果ウェブサイト上のリンクのリストの形態でユーザに送られてもよく、各リンクは、識別されたリソースまたはコンテンツのいくつかを含む異なるウェブサイトに関連付けられている。特定の実施形態では、検索結果内の各リンクは、対応するウェブサイトがどこに位置するか、およびそれを取り出すための機構を指定するユニフォームリソースロケータ(URL)の形態であってもよい。次いで、ソーシャル・ネットワーキング・システム160は、検索結果ウェブサイトをユーザのクライアント・システム130上のウェブ・ブラウザ
132に送ってもよい。次いで、ユーザは、URLリンクをクリックする、または他の方法で検索結果ウェブサイトからコンテンツを選択し、ソーシャル・ネットワーキング・システム160から、または外部システム(たとえば、サードパーティ・システム170など)からコンテンツにアクセスしてもよい。特定の実施形態では、各検索結果は、プロフィール・ページへのリンク、およびプロフィール・ページ(またはそのページに対応するノード)の説明または概要を含んでもよい。検索結果は、クエリしているユーザに検索結果ページとして提示され送られてもよい。検索結果を生成するとき、ソーシャル・ネットワーキング・システム160は、各検索結果について1または複数のスニペットを生成してもよく、これらのスニペットは、検索結果の標的についてのコンテキスト情報(すなわち、ソーシャルグラフ・エンティティ、プロフィール・ページ、または特定の検索結果に対応する他のコンテンツについてのコンテキスト情報)である。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、特定の閾値スコア/ランクより大きいスコア/ランクを有する検索結果を送るだけでよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、特定の検索クエリに応答して、上位10個の結果をクエリしているユーザに返信するだけでよい。本開示は、特定の検索結果を特定の方法で送ることについて述べているが、本開示は、任意の好適な検索結果を任意の好適な方法で送ることを企図する。
【0053】
検索結果に関するさらなる情報は、2012年12月31日に出願された米国特許出願第13/731939号に見出すことができ、それを本願明細書に援用する。
検索結果のブレンド
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、関連のオブジェクトを参照して1または複数の検索結果モジュール510(以下、「モジュール」)を生成し、モジュール510を検索結果514のセットに交互配置(インタリーブ)、すなわち「ブレンド」してもよい。1または複数のモジュール510は、モジュール510に関連付けられているオブジェクト・タイプに少なくとも一部基づいて、および/または検索クエリの分類を決定することによってスコア付けされてもよい。本明細書では、モジュールに言及することは、オブジェクト(たとえば、ユーザ・プロフィール、投稿、写真、ウェブページなど)のグループ化、または検索クエリに応答して識別されるオブジェクトに対する参照に及ぶことがある。限定するものではなく例として、各モジュール510のオブジェクトの識別は、各ユーザについてパーソナライズされてもよい。限定するものではなく別の例として、ユーザは、たとえば、所定のタッチ・ジェスチャを通じたモジュール510の検索結果514間でのナビゲーションなど、検索結果514と対話することができる。本開示は、クエリに応答して検索結果を特定の方法で生成およびブレンドすることについて述べているが、本開示は、クエリに応答して検索結果を任意の好適な方法で生成およびブレンドすることを企図する。
【0054】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークの第1のユーザから、1または複数のnグラムを備える検索クエリ入力を受け取ることができる。ソーシャル・ネットワーキング・システム160は、ユーザ(すなわち、クエリしているユーザ)から受け取られた検索クエリをパースし、検索クエリ内に含まれる1または複数のnグラムを識別することができる。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、テキスト・クエリ「friends stanford(友達 スタンフォード)」をパースし、以下のnグラム、すなわちfriends;stanford;friends stanfordを識別することができる。特定の実施形態では、検索クエリ入力は、第1のユーザに関連付けられているクライアント・システム130から受信されたユーザ生成のキャラクタ・ストリングを備えることがある。ユーザ生成のキャラクタ・ストリングは、第1のユーザによってクエリ・フィールド450内に入力され、キャラクタ・ストリングの各キャラクタがユーザによって入力されたときクライアント・システム130にてレンダリング
され得る。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、下記のように1または複数の構造化検索クエリを生成することができる、たとえば「写真 友達」または「tom facebook(登録商標)(トム フェイスブック)」など非構造化テキスト・クエリを入力してもよい。限定するものではなく別の例として、次いでソーシャル・ネットワーキング・システム160は、下記のように、検索クエリに一致するコンテンツを識別するために、データ・ストア164(または、特にソーシャル・グラフ・データベース)を検索してもよい。特定の実施形態では、検索クエリ入力は、クエリしているユーザによって選択された1または複数のクエリ・トークンを備えてもよい。クエリ・トークンを使用して検索クエリを生成することに関するさらなる情報は、2014年2月12日に出願された米国特許出願第14/179357号に見出すことができ、それを本願明細書に援用する。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、テキスト・クエリ内で識別された各nグラムについて、そのnグラムに対応する1または複数のソーシャル・グラフ要素を識別してもよい。テキスト・クエリをパースし、対応するソーシャル・グラフ要素を識別することに関するさらなる情報は、2012年12月31日に出願された米国特許出願第13/731866号に見出すことができ、それを本願明細書に援用する。検索エンジンは、検索クエリに基づいて、様々な検索アルゴリズムを使用して検索を行い、示唆されている検索クエリに関係する可能性が最も高いリソースまたはコンテンツ(たとえば、ユーザ・プロフィール・ページ、コンテンツプロフィール・ページ、または外部のリソース)を識別し得る検索結果514を生成してもよい。本開示は、特定の検索入力を特定の方法で受け取ることについて述べているが、本開示は、任意の好適な検索入力を任意の好適な方法で受け取ることを企図する。
【0055】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、検索クエリ入力に基づいて複数のクエリ・コマンドを生成してもよい。識別されたnグラムおよび対応するソーシャル・グラフ要素を使用し、検索エンジンによって実行可能なクエリ・コマンドを生成してもよい。クエリ・コマンドは、特定の引数を受け付ける定義された関数を伴う構造化セマンティック・クエリであってもよい。限定するものではなく例として、テキスト・クエリ「friend me mark(友達 私 マーク)」をパースし、クエリ・コマンドintersect(friend(me),friend(Mark))を形成することができる。換言すれば、クエリは、クエリしているユーザ(me)およびユーザ「Mark」と交わるソーシャル・グラフ内のノード(すなわち、友達タイプ・エッジ206によってクエリしているユーザのユーザ・ノード202にも友達タイプ・エッジ206によってユーザ「Mark」のためのユーザ・ノード202にも接続されているユーザ・ノード202)を探している。特定の実施形態では、オンライン・ソーシャル・ネットワークのサブ要求ジェネレータは、検索クエリ入力を処理し、自然言語プロセッサ(NLP)を使用して、1または複数のキーワード検索に対応するクエリ・コマンドと、1または複数の構造化クエリに対応するクエリ・コマンドとを生成してもよい。NLPは、テキスト・クエリとして入力された言語からの語を、1または複数の構造化クエリに対する最良の一致である言語に変換し得る。限定するものではなく例として、非構造化テキスト・クエリ「写真 友達」について、ソーシャル・ネットワーキング・システム160のサブ要求ジェネレータは、キーワード・クエリ「写真 友達」に対応するクエリ・コマンド(すなわち、「写真」および「友達」という用語を求めるキーワード検索)と、構造化クエリ「私の友達の写真」および「私の友達による写真」に対応するクエリ・コマンド(すなわち、特定のエッジ・タイプに対応する特定のソーシャル要素「の写真」および「による写真」と、特定のユーザ・ノード202に対応する「私の友達」とを参照する構造化クエリ)とを生成してもよい。限定するものではなく別の例として、非構造化テキスト・クエリ「tom facebook」について、ソーシャル・ネットワーキング・システム160のサブ要求ジェネレータは、キーワード・クエリ「tom facebook」に対応するクエリ・コマンドと、構造化クエリ「Facebookで働くTomとい
う名前の人」「Facebookで働くTomの友達」「Facebookを好むTomという名前の人」「FacebookおよびTomTomで働いたことがある人」に対応するクエリ・コマンドとを生成してもよい。特定の実施形態では、クエリ・コマンドは、1または複数のクエリ制約を備えてもよい。各クエリ制約は、構造化クエリをパースすることに基づいてソーシャル・ネットワーキング・システム160によって識別されてもよい。各クエリ制約は、特定のオブジェクト・タイプを求める要求であってもよい。特定の実施形態では、クエリ・コマンドは、記号表現またはs式におけるクエリ制約を備えてもよい。ソーシャル・ネットワーキング・システム160は、構造化クエリ「Photos
I like(写真 私 好む)」をクエリ・コマンド(photos_liked_by:<me>)へパースすることができる。クエリ・コマンド(photos_liked_by:<me>)は、単一の写真の結果タイプと共にユーザ(すなわち、クエリしているユーザに対応する<me>)によって好まれる写真のためのクエリを示す。クエリ制約は、たとえば、ソーシャル・グラフ制約(たとえば、特定のノードもしくはノードタイプを求める要求、または特定のエッジもしくはエッジ・タイプに接続されたノードを求める要求)、オブジェクト制約(たとえば、特定のオブジェクトまたはオブジェクト・タイプを求める要求)、場所制約(たとえば、特定の地理的場所に関連付けられているオブジェクトまたはソーシャルグラフ・エンティティを求める要求)、他の好適な制約、またはそれらの任意の組合せを含んでもよい。クエリ制約に関するさらなる情報は、2013年5月3日に出願された米国特許出願第13/877049号に見出すことができ、それを本願明細書に援用する。特定の実施形態では、クエリ・コマンドの1または複数は、1または複数のノードおよび1または複数のエッジに対する参照を備える構造化クエリに対応し得る。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、構造化クエリ「Friends of Tom who work at Facebook(Facebookで働くTomの友達)」に対応するクエリ・コマンド(intersect(friends_of:<Tom>),(worked_at:<Facebook>)を生成してもよい。限定するものではなく別の例として、テキスト・クエリ「friends Stanford」をクエリ・コマンドintersect(school(Stanford University),friends(me))にパースしてもよい。換言すれば、クエリは、クエリしているユーザ(me)の友達(すなわち、友達タイプ・エッジ206によってクエリしているユーザのユーザ・ノード202に接続されているユーザ・ノード202)ともスタンフォード大学のためのコンセプト・ノード204とも交わるソーシャル・グラフ内のノードを探している。本開示は、特定のクエリ・コマンドを特定の方法で生成することについて述べているが、本開示は、任意の好適なクエリ・コマンドを任意の好適な方法で生成することを企図する。
【0056】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、クエリ・コマンドに一致する、バーティカル164によって記憶された1または複数のオブジェクトを識別するために、1または複数のバーティカル164(すなわち、データ・ストア)を検索してもよい。前述のように、各バーティカル164は、オンライン・ソーシャル・ネットワークに関連付けられている1または複数のオブジェクトを記憶することができる。特定の実施形態では、キーワード検索および1または複数の構造化クエリに対応するクエリ・コマンドは、それらのクエリ・コマンドに一致するオブジェクトを識別するためにバーティカル164に送られる。次いで、ソーシャル・ネットワーキング・システム160は、クエリ・コマンドを満たす、または他の形でクエリ・コマンドに一致するオブジェクト(たとえば、ユーザ、写真、プロフィール・ページ(またはプロフィール・ページのコンテンツ)など)を識別してもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、フェースブックで働いていたトムの友達である、ユーザ・バーティカルP1内に記憶された特定のユーザを識別してもよい。特定の実施形態では、バーティカル164は、特定のオブジェクト・タイプのオブジェクトを記憶してもよい。限定するものではなく例として、バーティカルによって記憶されたオブジェクトは、
ユーザ、写真、投稿、ウェブページ、アプリケーション、ロケーション、ユーザ・グループ、または別の好適なオブジェクト・タイプであってもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、1または複数のストリング・マッチング・アルゴリズムを使用し、1または複数のnグラムを、オブジェクトの1または複数のそれぞれに関連付けられているキャラクタのストリングとマッチングしようと試みてもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、テキスト・クエリ「友達 ロンドン」を、ロンドンに住むユーザ・バーティカルP1内に記憶された1または複数のユーザの友達によって撮られた写真バーティカルP3内に記憶されたロンドンの写真とマッチングしてもよい。特定の実施形態では、前述のように、ソーシャル・ネットワーキング・システム160がクエリ(または特定のクエリ制約)に応答してバーティカル164からオブジェクトを取り出すとき、それらのオブジェクトは、インデックス付けされたオブジェクトの静的スコアまたは静的ランクに基づいて取り出されてもよい。本開示は、特定のバーティカルを特定の方法で検索することについて述べているが、本開示は、任意の好適なバーティカルを任意の好適な方法で検索することを企図する。
【0057】
図5〜
図6は、オンライン・ソーシャル・ネットワークの例示的な検索結果ページを示す。
図5〜
図6の例に示されているように、1または複数のキーワード・クエリまたは1または複数の構造化クエリの検索結果514を備える複数の検索結果モジュール510が、ユーザに対して提示されてもよい。検索結果514は、1または複数のリンク(たとえば、ハイパーリンクまたは他のアクティブ化可能なリンク)を含んでもよく、各リンクは、識別されたリソースまたはコンテンツのいくつかを含む異なるページに関連付けられている。特定の実施形態では、各リンクは、対応するページがどこに位置するか、およびそれを取り出すための機構を指定するユニフォームリソースロケータ(URL)の形態であってもよい。さらに、検索結果514は、上記のように、検索結果の標的についてのコンテキスト情報のスニペットを含んでもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、複数のモジュール510を生成してもよい。サブ要求ジェネレータによって生成された構造化クエリに一致する1または複数の識別されたオブジェクトに対応する検索結果514が、モジュール510の形態でユーザに対して提示されてもよく、各モジュール510は、上述のバーティカル164内に記憶された1または複数の識別されたオブジェクトをそれぞれ参照する1または複数の検索結果514を備える。上記のように、モジュール510の検索結果514は、URL、スニペット、サムネイル写真、名前もしくは他の識別子、別の好適な参照、またはそれらの任意の組合せを含んでもよい。次いで、ソーシャル・ネットワーキング・システム160は、モジュール510をユーザのクライアント・システム130(たとえば、クライアント・システム130上のウェブ・ブラウザ132またはネイティブ・アプリケーション)に送ってもよい。特定の実施形態では、モジュール510は、たとえばソーシャル・グラフ情報、ユーザ情報、ユーザの検索もしくはブラウズ履歴、またはユーザに関係する他の好適な情報に基づいて、特定のオブジェクト・タイプを参照する検索結果を含むように、ユーザのためにパーソナライズされてもよい。特定の実施形態では、各モジュールは、サブ要求ジェネレータによって生成された複数のクエリ・コマンドのうちのクエリ・コマンドに対応してもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、
図5の例に示されているように、テキスト・クエリ「プーチン」に関係する検索結果514を含む「トップ・リンク」と呼ばれるモジュール510を生成してもよく、各検索結果514は、「ウラジーミル・プーチン」についてのニュース・ストーリのためのウェブページに対応する。
【0058】
特定の実施形態では、各モジュール510は、モジュール510に対応するクエリ・コマンドに一致する1または複数の識別されたオブジェクトに対する参照を備えてもよい。限定するものではなく例として、テキスト・クエリ「プーチン」に対応するモジュール5
10は、たとえば、ウラジーミル・プーチンについてのオンライン・ソーシャル・ネットワークのユーザによる投稿、またはバーティカル164内に記憶されたウラジーミル・プーチンを参照するページなど、ウラジーミル・プーチンに関係する検索結果514を含んでもよい。さらに、検索結果ページは、ウラジーミル・プーチンに対応するコンセプトプロフィール・ページを参照するモジュール510、構造化クエリ「ウラジーミル・プーチンについての私の友達による投稿」に対応するモジュール510、さらには「プーチン」という名前のユーザに対応するユーザ・プロフィール・ページを含んでもよい。特定の実施形態では、各モジュール510は、1または複数のノードおよび1または複数のエッジに対する参照を備える構造化クエリに対応してもよい。構造化クエリは、モジュールに対応するクエリ・コマンドに基づいてもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、構造化クエリ「ウラジーミル・プーチンについての私の友達による投稿」に対応するモジュールを生成してもよい。この場合、この構造化クエリに対応するモジュール510は、タグド・イン・タイプ・エッジ206によってウラジーミル・プーチンに対応するコンセプト・ノード204に接続されている、また、著作者エッジ(authored−by edge)206によってクエリしているユーザの一次友達に対応するユーザ・ノード202(すなわち、友達タイプ・エッジ206によってクエリしているユーザに対応するユーザ・ノード202に接続されているユーザ・ノード202)に接続されているコンセプト・ノード204に対応する投稿を参照する1または複数の検索結果514を含むことになる。別の例として、ソーシャル・ネットワーキング・システム160は、
図6の例に示されているように、テキスト・クエリ「私の友達」に関係する検索結果514を含む「写真」と呼ばれるモジュール510を生成してもよく、各検索結果514は、検索クエリまたはユーザの友達による投稿に関係する示唆されている友達のための写真に対応する。構造化クエリは、モジュールに対応するクエリ・コマンドに基づいてもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、構造化クエリ「サン・フランシスコに住む友達」に対応する検索結果514を提示してもよい。この場合、この構造化クエリに対応するモジュール510は、住所タイプ・エッジ(live−in−type edge)206によってサン・フランシスコに対応するコンセプト・ノード204に接続されている、また、友達タイプ・エッジ206によってクエリしているユーザに対応するユーザ・ノード202に接続されているユーザ・ノード202に対応するユーザを参照する1または複数の検索結果514を含むことになる。本開示は、特定のモジュールを特定の方法で生成することについて述べているが、本開示は、任意の好適なモジュールを任意の好適な方法で生成することを企図する。
【0059】
図7〜
図9は、様々な検索結果ページを表示するクライアント・システム130の例示的なユーザ・インターフェースを示す。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、生成されたモジュール510の1または複数をスコア付けしてもよい。モジュール510は、たとえば、ユーザに対する関連性(たとえば、構造化クエリの分類)、ユーザの情報、ユーザの検索履歴、同様の人口統計情報を有するユーザによるモジュール510の検索結果とのクリック率(CTR)などを含めて、様々な要因でスコア付けされてもよい。特定の実施形態では、サブ要求ジェネレータは、構造化クエリの相対的な重要性または関連性を示す、特定のスコアまたは重み付けを生成された各構造化クエリに関連付けてもよい。さらに、重み付けは、グローバルに(たとえば、ソーシャル・ネットワーキング・システム160のユーザにわたって)決定されても、ユーザ・プロフィールまたはユーザの他の情報に基づいてクエリしているユーザに対して特に決定されてもよい。特定の実施形態では、バーティカル164に送られる構造化クエリの検索結果のそれぞれが、関連付けられている関連性スコアを含んでもよい。関連付けられている関連性スコアは、各モジュール510の個々の結果(たとえば、特定の検索結果514)に基づいてもよい。限定するものではなく例として、特定のモジュール510が1または複数の高いスコアの検索結果514に対する参照を含む場合には、ソーシャル・ネットワー
キング・システム160は、相対的に高いスコアをそのモジュールに割り当ててもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、モジュールがカードであるかのように、モジュール間スコア付けおよびモジュール内スコア付けを実施してもよい。生成およびスコア付けに関するさらなる情報は、2013年12月19日に出願された米国特許出願第61/918431号に見出すことができ、それを本願明細書に援用する。
【0060】
特定の実施形態では、1または複数のモジュール510の関連性スコアは、クエリしているユーザによって提供される検索クエリ入力の推測される意図または分類に基づいて修正されてもよい。検索クエリ入力の分類は、言語モデル(上記のNLPの言語モデルとは異なってもよい)を使用して実施され、検索クエリ入力の意味パースを実施してもよい。次いで、検索クエリ入力は、意味パースの結果に少なくとも一部基づいて分類されてもよい。ソーシャル・ネットワーキング・システム160は、検索クエリを、たとえば日付、有名人、旅行、ローカル、ニュース、スポーツ、ユーザ、製品レビュー、他の好適な分類、またはそれらの任意の組合せなど、様々な分類に分類してもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、特定の検索結果(または検索結果のタイプ)に、検索クエリの分類に基づいてより高く、またはより低くスコア付けしてもよい。限定するものではなく例として、「有名人」カテゴリ下で分類された検索クエリは、ユーザの友達からの投稿に比較して写真を含むモジュール510に、より重み付けをしてもよい。限定するものではなく別の例として、ソーシャル・ネットワーキング・システム160は、検索クエリ「友達 ロンドン」についてユーザ・バーティカルP1内に記憶されたオブジェクトを参照する検索結果514を含むモジュール510のスコアを押し上げてもよく、この検索クエリは、「旅行」カテゴリ下に分類され、ユーザが旅行中にロンドンにいることを知っているオンライン・ソーシャル・ネットワークのユーザを探していることを示し得る。限定するものではなく別の例として、ソーシャル・ネットワーキング・システム160は、検索クエリ「バット・キッド」について投稿バーティカルP2内に記憶されたオブジェクトを参照する検索結果514を含むモジュール510のスコアを押し上げてもよく、この検索クエリは、「ニュース」カテゴリ下に分類され、ユーザがバット・キッドを参照するオンライン・ソーシャル・ネットワーク上の投稿を探していることを示し得る。特定の実施形態では、検索クエリ入力の分類は、ユーザの情報およびクエリしているユーザのユーザ・プロフィールにさらに基づいてもよく、オンライン・ソーシャル・ネットワークに関連付けられているすべてのバーティカル164からの検索結果を包含してもよい。本開示は、特定のモジュールを特定の方法でスコア付けすることについて述べているが、本開示は、任意の好適なモジュールを任意の好適な方法でスコア付けすることを企図する。
【0061】
図7〜
図9の例に示されているように、クライアント・システム130上でレンダリングされるUIは、モジュール510に関連付けられているクエリに一致する1または複数の識別されたオブジェクトをそれぞれ参照する1または複数の検索結果514をそれぞれが含む1または複数のモジュール510を提示してもよい。より高いスコアのモジュール510は、より低いスコアのモジュール510より優先的にクエリしているユーザに送られてもよい。特定の実施形態では、UIは、下記のように、検索結果タイプまたはモジュールタイプによって検索結果514またはモジュール510をフィルタするためのフィルタ・バー710を含んでもよい。さらに、UIは、クエリしているユーザが所定の入力(たとえば、タッチ・ジェスチャ)を通じて検索結果514およびモジュール510をナビゲーションすることを可能にしてもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、閾値スコアより大きいスコアを有する各モジュール510を、表示するために第1のユーザに送ってもよい。
図8〜
図9の例に示されているように、ソーシャル・ネットワーキング・システム160は、検索クエリ入力「シラチャー」を受け取ったことに応答して、1または複数の検索結果514(たとえば、写真に対する参照
)を有するモジュール510を送ってもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、テキスト・クエリ「シラチャー」に関係する検索結果514を含む写真のモジュール510を生成してもよく、各検索結果514は、シラチャーに関係する写真バーティカルP3内に記憶された写真に対応する。特定の実施形態では、ユーザは、
図8〜
図9の例に示されているように、シラチャーに関係する写真を含むモジュール510の検索結果514(たとえば、サムネイル)間をナビゲーションしてもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、第1のユーザから参照のうちの1つの選択を受け取ることができる。次いで、ソーシャル・ネットワーキング・システム160は、第1のユーザの参照に対応するオブジェクトを送ってもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、ユーザがモジュール510内のサムネイルの1つを選択したことに応答して、写真のより大きなサイズのバージョンを送ってもよい。本開示は、特定のモジュールを特定の方法で送ることについて述べているが、本開示は、任意の好適なモジュールを任意の好適な方法で送ることを企図する。
【0062】
図10は、クエリに応答して検索結果を生成およびブレンドするための例示的な方法を示す。この方法は、工程1010で始まってもよく、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークの第1のユーザから1または複数のnグラムを備える検索クエリ入力を受け取ることができる。工程1020で、ソーシャル・ネットワーキング・システム160は、検索クエリ入力に基づいて複数のクエリ・コマンドを生成してもよい。工程1030で、ソーシャル・ネットワーキング・システム160は、クエリ・コマンドに一致するバーティカルによって記憶された1または複数のオブジェクトを識別するために、1または複数のバーティカルを検索してもよい。各バーティカルは、オンライン・ソーシャル・ネットワークに関連付けられている1または複数のオブジェクトを記憶してもよい。工程1040で、ソーシャル・ネットワーキング・システム160は、複数のモジュールを生成してもよい。各モジュールは、複数のクエリ・コマンドのうちのクエリ・コマンドに対応してもよい。さらに各モジュールは、モジュールに対応するクエリ・コマンドに一致する識別されたオブジェクトの1または複数に対する参照を備えてもよい。工程1050で、ソーシャル・ネットワーキング・システム160は、モジュールを記憶してもよい。工程1060で、ソーシャル・ネットワーキング・システム160は、閾値スコアより大きいスコアを有する各モジュールを、表示するために第1のユーザに送ってもよい。特定の実施形態は、適切な場合、
図10の方法の1または複数の工程を繰り返してもよい。本開示は、
図10の方法の特定の工程について特定の順序で行われるものとして述べ、示しているが、本開示は、任意の好適な順序で行われる
図10の方法の任意の好適な工程を企図する。さらに、本開示は、
図10の方法の特定の工程を含む、クエリに応答して検索結果を生成およびブレンドするための例示的な方法について述べ、示しているが、本開示は、適切な場合、
図10の方法の工程のすべて、または一部を含んでも、それらを含まなくてもよい任意の好適な工程を含む、クエリに応答して検索結果を生成およびブレンドするための任意の好適な方法を企図する。さらに、本開示は、
図10の方法の特定の工程を実施する特定の構成要素、デバイス、またはシステムについて述べ、示しているが、本開示は、
図10の方法の任意の好適な工程を実施する任意の好適な構成要素、デバイス、またはシステムの任意の好適な組合せを企図する。
【0063】
図11〜
図12は、様々な検索結果ページを表示するクライアント・システム130の例示的なユーザ・インターフェースを示す。特定の実施形態では、このUIは、検索結果タイプまたはモジュールタイプによって検索結果514またはモジュール510をフィルタするためのフィルタ・バー710を含んでもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、
図11の例に示されているように、テキスト・クエリ「xbox」に関係する検索結果514を送ってもよく、各検索結果514は、Xboxについてのニュース・ストーリのためのウェブページに対応する。特定の
実施形態では、ユーザは、フィルタ・バー710を通じて他の検索結果にナビゲーションしてもよい。限定するものではなく例として、ソーシャル・ネットワーキング・システム160は、各検索結果514がXboxに関係するウェブページに対応する
図12の例に示されているように、テキスト・クエリ「xbox」に関係する検索結果514を送ってもよい。さらに、検索結果514を含むモジュール510は、上記のように、各カテゴリの検索結果514とブレンド、すなわち交互配置(インタリーブ)されてもよい。本開示は、特定のモジュールまたは検索結果を特定の方法でフィルタすることについて述べているが、本開示は、任意の好適なモジュールまたは検索結果を任意の好適な方法でフィルタすることを企図する。
【0064】
システムおよび方法
図13は、例示的なコンピュータ・システム1300を示している。特定の実施形態においては、1つまたは複数のコンピュータ・システム1300が、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を実行する。特定の実施形態においては、1つまたは複数のコンピュータ・システム1300が、本明細書において記述されているまたは示されている機能を提供する。特定の実施形態においては、1つまたは複数のコンピュータ・システム1300上で稼働するソフトウェアが、本明細書において記述されているもしくは示されている1つもしくは複数の方法の1つもしくは複数の工程を実行し、または本明細書において記述されているもしくは示されている機能を提供する。特定の実施形態は、1つまたは複数のコンピュータ・システム1300の1つまたは複数の部分を含む。本明細書においては、コンピュータ・システムへの言及は、適切な場合には、コンピューティング・デバイスを包含することができる。その上、コンピュータ・システムへの言及は、適切な場合には、1つまたは複数のコンピュータ・システムを包含することができる。
【0065】
本開示は、任意の適切な数のコンピュータ・システム1300を想定している。本開示は、任意の適切な物理的な形態を取るコンピュータ・システム1300を想定している。限定ではなく、例として、コンピュータ・システム1300は、組み込みコンピュータ・システム、システムオンチップ(SOC)、シングルボード・コンピュータ・システム(SBC)(たとえば、コンピュータオンモジュール(COM)もしくはシステムオンモジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話キオスク、メインフレーム、コンピュータ・システムのメッシュ、モバイル電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらのうちの複数の組合せであることが可能である。適切な場合には、コンピュータ・システム1300は、1つもしくは複数のコンピュータ・システム1300を含むこと、単一型もしくは分散型であること、複数のロケーションにわたること、複数のマシンにわたること、複数のデータセンターにわたること、または、クラウド(1つもしくは複数のネットワーク内の1つもしくは複数のクラウド・コンポーネントを含むことができる)内に常駐することが可能である。適切な場合には、1つまたは複数のコンピュータ・システム1300は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を、実質的な空間上のまたは時間上の制限を伴わずに実行することができる。限定ではなく、例として、1つまたは複数のコンピュータ・システム1300は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程をリアル・タイムで、またはバッチ・モードで実行することができる。1つまたは複数のコンピュータ・システム1300は、適切な場合には、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を別々の時点で、または別々のロケーションで実行することができる。
【0066】
特定の実施形態においては、コンピュータ・システム1300は、プロセッサ1302
、メモリ1304、ストレージ1306、入力/出力(I/O)インタフェース1308、通信インタフェース1310、およびバス1312を含む。本開示は、特定の数の特定のコンポーネントを特定の構成で有する特定のコンピュータ・システムについて記述し、示しているが、本開示は、任意の適切な数の任意の適切なコンポーネントを任意の適切な構成で有する任意の適切なコンピュータ・システムを想定している。
【0067】
特定の実施形態においては、プロセッサ1302は、コンピュータ・プログラムを構成している命令などの命令を実行するためのハードウェアを含む。限定ではなく、例として、命令を実行するために、プロセッサ1302は、内部レジスタ、内部キャッシュ、メモリ1304、またはストレージ1306から命令を取り出し(またはフェッチし)、それらの命令をデコードして実行し、次いで、1つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ1304、またはストレージ1306に書き込むことができる。特定の実施形態においては、プロセッサ1302は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ1302を想定している。限定ではなく、例として、プロセッサ1302は、1つまたは複数の命令キャッシュ、1つまたは複数のデータ・キャッシュ、および1つまたは複数の変換ルックアサイド・バッファ(TLB)を含むことができる。命令キャッシュ内の命令は、メモリ1304またはストレージ1306内の命令のコピーであることが可能であり、命令キャッシュは、プロセッサ1302によるそれらの命令の取り出しをスピードアップすることができる。データ・キャッシュ内のデータは、プロセッサ1302において実行される命令が機能する際に基づくメモリ1304もしくはストレージ1306内のデータのコピー、プロセッサ1302において実行される後続の命令によるアクセスのための、もしくはメモリ1304もしくはストレージ1306への書き込みのためのプロセッサ1302において実行された以前の命令の結果、またはその他の適切なデータであることが可能である。データ・キャッシュは、プロセッサ1302による読み取りオペレーションまたは書き込みオペレーションをスピードアップすることができる。TLBは、プロセッサ1302のための仮想アドレス変換をスピードアップすることができる。特定の実施形態においては、プロセッサ1302は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ1302を想定している。適切な場合には、プロセッサ1302は、1つまたは複数の演算ロジック・ユニット(ALU)を含むこと、マルチコア・プロセッサであること、または1つもしくは複数のプロセッサ1302を含むことが可能である。本開示は、特定のプロセッサについて記述し、示しているが、本開示は、任意の適切なプロセッサを想定している。
【0068】
特定の実施形態においては、メモリ1304は、プロセッサ1302が実行するための命令、またはプロセッサ1302が機能する際に基づくデータを記憶するためのメイン・メモリを含む。限定ではなく、例として、コンピュータ・システム1300は、命令をストレージ1306または別のソース(たとえば、別のコンピュータ・システム1300など)からメモリ1304にロードすることができる。次いでプロセッサ1302は、命令をメモリ1304から内部レジスタまたは内部キャッシュにロードすることができる。命令を実行するために、プロセッサ1302は、命令を内部レジスタまたは内部キャッシュから取り出し、それらの命令をデコードすることができる。命令の実行中または実行後に、プロセッサ1302は、1つまたは複数の結果(それらは、中間の結果または最終的な結果である場合がある)を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ1302は、それらの結果のうちの1つまたは複数をメモリ1304に書き込むことができる。特定の実施形態においては、プロセッサ1302は、(ストレージ1306またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ1304内の命令のみを実行し、(ストレージ1306ま
たはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ1304内のデータ上でのみ機能する。1つまたは複数のメモリ・バス(それらはそれぞれ、アドレス・バスおよびデータ・バスを含むことができる)は、プロセッサ1302をメモリ1304に結合することができる。バス1312は、以降で記述されているような1つまたは複数のメモリ・バスを含むことができる。特定の実施形態においては、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ1302とメモリ1304との間に常駐し、プロセッサ1302によって要求されるメモリ1304へのアクセスを容易にする。特定の実施形態においては、メモリ1304は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、適切な場合には、揮発性メモリであることが可能である。適切な場合には、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であることが可能である。その上、適切な場合には、このRAMは、シングルポートRAMまたはマルチポートRAMであることが可能である。本開示は、任意の適切なRAMを想定している。メモリ1304は、適切な場合には、1つまたは複数のメモリ1304を含むことができる。本開示は、特定のメモリについて記述し、示しているが、本開示は、任意の適切なメモリを想定している。
【0069】
特定の実施形態においては、ストレージ1306は、データまたは命令のためのマス・ストレージを含む。限定ではなく、例として、ストレージ1306は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらのうちの複数の組合せを含むことができる。ストレージ1306は、適切な場合には、取り外し可能なまたは取り外し不能な(すなわち、固定された)媒体を含むことができる。ストレージ1306は、適切な場合には、コンピュータ・システム1300の内部または外部に存在することが可能である。特定の実施形態においては、ストレージ1306は、不揮発性のソリッドステート・メモリである。特定の実施形態においては、ストレージ1306は、読み取り専用メモリ(ROM)を含む。適切な場合には、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書替え可能ROM(EAROM)、またはフラッシュ・メモリ、またはこれらのうちの複数の組合せであることが可能である。本開示は、任意の適切な物理的な形態を取るマス・ストレージ1306を想定している。ストレージ1306は、適切な場合には、プロセッサ1302とストレージ1306との間における通信を容易にする1つまたは複数のストレージ・コントロール・ユニットを含むことができる。適切な場合には、ストレージ1306は、1つまたは複数のストレージ1306を含むことができる。本開示は、特定のストレージについて記述し、示しているが、本開示は、任意の適切なストレージを想定している。
【0070】
特定の実施形態においては、I/Oインタフェース1308は、コンピュータ・システム1300と1つまたは複数のI/Oデバイスとの間における通信のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム1300は、適切な場合には、これらのI/Oデバイスのうちの1つまたは複数を含むことができる。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータ・システム1300との間における通信を可能にすることができる。限定ではなく、例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、映像カメラ、別の適切なI/Oデバイス、またはこれらのうちの複数の組合せを含むことができる。I/Oデバイスは、1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/Oデバイス、およびそれらのI/Oデバイスのための任意の適切なI/Oインタフェース1308を想定している。適切な場合には、I/Oインタフェース1308は、プロセッサ1302がこれらのI
/Oデバイスのうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。I/Oインタフェース1308は、適切な場合には、1つまたは複数のI/Oインタフェース1308を含むことができる。本開示は、特定のI/Oインタフェースについて記述し、示しているが、本開示は、任意の適切なI/Oインタフェースを想定している。
【0071】
特定の実施形態においては、通信インタフェース1310は、コンピュータ・システム1300と、1つもしくは複数のその他のコンピュータ・システム1300または1つもしくは複数のネットワークとの間における通信(たとえば、パケットベースの通信など)のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、通信インタフェース1310は、イーサネット(登録商標)もしくはその他の有線ベースのネットワークと通信するためのネットワーク・インタフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWI−FIネットワークなどのワイヤレス・ネットワークと通信するためのワイヤレスNIC(WNIC)もしくはワイヤレス・アダプタを含むことができる。本開示は、任意の適切なネットワーク、およびそのネットワークのための任意の適切な通信インタフェース1310を想定している。限定ではなく、例として、コンピュータ・システム1300は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、またはインターネットの1つまたは複数の部分、またはこれらのうちの複数の組合せと通信することができる。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、有線またはワイヤレスであることが可能である。例として、コンピュータ・システム1300は、ワイヤレスPAN(WPAN)(たとえば、ブルートゥースWPANなど)、WI−FIネットワーク、WI−MAXネットワーク、セルラー電話ネットワーク(たとえば、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM(登録商標))ネットワークなど)、またはその他の適切なワイヤレス・ネットワーク、またはこれらのうちの複数の組合せと通信することができる。コンピュータ・システム1300は、適切な場合には、これらのネットワークのうちの任意のネットワークのための任意の適切な通信インタフェース1310を含むことができる。通信インタフェース1310は、適切な場合には、1つまたは複数の通信インタフェース1310を含むことができる。本開示は、特定の通信インタフェースについて記述し、示しているが、本開示は、任意の適切な通信インタフェースを想定している。
【0072】
特定の実施形態においては、バス1312は、コンピュータ・システム1300のコンポーネント同士を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、バス1312は、アクセラレイティッド・グラフィックス・ポート(AGP)もしくはその他のグラフィックス・バス、エンハンスト・インダストリー・スタンダード・アーキテクチャ(EISA)バス、フロントサイド・バス(FSB)、ハイパートランスポート(HT)インターコネクト、インダストリー・スタンダード・アーキテクチャ(ISA)バス、インフィニバンド・インターコネクト、ローピンカウント(LPC)バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル(VLB)バス、または別の適切なバス、またはこれらのうちの複数の組合せを含むことができる。バス1312は、適切な場合には、1つまたは複数のバス1312を含むことができる。本開示は、特定のバスについて記述し、示しているが、本開示は、任意の適切なバスまたはインターコネクトを想定している。
【0073】
本明細書においては、1つまたは複数の非一時的なコンピュータ可読記憶媒体は、適切な場合には、1つもしくは複数の半導体ベースのもしくはその他の集積回路(IC)(たとえば、フィールドプログラマブル・ゲート・アレイ(FPGA)もしくは特定用途向け集積回路(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、その他の任意の適切な非一時的なコンピュータ可読記憶媒体、またはこれらのうちの複数の組合せを含むことができる。非一時的なコンピュータ可読記憶媒体は、適切な場合には、揮発性、不揮発性、または揮発性と不揮発性の組合せであることが可能である。
【0074】
本明細書においては、「または(もしくは)」は、包含的であり、排他的ではない(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AまたはB」は、「A、B、またはその両方」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。その上、「および(ならびに)」は、包括的および個別的の両方である(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AおよびB」は、「まとめて、または個別に、AおよびB」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。
【0075】
本開示の範囲は、当技術分野における標準的な技術者が理解するであろう、本明細書において記述されているまたは示されている例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書において記述されているまたは示されている例示的な実施形態に限定されない。その上、本開示は、本明細書におけるそれぞれの実施形態を、特定のコンポーネント、要素、機能、オペレーション、または工程を含むものとして記述し、示しているが、これらの実施形態のいずれも、当技術分野における標準的な技術者が理解するであろう、本明細書の任意の箇所において記述されているまたは示されているコンポーネント、要素、機能、オペレーション、または工程のうちの任意のものの任意の組合せまたは順列を含むことができる。さらに、特定の機能を実行するように適合されている、実行するようにアレンジされている、実行することができる、実行するように構成されている、実行することを可能にされている、実行するように機能できる、または実行するように機能する装置もしくはシステム、または装置もしくはシステムのコンポーネントへの添付の特許請求の範囲における言及は、その装置、システム、コンポーネント、またはその特定の機能が、アクティブ化されているか否か、オンにされているか否か、またはロック解除されているか否かを問わず、その装置、システム、またはコンポーネントが、そうするように適合されている、そうするようにアレンジされている、そうすることができる、そうするように構成されている、そうすることを可能にされている、そうするように機能できる、またはそうするように機能する限り、その装置、システム、コンポーネントを包含する。