JP2016154050A - 短語のハッシュ - Google Patents

短語のハッシュ Download PDF

Info

Publication number
JP2016154050A
JP2016154050A JP2016100488A JP2016100488A JP2016154050A JP 2016154050 A JP2016154050 A JP 2016154050A JP 2016100488 A JP2016100488 A JP 2016100488A JP 2016100488 A JP2016100488 A JP 2016100488A JP 2016154050 A JP2016154050 A JP 2016154050A
Authority
JP
Japan
Prior art keywords
binary number
user
suffix
search
prefix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016100488A
Other languages
English (en)
Other versions
JP6315835B2 (ja
Inventor
ボスマン、チューダー
Bosman Tudor
ボフ ラッセン、ソーエン
Bogh Lassen Soren
ボフ ラッセン、ソーエン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Inc
Original Assignee
Facebook Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Facebook Inc filed Critical Facebook Inc
Publication of JP2016154050A publication Critical patent/JP2016154050A/ja
Application granted granted Critical
Publication of JP6315835B2 publication Critical patent/JP6315835B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/325Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking

Abstract

【課題】検索語を表す2進数の長さを低減すること。
【解決手段】一実施形態において、サーバは検索クエリを受け取り、受け取った検索クエリに基づいて検索語を決定する。各検索語は接頭辞および接尾辞を含み、これら接頭辞および接尾辞の双方がソーシャル・グラフの要素に対応する。サーバは、検索語の接頭辞および接尾辞にマッチする検索結果を送信する。
【選択図】図3

Description

本開示は、概して、ソーシャルネットワーキング・システムに関する。
ソーシャルネットワーキング・ウェブサイトなどのソーシャルネットワーキング・システムは、そのユーザ(人または団体など)が、システムと対話したり、システムを通して互いに対話したりすることを可能にする。ソーシャルネットワーキング・システムは、ユーザからの入力によって、ユーザに関連付けられたユーザ・プロフィールをソーシャルネットワーキング・システム中に作成し格納することができる。ユーザ・プロフィールは、ユーザの人口統計情報、通信チャネル情報、および個人的な関心についての情報を含むことができる。また、ソーシャルネットワーキング・システムは、ユーザからの入力によって、ソーシャルネットワーキング・システムのユーザと他のユーザとの関係の記録を作成し格納するだけでなく、サービス(例えば、ウォール投稿、写真共有、イベント編成、メッセージング、ゲーム、または広告)を提供して、ユーザ間の社会的相互作用を促進することができる。
ソーシャルネットワーキング・システムは、そのサービスに関係するコンテンツまたはメッセージを、1つまたは複数のネットワークを介してユーザのモバイル・コンピューティング・デバイスなどに送信することができる。また、ユーザは、自分のモバイル・コンピューティング・デバイスなどにソフトウェア・アプリケーションをインストールして、ソーシャルネットワーキング・システム内の、自分のユーザ・プロフィールなどのデータにアクセスすることができる。ソーシャルネットワーキング・システムは、ユーザにつながっている他のユーザの集約された記事からなるニュースフィードなど、コンテンツ・オブジェクトの個人用セットを生成して、ユーザに表示することができる。
特定の実施形態は、検索語の構造に基づいてデータベースにインデックス付けを行うための方法を記載する。特定の実施形態では、2進数を用いて検索語を表し、2進数をハッシュすることによって検索語の検索結果にインデックス付けを行うことができる。検索語を表す2進数に固定長を使用する代わりに、特定の実施形態では、検索語ごとに各検索語の接頭辞および接尾辞を決定し、各検索語の接尾辞のオブジェクト・タイプに少なくとも部分的に基づいて各検索語を表す2進数の長さを決定することによって、2進数の長さを低減することができる。したがって、特定の実施形態では、検索語を表すより短い2進数を用いることにより、検索語にインデックス付けを行うためのハッシュ・テーブルのサイズを低減することができる。
ソーシャルネットワーキング・システムと関連付けられている例示的なネットワーク環境を示す図。 例示的なソーシャル・グラフを示す図。 検索語の構造に基づいてデータベースにインデックス付けするための例示的な方法を示す図。 例示的なコンピュータ・システムを示す図。
図1は、ソーシャルネットワーキング・システムに関連付けられた例示的なネットワーク環境100を示す。ネットワーク環境100は、ユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170を含み、ネットワーク110によって互いに接続される。図1は、ユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の特定の配置を示すが、本開示は、ユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の任意の適切な配置を想定している。限定ではなく一例として、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170のうちの2つ以上は、互いに直接、ネットワーク110をバイパスして接続され得る。別の例として、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170のうちの2つ以上は、物理的または論理的に、全体的または部分的に互いに同じ場所に配置され得る。また、図1は、特定の数のユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を示すが、本開示は、任意の適切な数のユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を想定している。限定ではなく一例として、ネットワーク環境100は、複数のユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を含むことができる。
特定の実施形態において、ユーザ101は、ソーシャルネットワーキング・システム160と対話する、またはソーシャルネットワーキング・システム160を介して通信する、個人(人間のユーザ)、エンティティ(例えば、企業、ビジネス、もしくはサードパーティのアプリケーション)、またはグループ(例えば、個人もしくはエンティティの)であり得る。特定の実施形態において、ソーシャルネットワーキング・システム160は、オンライン・ソーシャル・ネットワークをホスティングする、ネットワークにアドレス可能なコンピューティング・システムであり得る。ソーシャルネットワーキング・システム160は、例えば、オンライン・ソーシャル・ネットワークに関係するユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャル・グラフ情報、または他の適切なデータなど、ソーシャルネットワーキング・データを生成、格納、受信、および送信することができる。ソーシャルネットワーキング・システム160は、直接またはネットワーク110を介してネットワーク環境100の他の構成要素によってアクセスされ得る。特定の実施形態において、ソーシャルネットワーキング・システム160は、認証サーバ(または他の適切なコンポーネント)を含むことができる。認証サーバは、例えば、適切なプライバシー設定を設定することによって、ユーザ101に対し、ユーザのアクションをソーシャルネットワーキング・システム160によって記録させること、または他のシステム(サードパーティ・システム170など)と共有させることをオプトインまたはオプトアウトすることを可能にする。ユーザのプライバシー設定は、ユーザと関連付けられた何の情報が記録され得るか、ユーザと関連付けられた情報がどのように記録され得るか、ユーザと関連付けられた情報がいつ記録され得るか、ユーザと関連付けられた情報を誰が記録し得るか、ユーザと関連付けられた情報が誰と共有され得るか、およびユーザと関連付けられた情報が何の目的で記録または共有され得るかを決定することができる。認証サーバは、必要に応じて、ブロッキング、データ・ハッシング、匿名化、または他の適切な技術によって、ソーシャルネットワーキング・システム160の各ユーザの1つまたは複数のプライバシー設定を実施するために使用することができる。特定の実施形態において、サードパーティ・システム170は、ウェブサイトやアプリケーションをホスティングすることができる、ネットワークにアドレス指定可能なコンピューティング・システムとすることができる。サードパーティ・システム170は、例えば、ウェブページ、テキスト、画像、映像、音楽、またはアプリケーションなどのサードパーティ・システム・データを生成、格納、受信、および送信することができる。サードパーティ・システム170は、ネットワーク環境100の他の構成要素によって、直接またはネットワーク110を介してアクセスされ得る。特定の実施形態において、1つまたは複数のユーザ101は、1つまたは複数のクライアント・システム130を使用して、ソーシャルネットワーキング・システム160またはサードパーティ・システム170にアクセスし、データを送信し、ソーシャルネットワーキング・システム160またはサードパーティ・システム170からデータを受信することができる。クライアント・システム130は、直接かまたはネットワーク110もしくはサードパーティ・システムを介して、ソーシャルネットワーキング・システム160またはサードパーティ・システム170にアクセスすることができる。限定ではなく一例として、クライアント・システム130は、ソーシャルネットワーキング・システム160を介してサードパーティ・システム170にアクセスすることができる。クライアント・システム130は、例えば、パーソナル・コンピュータ、ラップトップ・コンピュータ、セルラ電話、スマートフォン、またはタブレット・コンピュータなど、任意の適切なコンピューティング・デバイスであってよい。
本開示は、任意の適切なネットワーク110を想定している。限定ではなく一例として、ネットワーク110の1つまたは複数の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイド・エリア・ネットワーク(WAN)、ワイヤレスWAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、セルラ電話ネットワーク、またはこれらのうちの2つ以上の組合せを含むことができる。ネットワーク110は、1つまたは複数のネットワーク110を含むことができる。
リンク150は、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170を通信ネットワーク110に、または相互に接続することができる。本開示は、任意の適切なリンク150を想定している。特定の実施形態では、1つまたは複数のリンク150は、1つまたは複数の有線リンク(例えば、デジタル加入者線(DSL)またはデータオーバーケーブルサービスインターフェイス仕様(DOCSIS)等)、無線リンク(例えば、Wi−Fi(登録商標)またはWiMAX(登録商標)等)、または光学リンク(例えば、同期型光ネットワーク(SONET)または同期デジタルハイアラーキ(SDH)等)を含む。特定の実施形態では、1つまたは複数のリンク150の各々は、アド・ホック・ネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部、PSTNの一部、セルラ技術によるネットワーク、衛星通信技術によるネットワーク、別のリンク150、または2つ以上のそのようなリンク150の組み合わせを含む。リンク150は、必ずしもネットワーク環境100全体を通じて同一である必要はない。1つまたは複数の第1のリンク150は、1つまたは複数の第2のリンク150とは、1つまたは複数の点で異なっていてもよい。
図2は、例示的なソーシャル・グラフ200を示す。特定の実施形態において、ソーシャルネットワーキング・システム160は、1つまたは複数のデータ・ストアに1つまたは複数のソーシャル・グラフ200を格納することができる。特定の実施形態において、ソーシャル・グラフ200は、複数のユーザ・ノード202または複数のコンセプト・ノード204を含み得る複数のノードと、それらノードをつなぐ複数のエッジ206とを含むことができる。図2に示される例示的なソーシャル・グラフ200は、教示の目的で2次元の視覚的なマップ表示として示されている。特定の実施形態において、ソーシャルネットワーキング・システム160、クライアント・システム130、またはサードパーティ・システム170は、ソーシャル・グラフ200、および適切なアプリケーションのための関連するソーシャル・グラフ情報にアクセスすることができる。ソーシャル・グラフ200のノードおよびエッジは、例えば(ソーシャル・グラフ・データベースなどの)データ・ストアに、データ・オブジェクトとして格納され得る。こうしたデータ・ストアは、ソーシャル・グラフ200のノードまたはエッジの1つまたは複数の探索可能または照会可能なインデックスを含むことができる。
特定の実施形態において、ユーザ・ノード202は、ソーシャルネットワーキング・システム160のユーザに対応することができる。限定ではなく一例として、ユーザは、ソーシャルネットワーキング・システム160と対話する、またはソーシャルネットワーキング・システム160を介して通信する、個人(人間のユーザ)、エンティティ(例えば、企業、ビジネス、もしくはサードパーティのアプリケーション)、またはグループ(例えば、個人もしくは企業の)であってよい。特定の実施形態において、ユーザがソーシャルネットワーキング・システム160にアカウントの登録をするとき、ソーシャルネットワーキング・システム160は、ユーザに対応するユーザ・ノード202を作成し、ユーザ・ノード202を1つまたは複数のデータ・ストアに格納することができる。本明細書において説明されるユーザおよびユーザ・ノード202は、必要な場合、登録されたユーザ、および登録されたユーザに関連付けられたユーザ・ノード202を指すことができる。これに加えて、または代替として、本明細書において説明されるユーザおよびユーザ・ノード202は、必要な場合、ソーシャルネットワーキング・システム160にまだ登録されていないユーザを指すことができる。特定の実施形態において、ユーザ・ノード202は、ユーザによって提供された情報、またはソーシャルネットワーキング・システム160を含む様々なシステムによって集められた情報に関連付けられ得る。限定ではなく一例として、ユーザは、自分の名前、プロフィール写真、コンタクト情報、生年月日、性別、婚姻状況、家族状況、職業、学歴、好み、関心、または他の人口統計情報を提供することができる。特定の実施形態において、ユーザ・ノード202は、ユーザのプライバシー設定に応じて、ユーザの1つまたは複数の画像から抽出された顔認識データと関連付けることができる。また、特定の実施形態において、ユーザ・ノード202は、ユーザに関連付けられた情報に対応する1つまたは複数のデータ・オブジェクトに関連付けることができる。特定の実施形態において、ユーザ・ノード202は1つまたは複数のウェブページに対応することができる。
特定の実施形態において、コンセプト・ノード204は、コンセプト(concept)に対応することができる。限定ではなく一例として、コンセプトは、場所(例えば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(例えば、ソーシャルネットワーキング・システム160に関連付けられたウェブサイトもしくはウェブアプリケーション・サーバに関連付けられたサードパーティ・ウェブサイトなど)、エンティティ(例えば、人、ビジネス、グループ、スポーツ・チーム、もしくは有名人など)、ソーシャルネットワーキング・システム160内もしくはウェブアプリケーション・サーバなど外部サーバ上に配置され得るリソース(例えば、オーディオ・ファイル、ビデオ・ファイル、デジタル・フォト、テキスト・ファイル、構造化ドキュメント、もしくはアプリケーションなど)、不動産もしくは知的財産(例えば、彫刻、絵画、映画、ゲーム、歌、アイデア、写真、もしくは著作など)、ゲーム、アクティビティ、アイデアもしくは理論、別の適切なコンセプト、または2つ以上のこうしたコンセプトに対応することができる。コンセプト・ノード204は、ユーザによって提供されたコンセプトの情報、またはソーシャルネットワーキング・システム160を含む様々なシステムによって集められた情報に関連付けられ得る。限定ではなく一例として、コンセプトの情報は、名前もしくは肩書き、1つもしくは複数の画像(例えば、書籍のカバー・ページの画像)、ロケーション(例えば、アドレスもしくは地理的ロケーション)、(URLに関連付けられ得る)ウェブサイト、コンタクト情報(例えば、電話番号もしくはEメール・アドレス)、他の適切なコンセプト情報、またはこうした情報の任意の適切な組合せを含むことができる。特定の実施形態において、コンセプト・ノード204は、コンセプト・ノード204に関連付けられた情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられ得る。特定の実施形態において、コンセプト・ノード204は、1つまたは複数のウェブページに対応することができる。
特定の実施形態において、ソーシャル・グラフ200中のノードは、(「プロフィール・ページ」と呼ばれることがある)ウェブページを表すことができ、またはこうしたウェブページによって表され得る。プロフィール・ページは、ソーシャルネットワーキング・システム160によってホスティングされてよく、またはソーシャルネットワーキング・システム160にアクセス可能としてもよい。また、プロフィール・ページは、サードパーティ・サーバ170に関連付けられたサードパーティ・ウェブサイト上でホスティングされ得る。限定ではなく一例として、特定の外部ウェブページに対応するプロフィール・ページは、その特定の外部ウェブページであってよく、プロフィール・ページは、特定のコンセプト・ノード204に対応することができる。プロフィール・ページは、他のユーザのすべてまたは選択されたサブセットによって閲覧可能であってよい。限定ではなく一例として、ユーザ・ノード202は、対応するユーザが、コンテンツを追加し、告知をし、あるいは自己紹介をすることができる、対応するユーザ・プロフィール・ページを有することができる。限定ではなく別の例として、コンセプト・ノード204は、特にコンセプト・ノード204に対応するコンセプトに対して、1または複数のユーザが、コンテンツを追加し、告知をし、または自己紹介をすることができる、対応するコンセプト・プロフィール・ページを有することができる。
特定の実施形態において、コンセプト・ノード204は、サードパーティ・システム170によってホスティングされたサードパーティ・ウェブページまたはリソースを表すことができる。サードパーティ・ウェブページまたはリソースは、他の要素の中に、アクションまたはアクティビティを表す(例えば、JavaScript(登録商標)、AJAX、またはPHPのコードで実装され得る)コンテンツ、選択可能もしくはその他のアイコン、または他の相互に動作可能なオブジェクトを含むことができる。限定ではなく一例として、サードパーティ・ウェブページは、「いいね!」、「チェックイン」、「たべる」、「おすすめ」、または別の適切なアクションまたはアクティビティなどの選択可能なアイコンを含むことができる。サードパーティ・ウェブページを閲覧しているユーザは、アイコンのうちの1つ(例えば「たべる」)を選択することによってアクションを行い、クライアント・システム130がソーシャルネットワーキング・システム160にユーザのアクションを示すメッセージを送信するようにさせることができる。メッセージに応じて、ソーシャルネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、サードパーティ・ウェブページまたはリソースに対応するコンセプト・ノード204との間にエッジ(例えば、「たべる」エッジ)を作成し、エッジ206を1つまたは複数のデータ・ストアに格納することができる。
特定の実施形態において、ソーシャル・グラフ200における1対のノードは、1つまたは複数のエッジ206によって互いにつながっていてよい。1対のノードをつなぐエッジ206は、1対のノード間の関係を表すことができる。特定の実施形態において、エッジ206は、1対のノード間の関係に対応する1つまたは複数のデータ・オブジェクトまたは属性を含むまたは表すことができる。限定ではなく一例として、第1のユーザは、第2のユーザが第1のユーザの「友達」であることを示すことができる。この指標に応じて、ソーシャルネットワーキング・システム160は、「友達申請」を第2のユーザに送信することができる。第2のユーザが「友達申請」を承認する場合、ソーシャルネットワーキング・システム160は、ソーシャル・グラフ200において第1のユーザのユーザ・ノード202と第2のユーザのユーザ・ノード202とをつなぐエッジ206を作成し、エッジ206をソーシャル・グラフ情報としてデータ・ストア24の1つまたは複数に格納することができる。図2の例において、ソーシャル・グラフ200は、ユーザ「A」およびユーザ「B」の各ユーザ・ノード202間の友達関係を示すエッジ206、ならびにユーザ「C」およびユーザ「B」の各ユーザ・ノード202間の友達関係を示すエッジを含む。本開示では、特定のユーザ・ノード202をつなぐ特定の属性を有する特定のエッジ206について説明または示しているが、本開示は、ユーザ・ノード202をつなぐ任意の適切な属性を有する任意の適切なエッジ206を想定している。限定ではなく一例として、エッジ206は、交友関係、家族関係、ビジネスもしくは雇用関係、ファン関係、フォロワ関係、ビジタ関係、加入者関係、主従関係、相互関係、非相互関係、別の適切なタイプの関係、または2つ以上のこうした関係を表すことができる。また、本開示では、全般的にノードがつながっているものとして説明しているが、本開示はまた、ユーザまたはコンセプトがつながっているものとしても説明される。本明細書において、ユーザまたはコンセプトがつながっているということへの言及は、必要な場合、こうしたユーザまたはコンセプトに対応するノードが、1つまたは複数のエッジ206によって、ソーシャル・グラフ200においてつながっていることを指すことができる。
特定の実施形態において、ユーザ・ノード202とコンセプト・ノード204との間のエッジ206は、コンセプト・ノード204に関連付けられたコンセプトに向かうユーザ・ノード202に関連付けられたユーザによって行われる特定のアクションまたはアクティビティを表すことができる。限定ではなく一例として、図2に示されるように、ユーザは、コンセプトに対して「いいね!」、「通った」、「プレイした」、「聴いた」、「料理した」、「勤務した」、または「観た」として表すことができ、その各々はエッジのタイプまたはサブタイプに対応することができる。コンセプト・ノード204に対応するコンセプト・プロフィール・ページは、例えば、選択可能な「チェックイン」アイコン(例えばクリック可能な「チェックイン」アイコンなど)、または選択可能な「お気に入りに追加」アイコンを含むことができる。同様に、ユーザがこうしたアイコンをクリックした後に、ソーシャルネットワーキング・システム160は、各アクションに対応するユーザのアクションに応じて、「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく別の例として、ユーザ(「ユーザC」)は、特定のアプリケーション(オンライン音楽アプリケーションのスポティファイ(SPOTIFY)(登録商標))を使用して、特定の歌(「ランブル・オン」)を聴くことができる。この場合、ソーシャルネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、歌およびアプリケーションに対応するコンセプト・ノード204との間に(図2に示されるような)「聴いた」エッジ206および「使用した」エッジを作成して、ユーザが歌を聴き、アプリケーションを使ったことを示すことができる。また、ソーシャルネットワーキング・システム160は、歌およびアプリケーションに対応する各コンセプト・ノード204間に(図2に示されるような)「プレイした」エッジ206を作成して、特定の歌が特定のアプリケーションによってプレイされたことを示すことができる。この場合、「プレイした」エッジ206は、外部オーディオ・ファイル(歌「イマジン」)に対して外部アプリケーション(スポティファイ)によって行われるアクションに対応する。本開示では、ユーザ202とコンセプト・ノード204とをつなぐ特定の属性を有する特定のエッジ206について説明しているが、本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなぐ任意の適切な属性を有する任意の適切なエッジ206を想定している。また、本開示では、ユーザ・ノード202とコンセプト・ノード204との間のエッジが単一の関係を表す場合について説明しているが、本開示は、ユーザ・ノード202とコンセプト・ノード204との間のエッジが1つまたは複数の関係を表すことを想定している。限定ではなく一例として、エッジ206は、特定のコンセプトにおいて、ユーザが気に入っていることと、ユーザが使用したこととの両方を表すことができる。あるいは、別のエッジ206が、(図2において、ユーザ「E」のユーザ・ノード202と「スポティファイ」のコンセプト・ノード204との間で示されるような)ユーザ・ノード202とコンセプト・ノード204との間の各タイプの関係(または複数の単一関係)を表すことができる。
特定の実施形態において、ソーシャルネットワーキング・システム160は、ソーシャル・グラフ200においてユーザ・ノード202とコンセプト・ノード204との間にエッジ206を作成することができる。限定ではなく一例として、(例えば、ユーザのクライアント・システム130によってホスティングされるウェブ・ブラウザまたは専用のアプリケーションを使用することによってなど)コンセプト・プロフィール・ページを閲覧するユーザは、ユーザのクライアント・システム130に、コンセプト・プロフィール・ページに関連付けられたコンセプトをユーザが好んでいることを示すメッセージをソーシャルネットワーキング・システム160に送信させ得る「いいね!」アイコンのクリックまたは選択によって、コンセプト・ノード204によって表されるコンセプトをユーザが気に入っていることを示すことができる。メッセージに応じて、ソーシャルネットワーキング・システム160は、ユーザとコンセプト・ノード204との間の「いいね」エッジ206によって示されるように、ユーザに関連付けられたユーザ・ノード202とコンセプト・ノード204との間にエッジ206を作成することができる。特定の実施形態において、ソーシャルネットワーキング・システム160は、エッジ206を1つまたは複数のデータ・ストアに格納することができる。特定の実施形態において、エッジ206は、特定のユーザ・アクションに応じて、ソーシャルネットワーキング・システム160によって自動的に形成され得る。限定ではなく一例として、第1のユーザが、ピクチャをアップロードする、映画を観る、または歌を聴く場合、第1のユーザに対応するユーザ・ノード202と、こうしたコンセプトに対応するコンセプト・ノード204との間にエッジ206が形成され得る。本開示では、特定のエッジ206を特定の方法で形成することについて説明しているが、本開示は、任意の適切なエッジ206を任意の適切な方法で形成することを想定している。
また、任意の2つのノード間の分離の度合いが、1つのノードから別のノードまでソーシャル・グラフを移動するのに必要なホップ(またはエッジ)の最小数として規定される。この2つのノード間の分離の度合いは、ソーシャル・グラフにおいて2つのノードによって表されるユーザ間の関係またはコンセプト間の関係の指標とみなすことができる。
上述のように、ソーシャルネットワーキング・システムは、1つまたは複数のデータ・ストアにソーシャル・グラフ情報および他のソーシャルネットワーキング・システム関連情報を格納することができる。特定の実施形態において、このデータ・ストアに格納される情報は、特定のデータ構造に従って編成され得る。各データ・ストアは、リレーショナル・データベース、カラムナ(columnar)・データベース、相関データベース、または他の適切なデータベースとすることができる。特定の実施形態は、任意の適切なタイプのデータベースを想定している。加えて、各データ・ストア(またはパーティション)は、別々のサーバによって保持されてもよく、別々の物理的ロケーションにおいて保持されてもよい。特定の実施形態では、ソーシャルネットワーキング・システム、クライアント・システム、またはサードパーティ・システムが、データ・ストアに格納された情報を管理し、取り出し、修正し、追加し、または削除することを可能にするインターフェースが提供され得る。
データベースに送出される検索クエリは、「Pi」、「ダウントン・アビー」、「NBAオール・スター・ゲーム」、「世界で最も高い山」などの、1つまたは複数のキーワード・フレーズを含むことができる。データベースは、キーワード・フレーズをハッシュ(hash)することによって、キーワード・フレーズの検索結果にインデックス付けを行うことができる。例えば、データベースのインデックス・サーバは、キーワード・フレーズにハッシュ関数を適用してその結果として生じるハッシュ値を得ることにより、キーワード・フレーズの検索結果を格納し、修正し、取り出し、または削除することができるとともに、そのハッシュ値に対応するロケーションにおいてデータベース内に検索結果を格納したりルックアップしたりすることができる。つまり、データベースの検索インデックスは、ハッシュ関数と関連付けられたハッシュ・テーブルを含むことができる。しかしながら、キーワード・フレーズはその長さが非常に長くなる可能性があるため、単にキーワード・フレーズをハッシュするだけでは、結果として、データベースにとって非常に大きい検索インデックスが生じることとなり、データベースに格納されているデータにアクセスする際により高いコストまたはより低い性能をもたらす可能性がある。特定の実施形態では、検索インデックスのサイズを低減するための方法について説明する。特定の実施形態では、データベースの検索クエリのための1つまたは複数の検索語を決定し、その検索語の構造に基づいてデータベースにインデックス付けを行うことができる。
図3は、検索語の構造に基づいてデータベースにインデックス付けを行うための例示的な方法300を示す。方法300は、ソーシャルネットワーキング・システムか、あるいは1つまたは複数のデータ・ストアすなわちデータベースを含む任意の適切なシステムの1つまたは複数のコンピューティング・デバイス(例えばサーバ)によって実装され得る。方法300はステップ310から開始することができる。特定の実施形態では、ステップ310で、ソーシャルネットワーキング・システムの1つまたは複数のコンピューティング・デバイスが、検索クエリを受け取ることができる。例えば、受け取られた検索クエリは、ソーシャルネットワーキング・システムによってホスティングされるPHP(ハイパーテキスト・プリプロセッサ)プロセスを介して、ユーザによって送出された、構造化されたテキスト文字列もしくは実質的に構造化されていないテキスト文字列を含み得る。例えば、受け取られた検索クエリは、「誰がジョンとボブの共通の友達か?」、「誰がこの写真においてタグ付けされているか?」、「カリフォルニア州サンカルロス付近の興味深い場所を見つけて」、「私の友達の中の誰がこのレストランにチェックしているか?」、「誰がこの投稿を好んでいるか?」などであり得る。
特定の実施形態においては、ステップ320で、ソーシャルネットワーキング・システムの1つまたは複数のコンピューティング・デバイスが、受け取られた検索クエリに基づいて1つまたは複数の検索語を決定することができる。特定の実施形態において、各検索語は、接頭辞および接尾辞を含み得る。
例えば、受け取られた検索クエリが「誰がジョンとボブの共通の友達か?」である場合には、コンピューティング・デバイスは、「ジョン」のユーザ識別子<177>および「ボブ」のユーザ識別子<213>を決定し得る。コンピューティング・デバイスは、受け取られた検索クエリが、2つの検索語「友達:<177>」および「友達:<213>」で構成され得ると決定し得る。決定された検索語の各々は、接頭辞「友達:」(すなわち、〜の友達)およびユーザ識別子(<177>または<213>)による接尾辞を含む。各検索語の予期される検索結果は、ユーザ識別子のリスト(例えば、ユーザ<177>の友達であるユーザのリスト)を含み得る。コンピューティング・デバイスは、2つの決定された検索語の予期される検索結果にAND演算子を適用することによって(すなわち、AND 友達:<177>友達:<213>)、受け取られた検索クエリの結果を決定することができる。
例えば、コンピューティング・デバイスは、受け取られた検索クエリである「誰がこの写真においてタグ付けされているか?」が、検索語「写真においてタグ付けされている:<65199>」によって構成され、この検索語が、接頭辞「写真においてタグ付けされている」(すなわち、写真においてタグ付けされているユーザ)および「この写真」の写真識別子<65199>による接尾辞を有すると決定し得る。この検索語の予期される結果は、写真<65199>にタグ付けされたユーザに対応するユーザ識別子のリストを含み得る。
例えば、コンピューティング・デバイスは、受け取られた検索クエリである「カリフォルニア州サンカルロス付近の興味深い場所を見つけて」が、検索語「内における場所:<752039>」によって構成され、この検索語が、接頭辞「内における場所」(マップ・タイル内における場所)および「カリフォルニア州サンカルロス」に対応するマップ・タイル識別子<752039>による接尾辞を有すると決定し得る。ここで、マップは、世界、世界の一部分、または任意の適切な領域などの地理的領域を表し得る。このマップは複数のマップ・タイルに分割することができ、各マップ・タイルは、マップの特定の地理的領域を表すことができる。例えば、カリフォルニア州サンカルロスに対応するマップ・タイル<752039>は、地理座標において(37.52,−122.24)、(37.52,−122.30)、(37.47,−122.30)、および(37.47,−122.24)という4つのコーナーを有する長方形領域を含み得る。検索語「内における場所:<752039>」の予期される結果は、場所(または任意の適切なコンセプト)の識別子のリストを含むことができ、各場所(またはコンセプト)は、マップ・タイル<752039>の長方形領域内のロケーションを有する。
特定の実施形態では、ステップ330で、検索語の各々について、コンピューティング・デバイスは、各検索語の接頭辞および接尾辞に基づいて第1の2進数を生成し得る。さらに、コンピューティング・デバイスは、接頭辞に基づいて第2の2進数を生成し、接尾辞のオブジェクト・タイプに基づいて第3の2進数を生成し得る。コンピューティング・デバイスは、第2の2進数と第3の2進数とを連結することによって第1の2進数を生成することができる。
コンピューティング・デバイスは、まず、各検索語の接頭辞に基づいて、検索語ごとの第2の2進数を生成し得る。例えば、コンピューティング・デバイスは、検索語の接頭辞を、10ビットの長さを有する第2の2進数にマッピングすることができる。この第2の2進数の10ビットの長さは、第2の2進数が、上述した「友達:」や、「写真においてタグ付けされている:」や、「内における場所:」など、最大で約1000(210)個までの異なる接頭辞を表すことを可能にする。接頭辞の他の例には、「の投稿:」(ユーザによる投稿)、「のコメンター:」(投稿に関するコメントを述べたユーザ)、および「に好感を持つ人:」(投稿、写真、または任意の適切なコンセプトに好感を持つユーザ)が含まれ得る。特定の実施形態は、検索語の任意の適切な接頭辞を想定している。コンピューティング・デバイスは、ソーシャルネットワーキング・システムのデータ・ストアに格納されているマッピング・テーブルにアクセスし、マッピング・テーブルをルックアップすることで、特定の接頭辞を表す特定の10ビットの2進数を得ることができる。
コンピューティング・デバイスは、各検索語の接尾辞のオブジェクト・タイプ、すなわち各検索語の接尾辞オブジェクト・タイプに基づいて、検索語ごとの第3の2進数を生成し得る。コンピューティング・デバイスは、各検索語の接尾辞のオブジェクト・タイプに基づいて、第3の2進数の長さを決定し得る。コンピューティング・デバイスは、特定のオブジェクト・タイプの第3の2進数の長さを、その長さが、ソーシャルネットワーキング・システムに格納されている特定のオブジェクト・タイプのすべての考えられるオブジェクトを一意に表すのに十分な大きさになるように決定し得る。この第3の2進数の長さは、ハッシュ関数との関連付けの衝突を回避するために、特定のオブジェクト・タイプのすべての考えられるオブジェクトを一意に表すのに十分な大きさの2倍超とすることもできる。ここで、衝突とは、ハッシュ関数に供給される2つの異なる入力値(ハッシュ・キー)が同一の結果(ハッシュ値)をもたらす可能性があることを示し得る。衝突は、インデックス付けに望ましい1対1のマッピング特性を有しない。例えば、コンピューティング・デバイスは、ユーザ識別子の接尾辞について37ビットの2進数を生成し得る。つまり、ユーザ識別子は37ビットの2進数に変換され得る。37ビットの2進数は、ソーシャルネットワーキング・システムの215人の異なるユーザを一意に表すのに十分となり得る。別の例では、コンピューティング・デバイスは、コンセプト識別子(場所の識別子など)の接尾辞について64ビットの2進数を生成し得る。つまり、コンセプト識別子は64ビットの2進数に変換され得る。64ビットの2進数は、ソーシャルネットワーキング・システムの230個の異なるコンセプト・ノードを一意に表すのに十分となり得る。さらに別の例では、コンピューティング・デバイスは、マップ・タイル識別子の接尾辞について32ビットの2進数を生成し得る。つまり、マップ・タイル識別子は、32ビットの2進数に変換され得る。32ビットの2進数は、ソーシャルネットワーキング・システムに格納されているマップについての215個の異なるマップ・タイルを一意に表すのに十分となり得る。特定の実施形態は、任意の適切な接尾辞オブジェクト・タイプを想定している。例えば、これに限定されないが、接尾辞オブジェクト・タイプは、ユーザ、場所、コンセプト、マップ・タイル、投稿、写真、アプリケーション、イベント、ウェブページ、またはビデオに対応し得る。
特定の実施形態において、コンピューティング・デバイスは、第2の2進数と第3の2進数とを連結することによって、第1の2進数を生成することができる。例えば、検索語「友達:<177>」の第1の2進数は、接頭辞「友達:」を表す10ビットの(第2の)2進数が、接尾辞<177>を表す37ビットの(第3の)2進数と連結されることによって構成されている。したがって、検索語「友達:<177>」の第1の2進数は、47ビットの長さを有する。別の例として、検索語「写真においてタグ付けされている:<65199>」の第1の2進数は、接頭辞「写真においてタグ付けされている:」を表す10ビットの(第2の)2進数が、接尾辞<65199>を表す64ビットの(第3の)2進数と連結されることによって構成されている。したがって、検索語「写真においてタグ付けされている:<65199>」の第1の2進数は、74ビットの長さを有する。さらに別の例として、検索語「内における場所:<752039>」の第1の2進数は、接頭辞「内における場所:」を表す10ビットの(第2の)2進数が、接尾辞<752039>を表す32ビットの(第3の)2進数と連結されることによって構成されている。したがって、検索語「内における場所:<752039>」の第1の2進数は、42ビットの長さを有する。
特定の実施形態では、ステップ340で、コンピューティング・デバイスは、検索語ごとに、第1の2進数をハッシュすることによって1つまたは複数のデータ・ストアから各検索語の1つまたは複数の検索結果にアクセスし、それらの検索結果を取り出すことができる。コンピューティング・デバイスは、第1の2進数を、適切なハッシュ関数を用いてハッシュすることができる。すなわち、データ・ストアは、ハッシュ関数と関連付けられた1つまたは複数のハッシュ・テーブルを用いて、各検索語に対応する第1の2進数についての検索結果にインデックス付けを行うことができる。いくつかの実施形態では、コンピューティング・デバイスは、適切なハッシュ関数を用いて第1の2進数をハッシュする前に、第1の2進数に可逆変換関数を適用することができる。このケースにおいては、第1の2進数は、「1」のビットの大部分が第1の2進数のビットのある特定の範囲内にあるという点で、「塊のある」(lumpy)特性を有し得る。可逆変換関数は、塊のある第1の2進数を、より均一に分散された(例えば、「1」のビットが第1の2進数のすべてのビットの間でより均一に分散されている)形に変換し、したがって、ハッシュ関数と関連付けられる可能な衝突を回避することができる。なお、可逆関数Fは、x=F−1(F(x))という挙動を有し、ここで、F−1はFの逆関数である。
特定の実施形態において、データ・ストアは、複数のハッシュ・テーブルを維持することができる。各ハッシュ・テーブルは、特定の接尾辞オブジェクト・タイプの検索語についての検索結果にインデックス付けを行うことができる。すなわち、データ・ストアは、検索語の接尾辞のオブジェクト・タイプに基づいて検索結果にインデックス付けを行うことができる。例えば、データ・ストアは、ユーザ・オブジェクト・タイプの接尾辞を有する検索語(<177>のユーザ識別子を持つ「友達:<177>」など)のためのハッシュ・テーブルを維持することができる。データ・ストアは、コンセプト・オブジェクト・タイプの接尾辞を有する検索語(<65199>のコンセプト識別子を持つ「写真においてタグ付けされている:<65199>」など)のための別のハッシュ・テーブルを維持することができる。データ・ストアは、マップ・タイル・オブジェクト・タイプの接尾辞を有する検索語(<752039>のマップ・タイル識別子を持つ「内における場所:<752039>」など)のためのさらに別のハッシュ・テーブルを維持することができる。加えて、各ハッシュ・テーブルは、検索語の接頭辞にインデックス付けを行うことができる1つまたは複数の接頭辞マップも含むことができる。一実施形態において、データ・ストアの各々は、単一のオブジェクト・タイプのオブジェクトを格納するように構成され得る。例えば、データ・ストアは、ユーザ・オブジェクト(および格納される各ユーザ・オブジェクトと関連付けられる情報)を格納するように構成され得る。別のデータ・ストアは、コンセプト・オブジェクト(および格納される各コンセプト・オブジェクトと関連付けられる情報)を格納するように構成され得る。第3のデータ・ストアは、マップ・タイル・オブジェクト(および格納される各マップ・タイル・オブジェクトと関連付けられる情報)を格納するように構成され得る。データ・ストアの各々は、上述の1つまたは複数のハッシュ・テーブルを含むことができる。
対照的に、上述した各検索語の接尾辞オブジェクト・タイプに基づいた、異なる長さを持つ2進数を使用して検索語を表すのではなく、長い2進数を使用して、任意の接尾辞オブジェクト・タイプ(またはそれらの欠如)についての任意の検索語を表すこともできる。例えば、96ビットの2進数を使用して、ソーシャルネットワーキング・システムのための任意の検索語を一意に表すことができる。しかしながら、96ビットで表される検索語にインデックス付けを行うのに使用される対応する単一のハッシュ・テーブルは、上述のような、より短い2進数を有する検索語にインデックス付けを行うために使用されるハッシュ・テーブルよりもずっと大きくなる可能性がある。従って、特定の実施形態は、検索語の接頭辞および接尾辞における検索語の構造を決定し、接尾辞のオブジェクト・タイプに基づくより短い2進数を用いて検索語を表し、それによりハッシュ・テーブルのサイズを低減することができる。例えば、特定の実施形態は、ソーシャルネットワーキング・システムのために、ハッシュ・テーブルの全体サイズを、20%超低減することができる。
一実施形態において、コンピューティング・デバイスは、前述のように第2の2進数および第3の2進数を生成せずに、第1の2進数を生成することができる。例えば、コンピューティング・デバイスは、コンピューティング・デバイスが検索語についての接頭辞も接尾辞も決定することができない場合に、検索語を表す64ビットの2進数を生成することができる。コンピューティング・デバイスは、64ビットの2進数をハッシュすることによって、データ・ストアから、検索語についての1つまたは複数の検索結果にアクセスし、取り出すことができる。
特定の実施形態においては、ステップ350で、コンピューティング・デバイスは、それぞれの検索語の検索結果を集約することができる。例えば、前述したような、受け取られた検索クエリが「誰がジョンとボブの共通の友達か?」の場合には、コンピューティング・デバイスは、検索語「友達:<177>」について、データ・ストアから第1の結果セット(ユーザ<1>、ユーザ<3>、ユーザ<11>など)を取り出し得る。コンピューティング・デバイスは、検索語「友達:<213>」については、データ・ストアから第2の結果セット(ユーザ<1>、ユーザ<11>、ユーザ<17>、ユーザ<28>など)を取り出し得る。コンピューティング・デバイスは、第1の結果セットおよび第2の結果セットにAND演算を適用することによって検索結果を集約し、集約された検索結果(ユーザ<1>、ユーザ<11>など)を取得することができる。
特定の実施形態は、必要に応じて、図3の方法の1つまたは複数のステップを繰り返すことができる。本開示では、図3の方法の特定のステップを特定の順序で生じるものとして説明および示しているが、本開示は、任意の適切な順序で生じる図3の方法の任意の適切なステップを想定している。また、本開示は、図3の方法の特定のステップを実行する特定のコンポーネント、デバイス、またはシステムについて説明および示しているが、本開示は、図3の方法の任意の適切なステップを実行する任意の適切なコンポーネント、デバイス、またはシステムの任意の適切な組合せを想定している。
図4は、例示的なコンピュータ・システム400を示す。特定の実施形態では、1つまたは複数のコンピュータ・システム400が、本明細書において説明および示されている1つまたは複数の方法のうちの1つまたは複数のステップを実行する。特定の実施形態では、1つまたは複数のコンピュータ・システム400が、本明細書において説明および示されている機能を提供する。特定の実施形態では、1つまたは複数のコンピュータ・システム400上で稼働するソフトウェアが、本明細書において説明および示されている1つまたは複数の方法のうちの1つまたは複数のステップを実行し、または本明細書において説明および示されている機能を提供する。特定の実施形態は、1つまたは複数のコンピュータ・システム400の1つまたは複数の部分を含む。本明細書においては、コンピュータ・システムへの言及は、必要に応じて、コンピューティング・デバイスを包含することができ、その逆もまた同様である。また、コンピュータ・システムへの言及は、必要に応じて、1つまたは複数のコンピュータ・システムを包含することができる。
本開示は、任意の適切な数のコンピュータ・システム400を想定している。本開示は、任意の適切な物理的な形態を取るコンピュータ・システム400を想定している。限定ではなく一例として、コンピュータ・システム400は、組み込みコンピュータ・システム、システムオンチップ(SOC)、シングルボード・コンピュータ・システム(SBC)(例えば、コンピュータオンモジュール(COM)もしくはシステムオンモジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、インタラクティブ・キオスク、メインフレーム、コンピュータ・システムのメッシュ、モバイル電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらのうちの2つ以上の組合せとすることができる。必要に応じて、コンピュータ・システム400は、1つまたは複数のコンピュータ・システム400を含むものでもよく、単一型もしくは分散型であってもよく、複数のロケーションにわたっていてもよく、複数のマシンにわたっていてもよく、複数のデータセンタにわたっていてもよく、クラウドに置かれていてもよく、クラウドは、1つまたは複数のネットワークにおいて1つまたは複数のクラウド・コンポーネントを含むことができる。必要に応じて、1つまたは複数のコンピュータ・システム400は、本明細書において説明または示されている1つまたは複数の方法のうちの1つまたは複数のステップを、実質的な空間上のまたは時間上の制限を伴わずに実行することができる。限定ではなく一例として、1つまたは複数のコンピュータ・システム400は、本明細書において説明または示されている1つまたは複数の方法のうちの1つまたは複数のステップをリアルタイムで、またはバッチモードで実行することができる。1つまたは複数のコンピュータ・システム400は、必要に応じて、本明細書において説明または示されている1つまたは複数の方法のうちの1つまたは複数のステップを別々の時間にまたは別々の場所で実行することができる。
特定の実施形態において、コンピュータ・システム400は、プロセッサ402、メモリ404、記憶装置406、入力/出力(I/O)インターフェース408、通信インターフェース410、およびバス402を含む。本開示では、特定の数の特定のコンポーネントを特定の構成で有する特定のコンピュータ・システムについて説明および示しているが、本開示は、任意の適切な数の任意の適切なコンポーネントを任意の適切な構成で有する任意の適切なコンピュータ・システムを想定している。
特定の実施形態において、プロセッサ402は、コンピュータ・プログラムを構成している命令などを実行するためのハードウェアを含む。限定ではなく一例として、命令を実行するために、プロセッサ402は、内部レジスタ、内部キャッシュ、メモリ404、または記憶装置406から命令を取り出し(またはフェッチし)、それらの命令をデコードして実行し、次いで、1つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ404、または記憶装置406に書き込むことができる。特定の実施形態において、プロセッサ402は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含むことができる。本開示は、必要に応じて、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ402を想定している。限定ではなく一例として、プロセッサ402は、1つまたは複数の命令キャッシュ、1つまたは複数のデータ・キャッシュ、および1つまたは複数の変換ルックアサイド・バッファ(TLB)を含むことができる。命令キャッシュ内の命令は、メモリ404または記憶装置406内の命令のコピーとすることができ、命令キャッシュは、プロセッサ402によるそれらの命令の取り出しをスピードアップすることができる。データ・キャッシュ内のデータは、処理を行うためにプロセッサ402で実行する命令のためのメモリ404もしくは記憶装置406内のデータのコピーや、プロセッサ402において実行される後続命令によるアクセスのためのあるいはメモリ404もしくは記憶装置406への書き込みのためのプロセッサ402で実行された先の命令の結果や、他の適切なデータであってよい。データ・キャッシュは、プロセッサ402による読み取りオペレーションまたは書き込みオペレーションをスピードアップすることができる。TLBは、プロセッサ402のための仮想アドレス変換をスピードアップすることができる。特定の実施形態において、プロセッサ402は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含むことができる。本開示は、必要に応じて、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ402を想定している。必要に応じて、プロセッサ402は、1つまたは複数の演算ロジック・ユニット(ALU)を含んでもよく、マルチコア・プロセッサであってもよく、あるいは1つまたは複数のプロセッサ402を含んでもよい。本開示では、特定のプロセッサについて説明および示しているが、本開示は、任意の適切なプロセッサを想定している。
特定の実施形態において、メモリ404は、プロセッサ402が実行するための命令、またはプロセッサ402が処理するためのデータを格納するためのメイン・メモリを含む。限定ではなく一例として、コンピュータ・システム400は、命令を記憶装置406または別のソース(例えば、別のコンピュータ・システム400など)からメモリ404にロードすることができる。次いでプロセッサ402は、命令をメモリ404から内部レジスタまたは内部キャッシュにロードすることができる。命令を実行するために、プロセッサ402は、命令を内部レジスタまたは内部キャッシュから取り出し、それらの命令をデコードすることができる。命令の実行中または実行後に、プロセッサ402は、1つまたは複数の結果(それらは、中間結果の場合も、最終結果の場合もある)を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ402は、それらの結果のうちの1つまたは複数をメモリ404に書き込むことができる。特定の実施形態では、プロセッサ402は、(記憶装置406または他の場所ではなく)1つまたは複数の内部レジスタもしくは内部キャッシュ内の命令またはメモリ404内の命令のみを実行し、(記憶装置406または他の場所ではなく)1つまたは複数の内部レジスタもしくは内部キャッシュ内のデータまたはメモリ404内のデータのみを処理する。1つまたは複数のメモリ・バス(各々、アドレス・バスおよびデータ・バスを含み得る)は、プロセッサ402をメモリ404に結合することができる。バス412は、後述するように、1つまたは複数のメモリ・バスを含むことができる。特定の実施形態では、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ402とメモリ404との間に置かれ、プロセッサ402によって要求されるメモリ404へのアクセスを容易にする。特定の実施形態において、メモリ404は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、必要に応じて、揮発性メモリとすることができる。必要に応じて、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)とすることができる。また、必要に応じて、このRAMは、シングルポートRAMまたはマルチポートRAMとすることができる。本開示は、任意の適切なRAMを想定している。メモリ404は、必要に応じて、1つまたは複数のメモリ404を含むことができる。本開示では、特定のメモリについて説明および示しているが、本開示は、任意の適切なメモリを想定している。
特定の実施形態において、記憶装置406は、データまたは命令のための大容量記憶装置を含む。限定ではなく一例として、記憶装置406は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらのうちの2つ以上の組合せを含むことができる。記憶装置406は、必要に応じて、取り外し可能な、または取り外し不能な(すなわち、固定された)媒体を含むことができる。記憶装置406は、必要に応じて、コンピュータ・システム400の内部にあっても、外部にあってもよい。特定の実施形態において、記憶装置406は、不揮発性のソリッドステート・メモリである。特定の実施形態において、記憶装置406は、読み取り専用メモリ(ROM)を含む。必要に応じて、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書替え可能ROM(EAROM)、またはフラッシュ・メモリ、またはこれらのうちの2つ以上の組合せとすることができる。本開示は、任意の適切な物理的形態を取る大容量記憶装置406を想定している。記憶装置406は、必要に応じて、プロセッサ402と記憶装置406との間における通信を容易にする1つまたは複数の記憶装置制御ユニットを含むことができる。必要に応じて、記憶装置406は、1つまたは複数の記憶装置406を含むことができる。本開示では、特定の記憶装置について説明および示しているが、本開示は、任意の適切な記憶装置を想定している。
特定の実施形態において、I/Oインターフェース408は、コンピュータ・システム400と1つまたは複数のI/Oデバイスとの間における通信のための1つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム400は、必要に応じて、これらのI/Oデバイスのうちの1つまたは複数を含むことができる。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータ・システム400との間における通信を可能にすることができる。限定ではなく一例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、ビデオ・カメラ、別の適切なI/Oデバイス、またはこれらのうちの2つ以上の組合せを含むことができる。I/Oデバイスは、1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/Oデバイス、およびそれらのI/Oデバイスのための任意の適切なI/Oインターフェース408を想定している。必要に応じて、I/Oインターフェース408は、プロセッサ402がこれらのI/Oデバイスのうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。I/Oインターフェース408は、必要に応じて、1つまたは複数のI/Oインターフェース408を含むことができる。本開示では、特定のI/Oインターフェースについて説明および示しているが、本開示は、任意の適切なI/Oインターフェースを想定している。
特定の実施形態において、通信インターフェース410は、コンピュータ・システム400と、1つまたは複数の他のコンピュータ・システム400あるいは1つまたは複数のネットワークとの間における通信(例えば、パケットベースの通信など)のための1つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく一例として、通信インターフェース410は、イーサネット(登録商標)もしくはその他の有線ベースのネットワークと通信するためのネットワーク・インターフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWi−Fi(登録商標)ネットワークなどのワイヤレス・ネットワークと通信するためのワイヤレスNIC(WNIC)もしくはワイヤレス・アダプタを含むことができる。本開示は、任意の適切なネットワーク、およびそのネットワークのための任意の適切な通信インターフェース410を想定している。限定ではなく一例として、コンピュータ・システム400は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、あるいはインターネットの1つまたは複数の部分、またはこれらのうちの2つ以上の組合せと通信することができる。これらのネットワークの1つまたは複数のうちの1つまたは複数の部分は、有線またはワイヤレスとすることができる。一例として、コンピュータ・システム400は、ワイヤレスPAN(WPAN)(例えばブルートゥース(登録商標)WPANなど)、Wi−Fi(登録商標)ネットワーク、Wi−MAX(登録商標)ネットワーク、セルラ電話ネットワーク(例えば、GSM(登録商標)など)、または他の適切なワイヤレス・ネットワーク、またはこれらのうちの2つ以上の組合せと通信することができる。コンピュータ・システム400は、必要に応じて、これらのネットワークのうちの任意のネットワークのための任意の適切な通信インターフェース410を含むことができる。通信インターフェース410は、必要に応じて、1つまたは複数の通信インターフェース410を含むことができる。本開示では、特定の通信インターフェースについて説明および示しているが、本開示は、任意の適切な通信インターフェースを想定している。
特定の実施形態において、バス412は、コンピュータ・システム400のコンポーネント同士を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく一例として、バス412は、アクセラレイティッド・グラフィックス・ポート(AGP)もしくは他のグラフィックス・バス、エンハンスド・インダストリー・スタンダード・アーキテクチャ(EISA)バス、フロントサイド・バス(FSB)、ハイパートランスポート(HT)インターコネクト、インダストリー・スタンダード・アーキテクチャ(ISA)バス、インフィニバンド・インターコネクト、ローピンカウント(LPC)バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアル・アドバンスド・テクノロジー・アタッチメント(SATA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル(VLB)バス、または別の適切なバス、またはこれらのうちの2つ以上の組合せを含むことができる。バス412は、必要に応じて、1つまたは複数のバス412を含むことができる。本開示では、特定のバスについて説明および示しているが、本開示は、任意の適切なバスまたはインターコネクトを想定している。
本明細書において、コンピュータ読み取り可能非一時的記憶媒体は、必要な場合、1つもしくは複数の半導体ベースもしくは他の集積回路(IC)(例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)、もしくは特定用途向けIC(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、任意の他の適切なコンピュータ読み取り可能非一時的記憶媒体、またはこれらの2つ以上の組合せを含むことができる。コンピュータ読み取り可能非一時的記憶媒体は、必要に応じて、揮発性、不揮発性、または揮発性と不揮発性との組合せであってよい。
本明細書において、「または」は、別段明示的に示されず別段文脈によっても示されない場合、包括的であり排他的ではない。したがって、本明細書において、「AまたはB」は、別段明示的に示されず別段文脈によっても示されない場合、「A、B、または両方」を意味する。また、「および」は、別段明示的に示されず別段文脈によっても示されない場合、共にと別々の両方のことである。したがって、本明細書において、「AおよびB」は、別段明示的に示されず別段文脈によっても示されない場合、「共にまたは別々にAおよびB」を意味する。
本開示の範囲は、当業者が認識することになる、本明細書に記載または示した例示的な実施形態の変形、置換、変化、改変、および変更をすべて含む。本開示の範囲は、本明細書に記載または示した例示的な実施形態に限定されない。また、本開示は、それぞれの実施形態を、特定の構成要素、要素、機能、動作、または工程を含みものとして本明細書に記載しかつ示したが、これらの実施形態のいずれも、当業者が認識することになる、本明細書のいずれかの箇所に記載または示された構成要素、要素、機能、動作、または工程のいずれかの任意の組合せまたは並べ替えを含むことができる。さらに、装置もしくはシステム、または装置もしくはシステムの構成要素が、特定の機能を行う、ようになされた、ように配置された、ことが可能な、ように構成された、ことを可能にする、ように動作可能な、または、ように動作する、といったことに対する特許請求の範囲における言及は、それまたはその特定の機能がアクティブ化、ターン・オン、またはアンロックされているかどうかにかかわらず、こうした装置、システム、または構成要素が、そのようになされ、配置され、可能であり、構成され、可能にし、動作可能であり、または動作する限り、こうした装置、システム、構成要素を含む。

Claims (20)

  1. 1つまたは複数のコンピューティング・デバイスによって実行される方法であって、
    オンライン・ソーシャル・ネットワークの第1のユーザのクライアント・デバイスから、前記第1のユーザによって入力された検索クエリを受け取ること、
    受け取られた前記検索クエリに基づいて、各々が接頭辞および接尾辞を含む1つまたは複数の検索語を決定することであって、各接頭辞が前記オンライン・ソーシャル・ネットワークのソーシャル・グラフのエッジ・タイプとオブジェクト・タイプに対応し、各接尾辞が前記ソーシャル・グラフの特定のノードに対応する前記1つまたは複数の検索語を決定すること、
    前記検索クエリに応答して前記第1のユーザの前記クライアント・デバイスに、検索語の前記接頭辞および前記接尾辞にマッチする1つまたは複数の検索結果を送信すること、
    を備える方法。
  2. 前記ソーシャル・グラフは、複数のノードとそれらノードをつなぐ複数のエッジとを含み、各エッジが特定のエッジ・タイプのものであり、各ノードが、特定のオブジェクト・タイプを有し前記オンライン・ソーシャル・ネットワークに関連付けられたオブジェクトに対応する、請求項1に記載の方法。
  3. 前記オブジェクトは、ユーザ、コンセプト、またはマップ・タイルに対応する、請求項2に記載の方法。
  4. 前記クライアント・デバイスに送信される前記1つまたは複数の検索結果は、各検索語について、
    前記検索語の前記接頭辞および前記接尾辞に基づいて第1の2進数を生成すること、
    適切なハッシュ関数を決定すること、
    前記第1の2進数に前記ハッシュ関数を適用することによってハッシュ値を生成すること、
    前記ハッシュ関数に関連付けられたハッシュ・テーブルにアクセスすること、
    前記ハッシュ値にマッチする1つまたは複数の検索結果を取り出すこと、
    によって決定される、請求項1に記載の方法。
  5. 前記適切なハッシュ関数は前記接尾辞に対応するオブジェクト・タイプに基づいて決定される、請求項4に記載の方法。
  6. 前記第1の2進数に可逆変換関数を適用することをさらに備える請求項4に記載の方法。
  7. 前記第1の2進数の長さが、前記接尾辞に対応するオブジェクト・タイプに基づいている、請求項4に記載の方法。
  8. 前記第1の2進数は、
    前記接頭辞に基づいて第2の2進数を生成すること、
    前記接尾辞のオブジェクト・タイプに基づいて第3の2進数を生成すること、
    前記第2の2進数と前記第3の2進数とを連結すること
    によって生成される、請求項4に記載の方法。
  9. 前記第3の2進数の長さが、前記接尾辞のオブジェクト・タイプに基づいて決定される、請求項8に記載の方法。
  10. 前記接頭辞または前記接尾辞がヌル値となるように決定された場合に、予め設定された長さを有する第1の2進数が生成される、請求項1に記載の方法。
  11. 前記第1のユーザによって入力された前記検索クエリは、構造化されたテキスト文字列である、請求項1に記載の方法。
  12. 前記検索クエリは、前記オンライン・ソーシャル・ネットワークによってホスティングされるPHPプロセスを介して受信される、請求項1に記載の方法。
  13. 1つまたは複数のコンピュータ読み取り可能非一時的記憶媒体であって、実行時に、
    オンライン・ソーシャル・ネットワークの第1のユーザのクライアント・デバイスから、前記第1のユーザによって入力された検索クエリを受け取り、
    各々が接頭辞および接尾辞を含む1つまたは複数の検索語であって、各接頭辞が前記オンライン・ソーシャル・ネットワークのソーシャル・グラフのエッジ・タイプとオブジェクト・タイプに対応し、各接尾辞が前記ソーシャル・グラフの特定のノードに対応する前記1つまたは複数の検索語を、受け取られた前記検索クエリに基づいて決定し、
    前記検索クエリに応答して前記第1のユーザの前記クライアント・デバイスに、検索語の前記接頭辞および前記接尾辞にマッチする1つまたは複数の検索結果を送信する
    ように動作可能なソフトウェアを具現化する記憶媒体。
  14. 前記ソーシャル・グラフは、複数のノードとそれらノードをつなぐ複数のエッジとを含み、各エッジが特定のエッジ・タイプのものであり、各ノードが、特定のオブジェクト・タイプを有し前記オンライン・ソーシャル・ネットワークに関連付けられたオブジェクトに対応する、請求項13に記載の記憶媒体。
  15. 前記クライアント・デバイスに送信される前記1つまたは複数の検索結果は、各検索語について、
    前記検索語の前記接頭辞および前記接尾辞に基づいて第1の2進数を生成すること、
    適切なハッシュ関数を決定すること、
    前記第1の2進数に前記ハッシュ関数を適用することによってハッシュ値を生成すること、
    前記ハッシュ関数に関連付けられたハッシュ・テーブルにアクセスすること、
    前記ハッシュ値にマッチする1つまたは複数の検索結果を取り出すこと、
    によって決定される、請求項13に記載の記憶媒体。
  16. 前記適切なハッシュ関数は前記接尾辞に対応するオブジェクト・タイプに基づいて決定される、請求項15に記載の記憶媒体。
  17. 前記第1の2進数は、
    前記接頭辞に基づいて第2の2進数を生成すること、
    前記接尾辞のオブジェクト・タイプに基づいて第3の2進数を生成すること、
    前記第2の2進数と前記第3の2進数とを連結すること
    によって生成される、請求項15に記載の記憶媒体。
  18. 前記第3の2進数の長さが、前記接尾辞のオブジェクト・タイプに基づいて決定される、請求項17に記載の記憶媒体。
  19. 前記接頭辞または前記接尾辞がヌル値となるように決定された場合に、予め設定された長さを有する第1の2進数が生成される、請求項13に記載の記憶媒体。
  20. 1つまたは複数のプロセッサと、
    前記プロセッサに結合され、該プロセッサによって実行可能な命令を含むメモリと、
    を備え、前記プロセッサは、前記命令の実行時に、
    オンライン・ソーシャル・ネットワークの第1のユーザのクライアント・デバイスから、前記第1のユーザによって入力された検索クエリを受け取り、
    各々が接頭辞および接尾辞を含む1つまたは複数の検索語であって、各接頭辞が前記オンライン・ソーシャル・ネットワークのソーシャル・グラフのエッジ・タイプとオブジェクト・タイプに対応し、各接尾辞が前記ソーシャル・グラフの特定のノードに対応する前記1つまたは複数の検索語を、受け取られた前記検索クエリに基づいて決定し、
    前記検索クエリに応答して前記第1のユーザの前記クライアント・デバイスに、検索語の前記接頭辞および前記接尾辞にマッチする1つまたは複数の検索結果を送信する
    ように動作可能である、システム。
JP2016100488A 2013-03-13 2016-05-19 短語のハッシュ Active JP6315835B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/799,772 US9171063B2 (en) 2013-03-13 2013-03-13 Short-term hashes
US13/799,772 2013-03-13

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016500968A Division JP5941239B1 (ja) 2013-03-13 2014-03-10 短語のハッシュ

Publications (2)

Publication Number Publication Date
JP2016154050A true JP2016154050A (ja) 2016-08-25
JP6315835B2 JP6315835B2 (ja) 2018-04-25

Family

ID=51533074

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016500968A Active JP5941239B1 (ja) 2013-03-13 2014-03-10 短語のハッシュ
JP2016100488A Active JP6315835B2 (ja) 2013-03-13 2016-05-19 短語のハッシュ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016500968A Active JP5941239B1 (ja) 2013-03-13 2014-03-10 短語のハッシュ

Country Status (11)

Country Link
US (2) US9171063B2 (ja)
EP (2) EP3270302B1 (ja)
JP (2) JP5941239B1 (ja)
KR (2) KR101962715B1 (ja)
CN (2) CN105229639B (ja)
AU (2) AU2014249325B2 (ja)
BR (1) BR112015023045A8 (ja)
CA (2) CA2919451C (ja)
IL (2) IL241162A (ja)
MX (1) MX348259B (ja)
WO (1) WO2014164443A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336312B2 (en) * 2013-04-08 2016-05-10 Facebook, Inc. Vertical-based query optionalizing
US9330104B2 (en) * 2014-04-30 2016-05-03 International Business Machines Corporation Indexing and searching heterogenous data entities
US10552413B2 (en) * 2016-05-09 2020-02-04 Sap Se Database workload capture and replay
US10298702B2 (en) 2016-07-05 2019-05-21 Sap Se Parallelized replay of captured database workload
US10592528B2 (en) 2017-02-27 2020-03-17 Sap Se Workload capture and replay for replicated database systems
US10698892B2 (en) 2018-04-10 2020-06-30 Sap Se Order-independent multi-record hash generation and data filtering
CN109783671B (zh) * 2019-01-30 2021-10-08 京东方科技集团股份有限公司 一种以图搜图的方法、计算机可读介质及服务器
US11709752B2 (en) 2020-04-02 2023-07-25 Sap Se Pause and resume in database system workload capture and replay
US11615012B2 (en) 2020-04-03 2023-03-28 Sap Se Preprocessing in database system workload capture and replay

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011501837A (ja) * 2007-09-28 2011-01-13 マイクロソフト コーポレーション テキスト文字列のツー・パスハッシュ抽出
US20110179030A1 (en) * 2010-01-19 2011-07-21 Electronics And Telecommunications Research Institute Method and apparatus for indexing suffix tree in social network
WO2011142134A1 (ja) * 2010-05-14 2011-11-17 日本電気株式会社 情報検索装置、情報検索方法、コンピュータ・プログラムおよびデータ構造
US20120005224A1 (en) * 2010-07-01 2012-01-05 Spencer Greg Ahrens Facilitating Interaction Among Users of a Social Network
US20120221561A1 (en) * 2011-02-28 2012-08-30 Hsbc Bank Plc Computer system, database and uses thereof
US20130054631A1 (en) * 2011-08-30 2013-02-28 Microsoft Corporation Adding social network data to search suggestions

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8041719B2 (en) 2003-05-06 2011-10-18 Symantec Corporation Personal computing device-based mechanism to detect preselected data
EP1540542A2 (en) 2002-09-18 2005-06-15 Vontu, Inc Detection of preselected data
JP4114600B2 (ja) * 2003-12-02 2008-07-09 日本電気株式会社 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム
US7461089B2 (en) 2004-01-08 2008-12-02 International Business Machines Corporation Method and system for creating profiling indices
US7523098B2 (en) * 2004-09-15 2009-04-21 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
JP4810915B2 (ja) * 2005-07-28 2011-11-09 日本電気株式会社 データ検索装置及び方法、並びにコンピュータ・プログラム
US7818326B2 (en) 2005-08-31 2010-10-19 Mcafee, Inc. System and method for word indexing in a capture system and querying thereof
US7805430B2 (en) 2005-12-22 2010-09-28 Sap Ag Evaluation of name prefix and suffix during a search
CN101145149A (zh) * 2006-09-11 2008-03-19 千兆科技(深圳)有限公司 基于下载引擎的二进制文件相关搜索方法及系统
US8131722B2 (en) 2006-11-20 2012-03-06 Ebay Inc. Search clustering
US7925644B2 (en) 2007-03-01 2011-04-12 Microsoft Corporation Efficient retrieval algorithm by query term discrimination
US8572110B2 (en) 2008-12-04 2013-10-29 Microsoft Corporation Textual search for numerical properties
US8239364B2 (en) * 2009-12-08 2012-08-07 Facebook, Inc. Search and retrieval of objects in a social networking system
US8543598B2 (en) * 2010-03-01 2013-09-24 Microsoft Corporation Semantic object characterization and search
CA2752916A1 (en) * 2010-03-24 2011-09-24 Visa U.S.A. Inc. Direct bill payment apparatuses, methods and systems
US20110307460A1 (en) * 2010-06-09 2011-12-15 Microsoft Corporation Navigating relationships among entities
US8498972B2 (en) 2010-12-16 2013-07-30 Sap Ag String and sub-string searching using inverted indexes
US8527497B2 (en) * 2010-12-30 2013-09-03 Facebook, Inc. Composite term index for graph data
US20120271541A1 (en) * 2011-04-20 2012-10-25 Telefonaktiebolaget L M Ericsson (Publ) Route recommendation system
US8738595B2 (en) * 2011-11-22 2014-05-27 Navteq B.V. Location based full text search

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011501837A (ja) * 2007-09-28 2011-01-13 マイクロソフト コーポレーション テキスト文字列のツー・パスハッシュ抽出
US20110179030A1 (en) * 2010-01-19 2011-07-21 Electronics And Telecommunications Research Institute Method and apparatus for indexing suffix tree in social network
WO2011142134A1 (ja) * 2010-05-14 2011-11-17 日本電気株式会社 情報検索装置、情報検索方法、コンピュータ・プログラムおよびデータ構造
US20120005224A1 (en) * 2010-07-01 2012-01-05 Spencer Greg Ahrens Facilitating Interaction Among Users of a Social Network
US20120221561A1 (en) * 2011-02-28 2012-08-30 Hsbc Bank Plc Computer system, database and uses thereof
US20130054631A1 (en) * 2011-08-30 2013-02-28 Microsoft Corporation Adding social network data to search suggestions

Also Published As

Publication number Publication date
US20160004786A1 (en) 2016-01-07
IL241162A0 (en) 2015-11-30
BR112015023045A2 (pt) 2017-07-18
JP6315835B2 (ja) 2018-04-25
KR101582930B1 (ko) 2016-01-07
EP3270302B1 (en) 2019-07-31
CA2919451A1 (en) 2014-10-09
AU2014249325B2 (en) 2015-12-03
WO2014164443A1 (en) 2014-10-09
IL244370A0 (en) 2016-04-21
BR112015023045A8 (pt) 2019-11-26
EP2973070A4 (en) 2016-12-28
AU2014249325A1 (en) 2015-10-29
EP3270302A1 (en) 2018-01-17
CA2903455A1 (en) 2014-10-09
KR20150122254A (ko) 2015-10-30
EP2973070B1 (en) 2017-08-02
KR20160005127A (ko) 2016-01-13
US20140280041A1 (en) 2014-09-18
CN105229639B (zh) 2016-09-21
MX348259B (es) 2017-06-05
US10318652B2 (en) 2019-06-11
CN107103017A (zh) 2017-08-29
IL241162A (en) 2016-04-21
JP2016519802A (ja) 2016-07-07
MX2015012619A (es) 2016-08-18
AU2016200273A1 (en) 2016-02-11
US9171063B2 (en) 2015-10-27
CA2919451C (en) 2020-06-30
AU2016200273B2 (en) 2018-02-01
JP5941239B1 (ja) 2016-06-29
CN105229639A (zh) 2016-01-06
EP2973070A1 (en) 2016-01-20
KR101962715B1 (ko) 2019-03-27
CA2903455C (en) 2016-04-12

Similar Documents

Publication Publication Date Title
JP6363133B2 (ja) 抽出演算子
JP6315835B2 (ja) 短語のハッシュ
US9203925B1 (en) User search based on private information
JP2016212908A (ja) バーティカルベースのクエリのオプション化
US10042926B1 (en) User search based on family connections
JP2016528619A (ja) 電子的な記号の文字列のためのインデックス

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180123

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180320

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180326

R150 Certificate of patent or registration of utility model

Ref document number: 6315835

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250