特許第6208317号(P6208317)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ フェイスブック,インク.の特許一覧

特許6208317オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け
<>
  • 特許6208317-オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け 図000002
  • 特許6208317-オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け 図000003
  • 特許6208317-オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け 図000004
  • 特許6208317-オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け 図000005
  • 特許6208317-オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け 図000006
  • 特許6208317-オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け 図000007
  • 特許6208317-オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け 図000008
  • 特許6208317-オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け 図000009
  • 特許6208317-オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6208317
(24)【登録日】2017年9月15日
(45)【発行日】2017年10月4日
(54)【発明の名称】オンライン・ソーシャル・ネットワークにおける検索クエリのための静的ランク付け
(51)【国際特許分類】
   G06F 17/30 20060101AFI20170925BHJP
   G06Q 50/00 20120101ALI20170925BHJP
【FI】
   G06F17/30 380E
   G06Q50/00 300
【請求項の数】18
【全頁数】41
(21)【出願番号】特願2016-232697(P2016-232697)
(22)【出願日】2016年11月30日
(62)【分割の表示】特願2016-516046(P2016-516046)の分割
【原出願日】2014年7月28日
(65)【公開番号】特開2017-76417(P2017-76417A)
(43)【公開日】2017年4月20日
【審査請求日】2017年7月21日
(31)【優先権主張番号】13/954,695
(32)【優先日】2013年7月30日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】508178054
【氏名又は名称】フェイスブック,インク.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】スチュワート、アラン
【審査官】 山本 俊介
(56)【参考文献】
【文献】 国際公開第2012/117234(WO,A1)
【文献】 米国特許第6944609(US,B1)
【文献】 米国特許出願公開第2012/0185472(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
G06Q 10/00−99/00
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のコンピューティング・デバイスが、
オンライン・ソーシャル・ネットワークの第1のユーザのクライアント・システムから第1のクエリを受け取る工程であって、前記第1のクエリは複数のクエリ・タイプのうちの第1のクエリ・タイプのクエリである、工程と、
1つまたは複数のデータ・ストアの前記第1のクエリにマッチするオブジェクトからなるオブジェクトのリストを識別する識別工程であって、各データ・ストアは、複数のオブジェクト・タイプのうちの特定のオブジェクト・タイプの1つまたは複数のオブジェクトを記憶しており、各オブジェクトは、少なくとも部分的には前記オブジェクトの所定の静的ランクに基づき識別され、前記所定の静的ランクは静的スコア付けアルゴリズムに基づき計算され、各オブジェクトに対する前記静的ランクは、少なくとも部分的には前記第1のクエリ・タイプに基づく、工程と、
終スコア付けアルゴリズムに基づき、識別された前記オブジェクトの各々に対する最終ランクを計算する工程と、
識別された前記オブジェクトの各々の前記静的ランクと前記最終ランクとの比較に基づいて、前記静的スコア付けアルゴリズムを修正する工程であって、前記静的スコア付けアルゴリズムは、識別された前記オブジェクトの前記静的ランクと前記最終ランクとの間の差を減少させるように修正される、工程と、
を行う方法。
【請求項2】
前記識別工程は、
各データ・ストアから前記第1のクエリにマッチする指定数のオブジェクトを取り出す工程であって、各データ・ストアに対するオブジェクトの前記指定数は、前記データ・ストアによって記憶されているオブジェクトのオブジェクト・タイプに基づく、工程と、
前記1つまたは複数のデータ・ストアからの取り出された前記オブジェクトを集約する工程と、を含む請求項に記載の方法。
【請求項3】
少なくとも部分的には修正された前記静的スコア付けアルゴリズムに基づき、前記データ・ストアのうちの1つまたは複数に対する前記指定数のオブジェクトのうちの1つまたは複数を修正する工程、をさらに備える請求項に記載の方法。
【請求項4】
第1の構文解析アルゴリズムを使用して前記第1のクエリを構文解析し、前記第1のクエリに基づいてクエリ・コマンドを生成する工程であって、前記クエリ・コマンドは、1つまたは複数のクエリ制約を含み、各クエリ制約は、前記第1の構文解析アルゴリズムによって指定される指定オブジェクト・タイプの指定数のオブジェクトについてのクエリ制約である、工程をさらに備える、請求項に記載の方法。
【請求項5】
前記識別工程は、
前記第1のクエリに対応する前記クエリ・コマンドの前記クエリ制約の前記指定オブジェクト・タイプのオブジェクトを記憶している1つまたは複数のデータ・ストアにアクセスする工程と、
前記第1のクエリに対応する前記クエリ・コマンドの前記クエリ制約の少なくとも一部分にマッチする前記データ・ストアの1つまたは複数のオブジェクトを識別する工程と、を含む、請求項に記載の方法。
【請求項6】
前記指定オブジェクト・タイプは、ユーザ、フォト、投稿、ウェブページ、アプリケーション、ロケーション、およびユーザ・グループからなる群から選択される、請求項に記載の方法。
【請求項7】
各データ・ストアは、ユーザ・データ・ストア、フォト・データ・ストア、投稿データ・ストア、ウェブページ・データ・ストア、アプリケーション・データ・ストア、ロケーション・データ・ストア、およびユーザ・グループ・データ・ストアからなる群から選択される、請求項に記載の方法。
【請求項8】
識別された前記オブジェクトのうちの1つまたは複数のオブジェクトに対する1つまたは複数の静的ランクを各オブジェクトの前記静的ランクと前記最終ランクとの比較に基づき修正する静的ランク修正工程をさらに備える、請求項1に記載の方法。
【請求項9】
前記静的ランク修正工程は、
識別された前記オブジェクトの各々について、該オブジェクトの前記所定の静的ランクと該オブジェクトの計算された前記最終ランクとの間の差を決定する工程と、
決定された前記差に基づいて、前記オブジェクトのうちの1つまたは複数の前記静的ランクのうちの1つまたは複数を修正する工程と、
を含む、請求項に記載の方法。
【請求項10】
修正された前記静的スコア付けアルゴリズムに基づき識別された前記オブジェクトのうちの1つまたは複数のオブジェクトに対する1つまたは複数の修正された静的ランクを計算する工程、をさらに備える請求項1に記載の方法。
【請求項11】
各オブジェクトの前記所定の静的ランクは、前記静的スコア付けアルゴリズムに基づき計算される前記オブジェクトの所定の静的スコアに基づく、請求項1に記載の方法。
【請求項12】
各オブジェクトの前記最終ランクは、前記最終スコア付けアルゴリズムに基づき計算される前記オブジェクトの最終スコアに基づく、請求項1に記載の方法。
【請求項13】
複数のノードと前記複数のノードを接続する複数のエッジとを含むソーシャル・グラフにアクセスする工程をさらに備え、前記複数のノードのうちの2つのノードの間の前記エッジの各々は、前記2つのノードの間の一次の隔たりを表し、前記複数のノードは、
オンライン・ソーシャル・ネットワークの前記第1のユーザに対応する第1のノードと、
前記オンライン・ソーシャル・ネットワークに関連付けられている複数のオブジェクト
にそれぞれ対応する複数の第2のノードと、を含み、
前記第1のクエリは前記第1のノードに対応し、識別された前記オブジェクトの各々は、前記複数の第2のノードのうちの特定の第2のノードに対応する、請求項1に記載の方法。
【請求項14】
前記第1のクエリは、前記複数のノードからの1つまたは複数の選択されたノードと前記複数のエッジからの1つまたは複数の選択されたエッジとに対する参照を含む構造化クエリである、請求項13に記載の方法。
【請求項15】
前記第1のクエリは、1つまたは複数のn−グラムを含む非構造化テキスト・クエリである、請求項1に記載の方法。
【請求項16】
前記第1のクエリは、オンライン・ソーシャル・ネットワークのユーザからのアーカイブされたクエリを含む、請求項1に記載の方法。
【請求項17】
ソフトウェアを具現化する1つまたは複数の非一時的なコンピュータ可読記憶媒体であって、前記ソフトウェアは、実行されたとき、
オンライン・ソーシャル・ネットワークの第1のユーザのクライアント・システムから第1のクエリを受け取る工程であって、前記第1のクエリは複数のクエリ・タイプのうちの第1のクエリ・タイプのクエリである、工程と、
1つまたは複数のデータ・ストアの前記第1のクエリにマッチするオブジェクトからなるオブジェクトのリストを識別する識別工程であって、各データ・ストアは、複数のオブジェクト・タイプのうちの特定のオブジェクト・タイプの1つまたは複数のオブジェクトを記憶しており、各オブジェクトは、少なくとも部分的には前記オブジェクトの所定の静的ランクに基づき識別され、前記所定の静的ランクは静的スコア付けアルゴリズムに基づき計算され、各オブジェクトに対する前記静的ランクは、少なくとも部分的には前記第1のクエリ・タイプに基づく、工程と、
終スコア付けアルゴリズムに基づき、識別された前記オブジェクトの各々に対する最終ランクを計算する工程と、
識別された前記オブジェクトの各々の前記静的ランクと前記最終ランクとの比較に基づいて、前記静的スコア付けアルゴリズムを修正する工程であって、前記静的スコア付けアルゴリズムは、識別された前記オブジェクトの前記静的ランクと前記最終ランクとの間の差を減少させるように修正される、工程と、
を行うように動作可能である、媒体。
【請求項18】
1つまたは複数のプロセッサと、前記プロセッサに結合されており前記プロセッサによって実行可能な命令を含むメモリとを備えるシステムであって、前記プロセッサは、前記命令を実行するとき、
オンライン・ソーシャル・ネットワークの第1のユーザのクライアント・システムから第1のクエリを受け取る工程であって、前記第1のクエリは複数のクエリ・タイプのうちの第1のクエリ・タイプのクエリである、工程と、
1つまたは複数のデータ・ストアの前記第1のクエリにマッチするオブジェクトからなるオブジェクトのリストを識別する識別工程であって、各データ・ストアは、複数のオブジェクト・タイプのうちの特定のオブジェクト・タイプの1つまたは複数のオブジェクトを記憶しており、各オブジェクトは、少なくとも部分的には前記オブジェクトの所定の静的ランクに基づき識別され、前記所定の静的ランクは静的スコア付けアルゴリズムに基づき計算され、各オブジェクトに対する前記静的ランクは、少なくとも部分的には前記第1のクエリ・タイプに基づく、工程と、
終スコア付けアルゴリズムに基づき、識別された前記オブジェクトの各々に対する最終ランクを計算する工程と、
識別された前記オブジェクトの各々の前記静的ランクと前記最終ランクとの比較に基づいて、前記静的スコア付けアルゴリズムを修正する工程であって、前記静的スコア付けアルゴリズムは、識別された前記オブジェクトの前記静的ランクと前記最終ランクとの間の差を減少させるように修正される、工程と、
を行うように動作可能である、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般に、ソーシャル・グラフ、およびソーシャル・ネットワーキング環境内でオブジェクトを探して検索を実行することに関する。
【背景技術】
【0002】
ソーシャル・ネットワーキング・システム(ソーシャルネットワーキング・ウェブサイトを含むことができる)は、そのソーシャル・ネットワーキング・システムのユーザ(人または組織など)がそのソーシャル・ネットワーキング・システムと、およびそのソーシャル・ネットワーキング・システムを通じて互いに対話することを可能にすることができる。ソーシャル・ネットワーキング・システムは、ユーザからの入力を用いて、そのユーザに関連付けられているユーザ・プロフィールを作成して、ソーシャル・ネットワーキング・システム内に記憶することができる。ユーザ・プロフィールは、人口統計学的情報、通信チャネル情報、およびユーザの個人的な関心に関する情報を含むことができる。ソーシャル・ネットワーキング・システムは、ユーザからの入力を用いて、そのユーザと、ソーシャル・ネットワーキング・システムのその他のユーザとの関係のレコードを作成および記憶すること、ならびにサービス(たとえば、ウォール投稿、写真共有、イベント編成、メッセージング、ゲーム、または広告)を提供して、ユーザ同士の間における社会的な交流を容易にすることも可能である。
【0003】
ソーシャル・ネットワーキング・システムは、そのサービスに関連したコンテンツまたはメッセージを、1つまたは複数のネットワークを通じて、ユーザのモバイルまたはその他のコンピューティング・デバイスへ送信することができる。ユーザは、自分のユーザ・プロフィールおよびソーシャル・ネットワーキング・システム内のその他のデータにアクセスするためにソフトウェア・アプリケーションを自分のモバイルまたはその他のコンピューティング・デバイス上にインストールすることもできる。ソーシャル・ネットワーキング・システムは、ユーザにつながっているその他のユーザの集約されたストーリのニュース・フィードなど、ユーザに表示するためのコンテンツ・オブジェクトのパーソナライズされたセットを生成することができる。
【0004】
ソーシャル・グラフ分析は、ソーシャルな関係を、ノードおよびエッジから構成されているネットワーク理論の点から見る。ノードは、ネットワーク内の個々の行為主体を表し、エッジは、行為主体同士の間における関係を表す。結果として生じるグラフベースの構造は、しばしば非常に複雑である。多くのタイプのノード、およびノード同士をつなげるための多くのタイプのエッジが存在することが可能である。ソーシャル・グラフは、その最もシンプルな形態においては、調査されているすべてのノードの間における関連があるすべてのエッジのマップである。
【図面の簡単な説明】
【0005】
図1】ソーシャル・ネットワーキング・システムに関連付けられている例示的ネットワーク環境を示す図。
図2】例示的ソーシャル・グラフを示す図。
図3】ソーシャル・ネットワーキング・システムのオブジェクトを記憶するための例示的パーティション化を示す図。
図4】オンライン・ソーシャル・ネットワークの例示的ウェブページを示す図。
図5A】ソーシャル・ネットワークの例示的クエリを示す図。
図5B】ソーシャル・ネットワークの例示的クエリを示す図。
図6】検索クエリに対するオブジェクトの静的スコア付けを改善するための例示的方法を示す図。
図7】検索クエリの構文解析を改善するための例示的方法を示す図。
図8】例示的コンピュータ・システムを示す図。
【発明を実施するための形態】
【0006】
特定の実施形態では、ソーシャル・ネットワーキング・システムのユーザは、検索クエリを使用して、システムに関連付けられているオブジェクトを求めて検索することができる。
【0007】
特定の実施形態では、ソーシャル・ネットワーキング・システムは、データ・ストアに記憶されたオブジェクトの静的スコア/ランクを改善することによって、検索クエリの処理を改善することができる。ソーシャル・ネットワーキング・システムがクエリに応答してデータ・ストアからオブジェクトを取り出すとき、オブジェクトは、(たとえば、オブジェクトがどのようにインデックス処理されるかに基づいてよい)オブジェクトに関連付けられている所定の静的スコアまたは静的ランクに基づいて、取り出されることが可能である。次いで、すべてのデータ・ストアから取り出されたオブジェクトは、ソーシャル・ネットワーキング・システムによって、(様々なファクタ、たとえば、クエリに対する関連性、ソーシャル・グラフ・アフィニティ(親和性)、ユーザ履歴などに基づいて)集約されスコア付けされることが可能であり、次いで、これらの最終スコアまたは最終ランクは、問合せユーザへ表示される検索結果としてどのオブジェクトが生成されるかを決定するために使用されることが可能である。しかしながら、このプロセスは、十分な数の検索結果を生成するためにソーシャル・ネットワーキング・システムがデータ・ストアから過度のオブジェクトを取り出さなければならない場合に、非効率となり得る。このプロセスは、ユーザに対する検索結果を生成するときにソーシャル・ネットワーキング・システムによって決定された最終ランクにオブジェクトの静的ランクがより密接にマッチする場合に改善され得る。これにより、ソーシャル・ネットワーキング・システムが、クエリに応答して十分な数の検索結果を生成するために取り出される必要があるマッチするオブジェクトの数を減らすことを可能にすることができる。1つまたは複数のデータ・ストアにおけるインデックス処理されたオブジェクトの静的スコアを改善するために、ソーシャル・ネットワーキング・システムは、データ・ストアから取り出されたオブジェクトの静的スコアを、ユーザに対する検索結果を生成するためにソーシャル・ネットワーキング・システムによって計算された最終スコアと比較し、静的スコアが最終スコアにより密接にマッチするように、インデックス処理されたオブジェクトの静的スコア(または静的スコアを計算するために使用されるスコア付けアルゴリズム)を修正または調節することができる。たとえば、ソーシャル・ネットワーキング・システムは、アーカイブされた検索クエリのセットにアクセスし、これらのクエリによって取り出されたオブジェクトの静的スコアを最適化することができる。これは、様々なクエリまたはクエリ・タイプに関して行われ、その結果静的スコアが、様々なクエリに関して可能な限り密接に最終スコアにマッチするように最適化され得る。
【0008】
特定の実施形態では、ソーシャル・ネットワーキング・システムは、どのようにクエリ・コマンドが生成されるかを改善することによって、検索クエリの処理を改善することができる。クエリが構文解析されてクエリ・コマンドが生成されると、クエリ・コマンドは、1つまたは複数のオブジェクト・タイプの特定の数のオブジェクトを取り出すように指定することができる。取り出すべき各オブジェクト・タイプのオブジェクトの数は、クエリ・コマンドを生成するために使用される構文解析アルゴリズムの構文解析構成パラメータによって指定されてよい。次いで、取り出されたオブジェクトはスコア付け/ランク付けされてよく、上位N個のスコアのオブジェクトが問合せユーザに送られてよい。しかしながら、このプロセスは、上位N個のスコアのオブジェクトを取り出すためにソーシャル
・ネットワーキング・システムが特定のデータ・ストアから過度の1つまたは複数のオブジェクト・タイプを取り出さなければならない場合に、特に処理パワーの非効率的使用に関連して非効率となり得る。このプロセスは、最良の最終スコアを有するオブジェクトの一部またはすべてを取り出し、ユーザに送り返される生成された検索結果の品質が維持されることを可能にしながらも、各データ・ストアから取り出されるオブジェクトの数が減少されることが可能な場合に改善され得る。取り出されるオブジェクトの数を減少させるために、ソーシャル・ネットワーキング・システムは、各データ・ストアから取り出されたオブジェクトの数を、ソーシャル・ネットワーキング・システムによって計算されるそれらのオブジェクトに対する最終スコアと比較し、実質的に同じ品質の検索結果を維持しながらも、より少ないオブジェクトをクエリ・コマンドが要求するように構文解析アルゴリズムを修正することができる。たとえば、ソーシャル・ネットワーキング・システムは、アーカイブされた検索クエリのセットにアクセスし、これらのクエリによって取り出されたオブジェクトの最終スコアに基づいて、構文解析アルゴリズムを最適化することができる。アーカイブされたクエリは1つまたは複数のデータ・ストアにサブミットされてよく、それにより、構文解析アルゴリズムによってそれらのクエリに対して生成されたクエリ・コマンドによって指定された取り出すべきオブジェクトの数に基づいて、第1の数の結果を取り出すことができる。次いで、各取り出されたオブジェクトは、最終スコア/ランクを決定するようにスコア付けされてよく、次いで、最終スコア/ランクが、取り出されたオブジェクトの数と比較されて、上位N個のスコア付け結果のうちの十分な数を取り出しながらも、特定のオブジェクト・タイプについて取り出されるオブジェクトの数が減少されることが可能かどうかを決定することができる。可能な場合、構文解析アルゴリズムは、特定のクエリに応答して生成されたクエリ・コマンドが、より少ないオブジェクトまたはオブジェクト・タイプを取り出すことを指定するように、修正されてよい。
【0009】
図1は、ソーシャル・ネットワーキング・システムに関連付けられている例示的なネットワーク環境100を示している。ネットワーク環境100は、ネットワーク110によって互いにつながっているクライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサードパーティ・システム170を含む。図1は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の特定の構成を示しているが、本開示は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の任意の適切な構成を想定している。限定ではなく、例として、クライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサードパーティ・システム170のうちの複数は、ネットワーク110を迂回して、互いに直接つながることが可能である。別の例として、クライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサードパーティ・システム170のうちの複数は、物理的にまたは論理的に、全体としてまたは部分的に互いに同一場所に配置されることが可能である。その上、図1は、特定の数のクライアント・システム130、ソーシャル・ネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を示しているが、本開示は、任意の適切な数のクライアント・システム130、ソーシャル・ネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を想定している。限定ではなく、例として、ネットワーク環境100は、複数のクライアント・システム130、ソーシャル・ネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を含むことができる。
【0010】
本開示は、任意の適切なネットワーク110を想定している。限定ではなく、例として、ネットワーク110の1つまたは複数の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、無線LAN(WLAN)、ワイド・エリア・ネットワ
ーク(WAN)、無線WAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、セルラー電話ネットワーク、またはこれらのうちの複数の組合せを含むことができる。ネットワーク110は、1つまたは複数のネットワーク110を含むことができる。
【0011】
リンク150は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサードパーティ・システム170を通信ネットワーク110に、または互いに接続することができる。本開示は、任意の適切なリンク150を想定している。特定の実施形態においては、1つまたは複数のリンク150は、1つもしくは複数の有線リンク(たとえば、デジタル・サブスクライバ・ライン(DSL)もしくはデータ・オーバ・ケーブル・サービス・インタフェース仕様(DOCSIS)など)、無線リンク(たとえば、Wi−Fiもしくはワールドワイド・インターオペラビリティー・フォー・マイクロウェーブ・アクセス(WiMAX)など)、または光リンク(たとえば、同期光ネットワーク(SONET)もしくは同期デジタル階層(SDH)など)を含む。特定の実施形態においては、1つまたは複数のリンク150はそれぞれ、アド・ホック・ネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部分、PSTNの一部分、セルラー・テクノロジーベースのネットワーク、衛星通信テクノロジーベースのネットワーク、別のリンク150、または複数のそのようなリンク150の組合せを含む。リンク150は、ネットワーク環境100の全体を通じて必ずしも同じである必要はない。1つまたは複数の第1のリンク150は、1つまたは複数の点において1つまたは複数の第2のリンク150とは異なることが可能である。
【0012】
特定の実施形態においては、クライアント・システム130は、クライアント・システム130によって実装またはサポートされる適切な機能を実行することができる、ハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含む電子デバイスであることが可能である。限定ではなく、例として、クライアント・システム130は、デスクトップ・コンピュータ、ノートブック・コンピュータもしくはラップトップ・コンピュータ、ネットブック、タブレット・コンピュータなどのコンピュータ・システム、eブック・リーダ、GPSデバイス、カメラ、携帯情報端末(PDA)、ハンドヘルド電子デバイス、セルラー電話、スマートフォン、その他の適切な電子デバイス、またはそれらの任意の適切な組合せを含むことができる。本開示は、任意の適切なクライアント・システム130を想定している。クライアント・システム130は、クライアント・システム130のネットワーク・ユーザがネットワーク110にアクセスすることを可能にすることができる。クライアント・システム130は、自分のユーザがその他のクライアント・システム130のその他のユーザと通信することを可能にすることができる。
【0013】
特定の実施形態においては、クライアント130は、MICROSOFT INTERNET EXPLORER、GOOGLE CHROME、またはMOZILLA FIREFOXなどのウェブ・ブラウザ132を含むことができ、1つまたは複数のアドオン、プラグイン、またはTOOLBARもしくはYAHOO TOOLBARなどのその他の拡張を有することができる。クライアント・システム130のユーザは、ウェブ・ブラウザ132を特定のサーバ(サーバ162、またはサードパーティ・システム170に関連付けられているサーバなど)へ導くユニフォーム・リソース・ロケータ(URL)またはその他のアドレスを入力することができ、ウェブ・ブラウザ132は、ハイパー・テキスト転送プロトコル(HTTP)要求を生成して、そのHTTP要求をサーバに通信することができる。サーバは、そのHTTP要求を受け入れて、そのHTTP要求に応答して1つまたは複数のハイパー・テキスト・マークアップ言語(HTML)ファイルをクライアント・システム130に通信することができる。クライアント・システム130は、ユ
ーザに提示するためにサーバからのHTMLファイルに基づいてウェブページをレンダリングすることができる。本開示は、任意の適切なウェブページ・ファイルを想定している。限定ではなく、例として、ウェブページは、特定のニーズに従って、HTMLファイル、拡張可能ハイパー・テキスト・マークアップ言語(XHTML)ファイル、または拡張可能マークアップ言語(XML)ファイルからレンダリングすることができる。そのようなページは、限定ではなく、例として、JAVASCRIPT(登録商標)、JAVA(登録商標)、MICROSOFT SILVERLIGHTで書かれたスクリプトなどのスクリプト、AJAX(Asynchronous JAVASCRIPT(登録商標)and XML)などのマークアップ言語とスクリプトの組合せなどを実行することもできる。本明細書においては、ウェブページへの参照は、適切な場合には、(そのウェブページをレンダリングするためにブラウザが使用することができる)1つまたは複数の対応するウェブページ・ファイルを含み、その逆もまた同様である。
【0014】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークをホストすることができるネットワークアドレス可能なコンピューティング・システムであることが可能である。ソーシャル・ネットワーキング・システム160は、たとえば、ユーザ・プロフィール・データ、コンセプト・プロフィール・データ、ソーシャル・グラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、記憶すること、受け取ること、および送信することが可能である。ソーシャル・ネットワーキング・システム160は、ネットワーク環境100のその他のコンポーネントによって直接、またはネットワーク110を通じてアクセスされることが可能である。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のサーバ162を含むことができる。それぞれのサーバ162は、単一のサーバ、または複数のコンピュータもしくは複数のデータセンターにわたる分散サーバであることが可能である。サーバ162は、限定ではなく、例として、ウェブ・サーバ、ニュース・サーバ、メール・サーバ、メッセージ・サーバ、広告サーバ、ファイル・サーバ、アプリケーション・サーバ、Exchangeサーバ、データベース・サーバ、プロキシ・サーバ、本明細書において記述されている機能もしくはプロセスを実行するのに適している別のサーバ、またはそれらの任意の組合せなど、さまざまなタイプのものであることが可能である。特定の実施形態においては、それぞれのサーバ162は、サーバ162によって実装またはサポートされる適切な機能を実行するためのハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム164は、1つまたは複数のデータ・ストア164を含むことができる。データ・ストア164は、さまざまなタイプの情報を記憶するために使用されることが可能である。特定の実施形態においては、データ・ストア164内に記憶されている情報は、特定のデータ構造に従って編成されることが可能である。特定の実施形態においては、それぞれのデータ・ストア164は、リレーショナル・データベースであることが可能である。特定の実施形態は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、またはサードパーティ・システム170が、データ・ストア164内に記憶されている情報を管理すること、取り出すこと、修正すること、追加すること、または削除することを可能にするインタフェースを提供することができる。
【0015】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のソーシャル・グラフを1つまたは複数のデータ・ストア164内に記憶することができる。特定の実施形態においては、ソーシャル・グラフは、複数のノード(複数のユーザ・ノード(それぞれが、特定のユーザに対応している)、または複数のコンセプト・ノード(それぞれが、特定のコンセプトに対応している)を含むことができる)と、ノード同士をつなげる複数のエッジとを含むことができる。ソーシャル・ネットワーキン
グ・システム160は、オンライン・ソーシャル・ネットワークのユーザに、その他のユーザと通信および対話する能力を提供することができる。特定の実施形態においては、ユーザたちは、ソーシャル・ネットワーキング・システム160を通じてオンライン・ソーシャル・ネットワークに参加し、次いで、自分たちがつながりたいと望むソーシャル・ネットワーキング・システム160のその他の複数のユーザにつながり(すなわち、関係)を付加することができる。本明細書においては、「友達」という用語は、ユーザがソーシャル・ネットワーキング・システム160を通じて、つながり、関連付け、または関係を形成しているソーシャル・ネットワーキング・システム160のその他の任意のユーザを示すことができる。
【0016】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ソーシャル・ネットワーキング・システム160によってサポートされるさまざまなタイプのアイテムまたはオブジェクトに関してアクションを取る能力をユーザに提供することができる。限定ではなく、例として、それらのアイテムおよびオブジェクトは、ソーシャル・ネットワーキング・システム160のユーザが属することが可能であるグループもしくはソーシャル・ネットワーク、ユーザが関心を抱く可能性があるイベントもしくはカレンダー・エントリー、ユーザが使用することができるコンピュータベースのアプリケーション、ユーザがサービスを通じてアイテムを購入もしくは販売することを可能にするトランザクション、ユーザが実行することができる広告との対話、またはその他の適切なアイテムもしくはオブジェクトを含むことができる。ユーザは、ソーシャル・ネットワーキング・システム160において、またはサードパーティ・システム170の外部システム(ソーシャル・ネットワーキング・システム160とは別個のものであって、ネットワーク110を通じてソーシャル・ネットワーキング・システム160に結合されている)によって表されることが可能である任意のものと対話することができる。
【0017】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、さまざまなエンティティ同士をリンクできることが可能である。限定ではなく、例として、ソーシャル・ネットワーキング・システム160は、ユーザたちが互いに対話すること、ならびにサードパーティ・システム170もしくはその他のエンティティからのコンテンツを受け取ることを可能にすることができ、またはユーザたちがアプリケーション・プログラミング・インタフェース(API)もしくはその他の通信チャネルを通じてこれらのエンティティと対話することを可能にすることができる。
【0018】
特定の実施形態においては、サードパーティ・システム170は、1つもしくは複数のタイプのサーバ、1つもしくは複数のデータ・ストア、1つもしくは複数のインタフェース(APIを含むが、それには限定されない)、1つもしくは複数のウェブ・サービス、1つもしくは複数のコンテンツ・ソース、1つもしくは複数のネットワーク、または(たとえば、サーバが通信することができる)その他の任意の適切なコンポーネントを含むことができる。サードパーティ・システム170は、ソーシャル・ネットワーキング・システム160を運営しているエンティティとは異なるエンティティによって運営されることが可能である。しかしながら、特定の実施形態においては、ソーシャル・ネットワーキング・システム160およびサードパーティ・システム170は、ソーシャル・ネットワーキング・システム160またはサードパーティ・システム170のユーザにソーシャルネットワーキング・サービスを提供するために互いに連携して機能することができる。この意味において、ソーシャル・ネットワーキング・システム160は、サードパーティ・システム170などのその他のシステムがインターネットを通じてソーシャルネットワーキング・サービスおよび機能をユーザに提供するために使用することができるプラットフォーム、またはバックボーンを提供することができる。
【0019】
特定の実施形態においては、サードパーティ・システム170は、サードパーティ・コ
ンテンツ・オブジェクト・プロバイダを含むことができる。サードパーティ・コンテンツ・オブジェクト・プロバイダは、コンテンツ・オブジェクトの1つまたは複数のソースを含むことができ、それらのソースは、クライアント・システム130に通信されることが可能である。限定ではなく、例として、コンテンツ・オブジェクトは、ユーザにとって関心がある物またはアクティビティに関する情報、たとえば、映画の開始時刻、映画のレビュー、レストランのレビュー、レストランのメニュー、製品の情報およびレビュー、またはその他の適切な情報などを含むことができる。限定ではなく、別の例として、コンテンツ・オブジェクトは、インセンティブ・コンテンツ・オブジェクト、たとえば、クーポン、ディスカウント・チケット、ギフト券、またはその他の適切なインセンティブ・オブジェクトを含むことができる。
【0020】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160はまた、ユーザによって生成されたコンテンツ・オブジェクトを含み、それらのコンテンツ・オブジェクトは、ソーシャル・ネットワーキング・システム160とのユーザの対話を高めることができる。ユーザによって生成されたコンテンツは、ユーザがソーシャル・ネットワーキング・システム160に付加、アップロード、送信、または「投稿(ポスト)」することができる任意のものを含むことができる。限定ではなく、例として、ユーザは、クライアント・システム130からソーシャル・ネットワーキング・システム160へ投稿を通信する。投稿は、ステータス更新もしくはその他のテキスト・データ、ロケーション情報、写真、映像、リンク、音楽、またはその他の類似したデータもしくはメディアなどのデータを含むことができる。コンテンツは、ニュース・フィードまたはストリームなどの「通信チャネル」を通じてサードパーティによってソーシャル・ネットワーキング・システム160に付加されることも可能である。
【0021】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、さまざまなサーバ、サブシステム、プログラム、モジュール、ログ、およびデータ・ストアを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ウェブ・サーバ、アクション・ロガー、API要求サーバ、関連性およびランク付け・エンジン、コンテンツ・オブジェクト分類子、通知コントローラ、アクション・ログ、サードパーティ・コンテンツ・オブジェクト露出ログ、推測モジュール、認可/プライバシ・サーバ、検索モジュール、広告ターゲティング・モジュール、ユーザインタフェース・モジュール、ユーザ・プロフィール・ストア、つながりストア、サードパーティ・コンテンツ・ストア、またはロケーション・ストアのうちの1つまたは複数を含むことができる。ソーシャル・ネットワーキング・システム160は、適切なコンポーネント、たとえば、ネットワーク・インタフェース、セキュリティー・メカニズム、ロード・バランサ、フェイルオーバ・サーバ、管理およびネットワークオペレーション・コンソール、その他の適切なコンポーネント、またはそれらの任意の適切な組合せを含むこともできる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ユーザ・プロフィールを記憶するための1つまたは複数のユーザ・プロフィール・ストアを含むことができる。ユーザ・プロフィールは、たとえば、経歴情報、人口統計学的情報、挙動情報、ソーシャルな情報、またはその他のタイプの記述的情報、たとえば、職業経験、学歴、趣味もしくは好み、関心、親近感、またはロケーションを含むことができる。関心情報は、1つまたは複数のカテゴリに関連した関心を含むことができる。カテゴリは、一般的または具体的であることが可能である。限定ではなく、例として、ユーザが、あるブランドの靴に関する記事に対して「いいね!」の表明をした場合には、カテゴリは、そのブランド、または「靴」もしくは「衣類」という一般的なカテゴリであることが可能である。ユーザに関するつながり情報を記憶するために、つながりストアが使用されることが可能である。つながり情報は、類似のもしくは共通の職業経験、グループ・メンバーシップ、趣味、学歴を有しているか、または何らかの形で関連しているか、もしくは共通の属性を共有しているユーザ同士を示すことができる。つながり情報は、さまざまなユーザ
およびコンテンツ(内部および外部の両方)の間におけるユーザ定義のつながりを含むこともできる。ネットワーク110を通じてソーシャル・ネットワーキング・システム160を1つもしくは複数のクライアント・システム130または1つもしくは複数のサードパーティ・システム170にリンクさせるために、ウェブ・サーバが使用されることが可能である。ウェブ・サーバは、ソーシャル・ネットワーキング・システム160と、1つまたは複数のクライアント・システム130との間においてメッセージを受け取って回送するためにメール・サーバまたはその他のメッセージング機能を含むことができる。API要求サーバは、サードパーティ・システム170が、1つまたは複数のAPIを呼び出すことによってソーシャル・ネットワーキング・システム160からの情報にアクセスすることを可能にすることができる。ソーシャル・ネットワーキング・システム160の上のまたは外のユーザのアクションに関してウェブ・サーバから通信を受け取るために、アクション・ロガーが使用されることが可能である。アクション・ログとともに、サードパーティコンテンツ・オブジェクトへのユーザの露出についてのサードパーティコンテンツオブジェクト・ログが保持されることが可能である。通知コントローラは、コンテンツ・オブジェクトに関する情報をクライアント・システム130に提供することができる。情報は、通知としてクライアント・システム130へプッシュされることが可能であり、または情報は、クライアント・システム130から受け取られた要求に応答してクライアント・システム130からプルされることが可能である。ソーシャル・ネットワーキング・システム160のユーザの1つまたは複数のプライバシ設定を実施するために、認可サーバが使用されることが可能である。ユーザのプライバシ設定は、ユーザに関連付けられている特定の情報がどのように共有されることが可能であるかを特定する。認可サーバは、ユーザが、たとえば、適切なプライバシ設定を設定することなどによって、自分のアクションをソーシャル・ネットワーキング・システム160によって記録されること、またはその他のシステム(たとえば、サードパーティ・システム170)と共有されることのオプト・インまたはオプト・アウトを行うことを可能にすることができる。サードパーティ・システム170などのサードパーティから受け取られたコンテンツ・オブジェクトを記憶するために、サードパーティコンテンツオブジェクト・ストアが使用されることが可能である。ユーザに関連付けられているクライアント・システム130から受け取られたロケーション情報を記憶するために、ロケーション・ストアが使用されることが可能である。広告価格設定モジュールが、ソーシャルな情報、現在時刻、ロケーション情報、またはその他の適切な情報を組み合わせて、関連がある広告を、通知の形式でユーザに提供することができる。
【0022】
図2は、例示的なソーシャル・グラフ200を示している。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、1つまたは複数のソーシャル・グラフ200を1つまたは複数のデータ・ストア内に記憶することができる。特定の実施形態においては、ソーシャル・グラフ200は、複数のノード(複数のユーザ・ノード202、または複数のコンセプト・ノード204を含むことができる)と、ノード同士をつなげる複数のエッジ206とを含むことができる。図2において示されている例示的なソーシャル・グラフ200は、教示上の目的から、2次元の視覚的マップ表示で示されている。特定の実施形態においては、ソーシャル・ネットワーキング・システム160、クライアント・システム130、またはサードパーティ・システム170は、適切なアプリケーションに関してソーシャル・グラフ200および関連したソーシャル・グラフ情報にアクセスすることができる。ソーシャル・グラフ200のノードおよびエッジは、データ・オブジェクトとして、たとえば(ソーシャル・グラフ・データベースなどの)データ・ストア内に記憶されることが可能である。そのようなデータ・ストアは、ソーシャル・グラフ200のノードまたはエッジの1つまたは複数の検索可能なまたはクエリ可能なインデックスを含むことができる。
【0023】
特定の実施形態においては、ユーザ・ノード202は、ソーシャル・ネットワーキング
・システム160のユーザに対応することができる。限定ではなく、例として、ユーザは、ソーシャル・ネットワーキング・システム160と、またはソーシャル・ネットワーキング・システム160を通じて対話または通信する個人(人間のユーザ)、エンティティ(たとえば、企業、ビジネス、もしくはサードパーティ・アプリケーション)、または(たとえば、個人もしくはエンティティの)グループであることが可能である。特定の実施形態においては、あるユーザがソーシャル・ネットワーキング・システム160とのアカウントに登録した場合には、ソーシャル・ネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202を作成し、そのユーザ・ノード202を1つまたは複数のデータ・ストア内に記憶することができる。本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、登録されているユーザ、および登録されているユーザに関連付けられているユーザ・ノード202を示すことができる。追加として、または代替として、本明細書において記述されているユーザおよびユーザ・ノード202は、適切な場合には、ソーシャル・ネットワーキング・システム160に登録されていないユーザを示すことができる。特定の実施形態においては、ユーザ・ノード202は、ユーザによって提供された情報、またはソーシャル・ネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、ユーザは、自分の名前、プロフィール画像、連絡先情報、生年月日、性別、婚姻状況、家族状況、勤務先、学歴、好み、関心、またはその他の人口統計学的情報を提供することができる。特定の実施形態においては、ユーザ・ノード202は、ユーザに関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、ユーザ・ノード202は、1つまたは複数のウェブページに対応することができる。
【0024】
特定の実施形態においては、コンセプト・ノード204は、コンセプトに対応することができる。限定ではなく、例として、コンセプトは、場所(たとえば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(たとえば、ソーシャルネットワーク・システム160に関連付けられているウェブサイト、もしくはウェブアプリケーション・サーバに関連付けられているサードパーティ・ウェブサイトなど)、エンティティ(たとえば、人、企業、グループ、スポーツ・チーム、もしくは有名人など)、ソーシャル・ネットワーキング・システム160内に、もしくはウェブアプリケーション・サーバなどの外部サーバ上に配置されることが可能であるリソース(たとえば、オーディオ・ファイル、営業ファイル、デジタル写真、テキスト・ファイル、構造化文書、もしくはアプリケーションなど)、物的もしくは知的財産(たとえば、彫塑、絵画、映画、ゲーム、曲、着想、写真、もしくは執筆作品など)、ゲーム、アクティビティ、着想もしくは理論、別の適切なコンセプト、または複数のそのようなコンセプトに対応することができる。コンセプト・ノード204は、ユーザによって提供されたコンセプトの情報、またはソーシャル・ネットワーキング・システム160を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、コンセプトの情報は、名前もしくはタイトル、1つもしくは複数のイメージ(たとえば、本の表紙のイメージ)、ロケーション(たとえば、住所もしくは地理的ロケーション)、(URLに関連付けられることが可能である)ウェブサイト、連絡先情報(たとえば、電話番号もしくはEメール・アドレス)、その他の適切なコンセプト情報、またはそのような情報の任意の適切な組合せを含むことができる。特定の実施形態においては、コンセプト・ノード204は、コンセプト・ノード204に関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、コンセプト・ノード204は、1つまたは複数のウェブページに対応することができる。
【0025】
特定の実施形態においては、ソーシャル・グラフ200内のノードは、ウェブページ(「プロフィール・ページ」と呼ばれる場合もある)を表すこと、またはウェブページによって表されることが可能である。プロフィール・ページは、ソーシャル・ネットワーキン
グ・システム160によってホストされること、またはソーシャル・ネットワーキング・システム160にとってアクセス可能であることが可能である。プロフィール・ページは、サードパーティ・サーバ170に関連付けられているサードパーティ・ウェブサイト上にホストされることも可能である。限定ではなく、例として、特定の外部ウェブページに対応するプロフィール・ページは、その特定の外部ウェブページであることが可能であり、そのプロフィール・ページは、特定のコンセプト・ノード204に対応することができる。プロフィール・ページは、その他のユーザのうちのすべてまたは選択されたサブセットによって閲覧できることが可能である。限定ではなく、例として、ユーザ・ノード202は、対応するユーザ・プロフィール・ページを有することができ、そのユーザ・プロフィール・ページにおいては、対応するユーザが、コンテンツを付加すること、言明を行うこと、またはその他の形で自分自身を表現することが可能である。限定ではなく、別の例として、コンセプト・ノード204は、対応するコンセプト・プロフィール・ページを有することができ、そのコンセプト・プロフィール・ページにおいては、1人または複数のユーザが、特にコンセプト・ノード204に対応するコンセプトに関連して、コンテンツを付加すること、言明を行うこと、または自分自身を表現することが可能である。
【0026】
特定の実施形態においては、コンセプト・ノード204は、サードパーティ・システム170によってホストされているサードパーティ・ウェブページまたはリソースを表すことができる。サードパーティ・ウェブページまたはリソースは、数ある要素の中でも、コンテンツ、選択可能なもしくはその他のアイコン、または、アクションもしくはアクティビティを表す(たとえば、JAVASCRIPT(登録商標)、AJAX、もしくはPHPコードで実装されることが可能である)その他の対話可能なオブジェクトを含むことができる。限定ではなく、例として、サードパーティ・ウェブページは、「いいね!」、「チェックイン」、「食べる」、「推奨する」、または別の適切なアクションもしくはアクティビティなどの選択可能なアイコンを含むことができる。サードパーティ・ウェブページを閲覧しているユーザは、それらのアイコンのうちの1つ(たとえば、「食べる」)を選択することによってアクションを実行して、クライアント・システム130に、そのユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システム160へ送信させることができる。そのメッセージに応答して、ソーシャル・ネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、サードパーティ・ウェブページまたはリソースに対応するコンセプト・ノード204との間においてエッジ(たとえば、「食べる」エッジ)を作成して、エッジ206を1つまたは複数のデータ・ストア内に記憶することができる。
【0027】
特定の実施形態においては、ソーシャル・グラフ200内の1対のノードが、1つまたは複数のエッジ206によって互いにつながることが可能である。1対のノードをつなげるエッジ206は、それらの1対のノードの間における関係を表すことができる。特定の実施形態においては、エッジ206は、1対のノードの間における関係に対応する1つまたは複数のデータ・オブジェクトまたは属性を含むことまたは表すことが可能である。限定ではなく、例として、第1のユーザは、第2のユーザが第1のユーザの「友達」であるということを示すことができる。この表示に応答して、ソーシャル・ネットワーキング・システム160は、「友達要求」を第2のユーザに送信することができる。第2のユーザがその「友達要求」を承認した場合には、ソーシャル・ネットワーキング・システム160は、ソーシャル・グラフ200内で第1のユーザのユーザ・ノード202を第2のユーザのユーザ・ノード202につなげるエッジ206を作成して、エッジ206をソーシャル・グラフ情報としてデータ・ストア24のうちの1つまたは複数の中に記憶することができる。図2の例においては、ソーシャル・グラフ200は、ユーザ「A」のユーザ・ノード202と、ユーザ「B」のユーザ・ノード202との間における友達関係を示すエッジ206と、ユーザ「C」のユーザ・ノード202と、ユーザ「B」のユーザ・ノード202との間における友達関係を示すエッジとを含む。本開示は、特定のユーザ・ノード2
02同士をつなげる特定の属性を伴う特定のエッジ206を記述している、または示しているが、本開示は、ユーザ・ノード202同士をつなげる任意の適切な属性を伴う任意の適切なエッジ206を想定している。限定ではなく、例として、エッジ206は、友達関係、家族関係、ビジネスもしくは雇用関係、ファン関係、フォロワー関係、ビジター関係、サブスクライバ関係、上下関係、互恵的関係、非互恵的関係、別の適切なタイプの関係、または複数のそのような関係を表すことができる。その上、本開示は一般に、ノード同士をつながっているものとして記述しているが、本開示はまた、ユーザ同士またはコンセプト同士をつながっているものとして記述している。本明細書においては、つながっているユーザ同士またはコンセプト同士への言及は、適切な場合には、1つまたは複数のエッジ206によってソーシャル・グラフ200内でつながっているそれらのユーザ同士またはコンセプト同士に対応するノード同士を示すことができる。
【0028】
特定の実施形態においては、ユーザ・ノード202とコンセプト・ノード204との間におけるエッジ206は、ユーザ・ノード202に関連付けられているユーザによって、コンセプト・ノード204に関連付けられているコンセプトに対して実行された特定のアクションまたはアクティビティを表すことができる。限定ではなく、例として、図2において示されているように、ユーザは、コンセプトに対して「いいね!を表明すること」、「通うこと」、「プレイすること」、「聴くこと」、「料理すること」、「勤務すること」、または「観ること」を行った可能性があり、それらの各々は、エッジ・タイプまたはサブタイプに対応することができる。コンセプト・ノード204に対応するコンセプト・プロフィール・ページは、たとえば、選択可能な「チェックイン」アイコン(たとえば、クリック可能な「チェックイン」アイコンなど)、または選択可能な「お気に入りに追加」アイコンを含むことができる。同様に、ユーザがこれらのアイコンをクリックした後に、ソーシャル・ネットワーキング・システム160は、それぞれのアクションに対応するユーザのアクションに応答して「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく、別の例として、あるユーザ(ユーザ「C」)が、特定のアプリケーション(オンライン音楽アプリケーションであるSPOTIFY)を使用して特定の曲(「イマジン」)を聴く場合がある。このケースにおいては、ソーシャル・ネットワーキング・システム160は、そのユーザに対応するユーザ・ノード202と、その曲およびアプリケーションに対応するコンセプト・ノード204との間において、(図2に示されているような)「聴いた」エッジ206および「使用した」エッジを作成して、そのユーザがその曲を聴いてそのアプリケーションを使用したということを示すことができる。その上、ソーシャル・ネットワーキング・システム160は、その曲に対応するコンセプト・ノード204と、そのアプリケーションに対応するコンセプト・ノード204との間において、(図2に示されているような)「再生した」エッジ206を作成して、その特定の曲がその特定のアプリケーションによって再生されたということを示すことができる。このケースにおいては、「再生した」エッジ206は、外部アプリケーション(SPOTIFY)によって外部オーディオ・ファイル(「イマジン」という曲)に関して実行されたアクションに対応する。本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなげる特定の属性を伴う特定のエッジ206について記述しているが、本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなげる任意の適切な属性を伴う任意の適切なエッジ206を想定している。その上、本開示は、単一の関係を表すユーザ・ノード202とコンセプト・ノード204との間におけるエッジについて記述しているが、本開示は、1つまたは複数の関係を表すユーザ・ノード202とコンセプト・ノード204との間におけるエッジを想定している。限定ではなく、例として、エッジ206は、ユーザが特定のコンセプトに対して「いいね!」の表明をしているということ、およびその特定のコンセプトを使用したということの両方を表すことができる。あるいは、別のエッジ206は、(図2において、ユーザ「E」を表すユーザ・ノード202と、「SPOTIFY」を表すコンセプト・ノード204との間において示されているような)ユーザ・ノード202とコンセプト・ノード204との間におけるそれぞれのタ
イプの関係(または、単一の関係が複数集まったもの)を表すことができる。
【0029】
特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、ソーシャル・グラフ200内でユーザ・ノード202とコンセプト・ノード204との間においてエッジ206を作成することができる。限定ではなく、例として、(たとえば、ユーザのクライアント・システム130によってホストされているウェブ・ブラウザまたは専用のアプリケーションを使用することなどによって)コンセプト・プロフィール・ページを閲覧しているユーザは、「いいね!」アイコンをクリックまたは選択することにより、コンセプト・ノード204によって表されているコンセプトを自分が気に入っているということを示すことができ、その「いいね!」アイコンをクリックまたは選択することは、ユーザのクライアント・システム130に、そのコンセプト・プロフィール・ページに関連付けられているそのコンセプトをそのユーザが気に入っているということを示すメッセージをソーシャル・ネットワーキング・システム160へ送信させることができる。そのメッセージに応答して、ソーシャル・ネットワーキング・システム160は、そのユーザとコンセプト・ノード204との間における「いいね!」エッジ206によって示されているように、そのユーザに関連付けられているユーザ・ノード202とコンセプト・ノード204との間においてエッジ206を作成することができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム160は、エッジ206を1つまたは複数のデータ・ストア内に記憶することができる。特定の実施形態においては、エッジ206は、特定のユーザ・アクションに応答してソーシャル・ネットワーキング・システム160によって自動的に形成されることが可能である。限定ではなく、例として、第1のユーザが、画像をアップロードすること、映画を観ること、または曲を聴くことを行った場合には、エッジ206は、第1のユーザに対応するユーザ・ノード202と、それらのコンセプトに対応するコンセプト・ノード204との間において形成されることが可能である。本開示は、特定の様式で特定のエッジ206を形成することについて記述しているが、本開示は、任意の適切な様式で任意の適切なエッジ206を形成することを想定している。
【0030】
図3は、ソーシャル・ネットワーキング・システム160のオブジェクトを記憶するための例示的なパーティショニングを示す。複数のデータ・ストア164(これは「バーティカル」とも呼ばれ得る)は、ソーシャル・ネットワーキング・システム160のオブジェクトを記憶し得る。データ・ストアにおいて記憶されるデータ(例えば、ソーシャル・グラフ200についてのデータ)の量は、非常に大きくなり得る。限定ではなく、例として、米国カリフォルニア州メンロー・パークのフェイスブック(登録商標)・インコーポレイティッド社によって使用されるソーシャル・グラフは、10のオーダーの多数のノードと1010のオーダーの多数のエッジとを有し得る。典型的には、ビッグデータベースなどのビッグデータの集合は、多数のパーティションに分割され得る。データベースの各パーティションについてのインデックスは、データベース全体についてのインデックスよりも小さいため、パーティショニングは、データベースにアクセスする際のパフォーマンスを改善し得る。パーティションは、多くのサーバにわたって分散され得るため、パーティショニングは、データベースにアクセスする際のパフォーマンスおよび信頼性も改善し得る。通常は、データベースは、データベースの行(または列)を別個に記憶することによってパーティショニングされ得る。特定の実施形態において、データベースは、オブジェクト・タイプに基づいてパーティショニングされ得る。データ・オブジェクトは、複数のパーティションにおいて記憶され、各パーティションは、単一のオブジェクト・タイプのデータ・オブジェクトを保持する。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、期待される検索クエリの結果と同じオブジェクト・タイプのオブジェクトを記憶する特定のパーティションへ検索クエリを提出することによって、検索クエリに応答する検索結果を取り出し得る。本開示は、オブジェクトを特定の方法で記憶することを説明するが、本開示は、オブジェクトを任意の適切な方法で記憶すること
も企図する。
【0031】
特定の実施形態において、各オブジェクトは、ソーシャル・グラフ200の特定のノードに対応し得る。特定のノードと別のノードとをつないでいるエッジ206は、これらのノードに対応するオブジェクト間の関係を示し得る。オブジェクトを記憶することに加えて、特定のデータ・ストアは、オブジェクトに関係するソーシャル・グラフ情報も記憶し得る。代替的に、特定のオブジェクトに関するソーシャル・グラフ情報は、オブジェクトとは異なるデータ・ストアに記憶されてもよい。ソーシャル・ネットワーキング・システム160は、新たに受信されるオブジェクトと、受信されるオブジェクトに関連付けられている関係とに基づいて、データ・ストアの検索インデックスを更新し得る。
【0032】
特定の実施形態において、各データ・ストア164は、複数のオブジェクト・タイプのうちの特定の1つのオブジェクトをそれぞれのデータストレージデバイス340に記憶するように構成され得る。オブジェクト・タイプは、例えば、ユーザ、写真、投稿、コメント、メッセージ、イベント・リスト、ウェブページ、アプリケーション、ユーザ・プロフィール・ページ、コンセプト・プロフィール・ページ、ユーザ・グループ、オーディオ・ファイル、映像、オファー/クーポン、または別の適切なタイプのオブジェクトであってもよい。本開示は、特定のタイプのオブジェクトを説明するが、本開示は、任意の適切なタイプのオブジェクトも企図する。限定ではなく、例として、図3において示されるユーザ・バーティカルP1は、ユーザ・オブジェクトを記憶し得る。ユーザ・バーティカルP1において記憶される各ユーザ・オブジェクトは、識別子(例えば、文字列)と、ユーザ名と、オンライン・ソーシャル・ネットワークのユーザについてのプロフィール写真とを含み得る。ソーシャル・ネットワーキング・システム160は、ユーザ・バーティカルP1において、言語、ロケーション、学歴、連絡先情報、興味、交際ステータス、友達/連絡先のリスト、家族のメンバーのリスト、プライバシ設定などのユーザ・オブジェクトに関連付けられている情報も記憶し得る。限定ではなく、例として、図3に示される投稿バーティカルP2は、投稿オブジェクトを記憶し得る。投稿バーティカルP2において記憶される各投稿オブジェクトは、識別子と、ソーシャル・ネットワーキング・システム160に投稿された投稿についてのテキスト文字列とを備え得る。ソーシャル・ネットワーキング・システム160は、投稿バーティカルP2において、タイム・スタンプ、作成者、プライバシ設定、投稿に「いいね!」の表明をするユーザ、「いいね!」の数、コメント、コメントの数、ロケーションなどの投稿オブジェクトに関連付けられている情報も記憶し得る。限定ではなく、例として、写真バーティカルP3は、写真オブジェクト(または、映像もしくはオーディオなどの他のメディア・タイプのオブジェクト)を記憶し得る。写真バーティカルP3において記憶される各写真オブジェクトは、識別子と写真とを備え得る。ソーシャル・ネットワーキング・システム160は、写真バーティカルP3において、タイム・スタンプ、作成者、プライバシ設定、写真においてタグ付けされているユーザ、写真に「いいね!」の表明をするユーザ、コメントなどの写真オブジェクトに関連付けられている情報も記憶し得る。特定の実施形態において、各データ・ストアは、記憶された各オブジェクトに関連付けられている情報をデータストレージデバイス340において記憶するようにも構成され得る。
【0033】
特定の実施形態において、各バーティカル164において記憶されるオブジェクトは、1つまたは複数の検索インデックスによってインデックス付けされ得る。検索インデックスは、1つまたは複数のコンピューティング・デバイス(例えば、サーバ)を備えるそれぞれのインデックス・サーバ330によってホストされ得る。インデックス・サーバ330は、ソーシャル・ネットワーキング・システム160(またはサードパーティシステム)のユーザまたは他のプロセスによってソーシャル・ネットワーキング・システム160へ提出されるデータ(例えば、写真および写真に関連付けられている情報)に基づいて、検索インデックスを更新し得る。インデックス・サーバ330は、検索インデックスを周
期的に(例えば、24時間ごとに)も更新し得る。インデックス・サーバ330は、検索用語を備えるクエリを受信し、その検索用語に対応する1つまたは複数の検索インデックスからの検索結果にアクセスし、その検索結果を取り出す。いくつかの実施形態において、特定のオブジェクト・タイプに対応するバーティカルは、複数の物理的パーティションまたは論理的パーティションを備え、各々がそれぞれの検索インデックスを備える。
【0034】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、PHP(ハイパーテキスト・プリプロセッサ)プロセス310から検索クエリを受け取ることができる。PHPプロセス310は、ソーシャル・ネットワーキング・システム160の1つまたは複数のサーバ162によってホストされた1つまたは複数のコンピューティング・プロセスを備えることができる。検索クエリは、ソーシャル・ネットワーキング・システム160(またはサードパーティ・システム170)のユーザまたは別のプロセスによってPHPプロセスに提出されるテキスト文字列または構造化クエリであってよい。
【0035】
インデックスおよび検索クエリに関するさらなる情報は、それぞれを本願明細書に援用する2012年7月27日に出願された米国特許出願第13/560212号、2012年7月27日に出願された米国特許出願第13/560901号、2012年12月21日に出願された米国特許出願第13/723861号、および2013年4月25日に出願された米国特許出願第13/870113号に見られる。
【0036】
図4は、オンライン・ソーシャル・ネットワークの例示的ウェブページを示す。特定の実施形態では、ユーザは、クエリ・フィールド450にテキストを入力することによって、ソーシャル・ネットワーキング・システム160にクエリをサブミットすることができる。オンライン・ソーシャル・ネットワークのユーザは、オブジェクトまたはオブジェクト・タイプを記述する「検索クエリ」としばしば呼ばれる短い語句を検索エンジンに提供することにより、オンライン・ソーシャル・ネットワークに関連付けられている特定のコンテンツ・オブジェクト(以下「オブジェクト」)またはコンテンツ・オブジェクト・タイプ(以下「オブジェクト・タイプ」)(たとえば、ユーザ、コンセプト、ウェブページ、外部コンテンツまたはリソース)を求めて検索することができる。クエリは、テキスト・クエリとすることができ、(1つまたは複数のn−グラム(n−gram)を含むことができる)1つまたは複数の文字列を備えることができる。一般に、ユーザは、1つまたは複数の文字を備える任意の文字列をクエリ・フィールド450内に入力して、文字列の少なくとも一部分にマッチするソーシャル・ネットワーキング・システム160上のオブジェクトを求めて検索することができる。次いで、ソーシャル・ネットワーキング・システム160は、1つまたは複数のバーティカル(vertical)164を検索して、クエリにマッチするオブジェクトを識別することができる。検索エンジンは、種々の検索アルゴリズムを使用してクエリに基づく検索を実施し、検索クエリに関係付けられると最も見込まれるオブジェクト(たとえば、ユーザ・プロフィール・ページ、コンテンツ・プロフィール・ページ、または外部リソース)を識別する検索結果を生成することができる。検索を実施するために、ユーザは、検索エンジンに検索クエリを入力または送信することができる。これに応答して、検索エンジンは、検索クエリに関係付けられると見込まれる1つまたは複数のリソースを識別することができ、これらの各リソースは、個々に「検索結果(search result)」と呼ばれる、またはその検索クエリに対応して集合的に「(複数の)検索結果(search results)」と呼ばれることがある。識別されたオブジェクトは、たとえば、ソーシャル・グラフ要素(すなわち、ユーザ・ノード202、コンセプト・ノード204、エッジ206)、プロフィール・ページ、外部ウェブページ、またはこれらの任意の組合せを含み得る。次いで、ソーシャル・ネットワーキング・システム160は、識別されたオブジェクトに対応する検索結果を有する検索結果ウェブページを生成し、検索結果ウェブページをユーザに送ることができる。特定の実施形態では、検索エンジンは、その検索を、オンライン・ソーシャル・ネットワー
クに関連付けられているオブジェクトに限定することができる。しかしながら、特定の実施形態では、検索エンジンは、サードパーティ・システム170、インターネットもしくはワールド・ワイド・ウェブ、または他の適切なソースなど、他のソースに関連付けられているオブジェクトを求めて検索してもよい。本開示では特定の様式でオンライン・ソーシャル・ネットワーク160に問い合わせることを説明しているが、本開示は任意の適切な様式でオンライン・ソーシャル・ネットワーク160に問い合わせることを企図する。
【0037】
検索クエリおよび検索結果と関連して、特定の実施形態では、それぞれを本願明細書に援用する2006年8月11日に出願された米国特許出願第11/503093号、2010年4月19日に出願された米国特許出願第12/763162号、2010年12月22日に出願された米国特許出願第12/977027号、2010年12月23日に出願された米国特許出願第12/978265号、2012年7月23日に出願された米国特許出願第13/556072号、および2010年12月31日に出願された米国特許出願第13/732101号に開示された1つまたは複数のシステム、コンポーネント、要素、機能、方法、動作、または工程を利用してよい。
【0038】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、データ・ストア164に記憶されたオブジェクトの静的スコア/ランクを改善することによって、検索クエリの処理を改善することができる。ソーシャル・ネットワーキング・システム160がクエリに応答してデータ・ストア164からオブジェクトを取り出すとき、オブジェクトは、(たとえば、オブジェクトがどのようにインデックス処理されるかに基づいてよい)オブジェクトに関連付けられている所定の静的スコアまたは静的ランクに基づいて、取り出されることが可能である。次いで、すべてのデータ・ストア164から取り出されたオブジェクトは、ソーシャル・ネットワーキング・システム160によって、(様々なファクタ、たとえば、クエリに対する関連性、ソーシャル・グラフ・アフィニティ、ユーザ履歴などに基づいて)集約されスコア付けされることが可能であり、次いで、これらの最終スコアまたは最終ランクは、問合せユーザへ表示される検索結果としてどのオブジェクトが生成されるかを決定するために使用されることが可能である。しかしながら、このプロセスは、十分な数の検索結果を生成するためにソーシャル・ネットワーキング・システム160がデータ・ストア164から過度のオブジェクトを取り出さなければならない場合に、非効率となり得る。一例として、限定としてではなく、ソーシャル・ネットワーキング・システム160は、特定のデータ・ストア164から100個のマッチするオブジェクトを取り出し、各オブジェクトが、関連付けられている静的ランクを有していて、これら100個のオブジェクトが、ソーシャル・ネットワーキング・システム160によってスコア付けされる場合、上位5個のランク付けされたオブジェクトは、たとえば、4、12、20、78、および95の静的ランクを有するオブジェクトであり得る。このプロセスは、ユーザに対する検索結果を生成するときにソーシャル・ネットワーキング・システム160によって決定された最終ランクにオブジェクトの静的ランクがより密接にマッチする場合に改善され得る。これにより、ソーシャル・ネットワーキング・システム160が、クエリに応答して十分な数の検索結果を生成するために取り出される必要があるマッチするオブジェクトの数を減らすことを可能にすることができる。1つまたは複数のデータ・ストア164におけるインデックス処理されたオブジェクトの静的スコアを改善するために、ソーシャル・ネットワーキング・システム160は、データ・ストア164から取り出されたオブジェクトの静的スコアを、ユーザに対する検索結果を生成するためにソーシャル・ネットワーキング・システム160によって計算された最終スコアと比較し、静的スコアが最終スコアにより密接にマッチするように、インデックス処理されたオブジェクトの静的スコア(または静的スコアを計算するために使用されるスコア付けアルゴリズム)を修正または調節することができる。一例として、限定としてではなく、ソーシャル・ネットワーキング・システム160は、アーカイブされた検索クエリのセットにアクセスし、これらのクエリによって取り出されたオブジェクトの静的スコアを最適化す
ることができる。アーカイブされたクエリは1つまたは複数のデータ・ストア164にサブミットされてよく、それにより、それらの静的ランクに基づいて、第1の数の結果を取り出すことができる。次いで、各取り出されたオブジェクトは、最終スコア/ランクを決定するようにスコア付けされてよく、次いで、最終スコア/ランクは静的ランクと比較されてよく、静的ランクが最終ランクにより密接にマッチするように変更されることが可能である。これは、様々なクエリまたはクエリ・タイプに関して行われ、その結果静的スコアが、様々なクエリに関して可能な限り密接に最終スコアにマッチするように最適化され得る。本開示では特定の様式で静的ランク付けを改善することを説明しているが、本開示は任意の適切な様式で静的ランク付けを改善することを企図する。
【0039】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、どのようにクエリ・コマンドが生成されるかを改善することによって、検索クエリの処理を改善することができる。クエリが構文解析されてクエリ・コマンドが生成されると、クエリ・コマンドは、1つまたは複数のオブジェクト・タイプの特定の数のオブジェクト(たとえば、アクセスされた各バーティカル164についてのスコア付けする数)を取り出すように指定することができる。一例として、限定としてではなく、テキスト・クエリ「ステフ」に応答して、ソーシャル・ネットワーキング・システム160は、ユーザ・バーティカル164からの問合せユーザの10個の1次接続、50個の2次接続、およびページ・バーティカル164からの20個のページを要求するクエリ・コマンドを生成することができる。取り出すべき各オブジェクト・タイプのオブジェクトの数は、クエリ・コマンドを生成するために使用される構文解析アルゴリズムの構文解析構成パラメータによって指定されてよい。次いで、取り出されたオブジェクトはスコア付け/ランク付けされてよく、上位N個のスコアのオブジェクトが問合せユーザに送られてよい。しかしながら、このプロセスは、上位N個のスコアのオブジェクトを取り出すためにソーシャル・ネットワーキング・システム160が特定のバーティカル164から過度の1つまたは複数のオブジェクト・タイプを取り出さなければならない場合に、特に処理(CPU)パワーの非効率的使用に関連して非効率となり得る。このプロセスは、最良の最終スコア/ランクを有するオブジェクトの一部またはすべてを取り出し、ユーザに送り返される生成された検索結果の品質が維持されることを可能にしながらも、各バーティカル164から取り出されるオブジェクトの数が減少されることが可能な場合に改善され得る。一例として、限定としてではなく、先の例を続けると、10個の1次接続、(50個の代わりに)25個の2次接続、および(20個の代わりに)10個のページのみを要求するクエリ・コマンドを生成することによって、同じ品質の検索結果を生成する(すなわち、依然として、上位N個のスコアのオブジェクトの実質的にすべてを取り出す)ことが可能であり得る。取り出されるオブジェクトの数を減少させるために、ソーシャル・ネットワーキング・システム160は、各バーティカル164から取り出されたオブジェクトの数を、ソーシャル・ネットワーキング・システム160によって計算されるそれらのオブジェクトに対する最終スコアと比較し、実質的に同じ品質の検索結果を依然として維持しながらも、より少ないオブジェクトをクエリ・コマンドが要求するように構文解析アルゴリズムを修正することができる。一例として、限定としてではなく、ソーシャル・ネットワーキング・システム160は、アーカイブされた検索クエリのセットにアクセスし、これらのクエリによって取り出されたオブジェクトの最終スコアに基づいて、構文解析アルゴリズムを最適化することができる。アーカイブされたクエリは1つまたは複数のデータ・ストア164にサブミットされてよく、それにより、構文解析アルゴリズムによってそれらのクエリに対して生成されたクエリ・コマンドによって指定された取り出すべきオブジェクトの数に基づいて、第1の数の結果を取り出すことができる。次いで、各取り出されたオブジェクトは、最終スコア/ランクを決定するようにスコア付けされてよく、次いで、最終スコア/ランクが、取り出されたオブジェクトの数と比較されて、上位N個のスコア付け結果を取り出し(または、少なくとも上位N個の結果のうちの十分な数を取り出し)ながらも、特定のオブジェクト・タイプについて取り出されるオブジェクトの数が減少されることが可能かどうかを
決定することができる。可能な場合、構文解析アルゴリズムは、特定のクエリに応答して生成されたクエリ・コマンドが、より少ないオブジェクトまたはオブジェクト・タイプを取り出すことを指定するように、修正されてよい。本開示では特定の様式でクエリ・コマンドがどのように生成されるかを改善することを説明しているが、本開示は任意の適切な様式でクエリ・コマンドがどのように改善されるかを改善することを企図する。
【0040】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークの1または複数のユーザから受け取られたオンライン・ソーシャル・ネットワークのクエリのセットにアクセスすることができる。ユーザによってサブミットされた検索クエリは、ソーシャル・ネットワーキング・システム160によって保存され。検索クエリの処理を最適化する試験(experiments)を実行するために後で取り出されてよい。一例として、限定としてではなく、クエリのセットは、オンライン・ソーシャル・ネットワークの複数のユーザからの複数のアーカイブされたクエリを備えることができる。アーカイブされたクエリを使用する試験は、たとえば、ソーシャル・ネットワーキング・システム160にクエリを実行させ、クエリの構文解析およびクエリによって取り出されたオブジェクトを分析させ、次いで、問合せプロセスの特定の側面を最適化することによって、行われてよい。本開示では特定の様式で特定のセットのクエリにアクセスすることを説明しているが、本開示は任意の適切な様式で任意の適切なセットのクエリにアクセスすることを企図する。
【0041】
図5A図5Bは、オンライン・ソーシャル・ネットワークの例示的クエリを示す。特定の実施形態では、第1のユーザ(すなわち問合せユーザ)から受け取ったテキスト・クエリに応答して、ソーシャル・ネットワーキング・システム160は、テキスト・クエリを構文解析し、特定のソーシャル・グラフ要素に対応するテキスト・クエリの部分を識別することができる。次いで、ソーシャル・ネットワーキング・システム160は、構造化クエリのセットを生成し、各構造化クエリは、可能なマッチするソーシャル・グラフ要素の1つに対応している。これらの構造化クエリは、関連するソーシャル・グラフ要素を参照して自然言語構文で与えられるように、文法モデルによって生成された列に基づくことが可能である。これらの構造化クエリは、問合せユーザに提示されることが可能であり、問合せユーザは、構造化クエリのうちから選択をして、選択された構造化クエリがソーシャル・ネットワーキング・システム160によって実行されるべきことを示すことができる。図5A図5Bは、クエリ・フィールド450内の種々の例示的テキスト・クエリ、およびドロップダウン・メニュー400に応答して生成された種々の構造化クエリを示す(ただし、他の適切なグラフィカルユーザインターフェースも可能である)。ユーザのテキスト・クエリに応答して、提案された(suggested)構造化クエリを提供することによって、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークのユーザが、ソーシャル・グラフ200に表された要素を求めてそれらのソーシャル・グラフ属性およびそれらの種々のソーシャル・グラフ要素に対する関係に基づいて検索するための、強力な方法を提供することができる。構造化クエリは、問合せユーザが、特定のエッジ・タイプによってソーシャル・グラフ200内の特定のユーザまたはコンセプトに接続されたコンテンツを求めて検索することを可能にすることができる。構造化クエリは、(たとえば、クライアント側先行入力プロセスによって)第1のユーザに送られドロップダウン・メニュー400内に表示されてよく、そこで、第1のユーザは、適切なクエリを選択して、所望のコンテンツを求めて検索することができる。本明細書に説明される構造化クエリを使用する利点のいくつかには、限られた情報に基づいて、オンライン・ソーシャル・ネットワークのユーザを見つけること、種々のソーシャル・グラフ要素に対するコンテンツの関係に基づいて、オンライン・ソーシャル・ネットワークからそのコンテンツの仮想インデックスを集めること、または、あなたおよび/もしくはあなたの友人に関係付けられたコンテンツを見つけることが含まれる。本開示では特定の様式で特定の構造化クエリを生成することを説明し、図5A図5Bは示しているが、
本開示は任意の適切な様式で任意の適切な構造化クエリを生成することを企図する。
【0042】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、(第1のユーザ・ノード202に対応する)問合せ/第1のユーザから、非構造化テキスト・クエリを受け取ることができる。一例として、限定としてではなく、第1のユーザは、(1) 第1のユーザの1次の友人であり、(2)スタンフォード大学に関連付けられている(すなわち、ユーザ・ノード202が、学校「スタンフォード」に対応するコンセプト・ノード204に対してエッジ206によって接続されている)、他のユーザを求めて検索したいことがある。そこで、第1のユーザは、図5A図5Bに示されるように、テキスト・クエリ「友人 スタンフォード(friends Stanford)」をクエリ・フィールド450に入力することができる。問合せユーザがこのテキスト・クエリをクエリ・フィールド450に入力すると、ソーシャル・ネットワーキング・システム160は、ドロップダウン・メニュー400に示されるように、種々の提案された構造化クエリを提供することができる。本明細書で使用される場合、非構造化テキスト・クエリは、ユーザによって入力された単純なテキスト文字列を指す。テキスト・クエリは、もちろん、標準的な言語/文法規則(たとえば、英語の文法)を基準に構造化され得る。しかしながら、テキスト・クエリは通常、ソーシャル・グラフ要素を基準に構造化されない。言い換えれば、単純なテキスト・クエリは通常、特定のソーシャル・グラフ要素に対する埋め込まれた参照を含まない。したがって、本明細書で使用される場合、構造化クエリは、識別された要素に基づいて検索エンジンが検索することを可能にする、特定のソーシャル・グラフ要素に対する参照を含むクエリを指す。さらに、テキスト・クエリは、形式的クエリ構文を基準に構造化されなくてよい。言い換えれば、単純なテキスト・クエリは、検索エンジンによって直接実行可能なクエリ・コマンドのフォーマットでは必ずしもない(たとえば、テキスト・クエリ「友人 スタンフォード」は、構文解析されて、ソーシャル・グラフ・データベースにおいてクエリとして実行され得るクエリ・コマンド「intersect(school(スタンフォード大学),friends(me)」を形成することができる)。本開示では特定の様式で特定のクエリを受け取ることを説明しているが、本開示は任意の適切な様式で任意の適切なクエリを受け取ることを企図する。
【0043】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、第1のユーザ(すなわち問合せユーザ)から受け取られた非構造化テキスト・クエリ(単に検索クエリとも呼ばれる)を構文解析して、1つまたは複数のn−gramを識別することができる。一般に、n−gramは、テキストまたは音声の所与のシーケンスからのn個のアイテムの連続したシーケンスである。これらのアイテムは、テキストまたは音声のシーケンスからの文字(characters)、音素、音節、英字(letters)、単語、塩基対、プレフィックス、または他の識別可能なアイテムであってよい。n−gramは、問合せユーザによって入力されたテキストの1つまたは複数の文字(英字、数字、句読点など)を含むことができる。サイズ1のn−gramは「ユニグラム」と呼ばれてよく、サイズ2のn−gramは「バイグラム」または「ダイグラム」と呼ばれてよく、サイズ3のn−gramは「トライグラム」と呼ばれてよく、以下同様である。各n−gramは、問合せユーザから受け取られたテキスト・クエリからの1つまたは複数の部分を含むことができる。特定の実施形態では、各n−gramは、第1のユーザによって入力された文字列(たとえば、テキストの1つまたは複数の文字)を含むことができる。一例として、限定としてではなく、ソーシャル・ネットワーキング・システム160は、テキスト・クエリ「友人 スタンフォード」を構文解析して、以下のn−gram、すなわち、友人;スタンフォード;友人 スタンフォードを識別することができる。別の例として、限定としてではなく、ソーシャル・ネットワーキング・システム160は、テキスト・クエリ「パロアルトの友人(friends in palo alto)」を構文解析して、以下のn−gram、すなわち、友人(friends);の(in);パロ(palo);アルト(alto);の友人(friends in);パロの(in pal
o);パロアルト(palo alto);パロの友人(friend in palo);パロアルトの(in palo also);パロアルトの友人(friends in palo alto)を識別することができる。特定の実施形態では、特定の実施形態では、各n−gramは、テキスト・クエリからのn個のアイテムの連続したシーケンスを含むことができる。本開示では特定の様式で特定のクエリを構文解析することを説明しているが、本開示は任意の適切な様式で任意の適切なクエリを構文解析することを企図する。要素の検出および検索クエリの構文解析に関連して、特定の実施形態では、それぞれを本願明細書に援用する2012年7月23日に出願された米国特許出願第13/556072号、2012年12月31日に出願された米国特許出願第13/732101号に開示された1つまたは複数のシステム、コンポーネント、要素、機能、方法、動作、または工程を利用してよい。
【0044】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、1つまたは複数の構造化クエリを生成することができる。構造化クエリは、文法モデルの1つまたは複数の文法によって生成された自然言語列に基づいてよい。各構造化クエリは、識別されたノードの1つもしくは複数または識別されたエッジ206の1つもしくは複数に対する参照を含むことができる。このタイプの構造化クエリは、ソーシャル・ネットワーキング・システム160が、識別されたユーザ・ノード202および識別されたエッジ206に接続されたまたは他の形式で関係付けられたコンテンツを求めて検索することによって、オンライン・ソーシャル・ネットワークに関係付けられたリソースおよびコンテンツ(たとえば、プロフィール・ページなど)をより効率的に検索することを可能にすることができる。一例として、限定としてではなく、テキスト・クエリ「私のガールフレンドの友人を示してほしい」に応答して、ソーシャル・ネットワーキング・システム160は、構造化クエリ「ステファニーの友人」を生成することができ、ここで、検索クエリにおける「友人」および「ステファニー」は、特定のソーシャル・グラフ要素に対応する参照である。「ステファニー」に対する参照は、特定のユーザ・ノード202に対応し(ここで、ソーシャル・ネットワーキング・システム160は、n−gram「私のガールフレンド」を構文解析して、ユーザ「ステファニー」に対するユーザ・ノード202と対応させている)、「友人」に対する参照は、そのユーザ・ノード202を他のユーザ・ノード202に接続する友人タイプ・エッジ206に対応する(すなわち、エッジ206は「ステファニーの」1次の友人に接続する)。この構造化クエリを実行すると、ソーシャル・ネットワーキング・システム160は、「ステファニー」に対応するユーザ・ノード202に友人タイプ・エッジ206によって接続された1つまたは複数のユーザ・ノード202を識別することができる。別の例として、限定としてではなく、テキスト・クエリ「フェイスブックに対して「いいね」を表明している友人」に応答して、ソーシャル・ネットワーキング・システム160は、構造化クエリ「フェイスブックに対して「いいね」を表明している友人」を生成することができ、この構造化クエリにおける「友人」、「に対して「いいね」を表明している」、および「フェイスブック」は、前述のような特定のソーシャル・グラフ要素(すなわち、友人タイプ・エッジ206、「いいね」タイプ・エッジ206、および会社「フェイスブック」に対応するコンセプト・ノード204)に対応する参照である。本開示では特定の様式で特定の構造化クエリを生成することを説明しているが、本開示は任意の適切な様式で任意の適切な構造化クエリを生成することを企図する。
【0045】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構造化クエリのうちの1つの選択を問合せユーザから受け取ることができる。受け取られた構造化クエリにおいて参照されるノードおよびエッジはそれぞれ、選択されたノードおよび選択されたエッジと呼ばれることがある。一例として、限定としてではなく、問合せユーザのクライアント・システム130上のウェブ・ブラウザ132は、図5A図5Bに示されるように、送られた構造化クエリをドロップダウン・メニュー300に表示することができ、次いで、ユーザが、それをクリックするかまたは他の形式で(たとえば、ユーザのキー
ボード上で単に「Enter」キーを押すことによって)選択して、ユーザがソーシャル・ネットワーキング・システム160に実行してほしい特定の構造化クエリを示すことができる。特定の構造化クエリを選択すると、ユーザのクライアント・システム130は、選択された構造化クエリを実行するようにソーシャル・ネットワーキング・システム160に要求または他の形式で指示することができる。本開示では特定の様式で特定の構造化クエリの選択を受け取ることを説明しているが、本開示は任意の適切な様式で任意の適切な構造化クエリの選択を受け取ることを企図する。
【0046】
構造化クエリおよび文法モデルに関するさらなる情報は、それぞれを本願明細書に援用する2012年7月23日に出願された米国特許出願第13/556072号、2012年11月12日に出願された米国特許出願第13/674695号、および2012年12月31日に出願された米国特許出願第13/731866号に見られる。
【0047】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、問合せユーザから受け取られたクエリ(たとえば、テキスト・クエリまたは構造化クエリ)に基づいて、クエリ・コマンドを生成することができる。次いで、クエリ・コマンドは、ソーシャル・ネットワーキング・システム160のデータ・ストア164におけるオブジェクトに対する検索で使用されることが可能である。特定の実施形態では、クエリ・コマンドは、ソーシャル・ネットワーキング・システム160の1つまたは複数のデータ・ストアまたはバーティカルに対する検索インデックスを使用する検索のために提供され得る。クエリ・コマンドは、1つまたは複数のクエリ制約を含むことができる。各クエリ制約は、構文解析アルゴリズムによって、クエリの構文解析に基づいて、ソーシャル・ネットワーキング・システム160によって識別され得る。各クエリ制約は、特定のオブジェクト・タイプを求める要求であり得る。特定の実施形態では、クエリ・コマンドは、シンボル式またはS式でのクエリ制約を備えることができる。ソーシャル・ネットワーキング・システム160は、構造化クエリ「私が「いいね」を表明したフォト(Photos I like)」を構文解析して、クエリ・コマンド(photos_liked_by:<me>(<私>:によって_「いいね」を表明された_フォト))とすることができる。クエリ・コマンド(photos_liked_by:<me>)は、フォトの単一結果タイプを伴うユーザ(すなわち、問合せユーザに対応する<me>)によって「いいね」を表明されたフォトを求めるクエリを示す。クエリ制約は、たとえば、ソーシャル・グラフ制約(たとえば、特定のノードもしくはノード・タイプを求める要求、特定のエッジもしくはエッジ・タイプに接続されたノードを求める要求)、オブジェクト制約(たとえば、特定のオブジェクトもしくはオブジェクト・タイプを求める要求)、位置制約(たとえば、特定の地理的位置に関連付けられているオブジェクトもしくはソーシャル・グラフ・エンティティを求める要求)、他の適切な制約、またはこれらの任意の組合せを含むことができる。特定の実施形態では、クエリ・コマンドは、プレフィックスおよびオブジェクトを含むことができる。オブジェクトは、ソーシャル・グラフ200内の特定のノードに対応することができる一方、プレフィックスは、ソーシャル・グラフ200内の特定のノードに接続する(特定のタイプの関係を示す)特定のエッジ206またはエッジ・タイプに対応することができる。一例として、限定としてではなく、クエリ・コマンド(pages_liked_by:<user>(<ユーザ>:によって_「いいね」を表明された_ページ))は、プレフィックスpages_liked_by(によって「いいね」を表明された)、およびオブジェクト<user>を含む。本開示では特定の様式で特定のクエリ・コマンドを生成することを説明しているが、本開示は任意の適切な様式で任意の適切なクエリ・コマンドを生成することを企図する。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、「弱いAND(weak and)」(WAND)または「強いOR(strong or)」(SOR)演算子を含むクエリ・コマンドを生成することができる。WANDおよびSOR演算子に関するさらなる情報は、本願明細書に援用する2012年7月27日に出願された米国特許出願第13/560901号、お
よび2012年5月3日に出願された米国特許出願第13/887049号に見られる。
【0048】
特定の実施形態では、クエリ・コマンドを生成するために使用される構文解析アルゴリズムは、1つまたは複数の構文解析構成パラメータを備えることができる。構文解析構成パラメータは、ユーザから受け取られた特定のタイプのクエリに対してクエリ・コマンドをどのように生成するかを指定することができる。構文解析構成パラメータは、たとえば、指定数のデータ・ストア164から取り出されるべき指定オブジェクト・タイプの指定数のオブジェクトについての指定数のクエリ制約を有するクエリ・コマンドを生成するための命令を指定することができる。言い換えれば、構文解析構成パラメータは、検索されるべきオブジェクトのタイプ、およびアクセスされるべきバーティカル164のタイプ/数を指定することができる。アクセスされるバーティカル164ごとに、構文解析構成パラメータは、各バーティカル164から取り出すべきオブジェクトの数を指定することができる。一例として、限定としてではなく、検索クエリ入力「kais」に応答して、ソーシャル・ネットワーキング・システム160は、以下のクエリ・コマンドを生成することができる。
【0049】
((AND(name:“kais”)
(OR friends of:(friends of:<me>):num_to_score:50)
(OR pages:<>:num_to_score:25))
このクエリ・コマンドは、第1のクエリ制約(OR friends of:(friends of:<me>):num_to_score:50)を含み、このクエリ制約は、ユーザ・バーティカル164にアクセスして文字列「kais(カイス)」にマッチする問合せユーザの友人の友人であるユーザを求めて検索し、上位50個の結果を取り出すように、ソーシャル・ネットワーキング・システム160に指示する。第2のクエリ制約(OR pages:<>:num_to_score:25)は、ウェブページ・バーティカル164にアクセスして文字列「kais」にマッチするページを求めて検索し、上位25個の結果を取り出すように、ソーシャル・ネットワーキング・システム160に指示する。しかしながら、このプロセスは、十分な数の検索結果を生成するためにソーシャル・ネットワーキング・システム160が特定のオブジェクト・タイプの過度のオブジェクトを取り出さなければならない場合に、非効率となり得る。クエリを処理するときに消費される処理(CPU)パワーの量を改善するために、ソーシャル・ネットワーキング・システム160は、上位N個のスコアのオブジェクトを取り出すために十分な数のオブジェクトを取り出しながらも、各バーティカル164から取り出されるオブジェクト・タイプの数およびオブジェクトの数を最小化する、構文解析構成パラメータを使用することができる。一例として、限定としてではなく、先の例を続けると、上位10個の検索結果を生成するために、ソーシャル・ネットワーキング・システム160は、上位25個の友人の友人、および上位15個のページを取り出すことが必要なだけであり得る。これは、たとえば、26〜50にランク付けされる友人の友人すべてが上位10個の検索結果の外に位置付けられる最終スコアを有するためであり得る。したがって、同じ品質の検索結果を維持するために引き出される必要があるユーザがより少ない。これは、各検索クエリによって消費される処理パワーを可能にする。構文解析構成パラメータは、より多いまたはより少ないオブジェクト・タイプ(および場合によっては追加のバーティカル164)が検索されるように、あるいは各オブジェクト・タイプのより多いまたはより少ないオブジェクトが取り出されるように、修正され得る。本開示では特定の様式で特定のクエリ・コマンドを生成することを説明しているが、本開示は任意の適切な様式で任意の適切なクエリ・コマンドを生成することを企図する。
【0050】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、クエリ・コマンドのクエリ制約の少なくとも一部分にマッチする1つまたは複数のバーティカル16
4からのオブジェクトを取り出すことができる。ソーシャル・ネットワーキング・システム160は、クエリ・コマンドによって指定されるように、ユーザから受け取られた検索クエリに応答して1つまたは複数のバーティカル164にアクセスすることができる。各バーティカル164は、オンライン・ソーシャル・ネットワークに関連付けられている1つまたは複数のオブジェクトを記憶することができる。検索クエリに応答してアクセスされるバーティカル164の数およびタイプは、クエリ・コマンドのクエリ制約に基づくことができる。各バーティカル164は、クエリ制約によって指定されたオブジェクト・タイプのオンライン・ソーシャル・ネットワークに関連付けられているオブジェクトを記憶することができる。一例として、限定としてではなく、ユーザに対するクエリ・コマンドのクエリ制約の1つとして、ソーシャル・ネットワーキング・システム160は、ユーザ・バーティカル164にアクセスして、クエリにマッチする1または複数のユーザを識別することができる。ソーシャル・ネットワーキング・システム160は、任意の適切な様式で、たとえば、1つまたは複数の列マッチング・アルゴリズムを使用して、文字列を、オブジェクトの1つまたは複数のそれぞれに関連付けられている文字の列とマッチさせることなどによって、マッチするオブジェクトを識別することができる。一例として、限定としてではなく、検索クエリ入力「kais」に応答して、ソーシャル・ネットワーキング・システム160は、1つまたは複数のユーザ・バーティカル164および1つまたは複数のページ・バーティカル164にアクセスし、アクセスされたバーティカルを検索して、それらのバーティカルに記憶されたオブジェクト(たとえば、ユーザ・プロフィール・ページまたはコンセプト・プロフィール・ページ)を識別することができる。ソーシャル・ネットワーキング・システム160は、各アクセスされたバーティカルに以下のクエリ・コマンドをサブミットすることができる。
【0051】
(AND(name:“kais”)
(OR friends of:(friends of:<me>):num_to_score:50)
(OR pages:<>:num_to_score:25))
ソーシャル・ネットワーキング・システム160は、各バーティカル164のインデックス・サーバ330にアクセスして、インデックス・サーバ330がクエリ・コマンドにマッチする結果を返すようにすることができる。一例として、限定としてではなく、ソーシャル・ネットワーキング・システム160は、ユーザ・バーティカル164のインデックス・サーバ330にアクセスして、(それぞれユーザ識別子によって表される)ユーザ<Kaisen L(カイセン L)>、<Nathen Kaiser(ネイサン カイザー)>、<Catie Kaiser(ケイティ カイザー)>、および<Alex Kaiser(アレックス カイザー)>を、インデックス・サーバ330に識別させることができる。すなわち、ユーザ<Kaisen L>、<Nathen Kaiser>、<Catie Kaiser>、および<Alex Kaiser>は、「Kais」にマッチする名前を有することができる。さらに、これらの識別されたユーザのそれぞれは、問合せユーザの友人の友人であるユーザに対応するオブジェクトを要求する、クエリ制約(friends of:(friends of:<me>))にマッチする。ソーシャル・ネットワーキング・システム160はまた、ページ・バーティカル164のインデックス・サーバ330にアクセスして、インデックス・サーバ330に、バンド<Kaiser Chiefs(カイザー チーフス)>のページを識別させることができる。すなわち、バンド<Kaiser Chiefs>は、「kais」にマッチする名前を有する。さらに、識別ページは、ページに対応するオブジェクトを要求するクエリ制約(pages:<>)にマッチする。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、1つまたは複数の検索結果を識別するために、特定のノードから特定の接続エッジ206(またはエッジ・タイプ)に沿って、クエリ・コマンドによって指定されたオブジェクトに対応するノードへとソーシャル・グラフ200をたどることによって、クエリ・コマンドにマッチするオブジェクトを識別することができる。一例と
して、限定としてではなく、クエリ・コマンド(pages_liked_by:<user>)は、<user>に対応するユーザ・ノード202から「いいね」タイプ・エッジ206に沿って、<user>によって「いいね」を表明されたページに対応するコンセプト・ノード204へとソーシャル・グラフ200をたどることによって、ソーシャル・ネットワーキング・システム160により実行され得る。本開示では特定の様式で特定のオブジェクトを求めて検索することを説明しているが、本開示は任意の適切な様式でオブジェクトを求めて検索することを企図する。
【0052】
特定の実施形態では、バーティカル164を検索してマッチするオブジェクトを識別するとき、ソーシャル・ネットワーキング・システム160は、特定のバーティカル164内の閾値数までのマッチするノードのみを識別しスコア付けすることができる。ソーシャル・ネットワーキング・システム160がクエリ(または、特定のクエリ制約)に応答してバーティカル164からオブジェクトを取り出すとき、オブジェクトは、インデックス処理されたオブジェクトの静的スコアまたは静的ランクに基づいて取り出されてよい。一例として、限定としてではなく、閾値数までの静的ランクを有するオブジェクトは、たとえば、問合せユーザへ送り返す検索結果を決定するために、様々なファクタに基づいて、取り出されたオブジェクトに対する最終スコアを計算することができるスコア付けアルゴリズムによって、取り出されさらに処理され得る。バーティカル164に記憶された各オブジェクトは、静的スコア付けアルゴリズムに基づいて所定の静的スコアに関連付けられることが可能である。特定の実施形態では、各オブジェクトの所定の静的スコアは、特定のタイプのクエリに対するオブジェクトの所定のランクであり得る。一例として、限定としてではなく、構造化クエリが、「アレックスの友人」(これは、より大きなクエリ、たとえば「アレックスの友人のフォト」または「アレックスの友人の友人」などの部分であり得る)を含むとき、ユーザ「アレックス」の友人に対応するユーザ・ノード202は、この構造化クエリに対する所定の静的スコアを有することができる。アレックスの上位3人の友人は、たとえば、ランクされた順に「ラリー」、「ムー」、および「ジョー」であり得る。したがって、クエリ「アレックスの友人」(またはクエリ・コマンドfriends_of:<アレックス>)に応答して、ユーザ・バーティカル164を検索すると、ユーザ「ラリー」、「ムー」、および「ジョー」が上位3個のオブジェクトとして取り出されてよい。バーティカル164を検索するとき、ソーシャル・ネットワーキング・システム160は、オブジェクトの静的スコアに基づいてオブジェクトを取り出すことができ、そこで、最高/最良の静的スコアを有するオブジェクトが取り出されることが可能である。そして、閾値数のマッチするオブジェクトが、ソーシャル・ネットワーキング・システム160によってスコア付けおよびランク付けされてよい。閾値数は、検索品質を向上するように、または検索結果の処理を最適化するように選択され得る。一例として、限定としてではなく、ソーシャル・ネットワーキング・システム160は、クエリ・コマンド要求ユーザに応答して、ユーザ・バーティカル164における上位N個のマッチするオブジェクト(すなわち、本明細書で使用される例ではS式におけるスコア付けする数すなわち「num_to_score」)のみを識別してもよい。上位N個のオブジェクトは、ユーザ・バーティカル164に対応する検索インデックスにおけるオブジェクトの静的スコア(たとえば、問合せユーザに対するユーザの現在のソーシャル・グラフ・アフィニティに基づくランク)によって決定されてよい。静的スコアは、静的スコア付けアルゴリズムを使用してソーシャル・ネットワーキング・システム160によって予め決定されてよい。しかしながら、このプロセスは、どのオブジェクトを検索結果としてユーザに送り返すかを決定するスコア付けアルゴリズムに従って上位N個のスコアのオブジェクトを見つけるために、ソーシャル・ネットワーキング・システム160がバーティカル164から過度の数のオブジェクトを取り出さなければならない場合に、非効率となり得る。一例として、限定としてではなく、ソーシャル・ネットワーキング・システム160は、クエリに応答して特定のバーティカル164にアクセスし、100個のマッチするオブジェクトを取り出し、各オブジェクトが関連付けられている静的ランクを有していることがある。
次いで、スコア付けアルゴリズムによって、(たとえば、ソーシャル・グラフ・アフィニティに基づいて)これら100個のオブジェクトについて最終スコアが計算され得る。スコア付けアルゴリズムによる上位5個のスコアのオブジェクトは、たとえば、4、12、20、78、および95の静的ランクを有するオブジェクトであり得る。このプロセスは、たとえば、上位N個のオブジェクトの静的ランクが最終ランクによる上位N個のオブジェクトと同じであった場合に改善され得る。オブジェクトの静的ランクを、検索エンジンによって計算された最終ランクとより密接に合わせることにより、ソーシャル・ネットワーキング・システムは、十分な数の検索結果を生成するためにソーシャル・ネットワーキング・システムが取り出してスコア付けする必要があるマッチするオブジェクトの数を減少させることが可能であり得る。特定の実施形態では、オブジェクトの静的スコアは、検索クエリ自体に基づくことができる。言い換えれば、特定のクエリまたはクエリ・タイプに応じて、オブジェクトは、そのクエリまたはクエリ・タイプを基準に異なる静的スコアを有することができる。一例として、限定としてではなく、スコア付けする数が500である場合、上位500個のオブジェクトが識別されてよい。そして、これら500個のオブジェクトは、1つまたは複数のファクタ(たとえば、検索クエリまたは他のクエリ制約に対するマッチ、ソーシャル・グラフ・アフィニティ、検索履歴など)に基づいてスコア付けされてよく、次いで、上位M個の結果が、問合せユーザへ表示する検索結果として生成されてよい。特定の実施形態では、1または複数ラウンドのランク付けの後の上位の結果が、最終ラウンドのランク付けのためにアグリゲータ320に送られてよく、そこで、識別されたオブジェクトが並べ替えられてよく、冗長な結果が廃棄されてよく、または任意の他のタイプの結果処理が問合せユーザへの提示前に行われてもよい。本開示では特定の数のオブジェクトを識別することを説明しているが、本開示は任意の適切な数のオブジェクトを識別することを企図する。さらに、本開示では特定の様式でオブジェクトをランク付けすることを説明しているが、本開示は任意の適切な様式でオブジェクトをランク付けすることを企図する。
【0053】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、クエリ制約にマッチするものとして識別された1つまたは複数のオブジェクトをスコア付けすることができる。各取り出され/識別されたオブジェクトに対する(最終スコアとも呼ばれる)スコアは、任意の適切な様式で、たとえば、特定のスコア付けアルゴリズムを使用することによって、計算されてよい。各識別されたオブジェクトは、ソーシャル・グラフ200の特定のユーザ・ノード202またはコンセプト・ノード204に対応し得る。クエリ・コマンドが複数のクエリ制約を含むとき、ソーシャル・ネットワーキング・システム160は、個別または一緒に各クエリ制約にマッチするノードをスコア付けすることができる。ソーシャル・ネットワーキング・システム160は、識別されたノードのオブジェクト・タイプに対応するデータ・ストア164にアクセスすることによって、識別されたノードの第1のセットをスコア付けすることができる。一例として、限定としてではなく、クエリ制約(extract authors:(term posts_liked_by:<マーク>))にマッチする識別されたノードを生成するとき、ソーシャル・ネットワーキング・システム160は、ユーザ・バーティカル164内のユーザのセット(<トム>,<ディック>,<ハリー>)を識別することができる。次いで、ソーシャル・ネットワーキング・システム160は、ユーザ<トム>、<ディック>、および<ハリー>を、ユーザ<マーク>に対するそれぞれのソーシャル・アフィニティに基づいてスコア付けすることができる。たとえば、そのとき、投稿(post)バーティカル164のソーシャル・ネットワーキング・システム160は、ユーザ<マーク>によって「いいね」を表明された投稿のリストにおけるリストの数に基づいて、ユーザ<トム>、<ディック>、および<ハリー>の識別されたノードをスコア付けすることができる。ユーザ<トム>、<ディック>、および<ハリー>は、ユーザ<マーク>によって「いいね」を表明された投稿、すなわち、<post 1>、<post 2>、<post 3>、<post
4>、<post 5>、<post 6>を作成している場合がある。ユーザ<ディ
ック>が投稿<post 1>、<post 2>、<post 3>を作成し、ユーザ<トム>が投稿<post 5>および<post 6>を作成し、ユーザ<ハリー>が投稿<post 4>を作成した場合、ソーシャル・ネットワーキング・システム160は、ユーザ<マーク>によって「いいね」を表明された投稿のリスト内の投稿のほとんどをディックが作成したので、ユーザ<ディック>を最も高くスコア付けすることができ、続いて<トム>および<ハリー>がより低いスコアを有する。別の例として、限定としてではなく、先の例を使用して、ソーシャル・ネットワーキング・システム160は、投稿の「いいね」のカウントに対して投稿をマップするフォワード・インデックスにアクセスすることができる。インデックス・サーバは、フォワード・インデックスにアクセスし、ユーザ<マーク>によって「いいね」を表明された投稿のリストの各投稿について「いいね」のカウントを取り出すことができる。インデックス・サーバは、投稿のリスト内の投稿(すなわち、<post 1>、<post 2>、<post 3>、<post 4>、<post 5>、<post 6>)を、それぞれの「いいね」のカウントに基づいてスコア付けし、上位のスコアの投稿(たとえば、上位3個のスコア付けされたまたは最も「いいね」を表明された投稿)の作成者を、第1の識別されたノードとしてソーシャル・ネットワーキング・システム160に返すことができる。各適切なスコア付けファクタが特定の識別されたノードについて考慮された後、識別されたノードに対する総合的スコアが決定され得る。次いで、ノードのスコア付けに基づいて、ソーシャル・ネットワーキング・システム160は、1つまたは複数のセットの識別されたノードを生成することができる。一例として、限定としてではなく、ソーシャル・ネットワーキング・システム160は、閾値スコアより大きいスコアを有するノードに対応する識別されたノードのセットのみを生成してよい。別の例として、限定としてではなく、ソーシャル・ネットワーキング・システム160は、スコア付けされたノードをランク付けし、閾値ランク(たとえば、上位10個、上位20個など)より高いランクを有するノードに対応する識別されたノードのセットのみを生成してよい。本開示では特定の様式でマッチするノードをスコア付けすることを説明しているが、本開示は任意の適切な様式でマッチするノードをスコア付けすることを企図する。
【0054】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、問合せユーザ(または、問合せユーザのユーザ・ノード202)に関連付けられているソーシャル・グラフ・アフィニティに基づいて、検索結果をスコア付けすることができる。取り出されたオブジェクトをスコア付けするために使用されるスコア付けアルゴリズムは、ファクタとしてソーシャル・グラフ・アフィニティを使用することができる。ソーシャル・ネットワーキング・システム160は種々のソーシャル・グラフ・エンティティの互いのソーシャル・グラフ・アフィニティ(本明細書では「アフィニティ」と呼ばれることがある)を決定することができる。アフィニティは、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクトの間、たとえば、ユーザ、コンセプト、コンテンツ、アクション、広告、オンライン・ソーシャル・ネットワークに関連付けられている他のオブジェクト、またはこれらの任意の適切な組合せなどの間の、関係または関心レベルの強度を表すことができる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、アフィニティ係数(本明細書では「係数」と呼ばれることがある)を使用して、ソーシャル・グラフ・アフィニティを測定または定量化することができる。係数は、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクトの間の関係の強度を表すまたは定量化することができる。係数は、特定のアクションに対するユーザの関心に基づいて、そのアクションをユーザが行う予測確率を測定する確率または関数を表してもよい。特定の実施形態では、ソーシャル・グラフ・アフィニティは、検索結果をスコア付けするときにファクタとして使用されてよい。一例として、限定としてではなく、構造化クエリ「私の友人のフォト」に応答して、ソーシャル・ネットワーキング・システム160は、クエリ・コマンド(photos_of(users:<friends>))を生成することができ、このクエリの検索意図が、ユーザの友人を示すグループ
フォトを見ることであると決定することができる。フォト内にユーザの友人がタグ付けされたフォトに対応する識別されたコンセプト・ノード204をスコア付けするとき、ソーシャル・ネットワーキング・システム160は、問合せユーザについてフォトにタグ付けされたユーザに関する(たとえば、アフィニティ係数によって測定される)問合せユーザのそれぞれのソーシャル・グラフ・アフィニティに基づいて、フォトをより高くスコア付けすることができる。さらに、フォトにタグ付けされた友人がより多いと、その特定のフォトについて問合せユーザのアフィニティが大きくなり得るので、問合せユーザの友人のより多数を示しているフォトは、ユーザの友人のより少数を示しているフォトよりも高度にタグ付けされ得る。本開示では特定の様式でアフィニティに基づいて検索結果をスコア付けすることを説明しているが、本開示は任意の適切な様式でアフィニティに基づいて検索結果をスコア付けすることを企図する。さらに、ソーシャル・グラフ・アフィニティおよびアフィニティ係数に関連して、特定の実施形態が、それぞれを本願明細書に援用する2006年8月11日に出願された米国特許出願第11/503093号、2010年12月22日に出願された米国特許出願第12/977027号、2010年12月23日に出願された米国特許出願第12/977027号、2012年10月1日に出願された米国特許出願第13/632869号に開示された1つまたは複数のシステム、コンポーネント、要素、機能、方法、動作、または工程を利用することができる。
【0055】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、取り出されたオブジェクトの最終スコアと静的スコアとの比較に基づいて、取り出されたオブジェクトのうちの1つまたは複数に対する1つまたは複数の修正された静的スコアを決定することができる。インデックス処理されたオブジェクトに関連付けられている静的スコアは、アーカイブされた検索クエリを使用する試験実行に基づいて静的スコアを修正することによって改善され得る。アーカイブされたクエリは構文解析されてクエリ・コマンドを生成することができ、それらの静的スコアに基づいて第1の数のオブジェクトを取り出すために、クエリ・コマンドは、バーティカル164にサブミットされることが可能である。取り出されたオブジェクトは、それらの最終スコアを計算されることが可能である。次いで、最終スコアは静的スコアと比較されてよく、静的スコアは、それらが最終スコアにより密接にマッチするように変更されることが可能である。これは、様々なクエリに関して行われ、その結果、静的スコアが、様々なクエリに関して可能な限り密接に最終スコアにマッチするように最適化され得る。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、修正された静的スコアに基づいて静的スコア付けアルゴリズムを修正することができる。静的スコア付けアルゴリズムは、取り出されたオブジェクトのうちの1つまたは複数の修正された静的スコアのうちの1つまたは複数に基づいて、オブジェクトに対する所定の静的スコアをそれぞれ計算するように修正されることが可能である。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、各オブジェクトに対する所定の静的スコアと各オブジェクトに対する計算された最終スコアとの間の差を決定することによって、静的スコアを修正することができる。次いで、ソーシャル・ネットワーキング・システム160は、決定された差に基づいて、オブジェクトのうちの1つまたは複数の静的スコアのうちの1または複数を修正することができる。一例として、限定としてではなく、先の例を続けると、スコア付けアルゴリズムによる最終スコアでの上位5個のオブジェクトは、たとえば、4、12、20、78、および95の静的ランクを有するオブジェクトであり得る。すべてのオブジェクトの静的ランクは、これらオブジェクトが1から5により近い静的ランクを有するように、上位に修正され得る。理論的には、理想的静的ランクは1、2、3、4、および5になることに留意されたい。しかしながら、最終スコアは、ソーシャル・グラフ・アフィニティおよびユーザ履歴など様々なファクタに基づくことがあるので、第1の問合せユーザまたは第1のクエリ・タイプに関する理想的静的ランクが、第2の問合せユーザまたは第2のクエリ・タイプに関する理想的静的ランクと異なることがある。したがって、オブジェクトの静的ランクは、様々なユーザおよびクエリ・タイプに関してオブジェクトの最終ランクにより密接にマッチするように
修正され得る。本開示では特定の様式で静的スコア付けアルゴリズムを修正することを説明しているが、本開示は任意の適切な様式で静的スコア付けアルゴリズムを修正することを企図する。
【0056】
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、取り出されたオブジェクトとクエリ制約の指定数のオブジェクトのスコアとの最終スコアの比較に基づいて、1つまたは複数の修正された構文解析構成パラメータを生成することができる。構文解析アルゴリズムは、アーカイブされた検索クエリを使用する試験実行に基づいてクエリ制約が生成される方法を修正することによって改善され得る。アーカイブされたクエリは構文解析されてクエリ・コマンドを生成することができ、第1の数のオブジェクトを取り出すために、クエリ・コマンドは、1つまたは複数のバーティカル164にサブミットされることが可能である。次いで、ソーシャル・ネットワーキング・システム160は、取り出されたオブジェクトについて最終スコアを計算することができ、次いで、上位N個のスコアの結果の一部または全部を取り出しながらも、任意の指定されたオブジェクト・タイプについて取り出されるオブジェクトの数が減少されることが可能かどうかを決定するために、最終スコアが分析され得る。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構文解析構成パラメータに基づいて構文解析アルゴリズムを修正し、それにより、指定オブジェクト・タイプの指定数のオブジェクトのうちの1つまたは複数が、修正された構文解析構成パラメータに基づいて減少されるようにすることが可能である。一例として、限定としてではなく、特定のクエリ・コマンドに応答して構文解析アルゴリズムによって生成された特定のクエリ・コマンドのS式に関して、ソーシャル・ネットワーキング・システム160は、そのクエリ・コマンドを生成するために使用される構文解析構成パラメータを修正して、それにより、上位N個のスコアの結果の一部または全部を取り出しながらも(たとえば、検索結果の閾値品質を維持するために十分な数の上位N個のスコアの結果を取り出しながらも)、「num_to_score」によって指定された指定数のオブジェクトが減少されるようにすることができる。num_to_scoreが減少されることが可能な場合、構文解析アルゴリズム(または、特定の構文解析構成パラメータ)は、より少ないオブジェクトまたはオブジェクト・タイプを取り出すように修正され得る。num_to_scoreが減少される量は、ソーシャル・ネットワーキング・システム160によって消費される処理パワーに直接的に相関し得る。これらの試験がアーカイブされたクエリを使用して実行されると、ソーシャル・ネットワーキング・システム160は、スコア品質対CPUパワー(または単純にnum_to_score)のデータを生成し、そのデータを使用して、特定のクエリまたはクエリ・タイプについて、消費されるパワーをかなり減少させながら、ソーシャル・ネットワーキング・システム160が依然として十分な高品質の結果(すなわち、高いスコア付け結果)を取り出しているポイントを見つけることができる。言い換えれば、処理パワーの十分な節約がある意場、いくらかの検索結果品質を犠牲にする価値があり得る。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構文解析構成パラメータに基づいて構文解析アルゴリズムを修正して、それにより、クエリ制約のうちの1つまたは複数が、修正された構文解析構成パラメータに基づいて構文解析アルゴリズムによって生成されたクエリ・コマンドから除去されるようにすることが可能である。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、構文解析構成パラメータに基づいて構文解析アルゴリズムを修正して、それにより、アクセスすべき指定数のデータ・ストア164のうちの1つまたは複数が、修正された構文解析構成パラメータに基づいて減少されるようにすることが可能である。一例として、限定としてではなく、先の例を続けると、検索クエリ入力「kais」に応答して、ソーシャル・ネットワーキング・システム160は、以下のクエリ・コマンドを生成することができる。
【0057】
((AND(name:“kais”)
(OR friends of:(friends of:<me>):num_
to_score:50)
(OR pages:<>:num_to_score:25))
ページ・バーティカル164からの取り出されたページの最終スコアの分析が、取り出されたページが上位N個の結果のうちにないことを示す場合、そのクエリ制約全体が除去され得る。言い換えれば、構文解析アルゴリズムは、このクエリ・タイプに応答してページ・バーティカル164が検索されないように修正され得る。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、閾値スコア以上の最終スコアを有するすべての識別されたオブジェクトを取り出すために、データ・ストアから取り出される必要があるオブジェクトの数に基づいて、構文解析アルゴリズムを修正することができる。一例として、限定としてではなく、ソーシャル・ネットワーキング・システムは、閾値スコア以上のスコア(またはランク)を有する各取り出されたオブジェクトを識別することができる。次いで、ソーシャル・ネットワーキング・システム160は、各クエリ・コマンドの各クエリ制約について、閾値スコア以上のスコアを有する各識別されたオブジェクトを取り出すためにデータ・ストアから取り出される必要があるオブジェクトの数を決定することができる。データ・ストアから取り出される必要があるオブジェクトの決定された数に基づいて、ソーシャル・ネットワーキング・システム160は、構文解析構成パラメータのうちの1つまたは複数を修正することができる。本開示では特定の様式で構文解析アルゴリズムを修正することを説明しているが、本開示は任意の適切な様式で構文解析アルゴリズムを修正することを企図する。
【0058】
図6は、検索クエリに対するオブジェクトの静的スコア付けを改善するための例示的方法600を示す。方法は、工程610から開始することができ、ここでは、ソーシャル・ネットワーキング・システム160が、オンライン・ソーシャル・ネットワークの1または複数のユーザから受け取られたオンライン・ソーシャル・ネットワークのクエリの第1のセットにアクセスすることができる。工程620で、ソーシャル・ネットワーキング・システム160は、クエリの第1のセットの各クエリについて、1つまたは複数のデータ・ストア164から、クエリの少なくとも一部分にマッチする第1の数のオブジェクトを取り出すことができる。各データ・ストア164は、オンライン・ソーシャル・ネットワークに関連付けられている1つまたは複数のオブジェクトを記憶することができる。さらに、各オブジェクトは、静的スコア付けアルゴリズムに基づいて所定の静的スコアに関連付けられ得る。ソーシャル・ネットワーキング・システム160は、オブジェクトの静的スコアに基づいて第1の数のオブジェクトを取り出すことができる。工程630で、ソーシャル・ネットワーキング・システム160は、各クエリについて、最終スコア付けアルゴリズムに基づいて、各取り出されたオブジェクトに対する最終スコアを計算することができる。工程640で、ソーシャル・ネットワーキング・システム160は、取り出されたオブジェクトの最終スコアと静的スコアとの比較に基づいて、取り出されたオブジェクトのうちの1つまたは複数に対する1つまたは複数の修正された静的スコアを決定することができる。特定の実施形態において、適宜に図6の方法の1つまたは複数の工程を繰り返すことができる。本開示では特定の順序で発生する図6の方法の特定の工程を説明し示しているが、本開示は任意の適切な順序で発生する図6の方法の任意の適切な工程を企図する。さらに、本開示では、図6の特定の工程を含む検索クエリに対するオブジェクトの静的スコア付けを改善するための例示的方法を説明し示しているが、本開示は、適宜に図6の方法の工程の全部もしくは一部を含むまたは含まないことが可能な任意の適切な工程を含む、検索クエリに対するオブジェクトの静的スコア付けを改善するための任意の適切な方法を企図する。さらに、本開示では図6の方法の特定の工程を実行する特定のコンポーネント、デバイス、またはシステムを説明し示しているが、本開示は図6の方法の任意の適切な工程を実行する任意の適切なコンポーネント、デバイス、またはシステムの任意の適切な組合せを企図する。
【0059】
図7は、検索クエリの構文解析を改善するための例示的方法700を示す。方法は、工
程710から開始することができ、ここでは、ソーシャル・ネットワーキング・システム160が、オンライン・ソーシャル・ネットワークの1または複数のユーザから受け取られたオンライン・ソーシャル・ネットワークのクエリの第1のセットにアクセスすることができる。工程720で、ソーシャル・ネットワーキング・システム160は、第1の構文解析アルゴリズムを使用してクエリの第1のセットにおける各クエリを構文解析して、各クエリに基づいてクエリ・コマンドを生成することができる。各クエリ・コマンドは、1つまたは複数のクエリ制約を備えることができる。さらに、各クエリ制約は、第1の構文解析アルゴリズムの1つまたは複数の構文解析構成パラメータによって指定される指定オブジェクト・タイプの指定数のオブジェクトについてのクエリ制約であり得る。工程730で、ソーシャル・ネットワーキング・システム160は、各クエリ・コマンドの各クエリ制約について、1つまたは複数のデータ・ストア164から、クエリ制約の少なくとも一部分にマッチする指定数のオブジェクトを取り出すことができる。各データ・ストア164は、クエリ制約の指定オブジェクト・タイプのオンライン・ソーシャル・ネットワークに関連付けられている1つまたは複数のオブジェクトを記憶することができる。工程740で、ソーシャル・ネットワーキング・システム160は、各クエリ・コマンドについて、第1のスコア付けアルゴリズムに基づいて、各取り出されたオブジェクトをスコア付けすることができる。工程750で、ソーシャル・ネットワーキング・システム160は、取り出されたオブジェクトとクエリ制約の指定数のオブジェクトのとのスコアの比較に基づいて、1つまたは複数の修正された構文解析構成パラメータを生成することができる。特定の実施形態において、適宜に図7の方法の1つまたは複数の工程を繰り返すことができる。本開示では特定の順序で発生する図7の方法の特定の工程を説明し示しているが、本開示は任意の適切な順序で発生する図7の方法の任意の適切な工程を企図する。さらに、本開示では、図7の特定の工程を含む検索クエリの構文解析を改善するための例示的方法を説明し示しているが、本開示は、適宜に図7の方法の工程の全部もしくは一部を含むまたは含まないことが可能な任意の適切な工程を含む、検索クエリの構文解析を改善するための任意の適切な方法を企図する。さらに、本開示では図7の方法の特定の工程を実行する特定のコンポーネント、デバイス、またはシステムを説明し示しているが、本開示は図7の方法の任意の適切な工程を実行する任意の適切なコンポーネント、デバイス、またはシステムの任意の適切な組合せを企図する。
【0060】
特定の実施形態では、問合せユーザから受け取られたクエリに応答して、ソーシャル・ネットワーキング・システム160は、1つまたは複数の検索結果を生成することができ、この検索結果はクエリに対応する。ソーシャル・ネットワーキング・システム160は、クエリを満たすまたは他の形式でクエリにマッチするオブジェクト(たとえば、ユーザ、フォト、プロフィール・ページ(またはプロフィール・ページのコンテンツ)など)を識別することができる。各検索結果は、ソーシャル・グラフ200のノードに対応することができる。次いで、各識別されたオブジェクトに対応する検索結果が生成され得る。一例として、限定としてではなく、クエリ「マットおよびステファニーのフォト」に応答して、ソーシャル・ネットワーキング・システム160は、ユーザの「マット」と「ステファニー」の両者がフォトにタグ付けされているフォトを識別することができる。次いで、このフォトに対応する検索結果が生成されユーザに送られることが可能である。特定の実施形態では、各検索結果が、1つまたは複数のオブジェクトに関連付けられ、クエリに対応するクエリ・コマンドの各クエリ制約が、特定の検索結果に関連付けられているオブジェクトのうちの1つまたは複数によって満たされてよい。一例として、限定としてではなく、先の例を続けると、構造化クエリ「マットおよびステファニーのフォト」に応答して、ソーシャル・ネットワーキング・システム160は、クエリを構文解析して、クエリ・コマンド(intersect(photos_of:<マット>),(photos_of:<ステファニー>))を生成することができ、これは、ユーザの「マット」と「ステファニー」(いずれも構造化クエリで参照されていた)の両者がフォトにタグ付けされる(すなわち、それらのユーザ・ノード202は、タグイン・タイプ(tagged−i
n−type)エッジ206によってフォトに対応するコンセプト・ノード204に接続される)フォトに対応する検索結果を生成するために実行され得る。言い換えれば、ユーザの「マット」および「ステファニー」のユーザ・ノード202にフォトが接続されているので、(photos_of:<マット>)および(photos_of:<ステファニー>))についての制約が両方ともフォトによって満たされる。クエリにマッチするものとして識別されたノードは、スコア付け(場合によってはランク付け)されてよく、そして1つまたは複数(たとえば閾値数)が、ユーザへ表示する検索結果として生成されてよい。本開示では特定の様式で検索結果を生成することを説明しているが、本開示は任意の適切な様式で検索結果を生成することを企図する。
【0061】
特定の実施形態において、ソーシャル・ネットワーキング・システム160は、1つまたは複数の検索結果を、クエリを行うユーザへ送信し得る。検索結果は、例えば、識別されたリソースまたはコンテンツのうちのいくつかを包含する異なるウェブページに各リンクが関連付けられている、検索結果ウェブページ上のリンクのリストの形式で、ユーザへ送信され得る。特定の実施形態において、検索結果における各リンクは、対応するウェブページがどこに位置するかと、対応するウェブページを取り出すためのメカニズムとを特定するユニフォーム・リソース・ロケータ(URL)の形式であり得る。ソーシャル・ネットワーキング・システム160は、次いで、検索結果ウェブページを、ユーザのクライアント・システム130上のウェブ・ブラウザ132へ送信し得る。ユーザは、次いで、必要に応じて、URLリンクをクリックして、または、そうでなければ検索結果ウェブページからのコンテンツを選択して、ソーシャル・ネットワーキング・システム160からのコンテンツ、または(例えば、サードパーティ・システム170などの)外部システムからのコンテンツにアクセスし得る。特定の実施形態において、各検索結果は、プロフィール・ページへのリンクと、プロフィール・ページの説明もしくは概要(または、そのページに対応するノード)とを含み得る。検索結果は、検索結果ページとしてクエリを行うユーザへ提示および送信され得る。検索結果を生成する場合、ソーシャル・ネットワーキング・システム160は、検索結果ごとに1つまたは複数のスニペットを生成し得る。ここで、スニペットは、検索結果の対象についての文脈情報(すなわち、ソーシャル・グラフ・エンティティ、プロフィール・ページ、または特定の検索結果に対応する他のコンテンツについての文脈情報)である。特定の実施形態において、ソーシャル・ネットワーキング・システム160は、特定の閾値スコア/順位を上回るスコア/順位を有する検索結果のみを送信し得る。限定ではなく、例として、ソーシャル・ネットワーキング・システム160は、特定の検索クエリに応答して、上位10個の結果のみをクエリを行うユーザへ送信し得る。本開示は、特定の検索結果を特定の方法で送信することを説明するが、本開示は、任意の適切な検索結果を任意の適切な方法で送信することも企図する。
【0062】
検索結果を生成することに関するさらなる情報は、本願明細書に援用する2012年12月31日に出願された米国特許出願第13/731939号に見られる。
図8は、例示的なコンピュータ・システム800を示している。特定の実施形態においては、1つまたは複数のコンピュータ・システム800が、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を実行する。特定の実施形態においては、1つまたは複数のコンピュータ・システム800が、本明細書において記述されているまたは示されている機能を提供する。特定の実施形態においては、1つまたは複数のコンピュータ・システム800上で稼働するソフトウェアが、本明細書において記述されているもしくは示されている1つもしくは複数の方法の1つもしくは複数の工程を実行し、または本明細書において記述されているもしくは示されている機能を提供する。特定の実施形態は、1つまたは複数のコンピュータ・システム800の1つまたは複数の部分を含む。本明細書においては、コンピュータ・システムへの言及は、適切な場合には、コンピューティング・デバイスを包含することができる。その上、コンピュータ・システムへの言及は、適切な場合には、1つまたは複数のコンピュータ・システム
を包含することができる。
【0063】
本開示は、任意の適切な数のコンピュータ・システム800を想定している。本開示は、任意の適切な物理的な形態を取るコンピュータ・システム800を想定している。限定ではなく、例として、コンピュータ・システム800は、組み込みコンピュータ・システム、システムオンチップ(SOC)、シングルボード・コンピュータ・システム(SBC)(たとえば、コンピュータオンモジュール(COM)もしくはシステムオンモジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話キオスク、メインフレーム、コンピュータ・システムのメッシュ、モバイル電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらのうちの複数の組合せであることが可能である。適切な場合には、コンピュータ・システム800は、1つもしくは複数のコンピュータ・システム800を含むこと、単一型もしくは分散型であること、複数のロケーションにわたること、複数のマシンにわたること、複数のデータセンターにわたること、または、クラウド(1つもしくは複数のネットワーク内の1つもしくは複数のクラウド・コンポーネントを含むことができる)内に常駐することが可能である。適切な場合には、1つまたは複数のコンピュータ・システム800は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を、実質的な空間上のまたは時間上の制限を伴わずに実行することができる。限定ではなく、例として、1つまたは複数のコンピュータ・システム800は、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程をリアルタイムで、またはバッチ・モードで実行することができる。1つまたは複数のコンピュータ・システム800は、適切な場合には、本明細書において記述されているまたは示されている1つまたは複数の方法の1つまたは複数の工程を別々の時点で、または別々のロケーションで実行することができる。
【0064】
特定の実施形態においては、コンピュータ・システム800は、プロセッサ802、メモリ804、ストレージ806、入力/出力(I/O)インタフェース808、通信インタフェース810、およびバス812を含む。本開示は、特定の数の特定のコンポーネントを特定の構成で有する特定のコンピュータ・システムについて記述し、示しているが、本開示は、任意の適切な数の任意の適切なコンポーネントを任意の適切な構成で有する任意の適切なコンピュータ・システムを想定している。
【0065】
特定の実施形態においては、プロセッサ802は、コンピュータ・プログラムを構成している命令などの命令を実行するためのハードウェアを含む。限定ではなく、例として、命令を実行するために、プロセッサ802は、内部レジスタ、内部キャッシュ、メモリ804、またはストレージ806から命令を取り出し(またはフェッチし)、それらの命令をデコードして実行し、次いで、1つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ804、またはストレージ806に書き込むことができる。特定の実施形態においては、プロセッサ802は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ802を想定している。限定ではなく、例として、プロセッサ802は、1つまたは複数の命令キャッシュ、1つまたは複数のデータ・キャッシュ、および1つまたは複数の変換ルックアサイド・バッファ(TLB)を含むことができる。命令キャッシュ内の命令は、メモリ804またはストレージ806内の命令のコピーであることが可能であり、命令キャッシュは、プロセッサ802によるそれらの命令の取り出しをスピードアップすることができる。データ・キャッシュ内のデータは、プロセッサ802において実行される命令が機能する際に基づくメモリ804もしくはストレージ806内のデータのコピー、プロセッサ802において実行される後続の命令によるアクセスのための、もしくはメモリ804もしくはストレージ806への書き込みのためのプロセッサ802において実行された以前の命令の結果、またはその他の適切なデ
ータであることが可能である。データ・キャッシュは、プロセッサ802による読み取りオペレーションまたは書き込みオペレーションをスピードアップすることができる。TLBは、プロセッサ802のための仮想アドレス変換をスピードアップすることができる。特定の実施形態においては、プロセッサ802は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含むことができる。本開示は、適切な場合には、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ802を想定している。適切な場合には、プロセッサ802は、1つまたは複数の演算ロジック・ユニット(ALU)を含むこと、マルチコア・プロセッサであること、または1つもしくは複数のプロセッサ802を含むことが可能である。本開示は、特定のプロセッサについて記述し、示しているが、本開示は、任意の適切なプロセッサを想定している。
【0066】
特定の実施形態においては、メモリ804は、プロセッサ802が実行するための命令、またはプロセッサ802が機能する際に基づくデータを記憶するためのメイン・メモリを含む。限定ではなく、例として、コンピュータ・システム800は、命令をストレージ806または別のソース(たとえば、別のコンピュータ・システム800など)からメモリ804にロードすることができる。次いでプロセッサ802は、命令をメモリ804から内部レジスタまたは内部キャッシュにロードすることができる。命令を実行するために、プロセッサ802は、命令を内部レジスタまたは内部キャッシュから取り出し、それらの命令をデコードすることができる。命令の実行中または実行後に、プロセッサ802は、1つまたは複数の結果(それらは、中間の結果または最終的な結果である場合がある)を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ802は、それらの結果のうちの1つまたは複数をメモリ804に書き込むことができる。特定の実施形態においては、プロセッサ802は、(ストレージ806またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ804内の命令のみを実行し、(ストレージ806またはその他の場所ではなく)1つもしくは複数の内部レジスタもしくは内部キャッシュ内の、またはメモリ804内のデータ上でのみ機能する。1つまたは複数のメモリ・バス(それらは各々、アドレス・バスおよびデータ・バスを含むことができる)は、プロセッサ802をメモリ804に結合することができる。バス812は、以降で記述されているような1つまたは複数のメモリ・バスを含むことができる。特定の実施形態においては、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ802とメモリ804との間に常駐し、プロセッサ802によって要求されるメモリ804へのアクセスを容易にする。特定の実施形態においては、メモリ804は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、適切な場合には、揮発性メモリであることが可能である。適切な場合には、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であることが可能である。その上、適切な場合には、このRAMは、シングルポートRAMまたはマルチポートRAMであることが可能である。本開示は、任意の適切なRAMを想定している。メモリ804は、適切な場合には、1つまたは複数のメモリ804を含むことができる。本開示は、特定のメモリについて記述し、示しているが、本開示は、任意の適切なメモリを想定している。
【0067】
特定の実施形態においては、ストレージ806は、データまたは命令のためのマス・ストレージを含む。限定ではなく、例として、ストレージ806は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらのうちの複数の組合せを含むことができる。ストレージ806は、適切な場合には、取り外し可能なまたは取り外し不能な(すなわち、固定された)媒体を含むことができる。ストレージ806は、適切な場合には、コンピュータ・システム800の内部または外部に存在することが可能である。特定の実施形態においては、ストレージ806は、不揮発性のソリッドステート・メモリである。特定の実施形態におい
ては、ストレージ806は、読み取り専用メモリ(ROM)を含む。適切な場合には、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書替え可能ROM(EAROM)、またはフラッシュ・メモリ、またはこれらのうちの複数の組合せであることが可能である。本開示は、任意の適切な物理的な形態を取るマス・ストレージ806を想定している。ストレージ806は、適切な場合には、プロセッサ802とストレージ806との間における通信を容易にする1つまたは複数のストレージ・コントロール・ユニットを含むことができる。適切な場合には、ストレージ806は、1つまたは複数のストレージ806を含むことができる。本開示は、特定のストレージについて記述し、示しているが、本開示は、任意の適切なストレージを想定している。
【0068】
特定の実施形態においては、I/Oインタフェース808は、コンピュータ・システム800と1つまたは複数のI/Oデバイスとの間における通信のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム800は、適切な場合には、これらのI/Oデバイスのうちの1つまたは複数を含むことができる。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータ・システム800との間における通信を可能にすることができる。限定ではなく、例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、映像カメラ、別の適切なI/Oデバイス、またはこれらのうちの複数の組合せを含むことができる。I/Oデバイスは、1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/Oデバイス、およびそれらのI/Oデバイスのための任意の適切なI/Oインタフェース808を想定している。適切な場合には、I/Oインタフェース808は、プロセッサ802がこれらのI/Oデバイスのうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。I/Oインタフェース808は、適切な場合には、1つまたは複数のI/Oインタフェース808を含むことができる。本開示は、特定のI/Oインタフェースについて記述し、示しているが、本開示は、任意の適切なI/Oインタフェースを想定している。
【0069】
特定の実施形態においては、通信インタフェース810は、コンピュータ・システム800と、1つもしくは複数のその他のコンピュータ・システム800または1つもしくは複数のネットワークとの間における通信(たとえば、パケットベースの通信など)のための1つまたは複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、通信インタフェース810は、イーサネット(登録商標)もしくはその他の有線ベースのネットワークと通信するためのネットワーク・インタフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWI−FIネットワークなどの無線ネットワークと通信するための無線NIC(WNIC)もしくは無線アダプタを含むことができる。本開示は、任意の適切なネットワーク、およびそのネットワークのための任意の適切な通信インタフェース810を想定している。限定ではなく、例として、コンピュータ・システム800は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、またはインターネットの1つまたは複数の部分、またはこれらのうちの複数の組合せと通信することができる。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、有線または無線であることが可能である。例として、コンピュータ・システム800は、無線PAN(WPAN)(たとえば、ブルートゥースWPANなど)、WI−FIネットワーク、WI−MAXネットワーク、セルラー電話ネットワーク(たとえば、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM(登録商標))ネットワークなど)、またはその他の適切な無線ネットワーク、またはこれ
らのうちの複数の組合せと通信することができる。コンピュータ・システム800は、適切な場合には、これらのネットワークのうちの任意のネットワークのための任意の適切な通信インタフェース810を含むことができる。通信インタフェース810は、適切な場合には、1つまたは複数の通信インタフェース810を含むことができる。本開示は、特定の通信インタフェースについて記述し、示しているが、本開示は、任意の適切な通信インタフェースを想定している。
【0070】
特定の実施形態においては、バス812は、コンピュータ・システム800のコンポーネント同士を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく、例として、バス812は、アクセラレイティッド・グラフィックス・ポート(AGP)もしくはその他のグラフィックス・バス、エンハンスト・インダストリー・スタンダード・アーキテクチャ(EISA)バス、フロントサイド・バス(FSB)、ハイパートランスポート(HT)インターコネクト、インダストリー・スタンダード・アーキテクチャ(ISA)バス、インフィニバンド・インターコネクト、ローピンカウント(LPC)バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル(VLB)バス、または別の適切なバス、またはこれらのうちの複数の組合せを含むことができる。バス812は、適切な場合には、1つまたは複数のバス812を含むことができる。本開示は、特定のバスについて記述し、示しているが、本開示は、任意の適切なバスまたはインターコネクトを想定している。
【0071】
本明細書においては、1つまたは複数の非一時的なコンピュータ可読記憶媒体は、適切な場合には、1つもしくは複数の半導体ベースのもしくはその他の集積回路(IC)(たとえば、フィールドプログラマブル・ゲート・アレイ(FPGA)もしくは特定用途向け集積回路(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、その他の任意の適切な非一時的なコンピュータ可読記憶媒体、またはこれらのうちの複数の組合せを含むことができる。非一時的なコンピュータ可読記憶媒体は、適切な場合には、揮発性、不揮発性、または揮発性と不揮発性の組合せであることが可能である。
【0072】
本明細書においては、「または(もしくは)」は、包含的であり、排他的ではない(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AまたはB」は、「A、B、またはその両方」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。その上、「および(ならびに)」は、包括的および個別的の両方である(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。したがって、本明細書においては、「AおよびB」は、「まとめて、または個別に、AおよびB」を意味する(ただし、そうではないことが明示されている場合、または、そうではないことが文脈によって示されている場合は除く)。
【0073】
本開示の範囲は、当技術分野における標準的な技術者が理解するであろう、本明細書において記述されているまたは示されている例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書において記述されているまたは示されている例示的な実施形態に限定されない。その上、本開示は、本明細書に
おける各々の実施形態を、特定のコンポーネント、要素、機能、オペレーション、または工程を含むものとして記述し、示しているが、これらの実施形態のいずれも、当技術分野における標準的な技術者が理解するであろう、本明細書の任意の箇所において記述されているまたは示されているコンポーネント、要素、機能、オペレーション、または工程のうちの任意のものの任意の組合せまたは順列を含むことができる。さらに、特定の機能を実行するように適合されている、実行するようにアレンジされている、実行することができる、実行するように構成されている、実行することを可能にされている、実行するように機能できる、または実行するように機能する装置もしくはシステム、または装置もしくはシステムのコンポーネントへの添付の特許請求の範囲における言及は、その装置、システム、コンポーネント、またはその特定の機能が、アクティブ化されているか否か、オンにされているか否か、またはロック解除されているか否かを問わず、その装置、システム、またはコンポーネントが、そうするように適合されている、そうするようにアレンジされている、そうすることができる、そうするように構成されている、そうすることを可能にされている、そうするように機能できる、またはそうするように機能する限り、その装置、システム、コンポーネントを包含する。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8