システムの概要
図1は、ソーシャルネットワーキングシステムを実装するための例示的なネットワーク環境100を示している。本明細書で説明されているさまざまな例示的な実施形態は、ネットワーク環境100内で動作する。特定の実施形態は、複数のネットワークアドレッシング可能システムを含む、インターネットなどの、ワイドエリアネットワーク環境内で、またはそれとともに動作する。ネットワーク環境100は、ソーシャルネットワーキングシステム20、クライアントデバイス30、ウェブアプリケーションサーバ40、およびネットワーククラウド60によって互いに接続されているエンタプライズサーバ50を含む。図1は、ソーシャルネットワーキングシステム20、クライアントデバイス30、ウェブアプリケーションサーバ40、エンタプライズサーバ50、およびネットワーククラウド60の特定の構成を示しているが、本開示では、ソーシャルネットワーキングシステム20、クライアントデバイス30、ウェブアプリケーションサーバ40、エンタプライズサーバ50、およびネットワーククラウド60の任意の好適な構成を企図する。例えば、限定されるものでないが、ソーシャルネットワーキングシステム20、クライアントデバイス30、ウェブアプリケーションサーバ40、およびエンタプライズサーバ50のうちの2以上を、ネットワーククラウド60をバイパスして、互いに直接に接続する。別の例として、ソーシャルネットワーキングシステム20、クライアントデバイス30、ウェブアプリケーションサーバ40、およびエンタプライズサーバ50のうちの2以上が、全体として、または一部だけ、互いに同じ場所に、物理的または論理的に配置される。さら
に、図1は、特定の数のソーシャルネットワーキングシステム20、クライアントデバイス30、ウェブアプリケーションサーバ40、エンタプライズサーバ50、およびネットワーククラウド60を示しているが、本開示では、任意の好適な数のソーシャルネットワーキングシステム20、クライアントデバイス30、ウェブアプリケーションサーバ40、エンタプライズサーバ50、およびネットワーククラウド60を企図する。例えば、限定されるものでないが、ネットワーク環境100は、複数のソーシャルネットワーキングシステム20、クライアントデバイス30、ウェブアプリケーションサーバ40、エンタプライズサーバ50、およびネットワーククラウド60を含む。
特定の実施形態において、ウェブアプリケーションサーバ40は、サードパーティウェブサイト(例えば、http://www.espn.com、http://www.youtube.com)をホストするネットワークアドレッシング可能なコンピューティングシステムであってもよい。ウェブアプリケーションサーバ40は、例えば、ユーザデータおよびウェブページ情報の生成、記憶、受信、および送信を行う。ウェブアプリケーションサーバ40は、直接的に、またはネットワーククラウド60を通じて、ネットワーク環境100の他の構成要素によってアクセスされる。特定の実施形態において、エンタプライズサーバ50は、1または複数のエンタプライズシステムをホストするネットワークアドレッシング可能なコンピューティングシステムであってもよい。エンタプライズサーバ50は、任意の好適なエンタプライズデータの生成、記憶、受信、および送信を行う。エンタプライズサーバ50は、直接的に、またはネットワーククラウド60を通じて、ネットワーク環境100の他の構成要素によってアクセスされる。
特定の実施形態において、ユーザは、1または複数のクライアントデバイス30を使用して、ソーシャルネットワーキングシステム20またはウェブアプリケーションサーバ40にアクセスし、データをソーシャルネットワーキングシステム20またはウェブアプリケーションサーバ40に送信し、ソーシャルネットワーキングシステム20またはウェブアプリケーションサーバ40からデータを受信する。クライアントデバイス30は、ソーシャルネットワーキングシステム20、またはウェブアプリケーションサーバ40に、直接的に、ネットワーククラウド60を通じて、またはサードパーティシステムを通じてアクセスする。例えば、限定されるものでないが、クライアントデバイス30は、ウェブアプリケーションサーバ40またはエンタプライズサーバ50に、ソーシャルネットワーキングシステム20を通じてアクセスする。クライアントデバイス30は、例えば、パーソナルコンピュータ、ラップトップ、携帯電話、スマートフォンもしくは他のセルラデバイスもしくはモバイルデバイス、携帯情報端末、純正もしくは後付ナビゲーションシステム、モバイルゲーム機、またはコンピューティングタブレットなどの任意の好適なコンピューティングデバイスであってよい。
特定の実施形態において、ネットワーククラウド60は、本明細書で説明されているさまざまなシステムおよびホストが通信する際に経由する1または複数の相互接続されたネットワークを含む。本開示では、任意の好適なネットワーククラウド60を企図する。例えば、限定されるものでないが、ネットワーククラウド60の1または複数の部分は、アドホックネットワーク、イントラネット、プライベートネットワーク、エクストラネット、仮想プライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、無線LAN(WLAN)、ワイドエリアネットワーク(WAN)、無線WAN(WWAN)、メトロポリタンエリアネットワーク(MAN)、インターネットの一部、パケットベースのワイドエリアネットワーク、公衆交換電話網(PSTN)の一部、携帯電話網、衛星ネットワーク、ページングネットワーク、またはこれらのネットワークの2以上の組み合わせを含む。ネットワーククラウド60は、1または複数のネットワーククラウド60を含む。
特定の実施形態において、接続70で、ソーシャルネットワーキングシステム20、クライアントデバイス30、ウェブアプリケーションサーバ40、およびエンタプライズサーバ50を互いに、または通信ネットワーククラウド60と接続する。本開示では、任意の好適な接続70を企図する。特定の実施形態において、1または複数の接続70は、1または複数の有線接続(例えば、デジタル加入者回線(DSL)またはデータオーバーケーブルサービスインタフェース仕様(DOCSIS)など)、無線接続(例えば、Wi−FiまたはWiMAX(Worldwide Interoperability for Microwave Access)など)、または光接続(例えば、同期型光ネットワーク(SONET)または同期デジタルハイアラキー(SDH)など)を含む。特定の実施形態において、1または複数の接続70は、それぞれ、アドホックネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部、PSTNの一部、携帯電話網、別の接続70、または2以上のそのような接続70の組み合わせを含む。接続70は、ネットワーク環境100全体を通して必ずしも同一でなくてよい。1または複数の第1の接続70は、1または複数の第2の接続70と1または複数の点で異なる。
特定の実施形態において、クライアントデバイス30は、ウェブブラウザ(例えば、MICROSOFT WINDOWS(登録商標)INTERNET EXPLORER、MOZILLA FIREFOX、APPLE SAFARI、GOOGLE CHROME、およびOPERAなど)、または専用クライアントアプリケーション(例えば、iPhone(登録商標)用Facebook(登録商標)など)などの、1または複数のクライアントアプリケーションを実行して、ネットワーククラウド60上のコンテンツにアクセスし、閲覧させる。特定の実施形態において、クライアントアプリケーションは、クライアントデバイス30のユーザが、ソーシャルネットワーキングシステム20、ウェブアプリケーションサーバ40、エンタプライズサーバ50、または別の好適なホストによってホストされる資源(リソース)などの取り出されるべき特定のネットワークリソースのアドレスを入力することを可能にする。これらのアドレスは、ユニフォームリソースロケータ(URL)または他の好適なアドレスタイプである。ウェブページまたは他のリソースが取り出された後、クライアントアプリケーションは、ユーザが他のリソースへのハイパーリンクを「クリック」したときに他のウェブページまたはリソースへのアクセスを提供する。例えば、限定されるものでないが、そのようなハイパーリンクは、ウェブページ内に配置され、ユーザが別のページのURLを入力し、そのページを取り出すための自動化された手段となり得る。
より具体的には、ユーザがクライアントデバイス30でソーシャルネットワーキングシステム20によってホストされる特定のウェブページ(これ以降、ターゲット構造化ドキュメントとも称する)、またはウェブアプリケーションサーバ40によってホストされる(また場合によっては、ソーシャルネットワーキングシステム20とともに利用可能にされる)ウェブアプリケーションを閲覧することを望んでいる場合、ユーザのウェブブラウザ、または別のクライアントサイド構造化ドキュメントレンダリングエンジンまたは好適なクライアントアプリケーションが、リクエストを定式化してソーシャルネットワーキングシステム20に送信する。このリクエストは、URLまたは他のドキュメント識別子、さらにはメタデータまたは他の情報を含む。例えば、限定されるものでないが、リクエストは、ユーザIDなどのユーザを識別する情報、さらにはユーザのクライアントデバイス30上で動作しているウェブブラウザまたはオペレーティングシステムを識別または特徴付ける情報を含む。リクエストは、ユーザのクライアントデバイス30の地理的位置またはユーザのクライアントデバイス30の論理的ネットワーク位置を識別する位置情報、さらにはリクエストがいつ送信されたかを識別するタイムスタンプも含む。
図2Aは、例示的なソーシャルネットワーキングシステム20の例示的な構成要素を示
す。特定の実施形態において、ソーシャルネットワーキングシステム20は、オンラインソーシャルネットワークをホストするネットワークアドレッシング可能なコンピューティングシステムであってもよい。ソーシャルネットワーキングシステム20は、例えば、ユーザプロファイルデータ、コンセプトプロファイルデータ、ソーシャルグラフ情報、またはオンラインソーシャルネットワークに関係する他の好適なデータなどの、ソーシャルネットワーキングデータの生成、記憶、受信、および送信を行う。特定の実施形態において、本明細書で説明されているような1または複数のウェブページまたはウェブアプリケーションは、ソーシャルネットワーキングシステム20またはオンラインソーシャルネットワークに関連付けられる。ソーシャルネットワーキングシステム20は、直接的に、またはネットワーククラウド60を通じて、ネットワーク環境100の他の構成要素によってアクセスされる。例えば、限定されるものでないが、ソーシャルネットワーキングシステム20は、ユーザがクライアントデバイス30で、本明細書で説明されるように、互いに通信するか、または他の任意の形で双方向に対話し、ユーザプロファイルなどのコンテンツにアクセスすることを可能にするコンピューティングシステムを含む。特定の実施形態において、ソーシャルネットワーキングシステム20は、さまざまな例示的な実施形態において、1または複数の物理サーバ22、さらには本明細書でデータストア24と総称される1または複数のデータストア(さまざまな統合された、または分散されたコンピューティングシステム、データベース、またはデータサーバのうちの1または複数に実装されるか、またはそれらによって実装される)を含むネットワークアドレッシング可能なコンピューティングシステムを含む。物理サーバ22は、例えば、一組のルータまたはネットワーキングスイッチ26を通じて、コンピュータネットワーク60に動作可能に接続される。特定の実施形態において、1または複数の物理サーバ22によってホストされる機能は、ウェブまたはHTTPサーバ、FTPサーバ、さらには、限定されるものでないが、共通ゲートウェイインタフェース(CGI)スクリプト、PHPハイパーテキストプリプロセッサ(PHP)、アクティブサーバページ(ASP)、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、Java(登録商標)、JavaScript(登録商標)、AJAX(Asynchronous JavaScript and XML)、および同様のものを使用して実装されるウェブページおよびアプリケーションを含む。
特定の実施形態において、物理サーバ22は、ソーシャルネットワーキングシステム20のオペレーションを対象とする機能をホストする。例えば、限定されるものでないが、ソーシャルネットワーキングシステム20は、1または複数のユーザが、1または複数のクライアントデバイス30で、情報を閲覧し、投稿すること、さらにはウェブサイトを通じて互いに通信することを可能にするウェブサイトをホストする。これ以降、サーバ22は、サーバ22と称されるが、ここで説明するように、サーバ22は、例えばソーシャルネットワーキングシステム20、さらには他のコンテンツ配信サーバ、データストア、またはデータベースをホストする多数のサーバを含む。データストア24は、ソーシャルネットワーキングシステム20のオペレーションに関係する、またそのオペレーションを可能にする、コンテンツおよびデータを、コンテンツオブジェクトを含むデジタルデータオブジェクトとして記憶する。特定の実施形態において、データオブジェクトは、典型的にはデータファイル、データベース、またはレコード内に記憶されるか、または具現化される一デジタル情報であってよい。コンテンツオブジェクトは、テキスト(例えば、ASCII、SGML、HTML)、画像(例えば、jpeg、tif、およびgif)、グラフィックス(ベクトルベースまたはビットマップ)、オーディオ、ビデオ(例えば、mpeg)、または他のマルチメディア、およびこれらの組み合わせを含む多数の形態をとり得る。コンテンツオブジェクトデータは、実行可能コードオブジェクト(例えば、ブラウザウィンドウまたはフレーム内で実行可能なゲーム)、ポッドキャストなども含む。論理的に、データストア24は、1または複数の物理システム上に記憶されている論理的に関係するレコードまたはファイルの統合された集合体として情報を維持する関係データベー
スもしくはオブジェクト指向型データベースなどの、さまざまな個別、または統合データベースのうちの1または複数に対応する。構造に関して、データストア24は、一般的に、データストレージおよび管理システムの大きなクラスの1または複数を含む。特定の実施形態において、データストア24は、1または複数のデータベースサーバ、大容量記憶媒体、メディアライブラリシステム、ストレージエリアネットワーク、データストレージクラウド、および同様のものなどの、構成要素を含む任意の好適な物理システム(複数可)によって実装される。特定の実施形態において、データストア24は、1または複数のサーバ、データベース(例えば、MySQL)、および/またはデータウェアハウスを含む。データストア24は、異なるソーシャルネットワーキングシステム20のユーザ、クライアントデバイス30、ウェブアプリケーションサーバ40、またはエンタプライズサーバ50に関連付けられているデータ、さらには特定の実施形態において、さまざまなコンセプトに関連付けられているデータを含む。
図2Bは、例示的なソーシャルネットワーキングシステム20の例示的なアーキテクチャおよび例示的なクライアントデバイス30の例示的なアーキテクチャを示す。特定の実施形態において、クライアントデバイス30は、ウェブブラウザ202、およびフロントエンドタイプアヘッドプロセス204を含む。特定の実施形態において、ソーシャルネットワーキングシステム20は、ソーシャルグラフデータベース206およびコンセプトデータベース216を含むデータストア24を含む。特定の実施形態において、ソーシャルネットワーキングシステム20は、ページ生成プロセス200、バックエンドタイプアヘッドプロセス208、エッジ生成API210、ノード生成API212、ブートストラッピングプロセス214、推奨生成プロセス218、およびインデックス作成プロセス220を含む物理サーバ22を含む。
特定の実施形態において、ソーシャルネットワーキングシステム20は、ソーシャルグラフ情報を含むソーシャルグラフに関して記述されるか、または実装される。特定の実施形態において、データストア24は、本明細書で説明されているソーシャルネットワーキングシステム20を実装する際に使用するソーシャルグラフ情報が記憶されるソーシャルグラフデータベース206を含む。特定の実施形態において、データストア24内に、特にソーシャルグラフデータベース206内に、ソーシャルネットワーキングシステム20によって記憶されたソーシャルグラフ情報は、複数のノードおよび対応するノード間の接続を定義する複数のエッジを含む。特定の実施形態において、ノードまたはエッジそれ自体は、対応するユーザまたはコンセプトに対する識別子、属性、および情報(対応するプロファイルページに対する情報を含む)を含むデータオブジェクトであり、その一部は対応するプロファイルまたは他のページ上に実際にレンダリングされる。ノードは、各ノードに対応するプロファイルページのレンダリングと連携してコンテンツをレンダリングする際に使用する他のオブジェクト、データ構造、またはリソースへのポインタまたは参照も含む。
特定の実施形態において、ソーシャルネットワーキングシステム20によってホストされているウェブページまたは構造化ドキュメントに対するリクエストが、ソーシャルネットワーキングシステム20によって受信されると、ソーシャルネットワーキングシステム20内で実行中の1または複数のページ生成プロセス200が、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、またはウェブブラウザによってサポートされている他の構造化ドキュメントの形態で基本ウェブページを生成する。次いで、生成された構造化ドキュメントは、1または複数の部分もしくは部分応答を含む、応答で、要求しているリクエストクライアント30に、ハイパーテキスト転送プロトコル(HTTP)またはクライアントデバイス30のウェブブラウザ202によるレンダリングに適した他の好適な接続を通じて送信される。構造化ドキュメントは、送信ドキュメント内に埋め込まれた、1または複数のリソース(例えば、JavaScriptスクリ
プト、コードセグメント、またはリソース、カスケーディングスタイルシート(CSS)コードセグメントもしくはリソース、画像データもしくはリソース、ビデオデータもしくはリソースなど)、またはそのようなリソースへの参照を含む。例えば、限定されるものでないが、HTMLドキュメント内に埋め込まれたリソースは、一般的に、リソースのタイプに応じて、とりわけスクリプト要素、画像要素、またはオブジェクト要素内に含まれるか、または指定される。リソースを参照または指定する要素は、サーバ22またはソーシャルネットワーキングシステム20内のデータストア24内に、またはウェブページを要求したクライアントデバイス30の1または複数の外部位置に配置される、リソースの位置を識別するソース属性(例えば、src)を含む。応答を受信した後、クライアントデバイス30で動作しているウェブブラウザ202または他のクライアントドキュメントレンダリングアプリケーションは、次いで、受信された構造化ドキュメントのドキュメントオブジェクトモデル(DOM)表現を構築することができ、ドキュメント内に埋め込まれたリソース(複数可)(1または複数の他の外部位置にある)を要求する。
特定の実施形態において、ソーシャルネットワーキングシステム20の登録ユーザが最初に所定のユーザセッションにおいてソーシャルネットワーキングシステム20からウェブページを要求すると、ソーシャルネットワーキングシステム20からユーザのクライアントデバイス30に送信される応答は、クライアントデバイスにおいてログインページをレンダリングするためにページ生成プロセス200によって生成された構造化ドキュメントを含む。次いで、ユーザは、自分のユーザログイン信用証明(例えば、ユーザIDおよびパスワード)を入力することができ、次いでユーザのクライアントデバイス30からソーシャルネットワーキングシステム20に送信される。ユーザの認証に成功した後、ソーシャルネットワーキングシステム20は、ユーザのクライアントデバイス30でユーザホームページ、ユーザプロファイルページ、または別のランディングページをレンダリングするためにページ生成プロセス200によって生成された構造化ドキュメントを含む応答をユーザのクライアントデバイス30におけるユーザのウェブブラウザ202に送信する。さらに、本明細書でさらに説明されている特定の実施形態において、この、またはその後の応答は、ユーザのクライアントデバイス30によって受信されたときに、ユーザのウェブブラウザ202と連携して実行するフロントエンド(クライアントサイド)タイプアヘッドプロセス204を実装する1または複数の実行可能コードセグメント(例えば、JavaScript)をさらに含む。
ソーシャルグラフ
図3は、例示的なソーシャルグラフ300を示す。特定の実施形態において、ソーシャルネットワーキングシステム20は、1または複数のデータストア24に1または複数のソーシャルグラフ300を記憶する。特定の実施形態において、ソーシャルグラフ300は、複数のユーザノード302および/または複数のコンセプトノード304を含む、複数のノードからなり、またこれらのノードを接続する複数のエッジ306も含む。図3に示されている例示的なソーシャルグラフ300は、教示を目的として、2次元の視覚的マップ表現で示されている。特定の実施形態において、ソーシャルネットワーキングシステム20、クライアントデバイス30、またはウェブアプリケーションサーバ40は、本明細書で説明されているいくつかのアプリケーションを含む、さまざまなアプリケーションに対するソーシャルグラフ300および関係するソーシャルグラフ情報にアクセスする。ソーシャルグラフ300の複数のノードおよびエッジは、データオブジェクトとして、例えば、データストア24、特にソーシャルグラフデータベース206内に記憶される。それに加えて、本明細書で説明されるように、データストア24は、ソーシャルグラフデータベース206のインデックス作成によって生成されるノードまたはエッジの1または複数の検索可能な、またはクエリされるインデックスをさらに含む。
特定の実施形態において、それぞれのユーザノード302は、ソーシャルネットワーキ
ングシステム20のユーザに対応する。例えば、限定されるものでないが、ユーザは、ソーシャルネットワーキングシステム20を対話的に操作するか、またはそれと通信するか、またはソーシャルネットワーキングシステム20経由で通信する個人(人間のユーザ)、エンティティ(例えば、企業、会社、またはサードパーティアプリケーション)、またはグループ(例えば、個人もしくはエンティティの)である。本明細書で使用されるように、「登録ユーザ」は、ソーシャルネットワーキングシステム20内に正式に登録したユーザを示す。特定の実施形態において、ユーザがソーシャルネットワーキングシステム20にアカウントを登録すると、ソーシャルネットワーキングシステム20は、そのユーザに対応するユーザノード302を作成し、ユーザノード302を1または複数のデータストア24内に記憶する。一般的に、本明細書で説明されているユーザおよびユーザノード302は、登録ユーザおよびこれらのユーザに関連付けられているユーザノード302を示すが、これは他の実施形態では必ずしも必要というわけではない。すなわち、特定の実施形態では、本明細書で説明されているユーザおよびユーザノード302は、ソーシャルネットワーキングシステム20に登録していないユーザを示す。本明細書で使用されるように、「認証ユーザ」は、ソーシャルネットワーキングシステム20によって、ユーザが管理者権限を有する対応するプロファイルページにおいて主張されているユーザ、あるいは主張されているユーザの好適な信頼できる代理であるものとして認証されているユーザを示す。特定の実施形態において、ユーザノード302は、ユーザによって提供される情報、およびソーシャルネットワーキングシステム20を含む、さまざまなシステムによって集められた情報に関連付けられる。例えば、限定されるものでないが、ユーザは、自分の名前、プロファイル画像、連絡先情報、誕生日、性別、配偶者の有無、家族の有無、職業、学歴、好み、関心事、および他の人口統計学情報を提供する。特定の実施形態において、それぞれのユーザノード302は、ユーザに関連付けられている情報に対応する1または複数のデータオブジェクトに関連付けられる。特定の実施形態において、それぞれのユーザノード302は、1または複数のウェブページまたは1または複数のユーザプロファイルページに対応する。例えば、限定されるものでないが、特定のユーザのユーザ識別子を含むリクエストに応答して、ソーシャルネットワーキングシステム20は、ユーザ識別子に基づき対応するユーザノード302にアクセスし、特定のユーザの名前、プロファイル画像、および関心事を含むユーザプロファイルページを構築する。
特定の実施形態において、それぞれのコンセプトノード304は、1つのコンセプトに対応する。例えば、限定されるものでないが、コンセプトは、場所(例えば、映画館、レストラン、名所旧跡、または都市)、ウェブサイト(例えば、ソーシャルネットワークシステム20に関連付けられているウェブサイト、またはウェブアプリケーションサーバ40に関連付けられているサードパーティウェブサイトなど)、エンティティ(例えば、人、会社、団体、スポーツチーム、または著名人など)、リソース(例えば、オーディオファイル、ビデオファイル、デジタル写真、テキストファイル、構造化ドキュメント、またはアプリケーション、リソースはソーシャルネットワーキングシステム20またはウェブアプリケーションサーバ40などの外部サーバ上に配置される)、不動産または知的財産(例えば、彫刻、画像、映画、ゲーム、楽曲、アイデア、写真、または著作物)、ゲーム、アクティビティ、アイデアもしくは理論、別の好適なコンセプト、または2以上のそのようなコンセプトに対応する。コンセプトの管理者ユーザ(例えば、コンセプトの所有者もしくは管理者など)は、コンセプトに関係する情報を与えることによって(例えば、オンラインフォームに記入することによって)コンセプトノード304を作成することができ、これにより、ソーシャルネットワーキングシステム20は対応するコンセプトノード304を作成し、次いで、これがデータストア24の1または複数に記憶される。コンセプトノード304は、コンセプトの管理者ユーザによって提供されるコンセプトの情報、およびソーシャルネットワーキングシステム20を含む、さまざまなシステムによって集められた情報に関連付けられる。例えば、限定されるものでないが、コンセプトの情報は、名前または肩書きとして、1または複数の画像(例えば、書籍の表紙の画像)、位置(
例えば、住所、地理的位置)、ウェブサイト(例えば、URLアドレス)、連絡先情報(例えば、電話番号、電子メールアドレス)、他の好適なコンセプト情報、またはこのような情報の組み合わせを含む。特定の実施形態において、それぞれのコンセプトノード304は、コンセプトノード304に関連付けられている情報に対応する1または複数のデータオブジェクトに関連付けられる。特定の実施形態において、それぞれのコンセプトノード304は、1つのウェブページに対応する。例えば、限定されるものでないが、名前(またはURLアドレス)を含むリクエストに応答して、ソーシャルネットワーキングシステムは、名前に基づき対応するコンセプトノード(データストア24の1または複数に記憶される)にアクセスし、コンセプトの名前、1または複数の画像、および連絡先情報を含むウェブページを構築する。
特定の実施形態において、ソーシャルグラフ300内のそれぞれのノードは、対応するウェブページ(「プロファイルページ」)を表すか、またはそれによって表される。プロファイルページは、ソーシャルネットワーキングシステム20によってホストされるか、またはアクセス可能である。またプロファイルページは、ウェブアプリケーションサーバ40に関連付けられているサードパーティウェブサイト上でホストされる。例えば、限定されるものでないが、特定の外部ウェブページに対応するプロファイルページは、単に、特定の外部ウェブページであってもよく、このプロファイルページは、特定のコンセプトノード304に対応する。プロファイルページは、すべてのユーザまたは他のユーザの選択された部分集合によって閲覧可能である。例えば、限定されるものでないが、ユーザノード302は、対応するユーザがコンテンツを追加すること、宣言を行うこと、または他の任意の形で自己表現することを行う対応するユーザプロファイルページを有する。一般的に、ユーザは、自分の各ユーザプロファイルページの全部または一部への管理者権限を有する。潜在的に、例えば、とりわけホームページ、ページホスティングウェブアプリケーションを含む特定のユーザによって作成されるか、または特定のユーザ向けに作成された他のページに対しても同様である。別の例として、限定されるものでないが、コンセプトノード304は、そのコンセプトノード304に対応するコンセプトプロファイルページ(「ハブ」)を有しており、1または複数のユーザは、コンテンツを追加すること、宣言を行うこと、または自己表現することを、特にコンセプトとの関連でコンセプトプロファイルページ(「ハブ」)に行う。本開示ではノードが接続されていることについて一般的に説明しているが、本開示ではプロファイルページが接続されていることについても説明する。プロファイルページが接続されていることに言及した場合、これは、一般的に、文脈上そうでないことが示唆されていない限り、それらのプロファイルページに対応するノードが1または複数のエッジ306によってソーシャルグラフ300内で接続されていることを示す。
特定の実施形態において、コンセプトノード304は、ウェブアプリケーションサーバ40によってホストされているサードパーティウェブページまたはリソースを表す。サードパーティウェブページまたはリソースは、アクションまたはアクティビティを表す選択可能なアイコン(例えば、JavaScript、AJAX、またはPHPコードで実装される)を含む。例えば、限定されるものでないが、カリフォルニア州パロアルトのザ・オールド・プロ・スポーツバー(The Old Pro Sports Bar in
Palo Alto, California)に関する「オールド・プロ(Old Pro)」に対するサードパーティウェブページは、図5Bに示されているウェブページ520のような「“いいね”と表明(Like)」または「チェックイン」などの選択可能なアイコンを含むか、または例えば「食事をする」、「推奨する」、または他の好適なアクションもしくはアクティビティなどの選択可能なアイコンを含む。サードパーティウェブページを閲覧しているユーザは、いくつかのアイコンのうちの1つ(例えば、「食事をする」)を選択することによってアクションを実行することができ、これによりクライアントデバイス30はソーシャルネットワーキングシステム20に、ユーザのアクション
(例えば、「Old Pro」で食事をする)を示すメッセージを送信する。サードパーティウェブページまたはリソースに対応するコンセプトノード304が、ソーシャルグラフ300内に存在している場合、このメッセージに応答して、ソーシャルネットワーキングシステム20は、そのユーザに対応するユーザノード302とサードパーティウェブページまたはリソースに対応するコンセプトノード304との間にエッジ(例えば、「食事をする」エッジ)を作成し、このエッジ306をデータストア24の1または複数に記憶する。サードパーティウェブページまたはリソースに対応するコンセプトノード306が、ソーシャルグラフ300内に存在していない場合、このメッセージに応答して、ソーシャルネットワーキングシステム20は、サードパーティウェブページまたはリソースに対応するコンセプトノード304を作成し、新規作成されたコンセプトノードとそのユーザに対応するユーザノードとの間にエッジ306(例えば、「食事をする」エッジ)を作成し、コンセプトノード304およびエッジ306をデータストア24の1または複数に記憶する。
特定の実施形態において、特定のコンセプトは、1または複数のコンセプトノード304に対応する。ソーシャルグラフ300は、同じコンセプト(例えば、同じ現実世界のエンティティ)に対応する複数のコンセプトノード304を含む。すなわち、いくつかのコンセプトノード304のそれぞれのコンセプトノード304は、同じコンセプトに関するものである異なるウェブページに対応する。例えば、限定されるものでないが、人気のある著名人またはレストランは、例えば、さまざまなユーザによってオーサリングされている「ファンページ」、「公式ページ」、または「レビューページ」などのいくつかのウェブページを有している場合がある。
特定の実施形態において、複数のユーザノード302およびコンセプトノード304は、それぞれ、管理されているノードおよび管理されていないノードを表す。管理されているノード(すなわち、ユーザノード302)は、それぞれ各ユーザおよびそのユーザの各ユーザプロファイルページに対応するユーザ管理されているノードである。特定の実施形態において、ユーザノード302に対応するユーザプロファイルページは、各所有者(登録)ユーザによって、また各所有者(登録)ユーザによってのみ、修正されるか、書き込まれるか、または他の任意の形で管理される(例えば登録ユーザ側による良心的な、または他の任意の不適切なアクションの結果として、ソーシャルネットワーキングシステム20の公式管理者が一般にユーザのプロファイルページの修正または削除のためアクセスすることを望むか、またはアクセスすることを必要としていない限り)。管理されていないノード(すなわち、コンセプトノード304)は、それぞれ各コンセプトおよび各コンセプトに割り振られた各コンセプトプロファイルページ(これ以降「ハブ」とも称する)に対応するユーザ管理されていないノードである。特定の実施形態において、管理されていないノードは、いずれのユーザによっても一般に管理されていない各コンセプトプロファイルページ(ハブ)を有するノードであり、むしろ、特定の実施形態において、ハブは、一般的に、少なくとも一部は、特定の実施形態においてコンセプトノード304との接続を有していないユーザ(すなわち、ユーザノード302が必ずしもソーシャルグラフデータベース206におけるソーシャルグラフ300内のエッジでコンセプトノード304と接続されていないユーザ)を含むソーシャルネットワーキングシステム20の登録ユーザによって管理され、作成され、書き込まれ、またそのような登録ユーザの寄与を受けるか、またはそのような登録ユーザによって修正される。ある意味で、ハブは、ソーシャルネットワーキングシステム20の登録ユーザのコミュニティによって管理されるか、またはそのコミュニティによる寄与を受ける。
特定の実施形態において、ソーシャルグラフ300内の一対のノードが、1または複数のエッジ306によって接続される。一対のノードを接続するエッジ306は、その一対のノード間の関係を表す。特定の実施形態において、それぞれのエッジ306は、一対の
ノードの間の関係に対応する1または複数のデータオブジェクトまたは属性を含むか、またはそれらを表す。例えば、限定されるものでないが、第1のユーザは、第2のユーザが第1のユーザの「友達」であることを標識により示す。この標識に応答して、ソーシャルネットワーキングシステム20は、「友達リクエスト」を第2のユーザに送信し得る。第2のユーザが「友達リクエスト」を確認した場合、ソーシャルネットワーキングシステム20は、ソーシャルグラフ300内の第1のユーザのユーザノード302と第2のユーザのユーザノード302とを接続するエッジ306を作成し、エッジ306をソーシャルグラフ情報としてデータストア24の1または複数に記憶する。図3の例において、ソーシャルグラフ300は、ユーザ「A」およびユーザ「B」のユーザノード302の間の友達関係を示すエッジ306、およびユーザ「C」およびユーザ「B」のユーザノード302の間の友達関係を示すエッジを含む。本開示ではユーザノード302を接続する特定の属性を有するエッジ306を説明し、図3で図示しているが、本開示では、ユーザノード302を接続する任意の好適な属性を有するエッジ306を企図している。例えば、限定されるものでないが、エッジ306は、友達関係、家族関係、事業または雇用関係、ファン関係、フォロワー関係、訪問者関係、加入者関係、上位/下位関係、相互関係、非相互関係、別の好適なタイプの関係、または2以上のそのような関係を表す。さらに、本開示ではノード同士が接続されていることについて一般的に説明しているが、本開示ではユーザおよび/またはコンセプトが接続されていることについても説明する。ユーザおよび/またはコンセプトが接続されていることに言及した場合、これは、一般的に、文脈上そうでないことが示唆されていない限り、それらのユーザまたはコンセプトに対応するノードが1または複数のエッジ306によってソーシャルグラフ300内で接続されていることを示す。
特定の実施形態において、それぞれのエッジタイプは、対応する対のノードの間の特定のタイプの接続を記述する詳細またはメタデータをさらに追加する1または複数のエッジサブタイプを含む。それぞれのエッジ306は、ソーシャルグラフ300内でエッジが接続するノードのタイプに少なくとも一部は基づき複数のエッジタイプのうちの1つであってよい。さらに、いくつかの実施形態では、新しいエッジタイプは、自動的にまたは動的に定義または生成される。例えば、限定されるものでないが、サードパーティウェブアプリケーションに入力されるか、または関係する情報により、新しいエッジタイプを定義し、生成する。例えば、限定されるものでないが、NETFLIXに対するウェブアプリケーションは、結果として、「私が見たい映画(movies I want to see)」を表すエッジタイプをもたらし得る。エッジ306が関連付けられているエッジタイプを有するか、割り当てられているそのような実施形態では、エッジ306それ自体は、エッジ306が接続する一対のノード間の接続のタイプを定義するデータ、例えば、エッジが接続するノードのタイプ(例えば、ユーザ、ハブ、カテゴリ、またはハブの分類)を記述するデータ、さまざまなユーザへのエッジ306の可視性を定義するプライバシ設定、エッジ306が接続する他方のノードに関するエッジ306によって接続される一対のノードのうちの一方のノードの管理者のアクセス権(例えば、エッジ306によって接続される他方のノードに関する一方のノードの管理者の読込または書込アクセス権限)、またはエッジ306が最初に(例えば、明示的なユーザアクションもしくは宣言に応答して、または明示的なユーザアクションなしで自動的に)初期化または作成された方法または理由、エッジ306によって接続されるノード(またはより具体的に、各接続されているノードに関連付けられているユーザもしくはコンセプト)に関係するか、またはそのようなノードによって共有されるさまざまな要因もしくは基準によって決定されるような接続の強度を記述するデータ、もしくは他の好適なもしくは関連するデータなどを記憶するか、またはこれらとともに記憶される。
特定の実施形態において、それぞれのエッジ306は、単に、エッジが接続するノードのタイプに関係なくノード間の接続を定義するか、または表す。エッジそれ自体は、エッ
ジ306が接続するノードの識別子を記憶するか、またはそれらとともに記憶されるが、エッジが接続する一対のノードの間の接続のタイプを記述するデータを記憶するか、またはそれとともに記憶されるということはない。さらに、これらの、または他の実施形態において、エッジによって接続されるノード間の接続または関係のタイプを示す標識となるデータは、ノードそれ自体とともに記憶される。特定の実施形態において、エッジ、さらには属性(例えば、エッジタイプおよびエッジによって接続されるノードに対応するノード識別子)、メタデータ、またはエッジを定義するか、または特徴付けるか、または関係する他の情報は、(例えば、データオブジェクトとして)ソーシャルグラフデータベース206内に記憶され、定期的に、またはさまざまなアクションまたは要因に応答して更新される(例えば、ユーザがさらにハブを対話的に操作するときに、各ユーザノードおよびコンセプトノード同士を接続するエッジは、この対話的な操作を反映するように更新され、次いで、以下でさらに詳しく説明されるようにエッジを特徴付ける親和性または接続の強度スコアに寄与し得る。)
特定の実施形態において、ユーザノード302とコンセプトノード304との間のエッジ306は、コンセプトノード304に関連付けられているコンセプトに向かうユーザノード302のユーザによって実行される特定のアクションまたはアクティビティを表す。例えば、限定されるものでないが、図3に示されるように、ユーザはコンセプトに対して「“いいね”と表明」、「通っていた」、「プレイした」、「視聴した」、「料理した」、「勤務した」、「見た」とすることができ、それぞれエッジタイプまたはサブタイプに対応する。コンセプトノード304に対応するコンセプトプロファイルページは、例えば、選択可能な「チェックイン」アイコン(例えば、図5Bに示されている「チェックイン」アイコン524など)または選択可能な「お気に入りに追加」アイコン(例えば、図5Bに示されているアイコン526など)を含む。同様に、ユーザがこれらのアイコンをクリックした後、ソーシャルネットワーキングシステム20は、各アクションに対応するユーザのアクションに応答して「お気に入り」エッジまたは「チェックイン」エッジを作成する。別の例として、限定されるものでないが、ユーザ(ユーザ「C」)は、特定のアプリケーション(オンライン音楽アプリケーションのSPOTIFY)を使用して特定の曲(「イマジン」)を聴く。この場合、ソーシャルネットワーキングシステム20は、ユーザに対応するユーザノード302と曲およびアプリケーションに対応するコンセプトノード304との間に「視聴した」エッジ306および「利用した」エッジ(図3に示されているような)を作成し、ユーザがその曲を聴き、そのアプリケーションを使用したことを示す。さらに、ソーシャルネットワーキングシステム20は、曲およびアプリケーションに対応するコンセプトノード304の間に「プレイした」エッジ306(ここでもまた図3に示されているような)を作成し、特定の曲が特定のアプリケーションによって再生されたことを示す。この場合、「プレイした」エッジ306は、外部オーディオファイル(曲「イマジン」)に対して外部アプリケーション(SPOTIFY)によって実行されたアクションに対応する。本開示では、ユーザノード302とコンセプトノード304とを接続する特定の属性を有するエッジ306を説明しているが、本開示では、ユーザノードとコンセプトノードとを接続する任意の好適な属性を有するエッジ306も企図している。さらに、本開示では、ユーザノードとコンセプトノードとの間の単一の関係を表すエッジを説明しているが、本開示では、ユーザノードとコンセプトノードとの間の1または複数の関係を表すエッジも企図している。例えば、限定されるものでないが、エッジ306は、ユーザが特定のコンセプトについて「いいね」と表明することと、特定のコンセプトで利用したことの両方を表す。あるいは、ユーザ「E」に対するユーザノード302と「SPOTIFY」に対するコンセプトノード304との間で図3に示されるように、ユーザノード302とコンセプトノード304との間の関係(または単一の関係を複数にした関係)のそれぞれのタイプを表すように個別のエッジ306を生成することも可能である。
特定の実施形態において、ソーシャルネットワーキングシステム20は、ソーシャルグ
ラフ300内のユーザノード302とコンセプトノード304と間にエッジ306を作成する。例えば、限定されるものでないが、コンセプトプロファイルページを(例えば、ウェブブラウザまたはユーザのクライアントデバイス30によってホストされている専用アプリケーションを使用することなどによって)閲覧しているユーザは、「“いいね”と表明」アイコン(例えば、図5Bまたは図5Cに示されている「Like」アイコン522など)をクリックするか、または選択することによって自分がコンセプトノード304によって表されるコンセプトについて「いいね」と表明することを示すことができ、これにより、ユーザのクライアントデバイス30は、コンセプトプロファイルページに関連付けられているコンセプトについてユーザが「いいね」と表明したことを示すメッセージをソーシャルネットワーキングシステム20に送信する。このメッセージに応答して、ソーシャルネットワーキングシステム20は、ユーザ「B」のユーザノードと図3のスポーツバー「Old Pro」のコンセプトノードとの間の「“いいね”と表明」エッジ306によって示されるように、ユーザに関連付けられているユーザノード302とコンセプトノード304との間にエッジ306を作成する。特定の実施形態において、ソーシャルネットワーキングシステム20は、データストア24の1または複数にエッジ306を記憶する。本開示では特定の様式でエッジ306を形成することを説明しているが、本開示は、任意の好適な様式でエッジ306を形成することを企図している。例えば、限定されるものでないが、ウェブページを訪問し、アイコンをクリックする代わりに、ユーザは、ユーザのユーザノード302とコンセプトノード304との間にエッジ306を形成するように動作可能であるモバイルアプリケーションまたは別の好適なアプリケーションを使用する。
特定の実施形態において、エッジ306は、特定のユーザアクションに応答してソーシャルネットワーキングシステム20によって自動的に形成される。例えば、限定されるものでないが、第1のユーザが画像をアップロードするか、映画を見るか、または曲を視聴する場合、エッジ306が、第1のユーザに対応するユーザノード302とこれらのコンセプトに対応するコンセプトノード304との間に形成される。別の例として、限定されるものでないが、ソーシャルネットワーキングシステム20は、ソーシャルネットワーキングシステム20のユーザによって現在入力されている情報に基づきノードおよびエッジを自動的に生成する。さらに別の例として、限定されるものでないが、ソーシャルネットワーキングシステム20は、ソーシャルネットワーキングシステム20のユーザによってすでに入力された情報に基づきノードおよびエッジを自動的に生成する。ノードおよびエッジを自動的に生成することについての詳細は、本願明細書に援用する2010年4月19日に出願した米国特許出願第12/763162号において説明されている。
ユーザプロファイルページ
図4A〜図4Dは、例示的なユーザプロファイルページを示す。特定の実施形態において、ソーシャルグラフ300内のユーザノード302は、ユーザプロファイルページに対応する。特定の実施形態において、ユーザプロファイルページは、ユーザ、ユーザの友達、およびユーザのユーザノードに関連付けられているプライバシ設定によっては友達でない他のユーザに対しても可視である。ユーザは、例えば、ユーザのユーザプロファイルページ、ユーザホームページ、アカウント設定ページ、プライバシ設定ページ、または別の好適なインタフェースを通じて自分のプライバシ設定を設定もしくは修正する。ユーザプロファイルページは、1または複数のタブ401を選択することを通じて閲覧可能な、またはアクセス可能な多数の異なるサブページを含む。例えば、限定されるものでないが、図4Aに示されている実施形態では、ユーザプロファイルページは、投稿のためウォール(フィード)にアクセスするためのウォール(フィード)タブ401a、ユーザに関する、またはユーザに関係する情報を入力し、表示するための情報タブ401b、写真をアップロードし、表示するための写真タブ401c、およびボックスタブ401dを含む。ユーザは、ユーザプロファイル画像403として表示するように写真タブ401cでアップ
ロードされる特定の写真または画像を選択する。特定の実施形態において、ユーザのプロファイル画像403、さらには例えば、メッセージを別のユーザに送信する、プロファイルページを編集する、ユーザの友達を閲覧する、またはユーザの写真を閲覧するオプションなどの他の特徴を、タブ401のいずれが選択されてるかに拘わらず、ページの「クローム(chrome)」(境界)領域に表示する。特定の実施形態において、検索バーまたは検索インタフェースをユーザプロファイルページ(さらには他のページも)のクローム内に入れることができ、これにより、ユーザは、例えばユーザが検索したいと思っている他のユーザまたはコンセプトの名前もしくは属性などのソーシャルネットワークデータに対するクエリを入力する。
特定の実施形態において、ユーザプロファイルページを通じてユーザおよび他のユーザからアクセスできるか、または可視である情報の一部または全部が自己宣言される。ユーザは、ユーザプロファイルページが作成されたときに既定で自動的に表示される場合もされない場合もあるさまざまなセクションまたは形態で情報もしくはコンテンツをタイプ入力するか、または他の任意の方法で入力する。特定の実施形態において、ユーザは、ソーシャルネットワーキングシステム20にユーザがログインしたときにいつでも自分のユーザプロファイルページを編集する。例えば、限定されるものでないが、ユーザプロファイルページは、情報タブ401bの下の基本情報セクション402にある、例えば、正式名称(人のファーストネーム、ミドルネーム、およびラストネーム、企業体の商号または会社名など)、ニックネーム、経歴、人口統計学情報、および他のタイプの記述情報を含む、ソーシャルネットワーキングシステム20によって有効化されたオンラインソーシャルネットワークの各ユーザを記述するデータを含む。基本情報セクション402は、ユーザの性別、現在の都市、誕生日、出身都市、交際状況、政治観、ユーザが求めるもの、またはユーザのソーシャルネットワークの使い方(例えば、友達関係、交際関係、デート、ネットワーキングなどを探す場合)、および同様のものをさらに含む。
特定の実施形態において、ユーザプロファイルページは、ユーザがより多くの個人的宣言を入力できる個人情報セクション406を含む。例えば、限定されるものでないが、個人情報セクション406は、ユーザが自分が参加するか、または楽しむさまざまなアクティビティ、例えば、スポーツまたは音楽などを宣言するサブセクション408を含む。例えば、限定されるものでないが、セクション408では、ユーザはこれらのアクティビティを、例えば、アクティビティを単純に列挙するだけで宣言する。例えば、限定されるものでないが、ユーザは、「ウエイトリフティング、ハイキング、卓球、および、テーブルサッカーをプレイする」をリストに記載するか、または例えば、「私はウエイトリフティングを楽しみます、私はハイキングが好きです、私は卓球をするのが大好きです、私はテーブルサッカーが得意です。」などの語句を使用する。ユーザは、自分の宣言したアクティビティ(および以下で説明されている他の宣言)を、例えば、カンマ、セミコロン、ダッシュ、またはキャリッジリターン(以下で説明されているタイプアヘッドまたはブートストラッピングプロセスによって認識可能である)によって分離するか、または区切る。個人情報セクション406は、ユーザがさまざまな関心事項を宣言するサブセクション410も含む。ここでもまた、ユーザは、例えば、「読書と写真」とタイプ入力するか、または例えば、「私は読書が好きです、私は写真が好きです。」などの語句を使用することなどによって、そのような関心事を単純に列挙する。別の例として、関心事セクション406は、ユーザが自分が「いいね」と表明するか、または興味を抱いている音楽を宣言するお気に入り音楽サブセクション412、お気に入りテレビ番組サブセクション414、お気に入り映画サブセクション416、お気に入り書籍サブセクション418、お気に入り引用句サブセクション420、およびユーザがすでに説明されているセクションの下には収まらない自分自身に関する一般的な宣言を入力する一般的な「私について」サブセクション422さえも含む。
特定の実施形態において、ユーザプロファイルページは、ユーザが、例えば、電子メールアドレス、電話番号、自宅の住所、職場の住所、または他の好適な連絡先情報を含むさまざまな連絡先情報を入力する連絡先情報セクション424も含む。ユーザプロファイルページは、ユーザが自分の学歴または職歴を入力する学歴および職業セクション426を含む。例えば、限定されるものでないが、ユーザは、例えば、単純に「スタンフォード大学」とタイプ入力するか、または「私はスタンフォード大学に通っていました。」とタイプ入力するか、またはメニューインタフェースからスタンフォード大学を選択することによって、セクション426にスタンフォード大学に通っていたと宣言する。ユーザは、例えば、授与された学位、学位の分野、卒業日などのより具体的な情報を記述する。別の例として、セクション426では、ユーザがユーザの職歴を入力する。例えば、限定されるものでないが、ユーザは、例えば、単純に「Acme」とタイプ入力するか、または「私はAcmeに勤務しています。」とタイプ入力するか、またはメニューから会社「Acme」を選択することによって、自分が「Acme」社に勤めていると宣言する。
特定の実施形態において、ユーザプロファイルページは、ソーシャルグラフデータベース206内に記憶されているソーシャルグラフ300のエッジ306によって定義されているようなユーザの友達の全部または部分集合を表示する友達セクション428(ページのクロームまたは他の領域に表示されてもよい)も含む。特定の実施形態において、ユーザは、友達に関連付けられている名前またはサムネイル画像429をクリックし、その結果選択された友達のユーザプロファイルページにユーザを導く。特定の実施形態において、ユーザが別の第2のユーザに関して取るアクションは、第2のユーザがユーザの友達であるか否かに拘わらず、また特定の実施形態において、ユーザがさまざまなコンセプトノードに関して取るアクションは、最近のアクティビティセクション430に表示され、これはウォール(フィード)タブ401aの下のウォール(フィード)セクション432内にサブセクションとして閲覧可能である。一般的に、ウォール(フィード)セクション432は、ユーザおよび友達が入力ボックス434を通じてメッセージを投稿しユーザおよび友達が見るように、さらにはウォール(フィード)上の投稿に関してコメントするか、または他の任意の形で自己表現できるようにするすべてのユーザのプロファイルページ上の空間である。
特定の実施形態において、ユーザは、ユーザが編集したい、または宣言したいセクションに対応する編集リンク440をクリックするか、または他の任意の方法で選択することによって、自分のユーザプロファイルページを編集し、宣言する。例えば、限定されるものでないが、図4Cは、ユーザが個人情報セクション406に対応する編集リンク440を選択した後にユーザのクライアントデバイス30でユーザに表示される結果として得られるレンダリングされたウェブページを示している。図4Cに示されるように、複数のフォームボックス409、411、413、415、417、419、421、および423がレンダリングされ、これにより、ユーザは宣言をそれぞれ対応するセクション408、410、412、414、416、418、420、および422内にタイプ入力するか、または他の任意の形で入力する。ユーザがテキスト文字をフォームボックス内に入力すると、フロントエンドタイプアヘッドプロセス204およびバックエンドタイプアヘッドプロセス208が、ユーザが文字を入力しているときにユーザの宣言内に入力された文字列と一致(match)する既存のコンセプトノード304(またはユーザノード304、例えば、特に、著名人、会社、または組織に対応するユーザノード)を識別することを試みる。
特定の実施形態において、ユーザは、テキストクエリを検索フィールド450内に入力することによってソーシャルネットワークシステム20にクエリをサブミットする。クエリは、構造化されていないテキストクエリであってよく、また1もしくは複数のテキスト文字列または1もしくは複数のn−グラムを含む。一般に、ユーザは文字列を検索フィー
ルド450に入力して、テキストクエリと一致するソーシャルネットワーキングシステム20上のコンテンツを検索する。次いで、ソーシャルネットワーキングシステム20は、データストア24(またはより具体的には、ソーシャルグラフデータベース206またはコンセプトデータベース216)を検索して、クエリと一致するコンテンツを識別する。識別されたコンテンツは、例えば、ソーシャルグラフエンティティ(すなわち、ユーザノード302、コンセプトノード304、エッジ306)、プロファイルページ、外部ウェブページ、またはこれらの組み合わせを含む。次いで、ソーシャルネットワーキングシステム20のページ生成プロセス200は、検索結果が識別されたコンテンツに対応している検索結果ウェブページを生成し得る。検索結果ウェブページは、テキストクエリと一致した識別されたコンテンツの一部または全部への参照を含む。次いで、ソーシャルネットワーキングシステム20は、検索結果ウェブページをユーザのクライアントデバイス30上のユーザのウェブブラウザ202に送信する。次いで、ユーザは、検索結果ウェブページからのコンテンツをクリックするか、または他の任意の形で選択することで、ソーシャルネットワーキングシステム20から、または外部システムから、適宜、コンテンツにアクセスする。本開示では特定の様式でソーシャルネットワーキングシステム20にクエリを実行することを説明しているが、本開示は、任意の好適な様式でソーシャルネットワーキングシステム20にクエリを実行することを企図している。
コンセプトプロファイルページ
図5A〜図5Cは、例示的なコンセプトプロファイルページを示す。特定の実施形態において、ソーシャルグラフ300内のコンセプトノード304は、コンセプトプロファイルページに対応する。特定の実施形態において、コンセプトノード304およびそれらの各ハブは、ソーシャルネットワーキングシステム20のユーザによって明示的に作成されるか、またはソーシャルネットワーキングシステム20によって自動的に生成される。ユーザプロファイルページと同様に、コンセプトプロファイルページ(「ハブ」とも称される)は、対応するコンセプトノード304に関連付けられているコンセプトに関係する情報を共有する。特定の実施形態において、ソーシャルネットワーキングシステム20にログインし、ハブを閲覧している登録ユーザは、コンテンツをハブに追加する(例えば、ウィキ(wiki)サイトに似た様式などで)。例えば、限定されるものでないが、図5Aは、「ショーシャンクの空に(The Shawshank Redemption)」という映画の例示的なハブを示している。特定の実施形態において、図5Aに示されるように、ハブは、ユーザプロファイルページに似たウォール(フィード)タブ501a、情報タブ501b、写真タブ501c、およびボックスタブ501dを通じてアクセス可能なサブページを含む。ハブは、一般的に、基本情報セクション502、詳細情報セクション504、さらには潜在的に、他のセクションも含む。コンセプトプロファイルページに含まれる情報は、例えば、コンセプトまたはコンセプトノード304に関連付けられている管理者、ハブを閲覧しているユーザ(特定の実施形態では、ユーザ生成またはユーザ追加コンテンツがハブ内に見えるようになる前にコンテンツ承認または同期プロセスに関連付けられた時間遅延がある)、ソーシャルネットワーキングシステム20(内部または外部/サードパーティソース(例えば、ウィキペディア)から抽出された情報に基づく)、または別の好適なソースによって提供される。ハブは、写真タブ501cの下に写真または画像セクションも含むことができ、これにより、ユーザはコンセプト内の、またはコンセプトに関係する画像をアップロードすることができ、そのうちの1つはハブのプロファイル画像512として選択される。別の例として、限定されるものでないが、図5Bは、カリフォルニア州パロアルト(Palo Alto,California)のスポーツバーである「Old Pro」のウェブページを示している。このウェブページは、例えば、選択可能な「いいね」アイコン522、選択可能な「チェックイン」アイコン524、選択可能な「お気に入りに追加」アイコン526、他の好適な構成要素、またはこれらの任意の組み合わせを含む。さらに別の例として、限定されるものでないが、図5Cは、「マシュー(Matthew)」の画像に対するウェブページを示している。このウェブ
ページは、例えば、選択可能な「いいね」アイコン522、選択可能な「コメント」アイコン534、フィールド536内のさまざまなユーザからのコメントおよび「いいね」の歴、フィールド538内のコンセプトノードに対応するアプリケーションを示す標識、他の好適な構成要素、またはこれらの任意の組み合わせを含む。本開示では特定のコンセプトノードに関連付けられている特定のウェブページを説明し、図5A〜図5Cでそれを示しているが、本開示では、任意の好適なコンセプトノードに関連付けられている任意の好適なウェブページを企図している。さらに、本開示ではコンセプトノードがウェブページに関連付けられていることを説明しているが、本開示ではウェブページに必ずしも関連付けられていないコンセプトノードを企図している。例えば、限定されるものでないが、コンセプトノードは、任意の特定のウェブページに関連付けられていない曲または他の音楽作品に対応する。
特定の実施形態において、ウォール(またはニュースフィード/アクティビティフィード)セクション501a、またはハブの他のフィードもしくはアクティビティセクションは、ハブを閲覧しているユーザおよびユーザの友達に関連付けられているコメント、ステータス更新、ウォール投稿、および他のユーザアクティビティを表示する。ウォール(またはニュースフィード/アクティビティフィード)セクション501a、またはハブの他のフィードもしくはアクティビティセクションは、ハブが作成されたコンセプトに関係するコメント、ステータス更新、ウォール投稿、ならびに他のユーザアクティビティおよびユーザ生成コンテンツを表示する。より具体的には、ソーシャルネットワーキングシステム20内の1または複数のプロセスは、コンセプトによってフィルタリングされた要求しているリクエストユーザおよびリクエストユーザの友達に関連付けられているコメント、ステータス更新、ウォール投稿、ならびに他のユーザ生成コンテンツおよびユーザアクティビティに関する検索を実行する、すなわち、リクエストユーザおよびリクエストユーザの友達に関係するユーザフィードまたはアクティビティのストリーム内で、現在要求されているか、または閲覧されているハブのコンセプトに関係するキーワード(および潜在的に、推奨ハブに関連付けられているコンセプトに関係するキーワード)に対するキーワード検索を実行し、現在要求されているか、または閲覧されているハブのウォールまたはフィードセクション501a内のユーザコンテンツまたはアクティビティのこの部分集合を表示する。例えば、限定されるものでないが、2010年2月11日に出願した米国特許出願第12/704400号明細書は、そのような検索、フィルタリング、および表示を実行するための方法、プロセス、またはシステムを説明しており、これにより本願明細書に援用される。ウォールまたはフィードセクション501aは、ハブを閲覧しているユーザおよびユーザの友達のものだけでなく、ハブが作成されたコンセプトに関係するソーシャルネットワーキングシステム20の任意のすべてのユーザによるコメント、ステータス更新、ウォール投稿、および他のユーザアクティビティを表示する、上述したものとは別のセクションであってもよい、セクションも含む。
特定の実施形態において、特定のハブに表示される規定セクションは、ハブの作成後に、コンセプトそれ自体に依存し得る、すなわち、コンセプトノード304は、ソーシャルネットワーキングシステム20によっていくつかのカテゴリに分類され、これらのカテゴリ(例えば、人、場所、物、アクティビティ、スポーツ、スポーツチーム、著名人、都市、場所、映画、俳優、書籍、レストランなど)は、少なくとも一部は、どのセクションが特定のハブに表示されるかを示す。例えば、限定されるものでないが、映画ハブは、図5Aに例示されるように、その映画に主演する俳優を入力するためのセクションまたはサブセクション、さらには監督、脚本、制作、公開日などの情報を入力するためのセクションまたはサブセクションを含む。特定の実施形態において、ハブは、図5Aに例示されているファンセクション508などの、コンセプト(およびその対応するコンセプトノード304)への、またはそれとの接続(およびソーシャルグラフ300内の対応するエッジ306)を有するユーザを列挙するか、または表示するセクション508(特定の実施形態
では、タブ501のうちのどのタブが現在選択されていたとしても表示状態にある)も含む。例えば、限定されるものでないが、そのようなユーザは、例えば、その映画について「いいね」と表明した、映画を見た、映画を見たいと思っている、映画で演じたなどを示すソーシャルグラフデータベース206に記憶されている接続、および関連付けられているエッジ306を有する。特定の実施形態において、ファンセクション508に表示されているユーザは、ハブを現在閲覧しているユーザと友達でもあるユーザのみを含む。
特定の実施形態において、ハブは、それぞれが各他のハブへのハイパーリンクを含む他のハブに関連付けられている名前512、サムネイル画像514、または他の識別子のリストまたは集合を含むか、または表示する推奨セクション510(特定の実施形態では、タブ501のうちのどのタブが現在選択されていたとしても表示状態にある)を含む。例えば、限定されるものでないが、図5Aに例示されるように、映画に対応するハブに対する推奨セクション510は、同じ監督が監督する映画、同じ俳優のうちの何人かを共有する映画、同じジャンルの映画、またはユーザの友達が「いいね」と表明した映画などに対応するハブを表示する。特定の実施形態において、推奨セクション510に表示されるか、またはリストされるハブは、特定のハブ(これ以降「リクエストされたハブ」とも称される)を要求しているか、または現在閲覧している特定のユーザ(これ以降「リクエストユーザ」とも称される)、リクエストされたハブ、ユーザノード302が各エッジとともにリクエストされたハブのコンセプトノード304にも接続される場合もされない場合もあるユーザの友達、リクエストされたハブのコンセプトノード304にも接続されている各コンセプトノード304を有する他のハブ、またはこれらの任意の組み合わせのうちの1または複数に関連するとみなされるか、それらと何らかの決定された関係を有するか、またはそれらに関するソーシャルグラフデータベース206から抽出された情報を利用することに基づき決定される。例えば、限定されるものでないが、推奨セクション510に表示される推奨されるハブは、(ソーシャルグラフデータベース206内のエッジ306によって定義されているような)リクエストユーザの友達、および特に、リクエストされたハブにも(ソーシャルグラフデータベース206内のエッジ306で)接続されている友達に「いいね」と表明されているか、または他の任意の形で(ソーシャルグラフデータベース206内のエッジ306で)接続されているハブを含む。別の例として、推奨セクション510に表示される推奨されるハブは、ユーザ、および特に、(ソーシャルグラフデータベース206内のエッジ306によって定義されているような)リクエストユーザの友達も「いいね」と表明しているか、または他の任意の形で(ソーシャルグラフデータベース206内のエッジ306で)接続されるハブを含むが、ユーザはリクエストされたハブと(ソーシャルグラフデータベース206内のエッジ306で)必ずしも接続されない。さらに別の例として、推奨セクション510に表示される推奨されるハブは、(ソーシャルグラフデータベース206内のエッジ306で)リクエストされたハブおよび(ソーシャルグラフデータベース206内のエッジ306によって定義されるように)リクエストユーザの1または複数の友達に接続されているハブを含む。さらに別の例として、推奨セクション510に表示される推奨されるハブは、(ソーシャルグラフデータベース206内のエッジ306で)リクエストされたハブに接続されているが、(ソーシャルグラフデータベース206内のエッジ306によって定義されているような)リクエストユーザの友達と必ずしも接続されていないハブを含む。
特定の実施形態において、ソーシャルネットワーキングシステム20は、コンセプトノード304がすでに作成されている実際の著名人または会社などの、コンセプトノード304に対応するハブの本当の声(または、認証されていないユーザノード302bに対応する認証されていないユーザプロファイルページ)がこれらのコンセプトノード304を主張し、それにより、それらに対する管理者権限が推定され、それらをソーシャルグラフ300内で例えば登録された認証ユーザノード302aとして(または、代替的に、認証コンセプトノード304として)再定義するための手段またはプロセス(例えば、選択可
能なリンクまたはユーザインタフェース)を含む。
タイプアヘッドプロセス
特定の実施形態は、ソーシャルネットワーキングシステム20のユーザによって現在入力されている情報に基づきソーシャルグラフ300内のノードおよびエッジを自動的に生成するための方法にさらに関する。特定の実施形態において、1または複数のクライアントサイドおよび/またはバックエンド(サーバサイド)プロセスは、各既存のコンセプトノード304に対応するコンセプトと、ソーシャルネットワーキングシステム20によって、ホストされるか、またはアクセス可能である、ユーザプロファイルページなどの、要求されたウェブページと併せてレンダリングされる入力形式でユーザによって現在入力されている情報とのマッチングを自動的に試みるために「タイプアヘッド」機能を実装し利用する。特定の実施形態において、一致が見つかった場合、これらの、または他のプロセスが、ユーザに対応するユーザノード302からコンセプトの一致に対応する既存のコンセプトノード304へのエッジを自動的に生成する。特定の実施形態は、既存のコンセプトおよび対応するノードへの一致が見つからないか、または少なくとも所望のレベルの確かさで見つからないときに新規ノードおよび新規ノードからユーザのノードへのエッジを自動的に作成する1または複数のプロセスにさらに関する。例えば、限定されるものでないが、以下で説明されるように、例えば、ユーザプロファイルページなどの、ソーシャルネットワーキングシステム20でホストされるか、またはアクセス可能なさまざまなウェブページによって、ユーザは、各プロファイルページまたは他のコンセプトプロファイルページを通じて、メディアコンテンツ(例えば、写真、ビデオ、音楽、テキストなど)、ユニフォームリソースロケータ(URL)、他のノードなどの、追加のコンテンツにリンクすること、または他の任意の形で参照することを含む方法により、コンテンツを追加すること、関心事を宣言すること、または他の任意の形で自己表現すること(これ以降「宣言」とも総称される)ができる。次いで、そのような宣言は、オーサリングするユーザ、さらには他のユーザによって閲覧される。特定の実施形態において、ユーザが宣言を行うためにテキストを入力しているときに、タイプアヘッド機能は、宣言で入力されているテキスト文字列と既存のコンセプト(またはユーザ)およびソーシャルグラフ300内の対応するコンセプト(またはユーザ)ノードに対応する文字列(例えば、名前)とのマッチングを試みる。特定の実施形態において、一致が見つかったときに、タイプアヘッド機能は、既存のノードのノードへの参照(例えば、ノード名、ノードID、または別の好適な参照もしくは識別子)をフォームに自動的に投入し、これにより、上記において説明したように、一致している既存のノードとユーザに関連付けられているユーザノード302との間のエッジ306が作成される。特定の実施形態において、ユーザがテキストを入力し続け、タイプアヘッド機能が、少なくとも確かさの静的に、または動的に所定のレベルに従って、宣言の全部または一部が任意の既存のノードと一致しないと決定するので、このタイプアヘッド機能により、ソーシャルネットワーキングシステム20がユーザによって入力された宣言に基づく新規ノード、さらにはユーザのノードから新規ノードへのエッジを自動的に作成する。
特定の実施形態は、ソーシャルネットワーキングシステム20のユーザによってすでに入力されている情報に基づきノードおよびエッジを自動的に生成するための方法にさらに関する。特定の実施形態において、1または複数のバックエンド(サーバサイド)プロセスは、それぞれがソーシャルグラフ300内の各既存のコンセプトノード304に関連付けられるかまたは対応することが可能であるか、または可能でないデータストア内にインデックスを作成された既知のコンセプトと、さまざまなフォームまたは形式のうちの1または複数でユーザによってすでに入力されており、ソーシャルネットワーキングシステム20内に記憶されている情報とのマッチングを自動的に試みるために「ブートストラッピング」機能を実装し、利用する。特定の実施形態において、既知のコンセプトとの一致が見つかった場合、これらの、または他のプロセスは、ユーザに対応するノード(すでに入
力されている情報が一致した)からコンセプトの一致に対応する既存のコンセプトノード304へのエッジ306を自動的に生成する。特定の実施形態は、既知のコンセプトとの一致が見つかったが、その既知のコンセプトに対してコンセプトノード304が現在存在していない場合に、その既知のコンセプトに対する新規コンセプトノード304および新規コンセプトノード304からユーザに関連付けられているユーザノード302へのエッジ306を自動的に作成する1または複数のプロセスにさらに関する。特定の実施形態は、既知のコンセプトまたは既存のコンセプトノード304との一致が見つからないか、または少なくとも確かさの所望のレベルで見つからない場合、すでに入力されている情報に基づく新規コンセプトノード304および新規コンセプトノード304からユーザに関連付けられているユーザノード304へのエッジ306を自動的に作成する1または複数のプロセスにさらに関する。ノードおよびエッジを自動的に生成することについての詳細は、本願明細書に援用する2010年4月19日に出願した米国特許出願第12/763162号において説明されている。
特定の実施形態は、1または複数の内部または外部ソースから得られたデータを使用してコンセプトデータベース216にデータを投入するための方法にさらに関する。特定の実施形態において、コンセプトデータベース216は、既知のコンセプトのインデックス、さらには、いくつかの実施形態では、各コンセプトに関連付けられているさまざまな属性、メタデータ、または他の情報を含む。特定の実施形態において、1または複数のバックエンド(サーバサイド)プロセスは、1または複数の外部データソース(例えば、ウィキペディア(www.wikipedia.org)、フリーベース(www.freebase.com、METAWEBから利用可能)、または一般にインターネット)をクロールして、コンセプトデータベース216の生成またはデータの投入を円滑にするか、または補助する。特定の実施形態において、コンセプトデータベース216は、本明細書で説明されているソーシャルネットワーキングシステム20のユーザから抽出された情報で拡張する。
特定の実施形態は、ソーシャルネットワーキングシステム20によって少なくとも一部はホストされている特定のウェブページまたは構造化ドキュメントを現在閲覧しているソーシャルネットワーキングシステム20のユーザに表示する1または複数の推奨を生成するための方法にさらに関する。特定の実施形態において、1または複数のサーバサイド推奨生成プロセス218は、ソーシャルグラフ300から抽出された情報に少なくとも一部は基づき現在閲覧されているページ(上)でユーザに表示する推奨を生成する。より具体的には、1または複数のサーバサイド推奨生成プロセス218は、ユーザに関係する情報を含むソーシャルグラフ情報、現在閲覧されているページ、現在閲覧されているページに何らかの方法でさらに接続されているユーザの友達、および現在閲覧されているページに何らかの方法で接続されている他のウェブページまたは構造化ドキュメントを活用して、ユーザが接続することを望んでいる可能性のある1または複数の他のウェブページまたは構造化ドキュメントを決定し、次いでその後、現在閲覧されているページ内でユーザに何らかの方法で表示するこれらの推奨ページのリストまたは集合を生成する。
特定の実施形態において、ここでさらに詳しく説明されるように、オンラインソーシャルネットワークのウェブページのすでに説明されているセクションまたはサブセクションのうちの1または複数に入力されている宣言内の1または複数の語が、強調されるか、異なる色でレンダリングされるか、下線を付けられるか、またはクリック可能とされる。例えば、限定されるものでないが、ソーシャルグラフ300のノードまたはエッジと一致するユーザによって入力された語は、その語がソーシャルグラフ300の要素と一致することを示すために(語がユーザによって入力されるとき、または語が入力された後のいずれかにおいて)ソーシャルネットワーキングシステム20によって強調されるか、異なる色でレンダリングされるか、下線を付けられるか、またはクリック可能にされる。特定の実
施形態において、ウェブページ上の特定の語は、特定のノードおよびエッジと一致し、これらの語は、クリックされるか、または他の任意の方法で選択されたときに、ユーザをノードまたはエッジに関連付けられているプロファイルページに導くハイパーリンクに関連付けられる。例えば、限定されるものでないが、既知のコンセプトまたは既存のコンセプトノード304は、クリックされたときに、ユーザのウェブブラウザ202をコンセプトノード304に対応するコンセプトプロファイルページに導くハイパーリンクに関連付けられる。特定の実施形態において、語は、語がノードもしくはエッジに関連付けられている名前もしくは識別子と同一であるか、または実質的に類似しているか、または他の任意の形でノードもしくはエッジに関連付けられていると識別可能である場合にノードもしくはエッジに一致し得る。例えば、限定されるものでないが、お気に入りのテレビ番組セクション414の「ファミリー・ガイ」に対応するハイパーリンクをクリックすると、ユーザはファミリー・ガイというテレビ番組専用のウェブページ(以下で説明されているようなコンセプトプロファイルページ/ハブ)に導かれる。
特定の実施形態において、ユーザのプロファイルページまたは他のページのさまざまなセクション内でコンテンツを追加するか、または宣言を行うために使用されるフォームにユーザがテキストをタイプ入力するか、または他の任意の方法で入力すると、フロントエンドタイプアヘッドプロセス204は、ソーシャルネットワーキングシステム20(例えば、サーバ22内の)で(またはその中で)実行されている1または複数のバックエンド(サーバサイド)タイプアヘッドプロセス208(これ以降「バックエンドタイプアヘッドプロセス208」と単に称される)と連携して動作し、ユーザがテキストの文字を入力するときにユーザによって入力されるテキストの文字と最も関連するか、または最もよく一致すると決定される、既存のハブの名前に対応する1もしくは複数の語、または既存のハブに関連付けられている語をフォームに自動投入することを対話的に、また実質的に瞬時に(ユーザにはそう見えるように)試みる。ノードさらにはエッジ306に関連付けられている情報を含む、ソーシャルグラフデータベース206内のソーシャルグラフ情報またはソーシャルグラフデータベース206から抽出され、インデックスを作成された情報を利用することで、フロントエンドタイプアヘッドプロセス204およびバックエンドタイプアヘッドプロセス208は、ソーシャルグラフデータベース206からの情報と併せて、さらには潜在的に、ソーシャルネットワーキングシステム20内に配置されるか、またはその中で実行中であるさまざまな他のプロセス、アプリケーション、またはデータベースと併せて、高い精度でユーザの意図された宣言を予測する。しかし、ソーシャルネットワーキングシステム20は、望む任意の宣言を入力する自由をユーザに提供し、ユーザが自己表現を自由にできるようにもする。ソーシャルネットワーキングシステム20は、新規ハブおよび実質的にどのようなコンセプトにも関係する対応するコンセプトノード304の作成を可能にする。
特定の実施形態において、ユーザがテキスト文字をフォームボックスまたは他のフィールド内に入力すると、フロントエンドタイプアヘッドプロセス204およびバックエンドタイプアヘッドプロセス208は、ユーザが文字を入力しているときにユーザの宣言内に入力された文字列と一致する既存のユーザノード302またはコンセプトノード304を識別することを試みる。特定の実施形態において、ユーザが文字をフォームボックス内に入力するとともに、フロントエンドタイプアヘッドプロセス204は、入力されたテキスト文字列を読み込む。キーが打たれる毎に、フロントエンドタイプアヘッドプロセス204は、入力された文字列をリクエスト(または呼び出し)としてソーシャルネットワーキングシステム20内で実行されているバックエンドタイプアヘッドプロセス208に送信する。特定の実施形態において、フロントエンドタイプアヘッドプロセス204およびバックエンドタイプアヘッドプロセス208は、AJAX(Asynchronous JavaScript and XML)または他の好適で技術、および特に、非同期技術を通じて通信する。特定の一実施形態において、このリクエストは、結果の送信およびフ
ェッチを迅速に、また動的に実行することを可能にするXMLHTTPRequest(XHR)であるか、またはXMLHTTPRequest(XHR)を含む。特定の実施形態において、フロントエンドタイプアヘッドプロセス204は、そのリクエストの前、そのリクエストの後、またはそのリクエストとともに、ユーザが宣言を行っている特定のページの特定のセクションを識別するセクション識別子(セクションID)も送信する。特定の実施形態において、ユーザIDパラメータも送信されるが、これは、いくつかの実施形態においては不要な場合がある。それはユーザがソーシャルネットワーキングシステム20にログインすることに基づきユーザがすでに「既知」だからである。
特定の実施形態において、バックエンドタイプアヘッドプロセス208がユーザ入力文字データおよびセクション識別子の列を含むリクエストまたは呼び出しを受信すると、バックエンドプロセス208は、文字列検索を実行するか、または実行させられ(例えば、ソーシャルネットワーキングシステム20で実行されている1または複数の他の検索プロセスと併せて)、入力されたテキストと一致する、また特定の実施形態では、特定のセクション識別子によって少なくとも一部は決定されるようなソーシャルグラフデータベース206内のノードの特定のカテゴリと一致する各名前または他の識別子を有する既存のユーザノード302またはコンセプトノード304を識別する。カテゴリの細かさは変化し得る。例えば、限定されるものでないが、俳優、監督、製作、映画のタイプ、またはジャンルに対応するハブは、すべて、「映画」カテゴリにグループ化される。別の例として、限定されるものでないが、俳優、監督、製作、映画のタイプ、またはジャンルに対応するハブは、それぞれ、それ独自のカテゴリを表す。同様に、一例において、フットボール、バスケットボール、サッカー、ラグビー、およびテニスに対応するハブは、すべて、「スポーツ」カテゴリにグループ化されるが、別の例では、これらはそれぞれそれ独自のカテゴリを表す。特定の実施形態において、バックエンドタイプアヘッドプロセス208は、文字列マッチングを実行する。バックエンドタイプアヘッドプロセス208は、フロントエンドタイプアヘッドプロセス204から受信された最近の文字列とソーシャルグラフデータベース206内のノードの名前にそれぞれ対応する文字列のインデックスとのマッチングを試みる。特定の実施形態において、文字列のインデックスは、定期的に、またはユーザノード302およびコンセプトノード304がソーシャルグラフデータベース206またはソーシャルグラフデータベース206から生成された他のインデックスに追加されるときに更新される。バックエンドタイプアヘッドプロセス208は、入力されたテキスト文字列とのマッチングを試みるときにさまざまな要因のうちの1または複数を使用することができ、ソーシャルグラフデータベース206内の既存のノードのさまざまな異なる態様または属性のうちの1または複数を調べる。例えば、限定されるものでないが、入力されたテキストと既存のノードの名前(名前文字列)とのマッチングを試みることに加えて、バックエンドタイプアヘッドプロセス208はセクション識別子を使用して、その後カテゴリに関連付けられている既存のコンセプトノード304の部分集合を検索するために使用される宣言のカテゴリを決定する。特定の実施形態において、バックエンドタイプアヘッドプロセス208は、ノードがインデックスを作成され、ハブカテゴリによって検索可能(またはクエリ可能)であるソーシャルグラフデータベース206から生成されたノードのインデックスを検索するか、またはそれに対するクエリを実行する。バックエンドタイプアヘッドプロセス208は、ユーザのプロファイルページに入力された情報、ユーザの友達に関する情報、ユーザが接続されている他のユーザノード302またはコンセプトノード304に関する情報などを含むテキストを入力するユーザに関する情報を使用して、ユーザ宣言を既存のユーザまたはコンセプトおよび各ユーザノード302またはコンセプトノード304と最もよく一致させる。バックエンドタイプアヘッドプロセス208は、綴りを訂正するか、またはユーザ入力文字の同義語もしくは入力された文字を補完したものと一致させることも試み得る。
特定の実施形態において、バックエンドタイプアヘッドプロセス208は、1または複
数のマッチングアルゴリズムを使用して一致しているノードを識別することを試みる。特定の実施形態において、1または複数の一致が見つかった場合、バックエンドタイプアヘッドプロセス208は、例えば一致しているノードの名前(名前文字列)、さらには潜在的に、一致しているノードに関連付けられている他のメタデータを含む応答(AJAXもしくは他の好適な技術を利用する)をユーザのクライアントデバイス30に送信する。例えば、限定されるものでないが、図4Dは、アクティビティセクション408に対応するフォームボックス409内に文字「wei」をユーザが入力した結果を示している。図4Dに示されている例では、フロントエンドタイプアヘッドプロセス204は、一致している既存のプロファイルページおよび各ユーザノード302またはコンセプトノード304(例えば、「ウエイトリフティング(weight lifting)」という名前を持つ、またはそれ専用のハブ)の名前を表示するドロップダウンメニュー442を表示し、ユーザは、これをクリックするか、または他の任意の形で選択して、選択されたノードに対応する一致したユーザまたはコンセプト名を宣言することを望んでいることを確認する。別の例として、限定されるものでないが、「weight lifting」をクリックした後、フロントエンドタイプアヘッドプロセス204は、フォームボックス409に宣言「weight lifting」を自動投入するか、またはウェブブラウザ202に自動投入させる。特定の実施形態において、フロントエンドタイプアヘッドプロセス204は、ドロップダウンメニューを表示する代わりに、単純に、最高位にランク付けされた一致の名前または他の識別子をフォームに自動投入する。次いで、ユーザは、単純に自分のキーボードで「enter」と打ち込むか、または自動投入された宣言をクリックすることによって自動投入された宣言を確認する。
特定の実施形態において、一致しているノードをユーザが確認した後、フロントエンドタイプアヘッドプロセス204は、一致したプロファイルページをユーザが確認することをバックエンドタイプアヘッドプロセスに通知するリクエストをバックエンドタイプアヘッドプロセス208に送信する。特定の実施形態において、リクエストが送信されたことに応答して、バックエンドタイプアヘッドプロセスは、特定のユーザのノード302と確認された宣言に対応する特定のユーザノード302またはコンセプトノード304との間のエッジ306をソーシャルグラフデータベース206に記憶されているソーシャルグラフ300内に作成するためのエッジ生成API(アプリケーションプログラミングインタフェース)210を自動的に(あるいはリクエストの中の命令に基づき)呼び出すか、または他の任意の方法で命令する。特定の実施形態において、送信されるリクエストは、宣言(または表示されているフォームボックスのうちのいずれか、およびすべてで行われている宣言)を行うことをユーザが望んでいることを確認することを示す「変更を保存」(または他のサブミット)ボタン444をユーザが選択するまで、フロントエンドタイプアヘッドプロセス204によって生成および送信されない。
特定の実施形態において、例えば、少なくとも一部は、宣言が行われたセクションに対する対応するセクション識別子によって識別されるようなセクションカテゴリ(例えば、友達、お気に入りの映画)に基づき、またはソーシャルグラフデータベース206に記憶されているソーシャルグラフ情報に基づき決定されるような既存のノードのノードタイプまたはカテゴリが、バックエンドタイプアヘッドプロセス208によって使用され、これにより、宣言の入力された文字列と、一致しているノードに対する候補となり得る既存のノードとのよりよいマッチングを行う。例えば、限定されるものでないが、ユーザがユーザプロファイルセクション内に「ジャガー(jaguar)」とタイプ入力する例を考察する。このような一例では、バックエンドタイプアヘッドプロセス208は、少なくとも「jaguar」という名前、またはその派生形(例えば、「jaguars」)を含む対応する名前を有する多数の既存のノード(およびその関連付けられているプロファイルページ)を識別する。例えば、限定されるものでないが、バックエンドタイプアヘッドプロセス208は、「ビクトリア・ジャガー(Victoria Jaguar)」と名付
けられたユーザに関連付けられているコンセプトノード302を識別する。別の例として、限定されるものでないが、バックエンドタイプアヘッドプロセス208は、ジャングルキャットであるジャガーに関連付けられているユーザノード304を識別する。さらに別の例として、バックエンドタイプアヘッドプロセス208は、ジャクソンビル・ジャガー(JACKSONVILLE JAGUARS)というプロフットボールチーム専用のさらに別のコンセプトノード304およびジャガー(JAGUAR)という高性能高級車メーカー専用のコンセプトノード304を識別する。そのような場合、これらのユーザノード302またはコンセプトノード304のすべてが、バックエンドタイプアヘッドプロセス208によってマッチングされ、したがって、いくつかの実施形態において、ノード名のすべてが送信されるが、他の実施形態では、バックエンドタイプアヘッドプロセス208は、例えば、上で説明されるように、ユーザのプロファイルから抽出されたセクションIDまたは他のパラメータを使用して最も関連性の高い一致するユーザノード302またはコンセプトノード304がインデックスを作成されるカテゴリを決定することに基づき最も関連性が高いと決定される1つの一致するノード名のみを送信する。
それに加えて、いくつかの実施形態では、例えば、各ユーザノード302が一致しているコンセプトノード304と接続されているユーザの友達の数、各ユーザノード302が一致しているコンセプトノード304と接続されている全ユーザの数、一致しているコンセプトノード304と接続されている他のコンセプトノード304の数、ユーザのノード302および一致しているコンセプトノード304の両方に接続されている他のコンセプトノード304、またはユーザの友達に対応する対応しているノード302、さらには一致しているコンセプトノード304に接続されている他のコンセプトノード304を分析することによって得られる情報を含む他の要因も一致しているコンセプトノード304の強度または関連性を決定するために使用される。さらに、以下で説明されるように、これらのノードのいずれかを接続するエッジに関連付けられている接続の強度を特徴付ける情報も、最も関連性の高い一致しているコンセプトノード304を決定する際の関連性に重みを付けるために使用される。
特定の実施形態において、バックエンドタイプアヘッドプロセス208は、フロントエンドタイプアヘッドプロセス204がフォームボックスに一致したプロファイルページおよび各ユーザノード302またはコンセプトノード304に対応する名前を自動投入する前に1回または複数回の決定を行い得る。最初に、上記の例を考察すると、既存のノードへの複数の一致が識別された場合、次いで、バックエンドタイプアヘッドプロセス208は一致しているノードの名前のそれぞれの絶対的または相対的な質を示す一致のそれぞれに対する信頼スコア、一致しているノードそれ自体の質、さもなければ一致が正しい(ユーザが入力していた、または入力を試みていた意図されたコンセプト)というバックエンドタイプアヘッドプロセス208が有する信頼度のレベルを決定する。この決定の結果、一致のランク付けを生じさせるか、または伴い得る(ドロップダウンメニュー442に表示される一致の順序に反映される)。
特定の実施形態において、1または複数の要因が、一致しているノードの信頼スコア、確率、質、または順位を決定するために使用される。例えば、限定されるものでないが、そのような要因は、ここでもまた、各ユーザノード302が一致しているコンセプトノード304と接続されているユーザの友達の数、各ユーザノード302が一致しているコンセプトノード304と接続されている全ユーザの数、一致しているコンセプトノード304と接続されている他のコンセプトノード304の数、ユーザのノード302および一致しているコンセプトノード304の両方に接続されている他のコンセプトノード304、ユーザの友達に対応する対応しているノード302、さらには一致しているコンセプトノード304に接続されている他のコンセプトノード304を分析することによって得られる情報、他の好適な要因、またはこれらの任意の組み合わせを含む。他の好適な要因は、
書き込まれる対応する候補の一致しているハブ上のセクションの数、一致しているコンセプトノードに対応するハブ上に表示されているコンテンツと、ユーザのプロファイルページ上に表示されている、他の宣言を含むコンテンツとの関係、なども含む。ここでもまた、以下で説明されるように、これらのノードのいずれかを接続するエッジ306に関連付けられている接続の強度を特徴付ける情報も、最も関連性の高い一致しているコンセプトノード304を決定する際の関連性に重みを付けるために使用される。再び「jaguar」の例に戻って考察すると、バックエンドタイプアヘッドプロセス208は、「私はフットボールを観ることが大好きです(I love watching football)」というユーザの別の宣言を識別することができ、そのようなものとして、この識別(さらには他の要因)に基づき、バックエンドタイプアヘッドプロセス208は、JACKSONVILLE JAGUARSというプロフットボールチームに対応するノードを最良の一致としてランク付けし、フロントエンドタイプアヘッドプロセス204は、ドロップダウンメニューの一番上にこのノードの名前を列挙するか、またはフォームに名前を自動的に自動投入する。
特定の実施形態において、次いで、バックエンドタイプアヘッドプロセス208は、フロントエンドタイプアヘッドプロセス204がフォームボックスにランク付けされた一致したノードに対応する名前を自動投入する前に1回または複数回の第2の決定を行い得る。例えば、限定されるものでないが、信頼スコアに基づき、フロントエンドタイプアヘッドプロセス204およびバックエンドタイプアヘッドプロセス208の一方または両方は、それぞれの一致について一致が選択のためドロップダウンメニューの形態でユーザに表示されるか、またはフォームボックス内に自動投入される前に確率、確かさ、または信頼度(信頼スコア)の所定のレベルに達しているか否かを決定する。すなわち、特定の実施形態では、1または複数の一致がソーシャルグラフデータベース206内の既存のノードから識別されたとしても、決定された信頼スコアによって証明されるような各確かさ(ユーザが宣言することを意図していた実際のコンセプトであることの)は、第1の所定のしきい値より低く、したがって、一致はどれも、ユーザに表示されフロントエンドタイプアヘッドプロセス204によって自動投入されない。すなわち、しきい値より低い信頼スコアを有する1または複数の一致をユーザに表示しユーザに与える代わりに、フロントエンドタイプアヘッドプロセス204は、ユーザが自分で宣言をタイプ入力することを終了し、次いで、リクエストを送信することを可能にする。バックエンドプロセス208は、ユーザの宣言に対応する最良の一致を決定する。
特定の実施形態において、1または複数の一致が見つかったか否かの決定は、予想される一致について決定された各信頼スコアを上で説明されている第1の所定のしきい値より低い第2の所定のしきい値と比較することに基づく。すなわち、第2の所定のしきい値は、一致が見つかったか否かを決定するときに使用されるが、第1の所定のしきい値は、一致がユーザに表示するために自動投入されるべきか否かを決定するときに使用される。
特定の実施形態において、所定のレベルの確かさで好適な一致が識別されないか(例えば、信頼スコアと第2のしきい値との比較結果に基づき)、またはユーザが、与えられるか、または自動投入された一致を選択することを控えている場合、ユーザが宣言にテキスト文字を入力し続けると、フロントエンドタイプアヘッドプロセス204は、文字列、セクション識別子、または他の情報/データをバックエンドタイプアヘッドプロセス208に送信する前に、ユーザが例えば「変更を保存」ボタン444をクリックするか、または他の任意の形で選択することによって示されるようにユーザが宣言を入力するのを終了するまで待機し得る。
特定の実施形態において、ブートストラッピングプロセス214は、入力されるか、またはソーシャルネットワーキングシステム20のそれぞれのユーザに他の任意の形で関連
付けられるか、またはそれとともに記憶されているテキストについて、ソーシャルグラフデータベース206を含む、データ構造24を走査する。本明細書で説明されるように、ユーザのプロファイルページで入力され表示されているものを含む与えられたユーザに関する、または関連付けられている情報のすべてが、ソーシャルグラフデータベース206内のユーザのノード302とともに記憶される。特定の実施形態において、それぞれのユーザ(ただし、いくつかの実施形態において、潜在的に、対応するコンセプトノード304を有するそれぞれのハブも)について、ブートストラッピングプロセス214は、テキスト文字を含むユーザのノード302に関連付けられているフィールドまたはオブジェクトのすべてを識別する。そのようなフィールドは、ユーザのプロファイルページ内にセクション408、410、412、414、416、418、420、および422のうちのいずれか、さらには、いくつかの実施形態では、ユーザと他のユーザとの間で送信されるプライベートメッセージ中のテキスト、ウォール(フィード)セクションの投稿された公開メッセージ、ステータス更新、写真の下の説明文などを含む。
特定の実施形態において、テキストを含むそれぞれのフィールドまたはオブジェクトについて、ブートストラッピングプロセス214は、テキストの一定量の前処理を実行する。例えば、限定されるものでないが、与えられたフィールド内の一部または全部のテキストは、単一の文字列とみなされる。別の例として、限定されるものでないが、与えられたフィールド内のテキストの一部または全部は、1または複数のn−グラムとみなされる。特定の実施形態において、文字列の前処理は、文字列を構文解析し、分離し、または区切って明確に区別できるノード(すなわち、ユーザもしくはハブ/コンセプト)候補に関連付けられているいくつかの個別の単語、語句、またはn−グラムに分ける1または複数のヒューリスティック規則の1つの組を適用することを含む。より具体的には、前処理は、ブートストラッピングプロセス214が与えられたフィールド内の文字列をデリミタ(例えば、カンマ、セミコロン、キャリッジリターンなど)によって分離することを伴い得る。例えば、限定されるものでないが、図4Aのセクション408に示されている文字列は、4つの明確に区別できるコンセプトまたはハブ候補に区切ることができ、第1の明確に区別できるハブ候補は「ウエイトリフティング」であり、第2の明確に区別できるハブ候補は「ハイキング」であり、第3の明確に区別できるハブ候補は「卓球」であり、第4の明確に区別できるハブ候補は「テーブルサッカー」である。それに加えて、前処理は、それぞれの明確に区別できるハブ候補における1または複数の単語の同義語を識別すること、綴りを誤る可能性のある単語を識別すること、潜在的に正しい綴りを識別すること、語句を拡張するか、または単語を語句に追加すること(例えば、意図的でなく脱落しているか、または短くした結果脱落している可能性がある単語)、URLを削除すること、メタデータを削除すること、言語に基づき1または複数の単語を正規化すること(例えば、単語がユーザによって典型的に使用されている言語に入力された言語から単語を変換すること、またはハブ候補に対する最良の一致が見つかる可能性の高い、単語が言語に入力された言語から単語を変換すること)、および同様のことを伴い得る。例えば、限定されるものでないが、ユーザが「ゴッドファーザーI,II,III」とお気に入りの映画セクション416に入力しているという場合を考える。ブートストラッピングプロセス214は、ユーザが3つの映画ゴッドファーザーパートI、ゴッドファーザーパートII、およびゴッドファーザーパートIIIを示すことを実際に意図していたことを識別する。そのような場合、ブートストラッピングプロセス214は、ユーザが3つの映画名すべてを明示的にタイプ入力したかのようにそれぞれの映画を別々のハブ候補とみなす。
特定の実施形態において、次いで、それぞれの識別された明確に区別できるノード候補(例えば、n−グラムまたは文字列)が、さまざまな好適な文字列マッチングアルゴリズムのうちの1または複数を使用して、既知のユーザノード302またはコンセプトノード304(またはユーザおよびコンセプト)のリストとマッチングされるか、または比較される。特定の実施形態において、ノード候補が比較される既知のユーザまたはコンセプト
は、対応するn−グラムまたは文字列の形態でインデックスを作成され、ソーシャルグラフデータベース206またはコンセプトデータベース216に記憶される。一般的に、コンセプトデータベース216は、候補ハブを既知のコンセプトとマッチングさせるためにブートストラッピングプロセス214がクエリを実行できるコンセプト情報のインデックス付きリポジトリとする。すなわち、特定の実施形態では、それぞれのハブ候補を単一の既知のコンセプトとマッチングさせることが望ましい。特定の実施形態において、コンセプトデータベース216は、1または複数の外部情報源もしくはデータリポジトリをクロールすること(例えばウィキペディア(www.wikipedia.org)またはフリーベース(www.freebase.com)などをクロールすること)、およびこれらのクロール結果を互いに組み合わせて、さらには、潜在的に、ソーシャルグラフデータベース206を含む、1または複数の内部情報源から抽出された情報と組み合わせることによって、既知のコンセプトを投入される。特定の実施形態において、インデックスを作成され、コンセプトデータベース216に記憶されているコンセプトは、必ずしも、ソーシャルグラフデータベース206内に対応する既存のコンセプトノード304(またはユーザノード302)を有しない。すなわち、コンセプトデータベース216は、一般的に、既知のコンセプト(それぞれ対応する文字列によって表される)のインデックス、さらにはこれらのコンセプト(上記において説明したものなどの外部データソースからクロールされる)に関する情報を記憶するが、これらの既知のコンセプトのすべてがソーシャルグラフデータベース206に記憶されている対応する既存のコンセプトノード304を有するとは限らない。特定の実施形態において、コンセプトデータベース216は、ソーシャルグラフデータベース206を含むか、またはその逆でもよい。特定の実施形態において、ノード候補とソーシャルグラフデータベース206またはコンセプトデータベース216においてインデックスを作成された既知のユーザまたはコンセプトとのマッチングを円滑にするため、既知のユーザまたはコンセプトのインデックスを、例えば、限定されるものでないが、人、場所、物、アクティビティ、スポーツ、スポーツチーム、著名人、都市、場所、映画、書籍、レストランなどのカテゴリに編成する。ブートストラッピングプロセス214によって検索される特定のカテゴリは、ノード候補が識別されたところに関連付けられているセクションIDまたは他のフィールド識別子によって決定される。
特定の実施形態において、前処理の結果として、それぞれのノード候補は、ソーシャルグラフデータベース206もしくはコンセプトデータベース216内の既知のユーザまたはコンセプトとそれぞれマッチングを試みられる1または複数のn−グラムまたは文字列を関連付けられる。例えば、限定されるものでないが、ユーザの入力テキストに対応する区切られた文字列がマッチングされるだけでなく、とりわけ綴りの変更、単語の追加、作業の取り除きが行われた他の文字列もマッチングされる。特定の実施形態において、次いで、ブートストラッピングプロセス214は、ノード候補と一致する最もよく一致しているユーザまたはコンセプトの「ショートリスト」を識別する。特定の実施形態において、次いで、ブートストラッピングプロセスは、ショートリストのそれぞれの一致に対する信頼スコアまたは値を生成もしくは決定する(上記のタイプアヘッドプロセスを参照しつつ説明されている信頼スコアと同様に)。例えば、限定されるものでないが、それぞれの既知のユーザまたはコンセプトに対する信頼スコアは、ノード候補の文字列内のテキストがそれぞれの既知のユーザまたはコンセプトの文字列内のテキストとどれだけ一致していたかの決定、ノード候補のn−グラムまたは文字列内の単語のうちのいずれかの単語の綴りが、一致が得られるように変更されたか否か、一致を得るために文字または単語がノード候補のn−グラムまたは文字列内に追加されたか、または取り除かれたか否か、などのうちの1または複数に基づき得る。
特定の実施形態において、潜在的なノード候補のリストが識別された後、リストは、ユーザに関する他の情報を使用することによってさらに絞り込まれる。例えば、限定されるものでないが、ユーザ「A」は、ユーザのプロファイルページ上のお気に入りの映画セク
ション416において「トワイライト(Twilight)、ハリー・ポッター(Harry Potter)」を宣言する。ブートストラッピングプロセス214が「Twilight」に対応する映画を曖昧でなく識別することができなかった場合(例えば、単語「twilight」を含む複数の映画があるため)、ブートストラッピングプロセス214は、「Harry Potter」について「いいね」と表明する多くの他のユーザが「トワイライト:ニュー・ムーン(Twilight:New Moon)」(曖昧でない映画)について「いいね」と表明するという事実を使用し、したがって、ユーザ「A」が「Twilight」とタイプ入力したときに十分な確度でユーザ「A」は「Twilight: New Moon」を参照している(したがって、この映画に対応するコンセプトノード304を参照している)と決定する。同様に、ブートストラッピングプロセス214は、ユーザに関する人口統計学情報を使用することも可能である。例えば、限定されるものでないが、年配のユーザは、1958年版の「ロミオとジュリエット(Romeo and Juliet)」について「いいね」と表明するが、若い世代のユーザにとっては、1996年に公開されたより新しい版の「ロミオ+ジュリエット(Romeo+Juliet)」を意味する可能性が高い。
特定の実施形態において、ブートストラッピングプロセス214は、コンセプトデータベース216に対して繰り返し再クエリを実行して、すでに識別されている一致のリスト内の一致と同じ信頼スコアを有する一致を見つける。フォルスポジティブの可能性を低減するか、またはなくすために、2回目、3回目のマッチングが実行され、さらに追加のマッチングが実行される。例えば、限定されるものでないが、ブートストラッピングプロセス214では、2回目のマッチングを実行することによって、高いように見える、したがって一致において高い信頼レベルを示す可能性のある、最もよい信頼スコアを有する一致を単純に選択する代わりに、同じ信頼スコアを有する多数の一致している既知のユーザまたはコンセプトが存在することを見つけて、それによって一致の質、または一致における信頼性が誤解を招く恐れがあり、その一致を受け入れるべきでないという事実を伝える。
特定の実施形態において、次いで、ブートストラッピングプロセス214は、すでに決定されている結果に基づき与えられたノード候補に対して既知のユーザまたはコンセプトとの好適な一致が存在しているか否かを決定する。ソーシャルグラフデータベース206またはコンセプトデータベース216内に一致が存在すると決定された場合、ブートストラッピングプロセス214は、ソーシャルグラフデータベース206内に既存のユーザノード302またはコンセプトノード304が存在しているか否かを決定する。あるいは、ブートストラッピングプロセス214は、最初にノード候補をソーシャルグラフデータベース206内の既存のノードとマッチングさせることを、ノード候補をソーシャルグラフデータベース206内に対応する既存のノードを有していない既知のユーザまたはコンセプトとマッチングさせることを試みることに頼る前に試みる。
特定の実施形態において、少なくとも所望の、または所定のレベルの確率または信頼度に従って、ノード候補に関連付けられているn−グラムまたは文字列について一致を見つけることができないと判定された場合、ブートストラッピングプロセス214は、そのノード後方が分割可能であるか否かを決定する、すなわち、n−グラムまたは文字列をいくつかの個別のノード候補に分割されるか否かを決定する。例えば、限定されるものでないが、ノード候補から既知のユーザまたはコンセプトへの一致は、さまざまな理由から見つからない場合があるが、その中でも最も単純なのは、ノード候補が一般的すぎて既知のユーザまたはコンセプトを確実に識別できない、共通の名前である、綴りの誤りがひどく多い、もしくは入力が間違っている、または一般的に1つの語句、さらには2以上のコンセプトを伴う「より高い次数の」コンセプトとみなされるという理由である。例えば、限定されるものでないが、ユーザは、前処理の後であっても、結果としてより高い次数のノード候補の文字列「ジョニー・デップまたはエドワード・ノートンが出演する映画すべて(
all movies with Johnny Depp or Edward Norton)」をもたらす宣言をタイプ入力している可能性がある。このプロセスを円滑に進めるために、ブートストラッピングプロセス214は、とりわけ「および(and)」、または「または(or)」などの「接続詞」のリストを維持する。特定の実施形態において、このような文字列に対する信頼できる一致が見つからない場合、ブートストラッピングプロセス214は、ノード候補に対応するn−グラムまたは文字列が分割可能であるか否かを決定する。特定の実施形態において、n−グラムまたは文字列が分割可能であると決定された(例えば、ブートストラッピングプロセス214が文字列内の接続詞を識別した)場合、ブートストラッピングプロセス214は、n−グラムまたは文字列を1または複数のノード候補に分割する。これらの分割ノード候補(例えば、「ジョニー・デップが出演する映画すべて(all movies with Johnny Depp)」および「エドワード・ノートンが出演する映画すべて(all movies with
Edward Norton)」)のそれぞれについて、ブートストラッピングプロセス214は、これまで通りに進行する。
特定の実施形態において、ブートストラッピングプロセス214は、ノード候補が分割可能であるか、またはより具体的には簡約可能であるか否かを決定するために使用する「一般的な言い回し」の第2のリストを使用する。例えば、限定されるものでないが、上記の例において、「が出演する映画すべて(all movies with)」と読める文字列の部分は、一般的な言い回しとして識別されて取り除かれ、その結果個別のノード候補は単純に「ジョニー・デップ(Johnny Depp)」および「エドワード・ノートン(Edward Norton)」となる。
特定の実施形態において、推奨生成プロセス218は、特定のプロファイルページ(「リクエストページ」)を要求しているか、または現在閲覧している特定のユーザ(「リクエストユーザ」)に対する推奨プロファイルページを決定することができ、さらに、推奨プロファイルページへの参照をプロファイルページの推奨セクションに表示または列挙させる。特定の実施形態において、推奨生成プロセス218は、リクエストユーザ、要求されたプロファイルページ、ユーザノード302が各エッジを有する要求されたプロファイルページのノードにも接続されるか、または接続されないユーザの友達、要求されたプロファイルページのノードにも接続されている各ノードを有する他のプロファイルページ、他の好適なソーシャルネットワーキングデータ、またはこれらの任意の組み合わせのうちの1または複数に関する情報を含む、ソーシャルグラフデータベース206から抽出された推奨プロファイルページベースの情報を決定する。例えば、限定されるものでないが、推奨セクション510に表示される推奨されたプロファイルページは、(ソーシャルグラフデータベース206内のエッジによって定義されているような)リクエストユーザの友達、および特に、要求されたプロファイルページにも(ソーシャルグラフデータベース206内のエッジで)接続されている友達に「“いいね”と表明」か、「友達」か、または他の任意の形で(ソーシャルグラフデータベース206内のエッジ306で)接続されているプロファイルページを含む。別の例として、限定されるものでないが、推奨セクション510に表示される推奨されたプロファイルページは、ユーザ、および特に、(ソーシャルグラフデータベース206内のエッジによって定義されているような)リクエストユーザの友達も「いいね」と表明するか、または他の任意の形で(ソーシャルグラフデータベース206内のエッジで)接続されるプロファイルページを含むが、ユーザは要求されたプロファイルページと(ソーシャルグラフデータベース206内のエッジで)必ずしも接続されない。さらに別の例として、限定されるものでないが、推奨セクション510に表示される推奨されたプロファイルページは、(ソーシャルグラフデータベース206内のエッジで)要求されたプロファイルページおよび(ソーシャルグラフデータベース206内のエッジによって定義されるように)リクエストユーザの1または複数の友達に接続されているプロファイルページを含む。さらに別の例として、限定されるものでないが、
推奨セクション510に表示される推奨されたプロファイルページは、(ソーシャルグラフデータベース206内のエッジで)要求されたプロファイルページに接続されるが、必ずしも(ソーシャルグラフデータベース206内のエッジによって定義されるように)リクエストユーザの友達と接続されていないプロファイルページを含む。一般的に、特定のプロファイルページを現在閲覧しているか、または要求しているリクエストユーザに推奨されたプロファイルページを表示するための1つの目標または動機は、ユーザに、ユーザが閲覧または対話的に操作することに関心を有している推奨されたプロファイルページを提供し、さらに、現在閲覧されているプロファイルページからそのような推奨されたプロファイルページへのナビゲーションを円滑にし、特定の実施形態において、ユーザに対応するユーザノード302をユーザが関心のあることを証明するか、または示す推奨されたプロファイルページに対応するノードに接続するエッジ306の作成を円滑にすることである。
特定の実施形態において、この方法は、ソーシャルネットワーキングシステム20が特定のユーザ(リクエストユーザ)から特定のプロファイルページ(要求されたプロファイルページ)に対するリクエストを受信したときに開始し得る。特定の実施形態において、リクエストに応答して、ソーシャルネットワーキングシステム20、および特に、ページ生成プロセス200は、リクエストユーザのクライアントデバイス30にプロファイルページをレンダリングするための構造化ドキュメントを生成することができ、構造化ドキュメントを含む初期応答をリクエストユーザのクライアントデバイス30に送信する。リクエストユーザに送信される構造化ドキュメントは、要求されたプロファイルページをクライアントに供給してクライアントのウェブブラウザ202によりレンダリングするために使用されるマークアップ言語コードさらにはさまざまなコードセグメント、スクリプト、リソース、または他の情報もしくはコンテンツを含むベース構造化ドキュメント(base structured document)とする。特定の実施形態において、ベース構造化ドキュメントは、推奨セクション510の一部分を表示するためのコードを含む要求されたプロファイルページの1または複数の一部分をレンダリングするためのコードを含むが、推奨されたプロファイルページそれ自体をプロファイルページ名または他の識別子512および画像514の形態では含み得ない、すなわち、一実装では、ソーシャルネットワーキングシステム20は、推奨されたプロファイルページが推奨生成プロセス218によって決定される前に初期応答で構造化ドキュメントを送信する。このようにして、クライアントのウェブブラウザ202は、構造化ドキュメントをレンダリングすることと、推奨生成プロセス218が推奨されたプロファイルページの決定を完了するとともに要求されたプロファイルページをレンダリングするためのリソースをダウンロードすることとを開始する。
特定の実施形態において、ベース構造化ドキュメントの生成または初期応答の送信と並行して、またはその後に、推奨生成プロセス218は、クライアントのウェブブラウザ202によるレンダリングのためにリクエストユーザのクライアントデバイス30への1または複数のその後の応答で次いで送信される推奨されたプロファイルページを生成する。特定の実施形態において、プロファイルページに対するリクエストが、ソーシャルネットワーキングシステム20によって受信された後、ソーシャルネットワーキングシステム20内で実行されているページ生成プロセス200または他のプロセスは、推奨セクション510に表示する1または複数の推奨されたプロファイルページを要求する命令またはクエリを推奨生成プロセス218に送信する。特定の実施形態において、この命令またはクエリは、ユーザの識別子(例えば、リクエストユーザのユーザノード302を識別するユーザID)および要求されたプロファイルページの識別子(例えば、要求されたプロファイルページのユーザノード302またはコンセプトノード304を識別するプロファイルページID)などの情報を含む。
特定の実施形態において、命令またはクエリに応答して、次いで、推奨生成プロセス218は、その後、それぞれリクエストユーザ(例えば、リクエストユーザの友達、リクエストユーザに「いいね」と表明されているコンセプト)と接続され、また要求されたプロファイルページと接続されている1もしくは複数のユーザまたは1もしくは複数のコンセプト(例えば、要求されたプロファイルページについて「いいね」と表明するユーザ、リクエストユーザの友達に「いいね」と表明されているコンセプト)とそれぞれ接続されている(ソーシャルグラフデータベース206内のエッジ306を通じて)プロファイルページを含む第1のデータセットを決定するか、または識別する。特定の実施形態において、第1のデータセットを決定するのと並行して、またはその後に、推奨生成プロセス218は、要求されたプロファイルページと両方ともそれぞれ接続され(ソーシャルグラフデータベース206内のエッジ306を通じて)、また、その後(ソーシャルグラフデータベース206内のエッジ306を通じて)リクエストユーザ(例えば、リクエストユーザの友達)に接続される1もしくは複数のユーザまたは1もしくは複数のコンセプトとも接続されているプロファイルページを含む第2のデータセットを決定する。一般的に、第1および第2のデータセットは、同じプロファイルページのうちの1または複数を含む。
特定の実施形態において、ソーシャルグラフデータベース206は、ソーシャルグラフデータベース206内でデータにインデックスを作成することによって生成された1または複数のクエリ可能な(検索可能な)インデックスを含む(あるいは、別の実施形態では、インデックスは、ソーシャルグラフデータベース206の外部にある1または複数のデータストアまたはデータベースに記憶される)。特定の実施形態において、インデックス作成プロセス220は、インデックスを定期的(例えば、毎時間、毎日、毎週)に生成するか、または更新する。それに加えて、または代替的に、インデックスは、ソーシャルグラフデータベース206内の新規ノードまたは新規エッジの作成に応答して、さらには他のアクションに応答して(例えば、ユーザとプロファイルページとの間の双方向な対話に応答して、またはユーザプロファイルページもしくはハブに編集を加えたことに応答して)動的に更新される。特定の実施形態において、インデックス作成プロセス220は、これらの決定を円滑にするために複数のインデックスを生成する。例えば、限定されるものでないが、インデックス作成プロセス220は、ユーザID(例えば、ユーザおよびソーシャルグラフデータベース206内の各ユーザノード302の識別子)でインデックスを作成され、それぞれのユーザIDについて、各ユーザノード302がインデックスで特定のユーザIDに対応するユーザノード302に接続されている各ユーザIDによって識別される他のユーザの集合を含むすべての登録ユーザのインデックスを生成し、維持する。別の例として、限定されるものでないが、インデックス作成プロセス220は、ここでもまたユーザIDでインデックスを作成されるが、それぞれのユーザIDについて、インデックスで特定のユーザIDに対応するユーザノード302に接続されている各プロファイルページID(例えば、プロファイルページおよびソーシャルグラフデータベース206内の各コンセプトノード304の識別子)によって識別されるハブまたは各コンセプトノード304の集合を含むすべての登録ユーザの別のインデックスを生成し、維持する。さらに別の例として、限定されるものでないが、インデックス作成プロセス220は、プロファイルページIDでインデックスを作成され、それぞれのプロファイルページIDについて、インデックスで特定のプロファイルページIDに対応するコンセプトノード304に接続されているプロファイルページIDによって識別される他のプロファイルページおよび各コンセプトノード304の集合を含むすべてのプロファイルページの別のインデックスを生成し、維持する。さらに別の例として、限定されるものでないが、インデックス作成プロセス220は、プロファイルページIDでインデックスを作成され、それぞれのプロファイルページIDについて、インデックスで特定のプロファイルページIDに対応するコンセプトノード304に接続されているユーザIDによって識別されるユーザおよび各ユーザノード302の集合を含むすべてのプロファイルページの別のインデックスを生成し、維持する。
特定の実施形態において、推奨生成プロセス218は、インデックス作成プロセス220によって生成されたインデックスについてクエリを実行することによって、第1および第2のデータセットを、それぞれ、決定する。これは、インデックス作成プロセス220それ自体またはそれらのインデックスのうちの1または複数を検索することに基づきクエリを受信し、結果を返すように構成されている他の任意のプロセスにクエリを実行することを伴い得る。例えば、限定されるものでないが、推奨生成プロセス218は、第1のネストしたクエリの第1の部分またはステップにおいて、リクエストユーザと接続されているユーザ(例えば、友達)に対応するすべてのユーザIDを識別するようにインデックス作成プロセス220に命令する第1のネストしたクエリをインデックス作成プロセス220に送信することによって第1のデータセットを決定する。ネストしたクエリの第2の部分において、インデックス作成プロセス220は、第1の部分において識別されたユーザIDのうちのどれが要求されたプロファイルページにも接続されているユーザに対応しているかを識別するように命令される。第1のネストしたクエリの第3の部分において、推奨生成プロセス218に、インデックス作成プロセス220は、クエリの第2の部分において識別されたユーザIDと接続されているプロファイルページに対応するプロファイルページID(ただし、特定の実施形態では、リクエストユーザにすでに接続されているプロファイルページに対応するプロファイルページIDを除外する)、さらにはプロファイルページIDのそれぞれと一致したユーザIDそれ自体を返すように命令される。同様にして、推奨生成プロセス218は、第2のデータセットを、要求されたプロファイルページと接続されているプロファイルページに対応するすべてのプロファイルページIDを決定し、次いで、推奨生成プロセス218に、リクエストユーザと接続されている1または複数のユーザとも接続されている識別されたプロファイルページのうちの1つに対応するプロファイルページID(ただし、特定の実施形態では、リクエストユーザにすでに接続されているプロファイルページに対応するプロファイルページIDを除く)さらにはプロファイルページIDのそれぞれと一致したユーザIDそれ自体を返すようにインデックス作成プロセスに命令する第2のネストしたクエリをインデックス作成プロセス220に送信することによって決定する。
特定の実施形態において、インデックス作成プロセス220によって生成されるプロファイルページインデックスは、プロファイルページカテゴリ(例えば、ユーザ、グループ、関連付け、映画、音楽、アクティビティ、スポーツなど)によってインデックスを作成され、構成され、または他の任意の方法で検索可能である。特定の実施形態において、第1および第2のデータセットで返されるプロファイルページは、要求されたプロファイルページと同じカテゴリを共有するプロファイルページのみを含む。しかし、特定の実施形態では、異なるカテゴリのプロファイルページは、返されたデータセットに含まれる。
特定の実施形態において、第1および第2のデータセットのそれぞれは、プロファイルページのリストまたはインデックス(例えば、プロファイルページIDによって識別される)、さらにはそれぞれのプロファイルページについて、各プロファイルページと接続されているユーザ(例えば、ユーザIDによって識別され)および/またはコンセプト(例えば、コンセプトIDによって識別される)の集合も含む。次いで、推奨生成プロセス218は、第1および第2のデータセットで識別されているそれぞれのプロファイルページについてスコアを生成し、その後、各スコアに基づきプロファイルページをランク付けして推奨されたプロファイルページに対する候補であるランク付けされたプロファイルページ(これ以降、「候補ページ」ともに称される)の単一の組み合わされた、または相関されたリストを生成する。特定の実施形態において、推奨生成プロセス218は、第1または第2のデータセット内の各プロファイルページとともに返されるユーザ(すなわち、リクエストユーザの友達)またはコンセプト(すなわち、リクエストユーザまたはその友達に「いいね」と表明されるコンセプト)の数に少なくとも一部は基づき第1および第2の
データセットのそれぞれにおけるそれぞれのプロファイルページにスコアを付ける。
特定の実施形態において、推奨生成プロセス218は、第1および第2のデータセットのそれぞれの中のプロファイルページにスコアを付けることができ、次いで結果として得られたスコアを組み合わせる。例えば、限定されるものでないが、第1のセット内のプロファイルページがリクエストユーザの友達のうちの5人と接続されている場合、そのプロファイルページは、推奨生成プロセス218によって5というスコアまたは重みを割り当てられる。同様に、第2のセット内のプロファイルページがリクエストユーザの友達のうちの4人と接続されている場合、そのプロファイルページは、推奨生成プロセス218によって4というスコアまたは重みを割り当てられる。特定の実施形態において、次いで、推奨生成プロセスは、第1および第2のデータセットのそれぞれの中のプロファイルページのすべてを含む組み合わされたデータセットを生成し、第1および第2のデータセットのそれぞれに基づきスコアリングの結果を組み合わせるか、または相関を求めて、組み合わされたデータセット内のプロファイルページのそれぞれに対して単一の相関しているスコアを生成する。次いで、各候補ページに対する単一の相関しているスコアが、プロファイルページの相関しているランク付けリスト内でプロファイルページをランク付けする際に使用される。特定の実施形態において、第1および第2のデータセット内のプロファイルページに割り当てられる重みは、それ自体、推奨生成プロセス218によって等しく重み付けされる。例えば、限定されるものでないが、第1のデータセットからの5の重みを有するプロファイルページは、単一の相関しているランク付けリスト内で5のスコアを割り当てられる。同様に、第2のデータセットからの4の重みを有するプロファイルページは、単一の相関しているランク付けリスト内で4のスコアを割り当てられる。それに加えて、第1および第2のデータセットが共通のプロファイルページを共有するので、第1および第2のデータセットの両方で返されたプロファイルページが第1のデータセットに基づき6の重みを割り当てられ、第2のデータセットに基づき3の重みを割り当てられた場合、推奨生成プロセス218は、個別の重みの総和を求め、単一の相関しているランク付けリスト内でプロファイルページに9のスコアを割り当てる(6+3=9)。しかし、重みを生成するために使用される友達は、第1および第2のデータセットにおいて共有されるので、推奨生成プロセス218は、これを考慮して、組み合わされたスコアを小さくする。例えば、限定されるものでないが、上記の例を続けて、両方のデータセット内にあるプロファイルページは、それぞれのデータセット内の2人の友達をさらに共有すると仮定すると、プロファイルページに対する結果として得られる相関しているスコアは、7として計算される(6+3−2=7)。しかし、特定の実施形態では、推奨生成プロセス218は、最初に、第1および第2のデータセットを組み合わせて1つの組み合わされたデータセットを生成し、次いで、結果として得られた組み合わされたデータセット内のプロファイルページのそれぞれにスコアを付ける。このようにして、データセット間で共有されるプロファイルページおよび関連付けられているユーザは、望ましい場合には、プロファイルページに対するスコアを生成する前に考慮される。
特定の実施形態において、推奨生成プロセス218は、各プロファイルページと接続されているリクエストユーザの友達の、単なる数以外の要因に基づき組み合わされたデータセット内のそれぞれのプロファイルページに対するスコアを決定する。例えば、限定されるものでないが、推奨生成プロセス218は、1または複数の他のデータセットについてインデックス作成プロセス220にクエリを実行する。例えば、限定されるものでないが、推奨生成プロセス218は、要求されたプロファイルページと接続されているすべてのプロファイルページ、または要求されたプロファイルページと接続され、リクエストユーザの友達のどれにも接続されていないすべてのプロファイルページを含む第3のデータセットを決定する。別の例として、限定されるものでないが、推奨生成プロセス218は、リクエストユーザの友達と接続されているプロファイルページのすべて、またはリクエストユーザの友達と接続され、要求されたプロファイルページに接続されていないプロファ
イルページのすべてを含む第4のデータセットを決定する。これら第3または第4のデータセットは、第1および第2のデータセット内のデータを増やす際に、または第1および第2のデータセット内のプロファイルページにスコアを付けるための追加の基準(例えば、プロファイルページのそれぞれの全体的な人気度を示すグローバルフィルタ)を提供するために使用される。さらに、第3および第4のデータセットは、要求されたプロファイルページと接続されているユーザの友達が存在しない、または要求されたプロファイルページと接続されているプロファイルページのいずれもがリクエストユーザのいずれの友達にも接続されていない場合に特に役立つ。
特定の実施形態において、推奨生成プロセス218は、第1および第2のデータセット内のプロファイルページと異なる仕方で第3または第4のデータセット内のプロファイルページに重みを付ける。例えば、限定されるものでないが、第3または第4のデータセット内のそれぞれのプロファイルページは、各プロファイルページのユーザノード302またはコンセプトノード304と接続されているユーザノード302の総数に従って重み付けされる。しかし、第1、第2、第3、および第4のデータセットを組み合わせて、組み合わされたデータセット内のそれぞれのプロファイルページに対する相関するスコアを計算すると、第3および第4のデータセット内のそれぞれのプロファイルページと接続されている全ユーザの数から、単一の相関するスコアへの寄与が小さいことの説明がつく。例えば、限定されるものでないが、「プロファイルページA」が第1、第2、第3、および第4のデータセットのそれぞれに見つかり、第1のデータセット内の5人のユーザ、第2のデータセット内の4人の非共有ユーザ、第3のデータセット内の50人のユーザ、第4のデータセット内の75人のユーザに関連付けられている場合、推奨生成プロセスは、そのプロファイルページに対する相関するスコアを5a+4b+50c+75dと計算することができ、ただし、a、b、c、およびdはユーザの各数に掛ける重みである。例えば、限定されるものでないが、一実装において、a=1、b=1、c=0.01、およびd=0.01であり、プロファイルページAに対する相関するスコアは5+4+0.5+0.75=10.25である。
特定の実施形態において、推奨生成プロセス218は、組み合わされたデータセット内のそれぞれのプロファイルページについて、その後、組み合わされたデータセット内のそれぞれのプロファイルページおよび各プロファイルページと接続されているそれぞれのユーザについて生成される多数の係数スコアを総和するか、または他の任意の方法で組み合わせることによって、第1および第2のデータセット内のそれぞれのプロファイルページ(いくつかの実施形態では、第1および第2のデータセットのうちの1または複数の中にもない第3および第4のデータセット内のプロファイルページにはスコアが付けられない)に対する単一の相関するスコアを決定する。特定の実施形態において、この意味での係数スコアは、その接続の強度(エッジ306によって定義されるか、もしくは表されるような)または複数の接続を示す。特定のプロファイルページおよび関連付けられているユーザについて推奨生成プロセス218によって生成される係数スコアは、さまざまな要因、例えば、ユーザとプロファイルページとの関係、ユーザとリクエストユーザとの関係(例えば、友達、親戚、配偶者など)、プロファイルページとユーザとの間の双方向な対話のレベルまたは頻度(例えば、ユーザがプロファイルページを何回閲覧するか、または一定期間にユーザによってプロファイルページにコンテンツがどれだけ追加されたか)、ユーザとリクエストユーザとの間の双方向な対話のレベルまたは頻度(例えば、ユーザが互いのプロファイルページを何回閲覧したか、または一定期間に、ユーザが何回、コメントを投稿したか、ウォール(フィード)投稿したか、メッセージを送信したか、または互いのプロファイルページと他の任意の方法で双方向に対話したか)、プロファイルページおよびユーザの両方に接続されるか、またはユーザおよびリクエストユーザの両方に接続されるか、またはプロファイルページおよび要求されたプロファイルページの両方に接続されるか、またはプロファイルページおよび要求されたユーザの両方に接続されているユー
ザノード302、コンセプトノード304、または全ノードの数、プロファイルページと要求されたプロファイルページとの間で共有されるコンテンツの量または質、他の好適な要因、またはこれらの任意の組み合わせなどに基づき得る。例えば、限定されるものでないが、組み合わされたデータセット内のそれぞれのプロファイルページに対する単一の相関するスコアを決定することは、推奨生成プロセス218が組み合わされたデータセット内のそれぞれのプロファイルページと各プロファイルページに接続されているリクエストユーザの友達のそれぞれとの間の1または複数の係数スコア、組み合わされたデータセット内のそれぞれのプロファイルページとリクエストユーザとの間の1または複数の係数スコア、組み合わされたデータセット内のそれぞれのプロファイルページと要求されたプロファイルページとの間の1または複数の係数スコア、またはリクエストユーザと組み合わされたデータセットからのプロファイルページと接続されているユーザのそれぞれとの間の1または複数の係数スコアを生成することを伴い得る。組み合わされたデータセット内のそれぞれのプロファイルページに対する単一の相関するスコアを決定することは、それに加えて、係数スコアのそれぞれを総和するか、または何らかの形で組み合わせてそれぞれのプロファイルページに対する単一の相関するスコアを生成することを伴い得る。
特定の実施形態において、組み合わされたデータセット内のプロファイルページのそれぞれについて係数スコアを、その後に単一の相関するスコアを計算するために、第1および第2のデータセット(およびいくつかの実施形態において、第3および第4のデータセットも)内の返されたデータ結果は、最初に、推奨生成プロセスによって(またはインデックス作成プロセス220から直接的に)データマイニングシステム、例えば、HIVE(HADOOPの上に構築されたデータウェアハウスインフラストラクチャ)などに送信されるものとしてよく、HADOOPは、次いで、データ上で多数のMapReduceジョブまたはプロセスを動作させるか、または実行し、それぞれのプロファイルページに対する単一の相関するスコアを生成するために推奨生成プロセス218によってその後使用される係数スコアを生成する。
特定の実施形態において、推奨生成プロセス218は、各相関するスコアでプロファイルページをランク付けすることができ、最も関連性の高いプロファイルページを表す最高の相関スコアを有するプロファイルページでプロファイルページのランク付けリスト(例えば、プロファイルページIDのランク付けリスト)を生成する。特定の実施形態において、次いで、推奨生成プロセス218は、最高の相関スコアを有する上位x(例えば、図5Aに示されている例では4)個のプロファイルページを推奨セクション510に表示される推奨されたプロファイルページとして選択する。
特定の実施形態において、次いで、推奨生成プロセス218は、推奨されたプロファイルページのプロファイルページIDを、例えばHTMLまたは他のマークアップ言語コードを含むコード、さらにはいくつかの実施形態では、例えば推奨されたプロファイルページ名512または画像514を推奨セクション510内にレンダリングする際に使用する画像リソースを含む、さまざまな他のコードセグメントまたはリソース、およびいくつかの実施形態では、推奨されたプロファイルページ名のテキストフィールド512またはプロファイルページ画像514をクリックするか、または他の任意の形で選択したユーザを推奨されたプロファイルページに誘導するハイパーリンクを実装するためのコードセグメントを次いで生成するページ生成プロセス200または他のプロセスに伝達する。次いで、コードおよびリソースは、クライアントのウェブブラウザ202によるレンダリングに対するその後の応答でユーザのクライアントデバイス30に送信される。特定の実施形態において、その後の応答は、要求されたプロファイルページをレンダリングするためのベース構造化ドキュメントは初期応答ですでに送信されている可能性があるので、AJAXまたは他の非同期技術を使用して送信される。特定の実施形態において、ソーシャルネットワーキングシステム20は、推奨生成プロセス218が推奨されたプロファイルページ
のプロファイルページIDを提供するのを待つものとしてよく、構造化ドキュメントをリクエストユーザに送信する前にクライアントデバイス30にプロファイルページをレンダリングするために構造化ドキュメントの残りとともに推奨されたプロファイルページ名512またはプロファイルページ画像514を表示するためのコードもしくはリソースを含む。
特定の実施形態において、推奨されたプロファイルページのそれぞれと接続されているユーザまたはノードおよびリクエストユーザの選択された部分集合のノード名(例えば、テキスト)516またはノード画像518(例えば、ユーザプロファイル画像、アバター、コンセプトプロファイル画像)をレンダリングするためのコードも、推奨セクション510内に各推奨されたプロファイルページの隣にレンダリングし表示するためにその後の応答とともに送信される。それに加えて、または代替的に、送信されたその後の応答は、例えば、nを各推奨されたプロファイルページに接続されているリクエストユーザの友達の数である「n人のあなたの友達もこれについて“いいね”と表明しています」、または「これらの友達」が各推奨されたプロファイルページの隣に表示されるノード名516またはノード画像518で表される、「これらの友達もこれについて“いいね”と表明しています」、または「:を含むn人のあなたの友達もこれについて“いいね”と表明しています」と読める各推奨されたプロファイルページの近くに推奨されたプロファイルページのそれぞれに対するテキスト文字列を表示するためのコードを含む。
特定の実施形態において、ウォール(またはニュースフィード/アクティビティフィード)セクション501a、またはプロファイルページの他のフィードもしくはアクティビティセクションは、プロファイルページを閲覧しているユーザおよびユーザの友達に関連付けられているコメント、ステータス更新、ウォール投稿、または他のユーザアクティビティを表示する。ウォール(またはニュースフィード/アクティビティフィード)セクション501a、またはプロファイルページの他のフィードもしくはアクティビティセクションは、プロファイルページが作成されたコンセプトに関係するコメント、ステータス更新、ウォール投稿、ならびに他のユーザアクティビティおよびユーザ生成コンテンツ、さらには、いくつかの実施形態では、現在要求されているか、または閲覧されているプロファイルページに対して決定された推奨されたプロファイルページに関連付けられているユーザ/コンセプトを表示する。推奨生成プロセス218は、ユーザまたはコンセプトでフィルタリングされたリクエストユーザおよびリクエストユーザの友達に関連付けられているコメント、ステータス更新、ウォール投稿および他のユーザ生成コンテンツおよびユーザアクティビティに関する検索、すなわち、リクエストユーザおよびリクエストユーザの友達に関係するユーザフィードまたはアクティビティのこれらのストリームにおける現在要求されているか、または閲覧されているプロファイルページのユーザまたはコンセプトに関係するキーワード(および潜在的に、推奨されたプロファイルページに関連付けられているユーザまたはコンセプトに関係するキーワード)に対するキーワード検索を実行し、現在要求されているか、または閲覧されているプロファイルページのウォールまたはフィードセクションにユーザコンテンツまたはアクティビティのこの部分集合を表示する。
構造化検索クエリ
特定の実施形態において、オンラインソーシャルネットワークのユーザは、「検索クエリ」と称されることが多い、検索対象を記述する短い語句を検索エンジンに提供することによって特定の検索対象(例えば、ユーザ、コンセプト、外部コンテンツ、またはリソース)に関係する情報を検索する。検索エンジンは、さまざまな検索アルゴリズムを使用してクエリ語句に基づき検索を実行し、検索クエリに関係する可能性が最も高いリソースまたはコンテンツ(例えば、ユーザプロファイルページ、コンテンツプロファイルページ、または外部リソース)を識別する検索結果を生成する。検索を実行するために、ユーザは、検索クエリを検索エンジンに入力するか、または送信し得る。それに応答して、検索エ
ンジンは、検索クエリに対して識別された「検索結果」と総称される、検索クエリに関係する可能性の高い1または複数のリソースを識別する。検索結果は、ユーザに対して、多くの場合に検索結果ウェブページ上のリンクのリストの形態で提示され、それぞれのリンクは識別されたリソースまたはコンテンツの一部を含む異なるウェブページに関連付けられる。特定の実施形態において、検索結果内のそれぞれのリンクは、対応するウェブページが配置される場所を指定するユニフォームリソースロケータ(URL)とそれを取り出すための機構の形態をとり得る。次いで、ユーザは、URLリンクをクリックすることで自分が望んでいるとおりに対応するウェブページ内に含まれる特定のリソースまたはコンテンツを閲覧する。リソースは、検索クエリとの相対的関連度に従ってランク付けされ、ユーザに提示される。検索結果も、ユーザとの相対的関連度に従ってランク付けされ、ユーザに提示される。言い換えると、検索結果は、例えば、ソーシャルグラフ情報、ユーザ情報、ユーザの検索もしくはブラウザ閲覧履歴、またはユーザに関係する他の好適な情報に基づきクエリを実行するユーザに対してパーソナライズされる。特定の実施形態において、これらのリソースのランク付けは、検索エンジンに実装されているランク付けアルゴリズムによって決定される。例えば、限定されるものでないが、検索クエリまたはユーザに対する相対的関連性がより高いリソースは、検索クエリまたはユーザに対する相対的関連性がより低いリソースより高くランク付けされる。特定の実施形態において、検索エンジンは、その検索をオンラインソーシャルネットワーク上のリソースをおよびコンテンツに制限する。しかし、特定の実施形態では、検索エンジンは、ウェブアプリケーションサーバ40、エンタプライズサーバ50、インターネットもしくはワールドワイドウェブ、または他の好適なソースなどの、他のソース上のリソースもしくはコンテンツについても検索する。
特定の実施形態において、本明細書で説明されているタイプアヘッドプロセスは、ユーザによって入力されたクエリを検索するために適用される。例えば、限定されるものでないが、ユーザがテキスト文字を検索フィールド450内に入力すると、フロントエンドタイプアヘッドプロセス204および/またはバックエンドタイプアヘッドプロセス208は、ユーザが文字を入力しているときに検索フィールド450に入力された文字列と一致する既存のユーザノード302、コンセプトノード304、またはエッジ306を識別することを試みる。バックエンドタイプアヘッドプロセス208がテキストクエリから文字列またはn−グラムを含むリクエストまたは呼び出しを受信すると、バックエンドプロセス208は、入力されたテキストと一致する各名前、タイプ、カテゴリ、または他の識別子を有する既存のソーシャルグラフ要素(すなわち、ユーザノード302、コンセプトノード304、エッジ306)を識別する検索を実行するか、または実行させられる。バックエンドタイプアヘッドプロセス208は、1または複数のマッチングアルゴリズムを使用して一致しているノードまたはエッジを識別することを試みる。1または複数の一致が見つかった場合、バックエンドタイプアヘッドプロセス208は、例えば一致しているノードの名前(名前文字列)、さらには潜在的に、一致しているノードに関連付けられている他のメタデータを含む応答をユーザのクライアントデバイス30に送信する。次いで、フロントエンドタイプアヘッドプロセス204は、一致している既存のプロファイルページおよび各ユーザノード302もしくはコンセプトノード304の名前を表示するドロップダウンメニュー(例えば、図6A〜図6Rに示されているドロップダウンメニュー600など)を表示することができ、一致しているユーザノード302またはコンセプトノード304に接続し得る一致しているエッジ306の名前を表示し、次いで、ユーザはこれをクリックするか、または他の任意の方法で選択して、選択されたノードに対応する一致したユーザもしくはコンセプト名を検索すること、または一致しているエッジによって一致したユーザもしくはコンセプトに接続されているユーザもしくはコンセプトを検索することを望んでいることを確認する。あるいは、フロントエンドタイプアヘッドプロセス204は、ドロップダウンメニューを表示する代わりに、単純に、最高位にランク付けされた一致の名前または他の識別子をフォームに自動投入する。次いで、ユーザは、単純に自
分のキーボードで「enter」と打ち込むか、または自動投入された宣言をクリックすることによって自動投入された宣言を確認する。一致しているノードおよびエッジをユーザが確認した後、フロントエンドタイプアヘッドプロセス204は、一致しているソーシャルグラフ要素を含むクエリをユーザが確認することをバックエンドタイプアヘッドプロセスに通知するリクエストをバックエンドタイプアヘッドプロセス208に送信する。リクエストが送信されたことに応答して、バックエンドタイプアヘッドプロセスは、一致しているソーシャルグラフ要素について、または一致しているソーシャルグラフ要素に接続されているソーシャルグラフ要素について、適宜、ソーシャルグラフデータベース206を検索するためにソーシャルネットワーキングシステム20を自動的に(あるいはリクエストの中の命令に基づき)呼び出すか、または他の任意の方法で命令する。本開示では特定の様式でタイプアヘッドプロセスを検索クエリに適用することを説明しているが、本開示は、任意の好適な様式でタイプアヘッドプロセスを検索クエリに適用することを企図している。
図6A〜図6Rは、ソーシャルネットワークの例示的なクエリを示している。特定の実施形態において、ソーシャルネットワーキングシステム20は、第1のユーザ(すなわち、クエリを実行しているユーザ)から受信されたテキストクエリに応答して1または複数の識別されたソーシャルグラフ要素への参照を含む1または複数の構造化クエリを生成する。図6A〜図6Rは、さまざまな例示的なテキストクエリをクエリフィールド450内に、および応答して生成されるさまざまな構造化クエリをドロップダウンメニュー600内に示している。ユーザのテキストクエリに応答して提案されたる構造化クエリを提供することによって、ソーシャルネットワーキングシステム20は、ソーシャルグラフ属性およびさまざまなソーシャルグラフ要素との関係に基づきソーシャルグラフ300で表される要素をオンラインソーシャルネットワークのユーザが検索するための強力な手段を提供し得る。構造化クエリを使用することで、クエリを実行するユーザは、特定のエッジタイプによってソーシャルグラフ300内の特定のユーザまたはコンセプトに接続されているコンテンツを検索することが可能になる。例えば、限定されるものでないが、ソーシャルネットワーキングシステム20は、実質的に構造化されていないテキストクエリを第1のユーザから受信する。それに対する応答として、ソーシャルネットワーキングシステム20は(例えば、サーバサイド要素検出プロセスを通じて)、ソーシャルグラフ300にアクセスし、次いで、テキストクエリを構文解析して、そのテキストクエリからn−グラムに対応するソーシャルグラフ要素を識別する。ソーシャルネットワーキングシステム20は、それぞれのn−グラムに対する、それが特定のソーシャルグラフ要素に対応する確率を決定することによってこれらの対応するソーシャルグラフ要素を識別する。しきい値の確率より高い確率を有するソーシャルグラフ要素が識別され、次いで、ソーシャルネットワーキングシステム20によって生成された1または複数の構造化クエリにおいて参照される。次いで、構造化クエリは、第1のユーザに送信され、ドロップダウンメニュー100内に表示され(例えば、クライアントサイドタイプアヘッドプロセスを通じて)、そこで第1のユーザは所望のコンテンツを検索するのに適切なクエリを選択する。第1のユーザが特定の構造化クエリを選択した後、ソーシャルネットワーキングシステム20は、そのクエリを処理して、そのクエリに対応するターゲットノードを識別する。次いで、これらのターゲットノードは、それらのノードに関連付けられているプライバシ設定に基づき(例えば、サーバサイドプライバシフィルタプロセスを通じて)フィルタリングされ、次いで、フィルタリングされた結果が、検索結果として第1のユーザに送信される。本明細書で説明されている構造化クエリを使用する利点のいくつかは、制限された情報に基づきオンラインソーシャルネットワーキングのユーザを見つけること、そのコンテンツとさまざまなソーシャルグラフ要素との関係に基づきオンラインソーシャルネットワークからコンテンツの仮想インデックスをまとめること、または自分および/または自分の友達に関係するコンテンツを見つけることを含む。本開示では特定の様式で特定の構造化クエリを生成することを説明し、図6A〜図6Rにおいてそれを図示しているが、本開示は、好適
な様式で好適な構造化クエリを生成することを企図している。
要素検出
特定の実施形態において、ソーシャルネットワーキングシステム20は、クエリを実行している/第1のユーザ(第1のユーザノード302に対応する)から実質的に構造化されていないテキストクエリを受信する。例えば、限定されるものでないが、第1ユーザは、(1)第1のユーザの第1度の友達であり、(2)FACEBOOK(登録商標)という会社について「いいね」と表明し(すなわち、ユーザノード302は、フェースブック(登録商標)社(FACEBOOK INC.)に対応するコンセプトノード304にエッジ306によって接続される)、(3)ある年齢より若い他のユーザを検索することを望み得る。次いで、第1のユーザは、図6C〜図6Iに示されるように、「フェースブックに “いいね”と表明しているXXより若い友達(friends who like
facebook and are younger than)」というテキストクエリを検索フィールド450に入力する。別の例として、限定されるものでないが、その第1ユーザは、(1)「Old Pro」という場所について「いいね」と表明し、(2)「Acme」という会社について「いいね」と表明し、(3)パロアルト(Palo Alto)という市に居住している他のユーザを検索することを望み得る。次いで、第1のユーザは、図6K〜図6Oに示されるように、「パロアルトでold proとacmeについて“いいね”と表明する人(people who like old pro
and acme in palo alto)」というテキストクエリを検索フィールド450に入力する。上で説明されている例の両方において、第1のユーザがこのテキストクエリを検索フィールド450内に入力すると、ソーシャルネットワーキングシステム20は、ドロップダウンメニュー600に示されるように、さまざまな提案される構造化クエリを提供する。本明細書で使用されるように、実質的に構造化されていないテキストクエリは、ユーザによって入力されるシンプルテキスト文字列を含む。テキストクエリは、当然に、標準的な言語/文法の規則に関して構造化される。しかし、テキストクエリは、通常、ソーシャルグラフ要素に関しては構造化されない。言い換えると、シンプルテキストクエリは、通常、特定のソーシャルグラフ要素への埋め込まれた参照を含まない。したがって、本明細書で使用されるように、構造化クエリは、特定のソーシャルグラフ要素への参照を含むクエリを示し、これにより検索エンジンは識別された要素に基づき検索を実行する。本開示は特定の様式で特定のクエリを受信することを説明しているが、本開示は、好適な様式で好適なクエリを受信することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、第1のユーザ(すなわち、クエリを実行しているユーザ)から受信された実質的に構造化されていないテキストクエリ(単に検索クエリとも称される)を構文解析して、1または複数のn−グラム識別する。一般に、n−グラムは、テキストまたは音声の所定のシーケンスからのn個のアイテムの連続シーケンスである。これらのアイテムは、テキストまたは音声のシーケンスからの文字、音韻、音節、英字、単語、ベースペア、接頭辞、または他の識別可能なアイテムである。n−グラムは、クエリを実行しているユーザによって入力されたテキストの1または複数の文字(英字、数字、句読点など)を含む。n−グラムは、サイズ1のものは「ユニグラム」と称され、サイズ2のものは、「バイグラム」または「ダイグラム」と称され、サイズ3のものは、「トライグラム」と称され、以下同様に称される。それぞれのn−グラムは、クエリを実行しているユーザから受信されたテキストクエリからの1または複数の部分を含むとしてよい。特定の実施形態において、それぞれのn−グラムは、第1のユーザによって入力された文字列(例えば、テキストの1または複数の文字)を含む。例えば、限定されるものでないが、ソーシャルネットワーキングシステム20は、テキストクエリ「パロアルトの友達(friends in palo alto)」を構文解析して、n−グラムである、友達(friends)、の(in)、パロ(palo)、アルト(alto)、の友達(friends in)、パロの(in pa
lo)、パロアルト(palo alto)、パロの友達(friend in palo)、パロアルトの(in palo also)、パロアルトの友達(friends
in palo alto)を識別する。特定の実施形態において、それぞれのn−グラムは、テキストクエリからのn個のアイテムの連続シーケンスを含む。別の例として、限定されるものでないが、ソーシャルネットワーキングシステム20は、テキストクエリ「フェースブックに“いいね”と表明している友達(friends who like
facebook)」を構文解析し(図6Fに示されるように)、n−グラムである、友達(friends)、している(who)、“いいね”と表明(like)、フェースブック(facebook)、している友達(friends who)、“いいね”と表明している(who like)、フェースブックに“いいね”と表明(like facebook)、“いいね”と表明している友達(friends who like)、フェースブックに“いいね”と表明している(who like facebook)を識別する。本開示は特定の様式で特定のクエリを構文解析することを説明しているが、本開示は、好適な様式で好適なクエリを構文解析することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、それぞれのテキストクエリを構文解析して、特定のソーシャルグラフ要素に対応するように予め決定されている1または複数のn−グラムを抽出する。検索クエリ内のすべての単語が所定の要素を表すわけではないことに留意されたい。特定の実施形態では、所定のクエリ要素を表さないn−グラムを無視し得る。例えば、限定されるものでないが、ソーシャルネットワーキングシステム20は、図6Fに示されるように、「friends who like facebook」を含む検索クエリを受信する。ユニグラム「friends」は、クエリを実行しているユーザをソーシャルグラフ300内のそのユーザの第1度の友達(すなわち、クエリを実行しているユーザに対応するユーザノード302の分離度1の範囲内の他のユーザノード302)に接続する「友達」エッジ306に対応するように予め決定されている。同様に、n−グラム「like」は、ソーシャルグラフ300内のコンセプトノード304に接続する「“いいね”と表明」エッジ306に対応するように予め決定されている。最後に、n−グラム「facebook」は、フェースブック社という会社に対するコンセプトノード304に対応するように予め決定されている。別の例として、限定されるものでないが、ソーシャルネットワーキングシステム20が「ドクター・イェイテス・ジルツァー(Doctor Yeites Ziltzer)」を含む検索クエリを受信した場合、肩書きまたは地位に対する所定の要素が存在しない場合がある。したがって、「ドクター(doctor)」というユニグラムは、ソーシャルグラフ要素を表し得ない(これが特定のソーシャルグラフ要素の属性または特性を表し、それに基づき検索可能であるが)。他方、人名に対して所定の要素が存在する場合がある。したがって、n−グラム「Yeites Ziltzer」は、イェイテス・ジルツァーという名前のユーザに対する特定のユーザノード302に対応するクエリ要素を表す。所定の要素を表さないn−グラムは、ヌル要素を表すものとして、または他の任意の形で特定のソーシャルグラフ要素に対応しないものとして印を付けられてもよい。本開示は特定の様式で特定の検索クエリを構文解析することを説明しているが、本開示は、好適な様式で好適な検索クエリを構文解析することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、テキストクエリで識別されているそれぞれのn−グラムについて、n−グラムがソーシャルグラフ要素に対応するスコアを決定するか、または計算する。スコアは、例えば、信頼スコア、確率、質、順位、別の好適なタイプのスコア、またはこれらの組み合わせであってよい。例えば、限定されるものでないが、ソーシャルネットワーキングシステム20は、n−グラムがソーシャルグラフ300のユーザノード302、コンセプトノード304、またはエッジ306などの、ソーシャルグラフ要素に対応する確率スコア(単に「確率」ともに称される)を決定する。確率スコアは、n−グラムと特定のソーシャルグラフ要素との間の類
似度または関連度のレベルを示す。確率を計算する方法にはさまざまなものがある。本開示では、検索クエリで識別されたn−グラムに対する確率スコアを計算する好適な方法を企図している。特定の実施形態において、ソーシャルネットワーキングシステム20は、n−グラムが特定のソーシャルグラフ要素に対応する確率pを決定する。確率pは、特定の検索クエリXが与えられたときに、特定のソーシャルグラフ要素kに対応する確率として計算される。言い換えると、この確率はp=(k|X)として計算される。例えば、限定されるものでないが、n−グラムがソーシャルグラフ要素に対応する確率は、pi,j,kと表される確率スコアとして計算される。入力は、テキストクエリX=(x1,x2,...,xN)、およびクラス(class)の集合である。それぞれの(i:j)およびクラスkについて、ソーシャルネットワーキングシステム20は、pi,j,k=p(class(xi:j)=k|X)を計算する。特定の実施形態において、ソーシャルネットワーキングシステム20は、言語モデルに基づき特定のn−グラムがソーシャルグラフ要素に対応する確率を決定する。好適な確率的言語モデルを使用して、特定のn−グラムが特定のソーシャルグラフ要素に対応する確率を決定する。例えば、限定されるものでないが、ソーシャルネットワーキングシステム20は、n−グラムモデル、セグメンタルマルコフモデル、文法言語モデル、別の好適な確率的言語モデル、またはこれらの組み合わせを使用する。特定の実施形態において、ソーシャルネットワーキングシステム20は、前向き後ろ向きアルゴリズムを使用して、特定のn−グラムが特定のソーシャルグラフ要素に対応する確率を決定する。テキストクエリ内の与えられたn−グラムについて、ソーシャルネットワーキングシステム20は、先行のn−グラムと後続のn−グラムの両方を使用して、どの特定のソーシャルグラフ要素が与えられたn−グラムに対応するかを決定する。特定の実施形態において、ソーシャルネットワーキングシステム20は、広告スポンサシップに基づき特定のn−グラムがソーシャルグラフ要素に対応する確率を決定する。広告主(例えば、特定のノードに対応する特定のプロファイルページのユーザまたは管理者など)は、特定のノードのスポンサになり、そのノードに、特定のn−グラムに対応するか否かを決定するときにより高い確率を与えられるようにするか、または決定された確率に関係なく特定のn−グラムに対応するものとして識別される。例えば、限定されるものでないが、n−グラム「スマートフォン(smart phone)」は、「iPhone」(スマートフォンの一種である)に対するコンセプトノード304に対応し、また「Android(登録商標)」(別の種類のスマートフォンである)に対するコンセプトノードにも対応する。これらのコンセプトノード304のうちの1つに対して、広告主がスポンサになった場合、ソーシャルネットワーキングシステム20は、n−グラム「smart phone」に対応するより高い確率のn−グラムを決定する。本開示では特定の様式でn−グラムがソーシャルグラフ要素に対応するか否かを決定することを説明しているが、本開示は、任意の好適な様式でn−グラムがソーシャルグラフ要素に対応するか否かを決定することを企図している。さらに、本開示では特定のタイプのスコアを使用してn−グラムがソーシャルグラフ要素に対応するか否かを決定することを説明しているが、本開示は、任意の好適なタイプのスコアを使用してn−グラムがソーシャルグラフ要素に対応するか否かを決定することを企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、ソーシャルグラフ情報に基づき特定のn−グラムがソーシャルグラフ要素に対応する確率を決定する。例えば、限定されるものでないが、n−グラムが特定のソーシャルグラフ要素に対応する確率pを決定するときに、この確率の計算において、ソーシャルグラフ情報も考慮する。したがって、特定のソーシャルグラフ要素kに対応する確率は、特定の検索クエリXおよびソーシャルグラフ情報Gが与えられたときに、p=(k|X,G)として計算される。特定の実施形態において、n−グラムが特定のノードに対応する確率は、第1のユーザノード302と特定のノードとの間の分離度に基づく。特定のn−グラムは、ユーザから遠い(すなわち、分離度が大きい)ソーシャルグラフ要素よりも、クエリを実行しているユーザの方にソーシャルグラフ300内で近い(すなわち、要素と第1のユーザノード30
2との間の分離度が小さい)ソーシャルグラフ要素に対応するより高い確率を有する。例えば、限定されるものでないが、図3を参照すると、ユーザ「B」が「チキン」のテキストクエリを入力した場合、これがエッジ306によってユーザ「B」に接続されているレシピ「チキンパルメザン」に対するコンセプトノード304に対応する計算された確率は、このn−グラムがソーシャルグラフ300内でユーザ「B」に接続されていないn−グラム「チキン」に関連付けられている他のノード(例えば、「チキンナゲット」または「ファンキー・チキン・ダンス」に対応するコンセプトノード304)に対応する計算された確率よりも高いことがわかる。特定の実施形態において、ソーシャルネットワーキングシステム20は、特定のn−グラムが第1のユーザ(すなわち、クエリを実行しているユーザ)に対応するユーザノード302の分離度のしきい値の範囲内のノードに対応する確率を決定することのみができる。したがって、この分離度のしきい値を超えるノードは、n−グラムに対応する確率としてゼロまたはヌルを割り当てられる。あるいは、クエリを解決するときに、ソーシャルネットワーキングシステム20は、分離度のしきい値の範囲内のノードにアクセスすることのみでき、またこれらのノードに対する確率を決定することのみできる。分離度のしきい値は、例えば、1、2、3、またはすべてであってよい。特定の実施形態において、n−グラムが特定のノードに対応する確率は、特定のノードに接続されている識別されたエッジ306に基づく。ソーシャルネットワーキングシステム20が、受信されたテキストクエリ内のn−グラムに対応する1または複数のエッジをすでに識別している場合、それらの識別されたエッジは、特定のノードがテキストクエリ内の特定のn−グラムに対応しているか否かを決定するときに考慮される。識別されたエッジのいずれにも接続されていないノードは、n−グラムに対応する確率としてゼロまたはヌルを割り当てられる。例えば、限定されるものでないが、ユーザが「ポーカーをプレイしたことがある友達(friends who have played poker)」を検索する場合、ソーシャルネットワーキングシステム20は、n−グラム「プレイしたことがある(have played)」がソーシャルグラフ300内の「プレイした」エッジ306に対応していると識別し、次いで1または複数の「プレイした」エッジ306に接続されているノードを検索する。引き続きこの例において、ソーシャルグラフ300は、オンラインソーシャルネットワークのユーザによってオンラインで対戦できる、図3に示されているような、アプリケーション「オンライン・ポーカー」に対応するコンセプトノード304を含み(したがって、「プレイした」エッジを形成する)、またオンラインソーシャルネットワークのユーザが(例えば、書籍に対応するコンセプトプロファイルページ上でちょうどそれだけ示すことなどによって)「読む」かまたは「いいね」と表明する、「ポーカー・フォー・ダミーズ(Poker for Dummies)」という書籍に対応するコンセプトノード304も含む。これらのノードのうちのいずれかがn−グラム「ポーカー(poker)」に対応している確率を決定するときに、ソーシャルネットワーキングシステム20は、「オンライン・ポーカー(online poker)」に対するコンセプトノード304は「プレイした」エッジ306に接続されているのでn−グラム「poker」に対応する比較的高い確率を有するが、「Poker for Dummies」に対するコンセプトノード304はどの「プレイした」エッジ306にも接続されていないのでn−グラム「poker」に対応する比較的低い確率を有すると決定する。特定の実施形態において、n−グラムが特定のノードに対応する確率は、特定のノードに接続されているエッジ306の数に基づく。より多くの接続エッジ306を有するノードは、人気度が高く、検索クエリのターゲットとなる可能性がより高い。例えば、限定されるものでないが、引き続き前の例において、「online poker」に対するコンセプトノード304が5つのエッジでのみ接続されているが、「Poker for Dummies」に対するコンセプトノード304は5000個のエッジで接続されている場合、n−グラム「poker」がこれらのノードのうちのいずれかに対応している確率を決定するときに、ソーシャルネットワーキングシステム20は、「Poker for Dummies」に対するコンセプトノード304が、そのコンセプトノード304に接続されているエッジの数が多いのでn−グラム「poker」に対応
する比較的高い確率を有すると決定する。特定の実施形態において、n−グラムが特定のノードに対応する確率は、第1のユーザ(すなわち、クエリを実行しているユーザ)に関連付けられている検索履歴に基づく。第1のユーザがすでにアクセスしているか、または第1のユーザがすでにアクセスしているノードに関連するノードは、第1のユーザの検索クエリのターゲットとなる可能性が高い。例えば、限定されるものでないが、引き続き前の例において、第1のユーザが「online poker」プロファイルページをすでに訪問しているが、「Poker for Dummies」プロファイルページには訪問したことがない場合、n−グラム「poker」がこれらのページに対応するノードのいずれかに対応している確率を決定するときに、ソーシャルネットワーキングシステム20は、「online poker」に対するコンセプトノード304が、クエリを実行しているユーザがそのコンセプトノード304にすでにアクセスしている(また実際、「閲覧した」エッジ306でそのノードにすでに接続されている可能性がある)のでn−グラム「poker」に対応する比較的高い確率を有すると決定する。別の例として、限定されるものでないが、第1のユーザが「フェースブック賄い料理チーム(Facebook Culinary Team)」に対するコンセプトプロファイルページをすでに訪問している場合、n−グラム「フェースブック(facebook)」が特定のソーシャルグラフ要素に対応する確率を決定するときに、ソーシャルネットワーキングシステム20は、クエリを実行しているユーザがコンセプトノード304にすでにアクセスしているので「Facebook Culinary Team」に対応するコンセプトノード304が比較的高い確率を有すると決定する。本開示では特定の様式でn−グラムがソーシャルグラフ要素に対応するか否かを決定することを説明しているが、本開示は、任意の好適な様式でn−グラムがソーシャルグラフ要素に対応するか否かを決定することを企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、ソーシャルグラフ要素とクエリを実行しているユーザ(すなわち、第1のユーザノード302に対応する、第1のユーザ)との関連性に基づき特定のn−グラムがソーシャルグラフ要素に対応する確率を決定する。エッジ306によって第1のユーザノード302に接続されているユーザノード302およびコンセプトノード304は、第1のユーザに関連しているとみなされる。例えば、限定されるものでないが、エッジ306によって第1のユーザノード302に接続されているコンセプトノード304は、第1のユーザノード302に関連しているとみなされる。本明細書で使用されるように、ソーシャルグラフ300を参照するときに、「接続されている、接続される、接続された」という言い回しは、2つのノードの間のソーシャルグラフ300内に経路が存在することを意味し、この経路は、1または複数のエッジ306ならびにゼロまたはそれ以上の中間ノードを含む。特定の実施形態において、1または複数の介在ノード(およびしたがって2以上のエッジ306)を通じて第1のユーザノード302に接続されているノードも、第1のユーザに関連しているとみなされる。さらに、特定の実施形態において、第2のノードが第1のユーザノードに近ければ近いほど、第2のノードと第1のユーザノードとの関連性が高いとみなされる。すなわち、第1のユーザノード302を特定のユーザノード302またはコンセプトノード304から隔てるエッジ306が少なければ少ないほど(すなわち、分離度が小さいほど)、ユーザノード302またはコンセプトノード304と第1のユーザとの関連性は高いとみなされる。例えば、限定されるものでないが、図3に示されるように、場所「Old Pro」に対応しているコンセプトノード304は、ユーザ「B」に対応しているユーザノード302に接続され、したがって、コンセプト「Old Pro」はユーザ「B」に関連しているとみなされる。別の例として、限定されるものでないが、「SPOTIFY」に対応しているコンセプトノード304は、1つの中間ノードおよび2つのエッジ306(すなわち、ユーザ「C」に対応している中間ユーザノード302)を通じてユーザ「B」に対応しているユーザノード302に接続され、したがって、コンセプト「SPOTIFY」は、ユーザ「B」に関連しているとみなされるが、「SPOTIFY」に対する
コンセプトノード304は、ユーザ「B」に関して第2度の接続であるため、その特定のコンセプトノード304は、例えば、映画「ショーシャンクの空に」に対応しているコンセプトノード304などの、単一のエッジ306によってユーザ「B」のユーザノードに接続されるコンセプトノード304より関連性が低いとみなされる。さらに別の例として、限定されるものでないが、「オンライン・ポーカー」(オンラインマルチプレーヤゲームである)に対するコンセプトノードは、ソーシャルグラフ300内のいずれの経路によってもユーザ「B」に対するユーザノードに接続されず、したがって、コンセプト「オンライン・ポーカー」は、ユーザ「B」に関連しているとみなされない。特定の実施形態において、第2のノードは、第2のノードが第1のユーザノード302の分離度のしきい値の範囲内に存在する場合にのみ、第1のユーザノードとの関連性が高いとみなされる。例えば、限定されるものでないが、分離度のしきい値が3である場合、ユーザ「D」に対応しているユーザノード302は、図3に示されているソーシャルグラフ300上で互いに3度の範囲内に存在する、レシピ−「チキンパルメザン」に対応するコンセプトノード304に関連しているとみなされる。しかし、引き続きこの例を参照すると、アプリケーション「レシピすべて」に対応しているコンセプトノード304は、ユーザ「D」に対応しているユーザノード302に関連しているとみなされないが、それはこれらのノードがソーシャルグラフ300内で4度離れているからである。本開示は特定の様式で特定のノードが互いに関連しているか否かを決定することを説明しているが、本開示は、好適な様式で好適なノードが互いに関連しているか否かを決定することも企図している。さらに、本開示はユーザノード302およびコンセプトノード304が第1のユーザノード302に関連しているか否かを決定することを説明しているが、本開示は、特定のノードが他の特定のノードと関連しているか否かを決定することも同様に企図している。例えば、限定されるものでないが、ソーシャルグラフ300は、いずれのコンセプトノード304が他のコンセプトノード304に関連しているかを決定するために使用される。
特定の実施形態において、ソーシャルネットワーキングシステム20は、n−グラムが特定のソーシャルグラフ要素に対応しているか否かを決定するときに1または複数の制約を課す。例えば、限定されるものでないが、ソーシャルネットワーキングシステム20はユーザノード302を、ユーザノード302に対応するユーザの名前がテキストクエリと正確に一致している場合にのみ識別する。一般に、人名を含む検索クエリは、典型的には、(ニックネーム、略称、呼び名などの名前の変更形態を考慮した後に)人名を含むと考えられるその特定のユーザプロファイルページに対する特定のユーザプロファイルページと正確な一致を有するべきである。これは、近接度の制約として表すことができ、検索クエリ内の人名を表すn−グラムは、ユーザプロファイルページ内で互いに隣り合い、ユーザプロファイルページが人名を含むものとしてみなされるように検索クエリ内に出現するのと同じ順序で配置されるべきである。したがって、オンラインソーシャルネットワークのユーザの名前を表す検索語「コリン・リー・ベイカー」に関して、図4Aに示されているユーザプロファイルページはユーザの名前を含むが、他のユーザに関連付けられている他のユーザプロファイルページは(コリン・リー・ベイカーという名前の他のユーザまたはコンセプトが存在しないと仮定して)含まない。他のユーザプロファイルページは、検索クエリの3つすべての単語(例えば、パン職人として働いているコリン・リーという名前の人)を含むが、それらの単語は必ずしも検索クエリ内に出現するのと同じ順序で出現し得ない。したがって、同じ単語を含む他のユーザプロファイルページは、ユーザノード302に対するクエリを表すクエリ単語に必要な近接度制約を満たさない。この場合、検索エンジンは、対応するユーザプロファイルページがいくつかの単語「コリン・リー・ベイカー」をその順序で含むユーザノード302のみを参照する。本開示では特定のn−グラムが特定のソーシャルグラフ要素に対応するか否かを決定することに対して特定の制約を課すことを説明しているが、本開示は、好適なn−グラムが好適なソーシャルグラフ要素に対応するか否かを決定することに対して好適な制約を課すことを企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、エッジに対するしきい値の確率より高い確率を有する1または複数のエッジ306を識別する。識別されたエッジ306のそれぞれは、n−グラムのうちの少なくとも1つに対応する。例えば、限定されるものでないが、n−グラムは、Pi,j,k>Pエッジ−しきい値の場合にエッジkに対応しているものとしてのみ識別される。さらに、識別されたエッジ306のそれぞれは、識別されたノードのうちの少なくとも1つに接続される(以下で説明される)。言い換えると、ソーシャルネットワーキングシステム20は、特定のn−グラムに対応しているものとしてすでに識別されているユーザノード302またはコンセプトノード304に接続されているエッジ306またはエッジタイプのみを識別する。すでに識別されているノードに接続されていないエッジ306またはエッジタイプは、典型的には、検索クエリ内の特定のn−グラムに対応しない。これらのエッジ306またはエッジタイプをフィルタで除去するか、または無視することによって、ソーシャルネットワーキングシステム20は、関連するソーシャルグラフ要素についてソーシャルグラフをより効率的に検索する。例えば、限定されるものでないが、図3を参照すると、「スタンフォードに通った(went to Stanford)」を含むテキストクエリについて、識別されたコンセプトノード304が学校「スタンフォード」である場合、ソーシャルネットワーキングシステム20は、「勤務していた」に対応するエッジ306および「通っていた」に対応するエッジ306を識別することができ、両方とも「スタンフォード」に対するコンセプトノード304に接続されていることがわかる。したがって、n−グラム「通った(went to)」は、これらのエッジ306に対応するものとして識別される。しかし、同じテキストクエリについて、ソーシャルネットワーキングシステム20は、「スタンフォード」ノードがそれに接続されているそのようなエッジを有していないのでソーシャルグラフ300内で「“いいね”と表明」または「ファン」に対応するエッジ306を識別し得ない。本開示では特定の様式でn−グラムに対応するエッジ306を識別することを説明しているが、本開示は、任意の好適な様式でn−グラムに対応するエッジ306を識別することを企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、ノードに対するしきい値の確率より高い確率を有する1または複数のユーザノード302またはコンセプトノード304を識別する。識別されたノードのそれぞれは、n−グラムのうちの少なくとも1つに対応する。例えば、限定されるものでないが、n−グラムは、pi,j,k>pエッジ−しきい値の場合にノードkに対応しているものとしてのみ識別される。さらに、識別されたユーザノード302またはコンセプトノード304のそれぞれは、識別されたエッジ306のうちの少なくとも1つに接続される(上で説明されている)。言い換えると、ソーシャルネットワーキングシステム20は、特定のn−グラムに対応しているものとしてすでに識別されているエッジ306に接続されているノードまたはノードタイプのみを識別する。すでに識別されているエッジ306に接続されていないノードまたはノードタイプは、典型的には、検索クエリ内の特定のn−グラムに対応しない。これらのノードまたはノードタイプをフィルタで除去するか、または無視することによって、ソーシャルネットワーキングシステム20は、関連するソーシャルグラフ要素についてソーシャルグラフをより効率的に検索する。例えば、限定されるものでないが、「アップルに勤務した(worked at Apple)」を含むテキストクエリについて、識別されたエッジ306が「勤務した」である場合、ソーシャルネットワーキングシステム20は、それに接続されている「勤務した」の複数のエッジ306を有する、アップル社(APPLE,INC.)に対応するコンセプトノード304を識別する。しかし、同じテキストクエリについて、ソーシャルネットワーキングシステム20は、複数の「“いいね”と表明」または「ファン」エッジが接続されているが、「勤務した」エッジ接続を有し得ない、フルーツタイプ「リンゴ(apple)」に対応するコンセプトノード304を識別しない。特定の実施形態において、ノードに対するしきい値の確率は、ユーザノード302およびコンセプトノード304について異なる。n−グラムは、pi,j,k>pユー
ザ−ノード−しきい値の場合にユーザノード302に対応しているものとして識別されるが、n−グラムは、pi,j,k>pコンセプト−ノード−しきい値の場合にコンセプトノード304kコンセプトに対応しているものとして識別される。特定の実施形態において、ソーシャルネットワーキングシステム20は、第1のユーザ(すなわち、クエリを実行しているユーザ)に対応するユーザノード302の分離度のしきい値の範囲内のノードを識別することのみができる。分離度のしきい値は、例えば、1、2、3、またはすべてであってよい。本開示では特定の様式でn−グラムに対応するノードを識別することを説明しているが、本開示は、任意の好適な様式でn−グラムに対応するノードを識別することを企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、それぞれ識別されたエッジ306のうちの1または複数および識別されたノードのうちの1または複数への参照を含む1または複数の構造化クエリを生成する。構造化クエリを生成することについて以下で詳しく説明する。
図7は、構造化検索クエリに対するソーシャルグラフ要素を検出するための例示的な方法700を示している。この方法はステップ710から始まり、そこで、ソーシャルネットワーキングシステム20は、複数のノードおよびそれらのノードを接続する複数のエッジ306を含むソーシャルグラフ300にアクセスする。これらのノードは、第1のユーザノード302および複数の第2のノード(1または複数のユーザノード302、コンセプトノード304、またはこれらの組み合わせ)を含む。ステップ720で、ソーシャルネットワーキングシステム20は、実質的に構造化されていないテキストクエリを第1のユーザから受信する。ステップ730で、ソーシャルネットワーキングシステム20はテキストクエリを構文解析して、1または複数のn−グラムを識別する。ステップ740で、ソーシャルネットワーキングシステム20は、n−グラムがエッジ306または第2のノードに対応するn−グラムのそれぞれについて確率を決定する。ステップ750で、ソーシャルネットワーキングシステム20は、エッジのしきい値の確率より高い確率を有する1または複数のエッジ306を識別する。識別されたエッジ306のそれぞれは、n−グラムのうちの少なくとも1つに対応する。ステップ760で、ソーシャルネットワーキングシステム20は、ノードのしきい値の確率より高い確率を有する1または複数の第2のノードを識別する。識別された第2のノードのそれぞれは、識別されたエッジ306の少なくとも1つに接続される。さらに、識別された第2のノードのそれぞれは、n−グラムの少なくとも1つに対応する。ステップ770で、ソーシャルネットワーキングシステム20は1または複数の構造化クエリを生成する。それぞれの構造化クエリは、識別されたエッジ306の1または複数および識別された第2のノードの1または複数への参照を含む。特定の実施形態において、適切な場合に、図7の方法の1または複数のステップを繰り返す。本開示では図7の方法の特定のステップを特定の順序で生じさせるものとして説明し図示しているが、本開示は、好適な順序で生じさせる図7の方法の好適なステップを企図している。さらに、本開示では図7の方法の特定のステップを実行する特定の構成要素、デバイス、またはシステムを説明し図示しているが、本開示は、図7の方法の好適なステップを実行する好適な構成要素、デバイス、またはシステムの好適な組み合わせを企図している。
構造化検索クエリ
特定の実施形態において、ソーシャルネットワーキングシステム20は、それぞれ識別されたユーザノード302のうちの1または複数および識別されたエッジ306のうちの1または複数への参照を含む1または複数の構造化クエリを生成する。このタイプの構造化検索クエリは、識別されたユーザノード302および識別されたエッジ306に接続された、または他の任意の形で関係するコンテンツを検索することによってソーシャルネットワーキングシステム20がオンラインソーシャルネットワークに関係するリソースおよ
びコンテンツ(例えば、プロファイルページなど)をより効率的に検索することを可能にする。例えば、限定されるものでないが、テキストクエリ「私のガールフレンドの友達を表示(show me friends of my girlfriend)」に応答して、ソーシャルネットワーキングシステム20は、構造化クエリ「ステファニの友達(Friends of Stephanie)」を生成するが、ただし、構造化クエリ内の「友達(Friends)」および「ステファニ(Stephanie)」は、特定のソーシャルグラフ要素に対応する参照である。「Stephanie」への参照は、特定のユーザノード302に対応するが、「friends」への参照は、そのユーザノード302を他のユーザノード302に接続する「友達」エッジ306(すなわち、「ステファニの(Stephanie’s)」の第1度の友達に接続するエッジ306)に対応する。この構造化クエリを実行するときに、ソーシャルネットワーキングシステム20は、「ステファニ」に対応するユーザノード302に「友達」エッジ306によって接続された1または複数のユーザノード302を識別する。特定の実施形態において、ソーシャルネットワーキングシステム20は、複数の構造化クエリを生成することができ、構造化クエリは、異なる識別されたユーザノード302または異なる識別されたエッジ306への参照を含む。例えば、限定されるものでないが、テキストクエリ「ネコの写真(photos of cat)」に応答して、ソーシャルネットワーキングシステム20は、第1の構造化クエリ「ケイティの写真(Photos of Catey)」および第2の構造化クエリ「キャサリンの写真(Photos of Catherine)」を生成することができ、構造化クエリ内の「写真(Photos)」は、特定のソーシャルグラフ要素に対応する参照であり、「ケイティ(Catey)」および「キャサリン(Catherine)」は、2つの異なるユーザノード302への参照である。これらの構造化クエリのいずれかを実行するときに、ソーシャルネットワーキングシステム20は、エッジ306によって識別されたユーザノード302に接続された写真に対応する1または複数のコンセプトノード304を識別する。本開示は特定の様式で特定の構造化クエリを生成することを説明しているが、本開示は、好適な様式で好適な構造化クエリを生成することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、それぞれ識別されたコンセプトノード304のうちの1または複数および識別されたエッジ306のうちの1または複数への参照を含む1または複数の構造化クエリを生成する。このタイプの構造化検索クエリは、識別されたコンセプトノード304および識別されたエッジ306に接続された、または他の任意の形で関係するコンテンツの検索によってソーシャルネットワーキングシステム20がオンラインソーシャルネットワークに関係するリソースおよびコンテンツ(例えば、プロファイルページなど)をより効率的に検索することを可能にする。例えば、限定されるものでないが、テキストクエリ「フェースブックに“いいね”と表明している友達(friends who like facebook)」に応答して、ソーシャルネットワーキングシステム20は、図6Fのドロップダウンメニュー600に示されるように、構造化クエリ「Friends who like Facebook」を生成することができ、ただし、構造化クエリ内の「友達(Friends)」、「“いいね”と表明(like)」、および「フェースブック(Facebook)」は、すでに説明されるように特定のソーシャルグラフ要素(すなわち、「友達」エッジ306、「“いいね”と表明」エッジ306、および「フェースブック」コンセプトノード304)に対応する参照である。特定の実施形態において、ソーシャルネットワーキングシステム20は、複数の構造化クエリを生成することができ、構造化クエリは、異なる識別されたコンセプトノード304または異なる識別されたエッジ306への参照を含む。例えば、限定されるものでないが、引き続き前の例において、構造化クエリ「Friends who like Facebook」に加えて、ソーシャルネットワーキングシステム20は、図6Fのドロップダウンメニュー600にも示されるように、構造化クエリ「フェースブック賄い料理チームに“いいね“と表明している友達(Friends
who like Facebook Culinary Team)」も生成することができ、構造化クエリ内の「フェースブック賄い料理チーム(Facebook Culinary Team)」は、さらに別のソーシャルグラフ要素に対応する参照である。本開示は特定の様式で特定の構造化クエリを生成することを説明しているが、本開示は、好適な様式で好適な構造化クエリを生成することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、生成された構造化クエリをランク付けする。構造化クエリは、さまざまな要因に基づきランク付けされる。より高い/よりよい順位を与えられた構造化クエリは、クエリを実行しているユーザにより関連しているか、またはクエリを実行しているユーザから受信された構造化されていないテキストクエリとよりよく一致していると考えられる。同様に、より高い/よりよい順位を与えられた構造化クエリは、クエリを実行しているユーザにより関連しているか、またはクエリを実行しているユーザから受信された構造化されていないテキストクエリからのn−グラムと一致するより高い確率を有するソーシャルグラフ要素を参照する。特定の実施形態において、ソーシャルネットワーキングシステム20は、第1のユーザ(すなわち、クエリを実行しているユーザ)に対応する第1のユーザノード302と構造化クエリにおいて参照されている識別されたユーザノード302またはコンセプトノード304の少なくとも1つとの間の分離度に基づき構造化クエリのそれぞれをランク付けする。クエリを実行しているユーザにソーシャルグラフ300内でより近い(すなわち、分離度が小さい)参照されているノードを含む構造化クエリは、クエリを実行しているユーザから遠く離れているノードを含む構造化クエリに比べて高くランク付けされる。特定の実施形態において、ソーシャルネットワーキングシステム20は、第1のユーザに関連付けられている検索履歴に基づき構造化クエリのそれぞれをランク付けする。クエリを実行しているユーザによってより最近または頻繁に検索されるかまたはアクセスされているソーシャルグラフ要素を参照している構造化クエリは、クエリを実行しているユーザによって最近、頻繁に、またはまったくアクセスされていないソーシャルグラフ要素を参照している構造化クエリに比べて高くランク付けされる。例えば、限定されるものでないが、クエリを実行しているユーザが「Facebook Culinary Team」をすでに検索しており、「Facebook Culinary Team」に対するコンセプトノード304に対応するコンセプトプロファイルページを訪問している場合、このソーシャルグラフ要素を参照している構造化クエリは、図6Fに示されるように、他の構造化クエリと比較して比較的高くランク付けされる。特定の実施形態において、構造化クエリは、広告スポンサシップに基づきランク付けされる。広告主(例えば、特定のノードに対応する特定のプロファイルページのユーザまたは管理者など)は、特定のノードのスポンサになり、特定のノードを参照していない構造化クエリに比べてそのノードを参照している構造化クエリが高くランク付けされるようにする。例えば、限定されるものでないが、n−グラム「smart phone」は、「IPHONE」(スマートフォンの一種である)に対するコンセプトノード304に対応し、また「ANDROID」(別の種類のスマートフォンである)に対するコンセプトノードにも対応する。これらのコンセプトノード304のうちの1つに対して、広告主がスポンサになった場合、ソーシャルネットワーキングシステム20は、スポンサ付きでない(またはスポンサ付きである程度が低い)ノードを参照している構造化クエリに比べてスポンサ付きのノードを参照している構造化クエリを高くランク付けする。特定の実施形態において、ソーシャルネットワーキングシステム20は、構造化クエリにおいて参照されているソーシャルグラフ要素のソーシャル(ネットワーク上の)関連性に基づき構造化クエリのそれぞれをランク付けする。例えば、限定されるものでないが、特定のノードのソーシャル(ネットワーク上の)関連性は、特定のノードに接続されているエッジ306の数に基づくものとしてよく、したがって、より多くのエッジ306によって接続されているノードを参照している構造化クエリは、より少ないエッジ306によって接続されているノードを参照している構造化クエリに比べて高くランク付けされる。別の例として、限定されるものでないが、特定のエッジ306ま
たはエッジタイプのソーシャル(ネットワーク上の)関連性は、そのエッジタイプが特定のノードに接続される頻度に基づく。特定の実施形態において、ソーシャルネットワーキングシステム20は、受信されたテキストクエリに関する構造化クエリのテキストの関連性に基づき構造化クエリのそれぞれをランク付けする。特定の構造化クエリのテキストの関連性は、特定の構造化クエリ内の語および語の数がクエリを実行しているユーザから受信されたテキストクエリとどのように一致するかに基づき得る。例えば、限定されるものでないが、受信されたテキストクエリと比較して挿入された語が少ない構造化クエリは、挿入された語が多い構造化クエリに比べて高くランク付けされる。特定の実施形態において、ソーシャルネットワーキングシステム20は、構造化クエリの重要度または人気度に基づき構造化クエリのそれぞれをランク付けする。例えば、限定されるものでないが、「ユーザAの友達(Friends of User A)」を含む第1の構造化クエリは、「ユーザAの写真(Pictures of User A)」を含む第2の構造化クエリに比べて高くランク付けされるが、それは、「友達」エッジタイプを参照している構造化クエリは、「写真」エッジタイプを参照している構造化クエリに比べて、オンラインソーシャルネットワーク上で重要または人気があるからである。別の例として、限定されるものでないが、「スタンフォードの学生(Stanford students)」を含む第1の構造化クエリは、「スタンフォードの従業者(Stanford employees)」を含む第2の構造化クエリに比べて高くランク付けされるが、それは、「学生」エッジタイプを参照している構造化クエリは、「従業者」エッジタイプを参照している構造化クエリに比べて、オンラインソーシャルネットワーク上で重要または人気があるからである。特定の実施形態において、ソーシャルネットワーキングシステム20は、構造化クエリにおいて使用されている語の時制に基づき構造化クエリのそれぞれをランク付けする。特定の時制の語を使用する構造化クエリは、異なる時制の語を使用する構造化クエリに比べて高くランク付けされる。本開示は特定の様式で構造化クエリをランク付けすることを説明しているが、本開示は、好適な様式で構造化クエリをランク付けすることも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、構造化クエリの1または複数を第1のユーザ(すなわち、クエリを実行しているユーザ)に送信する。例えば、限定されるものでないが、構造化クエリが生成された後、ソーシャルネットワーキングシステム20は、構造化クエリの1または複数を、例えば参照されているソーシャルグラフ要素の名前(名前文字列)、他のクエリ制限(例えば、ブール演算子など)、さらには潜在的に、参照されているソーシャルグラフ要素に関連付けられている他のメタデータを含む応答(AJAXもしくは他の好適な技術を利用する)としてユーザのクライアントデバイス30に送信する。クエリを実行しているユーザのクライアントデバイス30上のウェブブラウザ202は、図6A〜図6Rに示されるように、ドロップダウンメニュー600で送信された構造化クエリを表示する。特定の実施形態において、送信されたクエリは、ランク付けされた順序で、例えば、上で説明されるようにすでに決定された順位に基づくなどして、クエリを実行しているユーザに提示される。よりよい順位を有する構造化クエリは、より目立つ位置に提示される。さらに、特定の実施形態において、しきい値の順位を超える構造化クエリのみが、クエリを実行しているユーザに送信されるか、または表示される。例えば、限定されるものでないが、図6A〜図6Rに示されるように、構造化クエリは、ドロップダウンメニュー600でクエリを実行しているユーザに提示され、より高くランク付けされた構造化クエリは、メニューの上位部分に提示され、降順において、より低くランク付けされた構造化クエリは、メニューの下の方に提示される。図6A〜図6Rに示されている例において、最高順位の7つのクエリのみがユーザに送信され、表示される。特定の実施形態において、構造化クエリ内の1または複数の参照は、特定のソーシャルグラフ要素との対応関係を示すために強調される。例えば、限定されるものでないが、図6F〜図6Iに示されるように、「フェースブック(Facebook)」への参照は、構造化クエリ内で強調され、特定のコンセプトノード304に対応してい
ることを示す。同様に、ドロップダウンメニュー600に提示されている構造化クエリ内の「友達(Friends)」および「“いいね”と表明(like)」への参照も、特定のエッジ306に対応していることを示すように強調される。本開示は特定の様式で特定の構造化クエリを送信することを説明しているが、本開示は、好適な様式で好適な構造化クエリを送信することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、第1のユーザ(すなわち、クエリを実行しているユーザ)から構造化クエリのうちの1つの選択を受信する。例えば、限定されるものでないが、クエリを実行しているユーザのクライアントデバイス30上のウェブブラウザ202は、図6A〜図6Rに示されるように、ドロップダウンメニュー600で送信された構造化クエリを表示することができ、次いで、ユーザはこれをクリックするか、または他の任意の形で選択して(例えば、自分のキーボードの「enter」を単に叩くことで)、ユーザがソーシャルネットワーキングシステム20に実行させたい特定の構造化クエリを示す。特定の構造化クエリを選択した後、ユーザのクライアントデバイス30は、選択された構造化クエリを実行するようにソーシャルネットワーキングシステム20を呼び出すか、または他の任意の形でソーシャルネットワーキングシステム20に命令する。本開示は特定の様式で特定の構造化クエリの選択を受信することを説明しているが、本開示は、好適な様式で好適な構造化クエリの選択を受信することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、構造化クエリのうちの1つの選択に対応する検索結果を生成する。構造化クエリに基づき検索結果を生成することについて以下で詳しく説明する。
図8は、パーソナライズされた構造化検索クエリを生成するための例示的な方法800を示している。この方法はステップ810から始まり、そこで、ソーシャルネットワーキングシステム20は、複数のユーザノード302およびそれらのユーザノード302を接続する複数のエッジ306を含むソーシャルグラフ300にアクセスする。2つのユーザノード302の間のそれぞれのエッジ306は、それらの間の単一の分離度を表す。これら複数のユーザノード302は、オンラインソーシャルネットワークに関連付けられている第1のユーザに対応する第1のユーザノード302を含む。これら複数のユーザノード302は、オンラインソーシャルネットワークに関連付けられている第2のユーザにそれぞれ対応する1または複数の第2のユーザノード302も含む。第2のユーザノード302のそれぞれは、第1のユーザノード302から分離度のしきい値の範囲内に存在する。ステップ820で、ソーシャルネットワーキングシステム20は、1または複数の文字列を含むテキストクエリを第1のユーザから受信する。ステップ830で、ソーシャルネットワーキングシステム20は、それらの文字列のうちの1または複数に対応する第2のユーザノード302の1または複数を識別する。ステップ840で、ソーシャルネットワーキングシステム20は、それらの文字列の1または複数に対応するエッジ306の1または複数を識別する。識別されたエッジ306のそれぞれは、第2のユーザノード302の1つに接続される。ステップ850で、ソーシャルネットワーキングシステム20は、1または複数の推奨クエリを生成する。それぞれの構造化クエリは、識別された第2のユーザノード302の1または複数および識別されたエッジ306の1または複数への参照を含む。特定の実施形態において、適切な場合に、図8の方法の1または複数のステップを繰り返す。本開示では図8の方法の特定のステップを特定の順序で生じさせるものとして説明し図示しているが、本開示は、好適な順序で生じさせる図8の方法の好適なステップを企図している。さらに、本開示では図8の方法の特定のステップを実行する特定の構成要素、デバイス、またはシステムを説明し図示しているが、本開示は、図8の方法の好適なステップを実行する好適な構成要素、デバイス、またはシステムの好適な組み合わせを企図している。
図9は、ソーシャルグラフ情報に基づき構造化クエリを生成するための例示的な方法900を示している。この方法はステップ910から始まり、そこで、ソーシャルネットワーキングシステム20は、複数のノードおよびそれらのノードを接続する複数のエッジ306を含むソーシャルグラフ300にアクセスする。これらのノードは、第1のユーザノード302、複数の第2のノード(例えば、ユーザノード302およびコンセプトノード304)を含む。ステップ920で、ソーシャルネットワーキングシステム20は、1または複数のn−グラムを含む実質的に構造化されていないテキストクエリを第1のユーザから受信する。ステップ930で、ソーシャルネットワーキングシステム20は、それらのn−グラムの1または複数に対応する第2のノードの1または複数を識別する。ステップ940で、ソーシャルネットワーキングシステム20は、それらのn−グラムの1または複数に対応するエッジ306の1または複数を識別する。識別されたエッジのそれぞれは、識別された第2のノードの少なくとも1つに接続される。ステップ950で、ソーシャルネットワーキングシステム20は1または複数の構造化クエリを生成する。それぞれの構造化クエリは、識別された第2のノードの1または複数および識別されたエッジ306の1または複数への参照を含む。特定の実施形態において、適切な場合に、図9の方法の1または複数のステップを繰り返す。本開示では図9の方法の特定のステップを特定の順序で生じさせるものとして説明し図示しているが、本開示は、好適な順序で生じさせる図9の方法の好適なステップを企図している。さらに、本開示では図9の方法の特定のステップを実行する特定の構成要素、デバイス、またはシステムを説明し図示しているが、本開示は、図9の方法の好適なステップを実行する好適な構成要素、デバイス、またはシステムの好適な組み合わせを企図している。
プライバシ設定に基づく検索結果のフィルタリング
特定の実施形態において、構造化検索クエリへの応答として検索結果を生成するときに、ソーシャルネットワーキングシステム20は、オンラインソーシャルネットワークの特定のユーザに関連付けられているプライバシ設定に基づき検索結果をフィルタリングする。例えば、限定されるものでないが、構造化クエリが、クエリを実行しているユーザによって選択され、ソーシャルネットワーキングシステム20によって受信された後に、検索エンジンが、クエリ条件を満たすか、または一致するターゲットコンテンツ(例えば、ノードおよび/またはそれの対応するプロファイルページ)を識別する。ターゲットコンテンツ(およびより具体的には、ターゲットコンテンツに対応するターゲットノード)は、オンラインソーシャルネットワークのいずれのユーザがコンテンツを閲覧またはコンテンツにアクセスできるかを指定するプライバシ設定に関連付けられる。例えば、特定のソーシャルグラフ要素は、クエリを実行しているユーザにとって可視でなく、したがって、そのソーシャルグラフ要素(またはその関係する要素)を参照している構造検索クエリは、その要素に依存する検索結果を生成すべきでない。その結果、コンテンツに関連付けられているプライバシ設定により、特定のターゲットコンテンツが検索結果内に表示されない。図10は、例示的なソーシャルグラフ300を示している。図10に示されているソーシャルグラフ300が以下の例のいくつかで参照され、プライバシ設定が検索結果のフィルタリングにどのように使用されるかを示す。本開示では特定の様式でプライバシ設定に基づき検索結果をフィルタリングすることを説明しているが、本開示は、任意の好適な様式でプライバシ設定に基づき検索結果をフィルタリングすることを企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、それぞれのターゲットノードおよびそれぞれの選択されたノードに関連付けられているプライバシ設定にアクセスする。それぞれのノードに対するプライバシ設定において、ソーシャルネットワーキングシステム20のユーザへのノードの可視性またはノードに接続しているエッジの可視性を定義する。この方法で、オンラインソーシャルネットワークのユーザ(またはネットワークの外部にいるユーザであっても)の能力は、特定のノードに関連付けられて
いるプロファイルページ(または他の関係するコンテンツ)を閲覧またはこれらにアクセスする能力を限定することによって制限される。例えば、限定されるものでないが、第1のユーザのプライバシ設定で、そのユーザのプロファイルページが「友達の友達」(すなわち、第2度の友達)しか閲覧またはアクセスされないように指定し、それにより、3度以上のユーザが第1のユーザのプロファイルページを閲覧またはそれにアクセスすることを防ぐ。別の例として、限定されるものでないが、図10を参照すると、ユーザ「9」に対するプライバシ設定で、そのユーザの教育情報が他のユーザに見えないように指定することができ、したがって、ユーザ「9」に対するユーザノード302を学校「スタンフォード」に対応するコンセプトノード304に接続する「通っていた」エッジ306は他のユーザにとって可視でないことがわかる。したがって、ユーザ「9」に対するプライバシ設定により、そのユーザのユーザノード302(または対応するユーザプロファイルページ)への参照がスタンフォード大学に通っていたユーザについて検索結果に表示されるのを防ぐことが可能であろう。本開示は特定の様式で特定のプライバシ設定にアクセスすることを説明しているが、本開示は、好適な様式で好適なプライバシ設定にアクセスすることも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、構造化クエリに対応する1または複数のターゲットノードを識別する。ターゲットノードは、選択された構造化クエリ内で参照されているノードのうちの少なくとも1つに少なくとも1つのエッジによって接続されているユーザノード302またはコンセプトノード304とされる。例えば、限定されるものでないが、図10を参照すると、ソーシャルネットワーキングシステム20は、実質的に構造化されていないテキストクエリ「ユーザ5の友達を表示(show me user 5’s friends)」をユーザから受信し、ソーシャルネットワーキングシステム20はこれを構文解析して構造化クエリ「ユーザ5の友達(Friends of User 5)」を生成することができ、「Friends」への参照は、特定の「友達」エッジ306に対応し、「User 5」は、ユーザ「5」に対するユーザノード302に対応することがわかる。次いで、ソーシャルネットワーキングシステム20は、ユーザ「4」およびユーザ「7」に対応するユーザノード302を、構造化クエリに対応するターゲットノードとして識別するが、それは、これらのノードのうちの両方が「友達」エッジ306によってユーザ「5」に対するノードに接続されているからである。本開示は特定の様式で特定のターゲットノードを識別することを説明しているが、本開示は、好適な様式で好適なターゲットノードを識別することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、第1のユーザにとって可視である可視性を有する一連のノードおよびエッジ306によってソーシャルグラフ300内の第1の/クエリを実行しているユーザノード302に接続されているそれぞれのターゲットノードヘの参照を含む検索結果を生成する。第1のユーザとターゲットノードとの間の経路内のノードおよびエッジは、選択された構造化クエリ内のノードおよびエッジの参照を含む。例えば、限定されるものでないが、引き続き上で図10を参照する前の例を参照すると、構造化クエリ「Friends of User 5」は、ユーザ「5」に対するユーザノード302およびそのノードに接続されている「友達」エッジ306を参照する。この構造化クエリは、ユーザ「4」およびユーザ「7」に対するターゲットノードを識別する。クエリを実行しているユーザがユーザ「5」に対するノードを閲覧すると仮定すると、これらのユーザを接続しているエッジが可視であるか否かを決定するためにユーザ「4」、「5」、および「7」に対するプライバシ設定にアクセスする。例えば、ユーザ「4」または「5」のいずれかが、これらを接続している「友達」エッジ306が特定の他のユーザに可視でないようにするプライバシ設定を有することができ、このエッジ306がクエリを実行しているユーザに可視である場合、生成された検索結果は、ユーザ「4」への参照を含む。同様に、ユーザ「5」または「7」のいずれかが
、これらを接続している「友達」エッジ306が可視でないようにするプライバシ設定を有することができ、したがって、このエッジ306がクエリを実行しているユーザにとって可視である場合、生成された検索結果は、ユーザ「7」への参照を含む。特定の実施形態において、クエリを実行しているユーザに対するユーザノード302は、必ずしも、ターゲットノードヘの可視である経路によって接続される必要はないが、クエリを実行しているユーザにとって可視であるノード(ソースノード)とターゲットノードとの間に少なくとも1つの経路が存在するべきである。例えば、限定されるものでないが、引き続き前の例を参照すると、クエリを実行しているユーザは、必ずしも、ユーザ「4」またはユーザ「7」のいずれかへの経路で接続される必要はないが、クエリを実行しているユーザが、この場合にはユーザ「5」であってよい、ソースノードを閲覧できる限り、またクエリを実行しているユーザがユーザ「5」とターゲットノードとの間の経路を閲覧できる限り、ターゲットノードは検索結果内に出現する。クエリを実行しているユーザは、例えば、ノードが公開されアクセス可能であるか、またはクエリを実行しているユーザの分離度のしきい値の範囲内に存在するので、ソースノードを閲覧できる。本開示は特定の様式で検索結果を生成することを説明しているが、本開示は、好適な様式で検索結果を生成することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、第1の条件および1または複数の第2の条件を含む構造化クエリの選択を受信することができ、第2の条件のうちの少なくとも1つは、第1の条件に依存する。ソーシャルネットワーキングシステムは、第1の条件を満たす1または複数のノードを識別するステップと、第1の条件を満たすノードを第1の条件に依存するそれぞれの第2の条件に適用するステップとによってそのようなクエリを解決する。別の例として、限定されるものでないが、図10を参照すると、ソーシャルネットワーキングシステム20は、実質的に構造化されていないテキストクエリ「ユーザ11の友達またはユーザ10の友達であり、かつ、ユーザ5の友達またはスタンフォードに通っていた人々を見つける(find me people who are friends of user 11 or friends of user 10 and friends of user 5 or attended stanford)」をユーザから受信することがわかる。ソーシャルネットワーキングシステム20は、このテキストクエリを構文解析して、構造化検索クエリ「ユーザ11の友達またはユーザ11の友達、かつ、ユーザ5またはスタンフォードに通っていた友達を見つける(Find Friends of User 11 or friends of User 10 that are also friends of User 5 or attended Stanford)」を生成し、「の友達(friends of)」および「通っていた(attended)」への参照は、特定のエッジ306に対応し、「ユーザ5(User 5)」、「ユーザ10(User 10)」、および「ユーザ11(User 11)」への参照は、特定のユーザノード302に対応し、「スタンフォード(Stanford)」への参照は、特定のコンセプトノード304に対応する。このクエリに対する等価な記号表現(「s−式」)は、(or(and
friend:10(apply friend:(or friend:5 attended>6)))friend:11)であり、「Stanford」に対応するコンセプトノード304は、「6」として参照されている。ソーシャルネットワーキングシステム20は、内側の条件である(apply friend:(or friend:5 attended>6))を、内側の条件に依存する外側の条件が解決される前に解決される必要がある第1の条件として識別する。図10を参照すると、内側の条件は、ユーザ「5」の友達または「スタンフォード」に通っていたユーザのいずれかであるユーザを識別することによって解決されることがわかる。ユーザ「5」の友達はユーザ「4」および「7」であり、両者とも「友達」エッジ306によってユーザ「5」に対するノードに接続される。「スタンフォード」に通っていたユーザは、ユーザ「4」、「7」、および「9」である。したがって、これらの結果を組み合わせて、内側の条件は、ユーザ「4
」、「7」、および「9」に対するユーザノード302を識別している。次に、これら3つの結果は、apply演算子を使用して外側の条件に適用され、そこで、s−式(or(and friend:10(or friend:4 friend:7 friend:9)friend:11)として表現し直される。表現し直されたクエリは、ユーザ「11」の友達またはユーザ「10」およびユーザ「4」、「7」、または「9」のうちの1つの両方の友達のいずれかであるユーザを識別することによって解決される。ユーザ「11」の唯一の友達はユーザ「10」である。ユーザ「10」の友達はユーザ「3」および「8」を含むが、ユーザ「4」、「7」、および「9」の友達はユーザ「3」、「5」、および「8」を含み、したがって、ユーザ「3」および「8」は、両方の集合内の友達であり、この条件を満たす。したがって、外側の条件は、ユーザ「3」、「8」、および「10」に対するユーザノード302を、構造化クエリに対応するターゲットノードとして識別する。本開示は特定の様式で検索クエリを解決することを説明しているが、本開示は、好適な様式で検索クエリを解決することも企図している。
図11A〜図11Cは、プライバシ設定を解決するための例示的なサブグラフを示している。特定の実施形態において、ソーシャルネットワーキングシステム20は、それぞれのターゲットノードに対するサブグラフを生成する。このサブグラフは、第1のユーザのノード(すなわち、クエリを実行しているユーザのユーザノード302)、ターゲットノード、ならびにそれぞれの選択されたノードおよび第1のユーザのノードとターゲットノードとをソーシャルグラフ内で接続するそれぞれの選択されたエッジを含む。例えば、限定されるものでないが、引き続き前の段落からの例を参照すると、サブグラフは、ユーザ「3」、「8」、および「10」に対するターゲットノードについて構築され、これらはそれぞれ図11A、図11B、および図11Cに示されている。これらのグラフは、クエリを実行しているユーザとターゲットノードとの間の経路内にそれぞれのエッジ306を示している。例えば、ユーザ「10」および「3」を接続するエッジ306は、図11A内で、「friend:10→3」と示されている。次いで、ソーシャルネットワーキングシステム20は、それぞれのサブグラフについて、第1のユーザのノードをターゲットノードに接続するサブグラフ内のそれぞれの終端経路を識別する。終端経路は、この一連の選択されたノード、および第1のユーザのノードをターゲットノードに接続する選択されたエッジを含む。例えば、限定されるものでないが、クエリを実行しているユーザをユーザ「10」に対するターゲットノードに接続する終端経路は、図11Cに示されるように、クエリを実行しているユーザをユーザ「11」に対するノードに接続するエッジ306、ユーザ「11」に対するユーザノード302、およびユーザ「11」をユーザ「10」に接続するエッジ306を含む。図11Aおよび図11Bに示されるように、当然に、クエリを実行しているユーザとターゲットノードとの間に複数の終端経路が存在し、これらの終端経路のそれぞれが識別される。次いで、ソーシャルネットワーキングシステム20は、サブグラフ内のそれぞれの終端経路について、終端経路内のそれぞれの選択されたエッジが第1のユーザにとって可視である可視性を有するか否かを決定する。言い換えると、ソーシャルネットワーキングシステム20は、サブグラフがクエリを実行しているユーザとターゲットノードとの間にプライバシ許可経路を有するか否かを調べることを試み得る。例えば、限定されるものでないが、図11C内の終端経路がクエリを実行しているユーザにとって可視であるか否かを決定するために、ソーシャルネットワーキングシステム20は、s−式(edge friend:11 10)を評価する。別の例として、限定されるものでないが、図11A内の終端経路がクエリを実行しているユーザにとって可視であるか否かを決定するために、ソーシャルネットワーキングシステム20は、s−式(and (edge friend:10 3)(edge friend:4 3)(or(edge attended>6 4)(edge friend:5 4)))を評価する。複数の終端経路が特定のサブグラフ内に存在する場合、ソーシャルネットワーキングシステム20は、終端経路の一部または全部を評価して、それぞれの経路内のエッジ306が可視であるか否かを決定する。ソーシャルネットワーキングシステム2
0は、少なくとも1つの終端経路を有するそれぞれのサブグラフを識別することができ、経路内のそれぞれの選択されたエッジは、第1のユーザにとって可視である可視性を有する。したがって、サブグラフがクエリを実行しているユーザとターゲットノードとの間に複数の終端経路を含む場合、サブグラフは、そのまま、サブグラフ内の少なくとも1つの終端経路がユーザにとって可視である限りプライバシ許可経路を有するものとして識別される。次いで、生成された検索結果は、少なくとも1つの可視である終端経路を有する識別されたサブグラフに対応するそれぞれのターゲットノードへの参照を含む。例えば、限定されるものでないが、図11Aを参照すると、クエリを実行しているユーザとユーザ「3」に対するターゲットノードとの間に終端経路は2つ存在する。2つの取りうる終端経路のうちの少なくとも一方がクエリを実行しているユーザにとって可視である限り、ユーザ「3」に対するターゲットノードは、そのクエリに対する検索結果に含まれる。特定の実施形態において、クエリを実行しているユーザに対するユーザノード302は、必ずしも、ターゲットノードヘの可視である経路によって接続される必要はないが、クエリを実行しているユーザにとって可視であるノード(ソースノード)とターゲットノードとの間に少なくとも1つの経路が存在するべきである。例えば、限定されるものでないが、引き続き前の例を参照すると、クエリを実行しているユーザは、必ずしも、ユーザ「3」、「8」、または「10」のいずれかへの経路で接続される必要はないが、クエリを実行しているユーザがソースノードおよびソースノードとターゲットノードとの間の経路を閲覧できる限り、ターゲットノードは検索結果内に出現し得る。本開示は特定の様式でプライバシ設定を解決することを説明し、図11A〜図11Cに示しているが、本開示は、好適な様式でプライバシ設定を解決することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、構造化クエリのうちの1つの選択に対応する検索結果を生成する。検索結果は、構造化クエリに対応するコンテンツ(例えば、プロファイルページ)への1もしくは複数のリンクまたは他の参照を含む構造化ドキュメント(例えば、検索結果ウェブページ)に提示される。検索結果における参照は、対応するコンテンツに案内するために使用される。特定の実施形態において、検索結果は、識別された第2のユーザノード302のうちの1または複数、識別されたコンセプトノード304のうちの1または複数、またはこれらの組み合わせへの参照を含む。例えば、限定されるものでないが、図3を参照すると、ユーザ「B」は、構造化クエリ「Acmeに勤務した友達(Friends who worked at Acme)」を選択することができ、「友達(Friends)」は、ユーザ「B」を他のユーザに接続する「友達」エッジ306への参照であり、「勤務した(worked at)」は、ユーザ「B」の友達のユーザノード302に接続された「勤務した」エッジ306への参照であり、「Acme」は、会社「Acme」に対するコンセプトノード304への参照である。次いで、ソーシャルネットワーキングシステム20は、ソーシャルグラフ300内でユーザ「C」に対応するユーザノード302を、構造化クエリに対応するものとして識別するが、それは、ユーザ「C」に対するユーザノード302は「友達」エッジ306によってユーザ「B」に接続され、また「勤務した」エッジによって「ACME」に対応する識別されたコンセプトノード304に接続されているからである。次いで、ソーシャルネットワーキングシステム20は、選択された検索クエリに対応する他のソーシャルグラフ要素とともに、ユーザ「C」を列挙するか、または他の任意の形で参照する検索結果を生成する。特定の実施形態において、検索結果は、1または複数のエッジ306によって識別されたユーザノード302または識別されたコンセプトノード304に接続されているユーザノード302またはコンセプトノード304への参照を含む。本開示は特定の様式で構造化クエリに対応する特定の検索結果を生成することを説明しているが、本開示は、好適な様式で構造化クエリに対応する好適な検索結果を生成することも企図している。
特定の実施形態において、ソーシャルネットワーキングシステム20は、第1のユーザ
(すなわち、クエリを実行しているユーザ)に対応するユーザノード302の分離度のしきい値の範囲内のターゲットノード(すなわち、ユーザノード302またはコンセプトノード304)への参照を含む検索結果のみを生成することのみができる。分離度のしきい値は、例えば、1、2、3、またはすべてであってよい。本開示は特定の様式で検索結果を生成することを説明しているが、本開示は、好適な様式で検索結果を生成することも企図している。
図12は、プライバシ設定に基づき構造化検索クエリに対する検索結果をフィルタ処理するための例示的な方法1200を示している。この方法はステップ1210から始まり、そこで、ソーシャルネットワーキングシステム20は、複数のノードおよびそれらのノードを接続する複数のエッジ306を含むソーシャルグラフ300にアクセスする。これらのノードは、第1のユーザノード302および複数の第2のノード(1または複数のユーザノード302、コンセプトノード304、またはこれらの組み合わせ)を含む。それぞれの第2のノードは、第2のノードに接続されているそれぞれのエッジ306の可視性を定義するプライバシ設定に関連付けられる。ステップ1220で、ソーシャルネットワーキングシステム20は、1または複数の第2のノードから選択された1または複数ノードおよび複数のエッジ306から選択された1または複数のエッジ306への参照を含む構造化クエリを第1のユーザから受信する。ステップ1230で、ソーシャルネットワーキングシステム20は、構造化クエリに対応する1または複数のターゲットノードを識別する。それぞれのターゲットノードは、選択されたエッジ306の少なくとも1つによって選択されたノードの少なくとも1つに接続されている複数の第2のノードのうちの第2のノードであってよい。ステップ1240で、ソーシャルネットワーキングシステム20は、第1のユーザにとって可視である可視性を有する一連の選択されたノードおよび選択されたエッジ306によってソーシャルグラフ300内の第1のユーザノード302に接続されているそれぞれのターゲットノードヘの参照を含む検索結果を生成する。さらに、生成された検索結果は、第1のユーザノード302の分離度のしきい値の範囲内に存在するターゲットノードのみを含む。特定の実施形態において、適切な場合に、図12の方法の1または複数のステップを繰り返す。本開示では図12の方法の特定のステップを特定の順序で生じさせるものとして説明し図示しているが、本開示は、好適な順序で生じさせる図12の方法の好適なステップを企図している。さらに、本開示では図12の方法の特定のステップを実行する特定の構成要素、デバイス、またはシステムを説明し図示しているが、本開示は、図12の方法の好適なステップを実行する好適な構成要素、デバイス、またはシステムの好適な組み合わせを企図している。
システムおよび方法
図13は、例示的なコンピュータシステム1300を示している。特定の実施形態において、1または複数のコンピュータシステム1300は、本明細書で説明されている、または図示されている1または複数の方法の1または複数のステップを実行する。特定の実施形態において、1または複数のコンピュータシステム1300は、本明細書で説明されているか、または図示されている機能を提供する。特定の実施形態において、1または複数のコンピュータシステム1300上で動作しているソフトウェアは、本明細書で説明されているか、または図示されている1または複数の方法の1または複数のステップを実行するか、または本明細書で説明されているか、または図示されている機能を提供する。特定の実施形態は、1または複数のコンピュータシステム1300の1または複数の部分を含む。
本開示では、好適な数のコンピュータシステム1300を企図している。本開示では、好適な物理的形態をとるコンピュータシステム1300を企図している。例えば、限定されるものでないが、コンピュータシステム1300は、組み込み型コンピュータシステム、システムオンチップ(SOC)、シングルボードコンピュータシステム(SBC)(例
えば、コンピュータオンモジュール(COM)またはシステムオンモジュール(SOM))、デスクトップコンピュータシステム、ラップトップもしくはノートブックコンピュータシステム、対話型キオスク、メインフレーム、コンピュータシステム網、携帯電話、携帯情報端末(PDA)、サーバ、タブレットコンピュータシステム、またはこれらの2もしくはそれ以上の組み合わせであってよい。適宜、コンピュータシステム1300は、1または複数のコンピュータシステム1300を含むか、または一体型もしくは分散型であるか、または複数の場所にまたがるか、または複数のマシンにまたがるか、または複数のデータセンタにまたがるか、または1もしくは複数のネットワーク内に1もしくは複数のクラウド構成要素を含む、クラウド内に常駐する。適宜、1または複数のコンピュータシステム1300は、実質的に空間的な、または時間的な制限を受けることなく、本明細書で説明されている、または図示されている1または複数の方法の1または複数のステップを実行する。例えば、限定されるものでないが、1または複数のコンピュータシステム1300は、リアルタイムで、またはバッチモードで、本明細書で説明されている、または図示されている1または複数の方法の1または複数のステップを実行する。適宜、1または複数のコンピュータシステム1300は、異なる時点において、または異なる位置において、本明細書で説明されている、または図示されている1または複数の方法の1または複数のステップを実行する。
特定の実施形態において、コンピュータシステム1300は、プロセッサ1302、メモリ1304、ストレージ1306、入出力(I/O)インタフェース1308、通信インタフェース1310、およびバス1312を含む。本開示では、特定の構成で特定の数の特定の構成要素を有する特定のコンピュータシステムを説明し、例示しているが、本開示は、好適な構成で好適な数の好適な構成要素を有する好適なコンピュータシステムを企図している。
特定の実施形態において、プロセッサ1302は、コンピュータプログラムを構成する命令などの、命令を実行するためのハードウェアを含む。例えば、限定されるものでないが、命令を実行するために、プロセッサ1302は、内部レジスタ、内部キャッシュ、メモリ1304、またはストレージ1306から命令を取り出し(またはフェッチし)、それらの命令を復号して実行し、次いで、1または複数の結果を内部レジスタ、内部キャッシュ、メモリ1304、またはストレージ1306に書き込む。特定の実施形態において、プロセッサ1302は、データ、命令、またはアドレス用の1または複数の内部キャッシュを含む。本開示では、適宜、好適な数の好適な内部キャッシュを含むプロセッサ1302を企図している。例えば、限定されるものでないが、プロセッサ1302は、1または複数の命令キャッシュ、1または複数のデータキャッシュ、および1または複数の変換索引バッファ(TLB)を含む。命令キャッシュ内の命令は、メモリ1304もしくはストレージ1306内の命令のコピーとすることができ、命令キャッシュは、プロセッサ1302による命令の取り出しを高速化する。データキャッシュ内のデータは、操作するためのプロセッサ1302で実行する命令、プロセッサ1302で実行する後続の命令によるアクセスのため、またはメモリ1304もしくはストレージ1306に書き込むためプロセッサ1302で実行された前の命令の結果、または他の好適なデータに対する、メモリ1304もしくはストレージ1306内のデータのコピーとする。データキャッシュは、プロセッサ1302による読み出しまたは書き込みオペレーションを高速化する。TLBは、プロセッサ1302用の仮想アドレス変換を高速化する。特定の実施形態において、プロセッサ1302は、データ、命令、またはアドレス用の1または複数の内部レジスタを含む。本開示では、適宜、好適な数の好適な内部レジスタを含むプロセッサ1302を企図している。適宜、プロセッサ1302は、1または複数の算術論理演算ユニット(ALU)を含むか、またはマルチコアプロセッサであるか、または1もしくは複数のプロセッサ1302を含む。本開示では特定のプロセッサを説明し、例示しているが、本開示は、任意の好適なプロセッサを企図している。
特定の実施形態において、メモリ1304は、プロセッサ1302が実行する命令またはプロセッサが操作するデータを記憶するためのメインメモリを含む。例えば、限定されるものでないが、コンピュータシステム1300は、ストレージ1306または別のソース(例えば、別のコンピュータシステム1300など)から命令をメモリ1304にロードする。次いで、プロセッサ1302は、メモリ1304から命令を内部レジスタもしくは内部キャッシュにロードする。命令を実行するために、プロセッサ1302は、内部レジスタもしくは内部キャッシュから命令を取り出して、復号する。命令の実行中もしくは実行後に、プロセッサ1302は、1または複数の結果(中間結果もしくは最終結果とする)を内部レジスタまたは内部キャッシュに書き込む。次いで、プロセッサ1302は、これらの結果のうちの1または複数をメモリ1304に書き込む。特定の実施形態において、プロセッサ1302は、1または複数の内部レジスタもしくは内部キャッシュまたはメモリ1304にある命令のみを実行し(ストレージ1306または他の場所とは反対に)、1または複数の内部レジスタもしくは内部キャッシュまたはメモリ1304にあるデータのみを操作する(ストレージ1306または他の場所とは反対に)。1または複数のメモリバス(それぞれアドレスバスおよびデータバスを含む)は、プロセッサ1302をメモリ1304に結合する。バス1312は、後述のように、1または複数のメモリバスを含んでいてもよい。特定の実施形態において、1または複数のメモリ管理ユニット(MMU)が、プロセッサ1302とメモリ1304との間に置かれ、プロセッサ1304によって要求されたメモリ1302へのアクセスを円滑にする。特定の実施形態において、メモリ1304は、ランダムアクセスメモリ(RAM)を含む。このRAMは、適宜、揮発性メモリであってよい。適宜、このRAMはダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であってよい。さらに、適宜、このRAMはシングルポートまたはマルチポートRAMであってよい。本開示では、好適なRAMを企図する。メモリ1304は、適宜、1または複数のメモリ1304を含む。本開示では特定のメモリを説明し、例示しているが、本開示は、任意の好適なメモリを企図している。
特定の実施形態において、ストレージ1306は、データもしくは命令用の大容量ストレージを含む。例えば、限定されるものでないが、ストレージ1306は、ハードディスクドライブ(HDD)、フロッピー(登録商標)ディスクドライブ、フラッシュメモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサルシリアルバス(USB)ドライブ、またはこれらの2もしくはそれ以上の組み合わせを含む。ストレージ1306は、適宜、取り外し可能または取り外し不可能な(または固定)媒体を含む。適宜、ストレージ1306は、コンピュータシステム1300に内蔵もしくは外付けとする。特定の実施形態において、ストレージ1306は、不揮発性ソリッドステートメモリである。特定の実施形態において、ストレージ1306は、リードオンリーメモリ(ROM)を含む。適宜、このROMは、マスクプログラムROM、プログラム可能ROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的消去再書き込みROM(EAROM)、またはフラッシュメモリ、またはこれらの2もしくはそれ以上の組み合わせとする。本開示では、好適な物理的形態をとる大容量ストレージ1306を企図している。ストレージ1306は、適宜、プロセッサ1302とストレージ1306との間の通信を円滑にする1または複数のストレージ制御ユニットを含む。適宜、ストレージ1306は、1または複数のストレージ1306を含む。本開示では特定のストレージを説明し、例示しているが、本開示は、任意の好適なストレージを企図している。
特定の実施形態において、I/Oインタフェース1308は、コンピュータシステム1300と1または複数のI/Oデバイスとの間の通信用のハードウェア、ソフトウェア、または1もしくは複数のインタフェースを備えるハードウェアとソフトウェアの両方を含む。適宜、コンピュータシステム1300は、これらのI/Oデバイスのうち1または複
数を含む。これらのI/Oデバイスのうちの1または複数を使用することで、人とコンピュータシステム1300との間の通信が可能になる。例えば、限定されるものでないが、I/Oデバイスは、キーボード、キーパッド、マイクロホン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の好適なI/Oデバイス、またはこれらのうちの2もしくはそれ以上の組み合わせを含む。I/Oデバイスは、1または複数のセンサを含む。本開示では、好適なI/Oデバイスおよびそれらに適したI/Oインタフェース1308を企図している。適宜、I/Oインタフェース1308は、プロセッサ1302がI/Oデバイスのうちの1または複数を駆動できるようにする1または複数のデバイスもしくはソフトウェアドライバを含む。適宜、I/Oインタフェース1308は、1または複数のI/Oインタフェース1308を含む。本開示では特定のI/Oインタフェースを説明し、例示しているが、本開示は、任意の好適なI/Oインタフェースを企図している。
特定の実施形態において、通信インタフェース1310は、コンピュータシステム1300と1または複数の他のコンピュータシステム1300または1もしくは複数のネットワークとの間の通信(例えば、パケットベースの通信など)用のハードウェア、ソフトウェア、または1または複数のインタフェースを備えるハードウェアとソフトウェアの両方を含む。例えば、限定されるものでないが、通信インタフェース1310は、ネットワークインタフェースコントローラ(NIC)またはイーサネット(登録商標)もしくは他の有線ベースの、または無線NIC(WNIC)と通信するためのネットワークアダプタ、またはWi−Fiネットワークなどの、無線ネットワークと通信するための無線アダプタを含む。本開示では、好適なネットワークおよびそれに適した通信インタフェース1310を企図している。例えば、限定されるものでないが、コンピュータシステム1300は、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、またはインターネットの1または複数の部分、またはこれらのうちの2もしくはそれ以上の組み合わせと通信する。これらのネットワークのうちの1または複数の1または複数の部分を有線もしくは無線とする。例えば、限定されるものでないが、コンピュータシステム1300は、無線PAN(WPAN)(例えば、BLUETOOTH(登録商標)WPANなど)、Wi−Fiネットワーク、Wi−MAXネットワーク、携帯電話ネットワーク(例えば、GSM(登録商標)(Global System for Mobile Communications)ネットワークなど)、または他の好適な無線ネットワーク、またはこれらのうちの2もしくはそれ以上の組み合わせと通信する。適宜、コンピュータシステム1300は、これらのネットワークに好適な通信インタフェース1310を含む。通信インタフェース1310は、適宜、1または複数の通信インタフェース1310を含む。本開示では特定の通信インタフェースを説明し、例示しているが、本開示は、任意の好適な通信インタフェースを企図している。
特定の実施形態において、バス1312は、コンピュータシステム1300の構成要素を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。例えば、限定されるものでないが、バス1312は、AGP(Accelerated Graphics Port)または他のグラフィックスバス、EISA(Enhanced Industry Standard Architecture)バス、フロントサイドバス(FSB)、HT(HYPERTRANSPORT)相互接続、ISA(Industry
Standard Architecture)バス、インフィニバンド相互接続、LPC(Low−Pin−Count)バス、メモリバス、MCA(Micro Channel Architecture)バス、PCI(Peripheral Component Interconnect)バス、PCIe(PCI−Express)バス、SATA(Serial Advanced Technology Attachment)バス、VLB(Video Electronics Standards A
ssociationローカル)バス、または他の好適なバス、またはこれらのうちの2もしくは複数のものとの組み合わせを含む。バス1312は、適宜、1または複数のバス1312を含む。本開示では特定のバスを説明し、例示しているが、本開示は、任意の好適なバスもしくは相互接続を企図している。
ここで、非一時的コンピュータ可読記憶媒体への参照は、適宜、半導体ベースの、または他の集積回路(IC)(例えば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向けIC(ASIC)など)、ハードディスクドライブ(HDD)、ハイブリッドハードドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピーディスク、フロッピーディスクドライブ(FDD)、磁気テープ、ホログラフィック記憶媒体、ソリッドステートドライブ(SSD)、RAMドライブ、セキュアデジタル(SECURE DIGITAL)カード、SECURE DIGITALドライブ、または別の好適な非一時的コンピュータ可読記憶媒体、またはこれらの好適な組み合わせを含む。非一時的コンピュータ可読記憶媒体は、適宜、揮発性、不揮発性、または揮発性と不揮発性との組み合わせとする。
本開示では、好適なストレージを実装する1または複数のコンピュータ可読記憶媒体を企図している。特定の実施形態において、コンピュータ可読記憶媒体は、適宜、プロセッサ1302の1または複数の部分(例えば、1または複数の内部レジスタもしくはキャッシュなど)、メモリ1304の1または複数の部分、ストレージ1306の1または複数の部分、またはこれらの組み合わせを実装する。特定の実施形態において、コンピュータ可読ストレージメディアは、RAMまたはROMを実装する。特定の実施形態において、コンピュータ可読記憶媒体は、揮発性もしくは永続的メモリを実装する。特定の実施形態において、1または複数のコンピュータ可読記憶媒体は、ソフトウェアを具現化する。ここで、ソフトウェアへの参照は、適宜、1または複数のアプリケーション、バイトコード、1または複数のコンピュータプログラム、1または複数の実行可能ファイル、1または複数の命令、ロジック、機械語コード、1または複数のスクリプト、またはソースコードを包含し、またその逆も言える。特定の実施形態において、ソフトウェアは、1または複数のアプリケーションプログラミングインタフェース(API)を含む。本開示では、好適なプログラミング言語またはプログラミング言語の組み合わせで書かれた、または他の任意の形で表現された好適なソフトウェアを企図している。特定の実施形態において、ソフトウェアは、ソースコードまたはオブジェクトコードとして表される。特定の実施形態において、ソフトウェアは、例えば、C、Perl、またはその好適な拡張言語などの、ハイレベルプログラミング言語で表現される。特定の実施形態において、ソフトウェアは、アセンブリ言語(または機械語コード)などの、ローレベルプログラミング言語で表現される。特定の実施形態において、ソフトウェアは、JAVAで表現される。特定の実施形態において、ソフトウェアは、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、または他の好適なマークアップ言語で表現される。
図14は、例示的なネットワーク環境1400を示している。本開示では、好適なネットワーク環境1400を企図する。例えば、限定されるものでないが、本開示では、クライアントサーバモデルを実装するネットワーク環境1400を説明し、図示しているが、本開示は、適宜、ピアツーピアであるネットワーク環境1400の1または複数の部分を企図している。特定の実施形態は、1または複数のネットワーク環境1400内で全体としてまたは一部だけ動作する。特定の実施形態において、ネットワーク環境1400の1または複数は、本明細書で説明されているか、または図示されている機能を提供する。特定の実施形態は、ネットワーク環境1400の1または複数の部分を含む。ネットワーク環境1400は、1または複数のサーバ1420および1または複数のクライアント1430を互いに結合するネットワーク1410を備える。本開示では、好適なネットワーク1410を企図する。例えば、限定されるものでないが、ネットワーク1410の1また
は複数の部分は、アドホックネットワーク、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、無線LAN(WLAN)、ワイドエリアネットワーク(WAN)、無線WAN(WWAN)、メトロポリタンエリアネットワーク(MAN)、インターネットの一部、公衆交換電話網(PSTN)の一部、携帯電話網、またはこれらのネットワークの2以上のネットワークの組み合わせを含む。ネットワーク1410は、1または複数のネットワーク1410を含む。
リンク1450は、サーバ1420およびクライアント1430をネットワーク1410に、または相互に結合する。本開示では、好適なリンク1450を企図する。例えば、限定されるものでないが、1または複数のリンク1450は、それぞれ、1または複数の有線接続(例えば、デジタル加入者回線(DSL)またはデータオーバーケーブルサービスインタフェース仕様(DOCSIS)など)、無線接続(例えば、Wi−FiまたはWiMAX(Worldwide Interoperability for Microwave Access)など)、または光リンク(例えば、同期型光ネットワーク(SONET)または同期デジタルハイアラキー(SDH)など)1450を含む。特定の実施形態において、1または複数のリンク1450は、それぞれ、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、MAN、通信ネットワーク、衛星ネットワーク、インターネットの一部、または別のリンク1450、または2以上のそのようなリンク1450の組み合わせを含む。リンク1450は、ネットワーク環境1400全体を通して必ずしも同一でなくてよい。1または複数の第1のリンク1450は、1または複数の第2のリンク1450と1または複数の点で異なる。
本開示では、好適なサーバ1420を企図する。例えば、限定されるものでないが、1または複数のサーバ1420は、それぞれ、1または複数の広告サーバ、アプリケーションサーバ、カタログサーバ、通信サーバ、データベースサーバ、交換サーバ、ファクスサーバ、ファイルサーバ、ゲームサーバ、ホームサーバ、メールサーバ、メッセージサーバ、ニュースサーバ、ネームまたはDNSサーバ、プリントサーバ、プロキシサーバ、サウンドサーバ、スタンドアロンサーバ、ウェブサーバ、またはウェブフィードサーバを含む。特定の実施形態において、サーバ1420は、サーバ1420の機能を提供するためのハードウェア、ソフトウェア、またはその両方を含む。例えば、限定されるものでないが、ウェブサーバとして動作するサーバ1420は、ウェブページまたはウェブページの要素を含むウェブサイトをホストすることができ、ホストするための適切なハードウェア、ソフトウェア、またはその両方を含む。特定の実施形態において、ウェブサーバは、リクエストがあったときにウェブページに対して、HTMLまたは他の好適なファイルをホストするか、またはファイルを動的に作成もしくは構成する。クライアント1430からのハイパーテキスト転送プロトコル(HTTP)または他のリクエストに応答して、ウェブサーバは、1または複数のそのようなファイルをクライアント1430に伝達する。別の例として、メールサーバとして動作するサーバ1420は、1または複数のクライアント1430に電子メールサービスを提供する。別の例として、データベースサーバとして動作するサーバ1420は、1または複数のデータストア(例えば以下で説明されているデータストア1440など)と双方向に対話するためのインタフェースを提供する。適宜、サーバ1420は、1または複数のサーバ1420を含むか、または一体型もしくは分散型であるか、または複数の場所にまたがるか、または複数のマシンにまたがるか、または複数のデータセンタにまたがるか、または1もしくは複数のネットワーク内に1もしくは複数のクラウドコンポーネントを含む、クラウド内に常駐する。
特定の実施形態において、1または複数のリンク1450は、サーバ1420を1または複数のデータストア1440に結合する。データストア1440は、好適な任意の情報を記憶することができ、データストア1440のコンテンツは、好適な方法で編成される
。例えば、限定されるものでないが、データストア1440のコンテンツは、多次元データベース、フラットデータベース、階層型データベース、ネットワークデータベース、オブジェクト指向データベース、関係データベース、XMLデータベース、または他の好適なデータベース、またはこれらのうちの2以上の組み合わせとして記憶する。データストア1440(またはそれに結合されたサーバ1420)は、データストア1440のコンテンツを管理するためにデータベース管理システムまたは他のハードウェアもしくはソフトウェアを含む。データベース管理システムは、読み出しおよび書き込みオペレーションを実行する、データを削除もしくは消去する、データ複製を実行する、データストア1440のコンテンツについてクエリまたは検索を実行する、またはデータストア1440への他のアクセスを提供する。
特定の実施形態において、1または複数のサーバ1420は、それぞれ、1または複数の検索エンジン1422を含む。検索エンジン1422は、検索エンジン1422の機能を提供するためのハードウェア、ソフトウェア、またはその両方を含む。例えば、限定されるものでないが、検索エンジン1422は、検索エンジン1422で受信された検索クエリに応答してネットワークリソースを識別する1または複数の検索アルゴリズム、識別されたネットワークリソースをランク付けする1または複数のランク付けアルゴリズム、または識別されたネットワークリソースを要約する1または複数の要約アルゴリズムを実装し得る。特定の実施形態において、検索エンジン1422によって実装されるランク付けアルゴリズムは、適宜検索クエリと選択されたユニフォームリソースロケータ(URL)との対から構築された学習データの集合からこのランク付けアルゴリズムが自動的に取得し得る、機械学習によるランク付け公式を使用する。
特定の実施形態において、1または複数のサーバ1420は、それぞれ、1または複数のデータモニタ/コレクタ1424を含む。データモニタ/コレクション1424は、データコレクタ/コレクタ1424の機能を提供するためのハードウェア、ソフトウェア、またはその両方を含む。例えば、限定されるものでないが、サーバ1420におけるデータモニタ/コレクタ1424は、サーバ1420でネットワーク通信量データを監視して収集し、ネットワーク通信量データを1または複数のデータストア1440に記憶する。特定の実施形態において、サーバ1420または別のデバイスは、適宜、ネットワーク通信量データから検索クエリと選択されたURLの対を抽出する。
本開示では、好適なクライアント1430を企図する。クライアント1430では、クライアント1430におけるユーザがネットワーク1410、サーバ1420、または他のクライアント1430にアクセスするか、またはこれらと他の任意の方法で通信する。例えば、限定されるものでないが、クライアント1430は、MICROSOFT INTERNET EXPLORERまたはMOZILLA FIREFOXなどの、ウェブブラウザを有することができ、またGOOGLE TOOLBARまたはYAHOO TOOLBARなどの、1または複数のアドオン、プラグイン、または他の拡張機能を有する。クライアント1430は、クライアント1430の機能を提供するためのハードウェア、ソフトウェア、またはその両方を含む電子デバイスであってよい。例えば、限定されるものでないが、クライアント1430は、適宜、組み込み型コンピュータシステム、SOC、SBC(例えば、COMまたはSOMなど)、デスクトップコンピュータシステム、ラップトップもしくはノートブックコンピュータシステム、対話型キオスク、メインフレーム、コンピュータシステム網、携帯電話、PDA、ネットブックコンピュータシステム、サーバ、タブレットコンピュータシステム、またはこれらの2もしくはそれ以上の組み合わせであってよい。適宜、クライアント1430は、1または複数のクライアント1430を含むものとしてよく、または一体型もしくは分散型であるか、または複数の場所にまたがるか、または複数のマシンにまたがるか、または複数のデータセンタにまたがるか、または1もしくは複数のネットワーク内に1もしくは複数のクラウドコンポーネント
を含む、クラウド内に常駐する。
その他の事項
本明細書では、「または」、「もしくは」は、特に断りのない限り、または文脈上そうでないことが示されていない限り、排他的でなく、包含的である。したがって、本明細書では、「AまたはB」、「AもしくはB」は、特に断りのない限り、または文脈上そうでないことが示されていない限り、「A、B、またはその両方」、「A、B、もしくはその両方」を意味する。さらに、「および」は、特に断りのない限り、または文脈上そうでないことが示されていない限り、連帯である。したがって、本明細書では、「AおよびB」は、特に断りのない限り、または文脈上そうでないことが示されていない限り、「連帯的にAおよびB」を意味する。さらに、英語原文中の「a」、「an」、または「the」が付いている語に対して日本語で「1つの」が付いていない語は、特に断りのない限り、または文脈上そうでないことが示されていない限り、「1または複数」を意味することを意図している。したがって、本明細書では、英語原文の「an A」、「the A」に対応する日本語の「A」、「そのA」は、特に断りのない限り、または文脈上そうでないことが示されていない限り、「1または複数のA」を意味する。
本開示は、当業者であれば理解されるであろう本明細書の例示的な実施形態へのすべての変更、代替、変形、改変、および修正を包含する。さらに、本開示では明細書の各実施形態を特定の構成要素、要素、機能、オペレーション、またはステップを含むものとして説明し、図示しているが、これらの実施形態はいずれも、当業者であれば理解されるであろう本明細書の任意の箇所で説明されるか、または図示されている構成要素、要素、機能、オペレーション、またはステップのうちのいずれかの組み合わせまたは置換を含む。さらに、特定の機能を実行するように適合されるか、配置されるか、そのような能力を有するか、構成されているか、使用可能にされているか、動作可能であるか、そのような働きをする付属の請求項における装置もしくはシステムまたは装置もしくはシステムの構成要素への参照は、その装置、システム、構成要素を、それがまたはその特定の機能が作動されるか、有効にされるか、または解除されるか否かに関係なく、その装置、システム、または構成要素がそうするように適合されるか、そのように配置されるか、そのような能力を有するか、そのように構成されているか、そのように使用可能にされるか、そのように動作可能であるか、またはそのように働く限り、包含する。