JP5497172B2 - 分散型ネットワーク上で複数キーワード・クエリを効率的に処理するための方法および装置 - Google Patents

分散型ネットワーク上で複数キーワード・クエリを効率的に処理するための方法および装置 Download PDF

Info

Publication number
JP5497172B2
JP5497172B2 JP2012520757A JP2012520757A JP5497172B2 JP 5497172 B2 JP5497172 B2 JP 5497172B2 JP 2012520757 A JP2012520757 A JP 2012520757A JP 2012520757 A JP2012520757 A JP 2012520757A JP 5497172 B2 JP5497172 B2 JP 5497172B2
Authority
JP
Japan
Prior art keywords
query
node
keyword
bloom filter
calculating
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.)
Expired - Fee Related
Application number
JP2012520757A
Other languages
English (en)
Other versions
JP2012533797A (ja
Inventor
スワミナサン、アシュウィン
ジャヤラム、ランジス・エス.
ナラヤナン、ビドヤ
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2012533797A publication Critical patent/JP2012533797A/ja
Application granted granted Critical
Publication of JP5497172B2 publication Critical patent/JP5497172B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/435Filtering based on additional data, e.g. user or group profiles
    • 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/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • 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/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • 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
    • 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/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • 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/953Querying, e.g. by the use of web search engines
    • G06F16/9538Presentation of query results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Description

本開示は、モバイル動作環境に関し、より詳細には、分散型ネットワーク、ならびに分散型ネットワーク上での、ANDクエリおよびORクエリなど、複数キーワード・クエリのための方法および装置に関する。
米国特許法第119条に基づく優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により明確に本明細書に組み込まれる、2009年7月14日に出願された「Methods and Apparatus for Performing Searches in a Peer-to-Peer Distributed Network」と題する仮出願第61/225,505号の優先権を主張する。
オーバーレイ・ネットワークは、既存のネットワークの上に構築されたノードおよび論理リンクの仮想ネットワークである。オーバーレイ・ネットワークの例には、限定はしないが、インターネット、Chord、コンテンツアドレス指定可能ネットワーク(CAN)、Pastry、およびViceroyがある。いくつかのオーバーレイ・ネットワークでは、各ノードは、データの記憶および検索におけるネットワーク効率を高めるために、ネットワーク上でデータを配信するように、パーティションと呼ばれるオーバーレイ・ネットワークデータの部分を記憶することができる。
オーバーレイ・ネットワークに加入したデバイスまたはノードは、オーバーレイ・ネットワーク中の別のデバイスまたはノードからのサービスを取得することを望み得る。そのようなサービスは、複数のサービス記述言語のいずれか1つを使用してオーバーレイ・ネットワークにおいて公開され、それらのサービス記述言語の各々は、公開サービスを見つけるのに使用するための対応するサービス発見プロトコルを有する。Wikipediaによって与えられているサービス発見の定義では、「サービス発見プロトコルとは、コンピュータ・ネットワーク上でデバイスとこれらのデバイスによって提供されるサービスとの自動検出を可能にするネットワーク・プロトコルである」と記載されている。言い換えれば、サービス発見とは、要求されたサービスのためのサービス・プロバイダを見つけるアクションである。要求されたサービスのロケーション(一般的にはサービス・プロバイダのアドレス)が検索されたとき、ユーザはさらに、そのロケーションにアクセスし、それを使用し得る。
概して、サービス発見プロトコルは、(a)オーバーレイ上でサービスを提供するサービス・プロバイダ、および(b)サービスを使用するクライアントという、2つのエンティティを含む。一態様では、サービス・プロバイダの例には、印刷、スキャン、ファックス、ストレージ、音楽共有、ファイル共有、ゲーム、および映画チケット、ホテル、航空券の予約、またはオンライン・ゲームなどのためのウェブ・サービスなどのサービスを提供するノードがある。さらに、ネットワーク中のどんなノードもクライアントとして働くことができる。したがって、サービス発見の目的は、クライアントが、注目する特定のサービスのサービス・プロバイダを(そのようなサービスが存在する場合)見つけるのを助けることである。
ピアツーピア・オーバーレイ・ネットワークにおいてサービス発見が成功するためには、サービス・プロバイダは、サービス記述言語を使用してそのサービス・プロバイダの(1つまたは複数の)サービスを規定し、サービスに関するメタデータが、オーバーレイ中のノード上に何らかの検索可能な形式で記憶され、クライアントは、対応するサービスを見つけるのを助けるための問合せシステムに渡される検索可能キーワードを使用してサービス要求を表現することが可能でなければならない。
公開プロセスの一部として、キーワードが、サービス記述ドキュメントから抽出され、分散型ネットワーク上で分散的な方法で個別に公開される。次いで、個々のノードによって、キーワードおよび/またはサービスを発見するためのクエリが発行され得る。一般に、2つ以上のキーワードの検索を実行することは、キーワードのうちの1つを含むクエリが各ノードに送られる、AND検索を行うことを必要とする。同様に、OR検索は、クエリを形成する複数のキーワードのうちの1つまたは複数を含むクエリを各ノードに送ることによって実行される。そのような典型的な検索は高い通信コストに関連する。
したがって、複数キーワード・クエリを処理する方法をより効率的にし、通信コストが最適化されることが望ましいであろう。
以下で、1つまたは複数の態様の基本的理解を与えるために、そのような態様の簡略化された概要を提示する。この概要は、すべての企図された態様の包括的な概観ではなく、すべての態様の主要または重要な要素を識別するものでも、いずれかまたはすべての態様の範囲を定めるものでもない。その唯一の目的は、後で提示するより詳細な説明の導入として、1つまたは複数の態様のいくつかの概念を簡略化された形で提示することである。
一態様によれば、オーバーレイ・ネットワークにおいて検索する方法は、分散型ネットワーク中の第1のノードにおいてクエリを受信することであって、上記クエリが第1のキーワードと第2のキーワードとを含む、受信することと、上記第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけることと、上記第1のセット中のドキュメントの上記第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算することと、上記第1のセットの第1のブルーム・フィルタを、上記第2のキーワードをハッシングすることによって識別された上記分散型ネットワーク中の第2のノードに送ることであって、上記第1のブルーム・フィルタが上記第1のブルーム・フィルタ長とハッシュ関数の上記第1の数とを備える、送ることとを備える。
さらに別の態様は、分散型ネットワーク中の第1のノードにおいてクエリを受信するための第1のモジュールであって、上記クエリが第1のキーワードと第2のキーワードとを含む、第1のモジュールと、上記第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけるための第2のモジュールと、上記第1のセット中のドキュメントの上記第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算するための第3のモジュールと、上記第1のセットの第1のブルーム・フィルタを、上記第2のキーワードをハッシングすることによって識別された上記分散型ネットワーク中の第2のノードに送るための第4のモジュールであって、上記第1のブルーム・フィルタが上記第1のブルーム・フィルタ長とハッシュ関数の上記第1の数とを備える、第4のモジュールとを備える、ネットワークにおいてサービスを公開または発見するように構成された少なくとも1つのプロセッサに関係する。
さらに別の態様は、分散型ネットワーク中の第1のノードにおいてクエリを受信することをコンピュータに行わせるための第1のコード・セットであって、上記クエリが第1のキーワードと第2のキーワードとを含む、第1のコード・セットと、上記第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけることを上記コンピュータに行わせるための第2のコード・セットと、上記第1のセット中のドキュメントの上記第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算することを上記コンピュータに行わせるための第3のコード・セットと、上記第1のセットの第1のブルーム・フィルタを、上記第2のキーワードをハッシングすることによって識別された上記分散型ネットワーク中の第2のノードに送ることを上記コンピュータに行わせるための第4のコード・セットであって、上記第1のブルーム・フィルタが上記第1のブルーム・フィルタ長と数のハッシュ関数の上記第1の数とを備える、第4のコード・セットと、を備えるコンピュータ可読媒体を備える、コンピュータプログラム製品に関係する。
さらに別の態様は、分散型ネットワーク中の第1のノードにおいてクエリを受信するための手段であって、上記クエリが第1のキーワードと第2のキーワードとを含む、受信するための手段と、上記第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけるための手段と、上記第1のセット中のドキュメントの上記第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算するための手段と、上記第1のセットの第1のブルーム・フィルタを、上記第2のキーワードをハッシングすることによって識別された上記分散型ネットワーク中の第2のノードに送るための手段であって、上記第1のブルーム・フィルタが上記第1のブルーム・フィルタ長とハッシュ関数の上記第1の数とを備える、送るための手段とを備える、装置に関係する。
別の態様は、分散型ネットワークにおいて複数キーワード検索を実行するための装置であって、第1のキーワードと第2のキーワードとを含めて問い合わせるように構成された受信機と、上記第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけるように構成されたキーワード・セット判断構成要素と、上記第1のセット中のドキュメントの上記第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算し、上記第1のセットの第1のブルーム・フィルタを、上記第2のキーワードをハッシングすることによって識別された上記分散型ネットワーク中の第2のノードに送るように構成されたブルーム・フィルタ計算構成要素であって、第1のブルーム・フィルタが上記第1のブルーム・フィルタ長とハッシュ関数の上記第1の数とを備える、ブルーム・フィルタ計算構成要素とを備える装置に関係する。
上記および関連する目的を達成するために、1つまたは複数の態様は、以下で十分に説明し、特に特許請求の範囲で指摘する特徴を備える。以下の説明および添付の図面に、1つまたは複数の態様のいくつかの例示的な特徴を詳細に記載する。ただし、これらの特徴は、様々な態様の原理を採用することができる様々な方法のほんのいくつかを示すものであり、この説明は、すべてのそのような態様およびそれらの均等物を含むものとする。
添付の図面とともに以下に説明する開示する態様は、開示する態様を限定するためではなく、開示する態様を例示するために与えられ、同様の表示は同様の要素を示す。
ピアツーピア・ネットワークの一態様のブロック図。 ネットワークにおける、様々な異なるサービス記述言語をサポートするサービス公開のためのシステムの一態様の概略図。 説明する機能を実行するように構成されたコンピューティング・デバイスの一態様の概略図。 複数キーワード検索を実行する方法の一態様のフローチャート。 複数キーワード検索を実行する方法の追加の態様のフローチャート。 複数キーワード検索を実行する方法の追加の態様のフローチャート。 複数キーワード検索を実行するためのシステムの一態様の概略図。
次に、図面を参照しながら様々な態様について説明する。以下の記述では、説明の目的で、1つまたは複数の態様の完全な理解を与えるために多数の具体的な詳細を記載する。ただし、そのような(1つまたは複数の)態様は、これらの具体的な詳細なしに実施され得ることは明らかであろう。
ピアツーピア・ネットワークなどの分散型ネットワークは、コンピュータ・ネットワーク上でデバイスとそれらのデバイスによって提供されるサービスとを発見する能力に依拠する。サービスを記述するために様々なサービス記述言語スキーマが使用され得る。本明細書で説明するシステムおよび方法は、分散型ネットワークに公開されているドキュメントを検索するためのシステムおよび方法を提供する。特に、説明するシステムおよび方法は、AND検索とOR検索の両方に対してブルーム・フィルタの最適なパラメータ(ハッシュ関数のサイズおよび数)を見つけることを含む。
図1を参照すると、ピアツーピア・オーバーレイ・ネットワーク100のブロック図が与えられている。ネットワーク100は、インターネット・プロトコル・ネットワークなど、任意のタイプのネットワークを備える基礎をなすネットワーク102を備える。基礎をなすネットワーク102は単一のエンティティとして示されているが、基礎をなすネットワークは、WAN、LAN、ワイヤレス・ネットワーク、または他のタイプのネットワークなど、任意の数またはタイプのネットワークを備え得る。図1はピアツーピア・オーバーレイ・ネットワークを示しているが、本出願はオーバーレイ・ネットワークに限定されない。ピアツーピア・オーバーレイ・ネットワーク100は、本明細書で説明する方法および装置を実装するために使用され得る分散型ネットワークの1つの例示的なタイプである。他のタイプの分散型ネットワークも採用され得る。その上、本明細書で説明するシステムおよび方法は、集中型ネットワークを含む、任意の他のタイプのネットワークに等しく適用可能である。たとえば、ネットワーク100は、発見サービスを提供するサーバを含み得る。そのような場合、サーバは、発見に関係する情報をホスティングするディレクトリとして働き得る。たとえば、サーバは、ネットワーク中のノードによって公開されたキーワードおよび対応する情報をホスティングし得る。ノードはサーバに情報を公開し得、クエリもサーバに送られ得る。
一態様では、基礎をなすネットワーク102は複数のピアツーピア・ネットワーク(104、106、および108)を備える。ピアツーピア・ネットワーク104、106、および108はそれぞれ、基礎をなすネットワーク102のノードのサブセットを備え、それらのノードが通信できるようにするために基礎をなすネットワーク102のサービスを利用して動作する。たとえば、ピアツーピア・ネットワーク104、106、および108において、ノードは、基礎をなすネットワーク102によって与えられた通信リンクによって接続されて、所望のルーティング経路を形成する。ピアツーピア・ネットワーク104、106および、108は、任意のルーティング構成を可能にするために任意のトポロジーまたはアーキテクチャを有し得、図1に示す構成に限定されない。
ネットワーク104、106、および108などのピアツーピア・オーバーレイ・ネットワーク内で、各ノードはサービス・プロバイダおよび/またはクライアントとして動作することができる。すなわち、ノードは、オーバーレイにサービスを提供し得、1つまたは複数の他のノードのサービスを使用し得る。そのようなサービスは、たとえば、印刷、スキャン、ファックス、ストレージ、音楽共有、ファイル共有、ゲーム、および映画チケット、ホテル、航空券の予約、またはオンライン・ゲームなどのウェブ・サービスを含み得る。ただし、これらのサービス例は非限定的であり、実際のサービスは、記載したものよりも多いまたは少ないサービスを含み得ることに留意されたい。各ノードは、たとえば、パーソナルコンピュータ、ラップトップ・コンピュータ、ワイヤレス通信デバイス、携帯電話、携帯情報端末、プリンタ、ファックス装置、および/または任意の他のネットワーク接続可能コンピューティング・デバイスなど、コンピューティング・デバイスを備え得る。
サービス発見プロトコルは、クライアントとして働いているノードが、注目する特定のサービスのサービス・プロバイダを見つけるのを支援するために使用され得る。サービス・プロバイダは、たとえば、拡張可能なマークアップ言語(XML)、リサーチ記述フォーマット(RDF)、RDF−S、ウェブ・サービス記述言語(WSDL)、WSDL−S、オントロジーウェブ言語(OWL)、サービス用オントロジーウェブ言語(OWL−S)、Universal Description Discovery and Integration(UDDI)、ユニバーサルプラグアンドプレイ(UPnP)、および/または他のサービス記述言語など、サービス記述言語を使用してそのサービス・プロバイダのサービスを規定する。サービスに関するメタデータは、オーバーレイ中のノード上に検索可能なフォーマットで記憶され得、クライアントは、対応するサービスを見つけるのを助けるための問合せシステムに渡される検索可能キーワードを使用してサービス要求を表現し得る。
サービスに関するメタデータは、それのネイティブサービス記述フォーマットで直接記憶されるか、または検索可能スキーマに変換され得る。1つの可能な実装形態は、単にサービス記述からキーワードを抽出し、それらのキーワードをオーバーレイ上で公開し得よう。別の実装形態は、選択されたサービス記述フォーマットでキーワードを直接公開し得る。第3の実装形態は、サービス記述を検索可能スキーマに変換し得よう。
図2に、様々な異なるサービス記述言語をサポートするサービス公開のための例示的なシステム200を示し、説明する態様は、他の同様のそのようなシステムに拡張され得る。システム200は、ピアツーピア・ネットワーク上で広告し、発見されるサービスへの共通フレームワークを与える。図2に示すように、サービス記述のデータ202は、たとえば、XML、XDS、RDF、RDF−S、WSDL、UDDI、UPnP、OWL、OWL−sなど、任意のサービス記述言語/スキーマ204を使用して公開され得る。正規化スキーマ209に基づいて、サービス記述を、それのネイティブ形式から、たとえば、それぞれのサービス記述言語204の形式から検索可能サービス記述208に変換するための1つまたは複数のプラグイン・モジュール206が与えられ得る。次いで、検索可能サービス記述208はオーバーレイ・ネットワーク210上で公開され得る。
検索可能サービス記述208は、サービス発見に必要な情報、およびサービスを順位付けしサービスにアクセスするために必要な情報のすべてのアグリゲーションを可能にする。検索可能サービス記述208を公開することは、ネイティブサービス記述からキーワードを抽出することを含み得る。キーワードは、たとえば、XML属性値ペア、RDFトリプル、単純なキーワードとして抽出され得、または任意の他の抽出方法に従って抽出され得る。プラグイン・モジュール206は、抽出すべき特定のフィールドと、それらのフィールドを抽出するためのフォーマットとを定義する正規化スキーマ209を与える。正規化スキーマ209は、サービス記述言語の機能のすべてを提供するわけではないので、サービス記述言語ではない。変換器の使用とは異なり、プラグイン・モジュール206は、1つのサービス記述言語から1つまたは複数の他のサービス記述言語に変換しない。そうではなく、プラグイン・モジュール206は、正規化スキーマ209に基づいて元のサービス記述からあるデータを抽出することを可能にする。たとえば、正規化スキーマ209によって指定されたフィールドは、ネイティブサービス記述204において特定のデータにマッピングされる。したがって、正規化スキーマ209に従って抽出された情報がオーバーレイ・ネットワーク上で公開される。したがって、各々が異なるサービス記述言語にある、複数のバージョンのサービス記述をネットワーク上に公開するのではなく、任意のノードによって検索および認識され得る単一の記述がネットワークに公開され得る。
代替的に、ネットワークは、1つの特定のサービス記述フォーマットが使用されるべきであり、さらに、すべてのサービス公開/発見がそのフォーマットに基づくことをアプリオリに決定し得る。
オーバーレイ・ネットワーク210中の各ノードは、データの記憶および検索におけるネットワーク効率を高めるためにネットワーク上でデータを配信するように、パーティションと呼ばれるオーバーレイ・ネットワークデータの部分を記憶するように構成され得る。ネットワーク上に記憶されたデータの概要を表すために、列がドキュメントを表し、行がドキュメント中の用語を表す用語頻度テーブル(term-frequency table)が使用され得る。用語頻度テーブルは、データベースに関する有益な情報を提供し、いくつかのタイプの検索のために使用され得る。
ネットワーク上でのデータの配信は、用語頻度テーブルを使用して様々な方法で実行され得る。たとえば、キーワードによるパーティション手法が使用され得、その場合、用語頻度テーブルは行によって分割され、各行または行のセットは、ハッシュ関数に基づいて特定のノードにランダムに割り当てられる。ハッシュ関数は、キーワードの所有権を異なるノードに配信するために使用される。このようにして、各ノードは、キーワードの特定のセットに対する責任を負う。
図3に、分散型ネットワークにおいてノードとして働き得る例示的なコンピューティング・デバイス300を示す。コンピューティング・デバイス300は、本明細書で説明する構成要素および機能のうちの1つまたは複数に関連する処理機能を実行するためのプロセッサ302を含む。プロセッサ302は、プロセッサまたはマルチコアプロセッサの単一または複数のセットを含むことができる。さらに、プロセッサ302は、統合処理システムおよび/または分散処理システムとして実装され得る。
コンピューティング・デバイス300は、プロセッサ302によって実行されているアプリケーションのローカルバージョンを記憶することなどのためのメモリ304をさらに含む。メモリ304は、ランダム・アクセスメモリ(RAM)、読取り専用メモリ(ROM)、テープ、磁気ディスク、光ディスク、揮発性メモリ、不揮発性メモリ、およびそれらの任意の組合せなど、コンピュータが使用できる任意のタイプのメモリを含むことができる。
さらに、コンピュータ・デバイス300は、本明細書で説明するように、ハードウェア、ソフトウェア、およびサービスを利用して、1つまたは複数の相手との通信を確立し、維持することを行う通信構成要素306を含む。通信構成要素306は、コンピューティング・デバイス300上の構成要素間の通信、ならびにコンピューティング・デバイス300と、通信ネットワーク上に位置するデバイス、および/またはコンピューティング・デバイス300に直列もしくはローカルに接続されたデバイスなどの外部デバイスとの間の通信を伝え得る。たとえば、通信構成要素306は、1つまたは複数のバスを含み得、それぞれ送信機および受信機に関連する、外部デバイスとインターフェースするように動作可能な送信チェーン構成要素および受信チェーン構成要素をさらに含み得る。さらに、たとえば、通信構成要素306は、コンピューティング・デバイス300が分散型ネットワーク中の他のノードと通信することに可能にするように構成され得る。
さらに、コンピューティング・デバイス300は、データ・ストア308をさらに含み得、データ・ストア308は、本明細書で説明する態様に関連して採用される情報、データベース、およびプログラムの大容量記憶を与えるハードウェアおよび/またはソフトウェアの任意の適切な組合せとすることができる。たとえば、データ・ストア308は、プロセッサ302によって現在実行されていないアプリケーションのためのデータリポジトリであり得る。
コンピューティング・デバイス300は、さらに、コンピューティング・デバイス300のユーザから入力を受信するように動作可能であり、ユーザへの提示のための出力を生成するようにさらに動作可能なユーザ・インターフェース構成要素310を含み得る。ユーザ・インターフェース構成要素310は、限定はしないが、キーボード、テンキー、マウス、タッチセンシティブディスプレイ、ナビゲーションキー、ファンクションキー、マイクロフォン、音声認識構成要素、ユーザから入力を受信することが可能な他の機構、またはそれらの任意の組合せを含む、1つまたは複数の入力デバイスを含み得る。さらに、ユーザ・インターフェース構成要素310は、限定はしないが、ディスプレイ、スピーカー、触覚フィードバック機構、プリンタ、出力をユーザに提示することが可能な他の機構、またはそれらの任意の組合せを含む、1つまたは複数の出力デバイスを含み得る。
コンピューティング・デバイス300はまた、1つまたは複数の検索可能スキーマ・プラグイン・モジュール206を含み得る。たとえば、1つまたは複数のプラグイン・モジュール206はメモリ304に記憶され得る。各スキーマ・プラグイン・モジュール206は、正規化スキーマ209に基づいて任意のサービス記述言語204で書かれたサービス記述から検索可能サービス記述208(図2)を生成するように構成され得る。検索可能サービス記述208は、ネットワークに公開され、サービスについてクエリを処理するために使用される。検索可能サービス記述208を生成することは、ネイティブ形式のサービス記述からキーワードを抽出し、次いで、ネットワーク上に検索可能サービス記述208のフォーマットでこれらのキーワードを広告することを含む。
コンピューティング・デバイス300は、ユーザ・クエリを受信するように構成されたクエリ受信モジュール320をさらに備え得る。クエリ受信モジュール320は、ネットワーク中のどの1つまたは複数のノードが、クエリを形成する特定のキーワードを担当しているかを判断するようにさらに構成され得る。上記で説明したように、ネットワークは、キーワードによるパーティション手法を実装し得、その場合、用語頻度テーブルは行によって分割され、各行または行のセットは特定のノードにランダムに割り当てられる。したがって、クエリ受信モジュール320は、用語頻度テーブルに基づいてクエリ・キーワードを担当している1つまたは複数のノードを判断するように構成され得る。担当している(1つまたは複数の)ノードを判断するために、ハッシュ関数が実装され得る。クエリ受信モジュール320は、さらに、処理のためにクエリを適切な(1つまたは複数の)ノードにルーティングするように構成され得る。たとえば、いくつかの事例において、クエリ受信モジュール320は、クエリをそれにフォワーディングするための第1のノードを選択するように構成され得、第1のノードは、クエリにおける第1のキーワードを担当する。クエリ受信モジュール320はまた、ネットワーク中の他のノードから検索の結果を受信し、その結果をユーザにフォワーディングするように構成され得る。
コンピューティング・デバイス300は、ネットワーク上に記憶されたデータおよび/またはドキュメントについてのクエリを処理するように構成されたクエリ処理モジュール330をさらに備え得る。クエリ処理モジュール330は、ノードが担当しているキーワードについてのキーワード・クエリに一致するドキュメントのセットを判断するように構成されたキーワード・セット判断サブモジュール332を備え得る。
クエリ処理モジュール330はさらにブルーム・フィルタ計算サブモジュール334を備え得る。ブルーム・フィルタ計算サブモジュールは、キーワード・セット判断サブモジュール332によって判断されたドキュメントのセットを表すために最適にサイズ決定されたブルーム・フィルタを判断するように構成され得る。たとえば、ブルーム・フィルタの長さは、セット中のドキュメントの数の関数として判断され得る。ブルーム・フィルタは、要素がセットの要素であるかどうかをテストするために使用される空間効率の良い確率的データ構造である。ブルーム・フィルタのために複数のハッシュ関数が定義され得、それらのハッシュ関数の各々は、何らかのセット要素を一様なランダム分布でL配列位置のうちの1つにマッピングまたはハッシングする。要素について問い合わせる、すなわち、または要素がセット中に存在するかどうかをテストするために、要素はハッシュ関数に入力として与えられて、配列位置を得る。これらの位置のビットのいずれかが0である場合、要素はセット中にない。そうではなく、すべてが1である場合、要素はセット中にあるか、または他の要素の挿入中にビットが1に設定されたかのいずれかである。
ブルーム・フィルタを使用する1つの利点は、ブルーム・フィルタが大量の圧縮を与えるということである。ただし、その結果、フォールス・ポジティブ(false positive)が発生し得る。すなわち、ブルーム・フィルタは、要素がセットの一部でないとき、その要素がセットの一部であると示すことがある。これは、たとえば、その要素に対応するすべてのロケーションが、他の要素の挿入中にすでに1に設定されているときに起こり得る。したがって、ブルーム・フィルタ計算サブモジュール334は、フォールス・ポジティブを訂正するように構成され得る。
クエリ処理モジュール330はまた、ANDクエリおよびORクエリなど、複数キーワード・クエリを処理するように構成された複数キーワード処理モジュール336を含み得る。ANDクエリは、セット中の各ドキュメントが、クエリの一部を形成するあらゆるキーワードを含んでいる、ドキュメントのセットを判断しようと努める。ORクエリは、セット中の各ドキュメントが、クエリ中で指定された少なくとも1つのキーワードを含んでいる、ドキュメントのセットを判断しようと努める。複数キーワード処理モジュール336は、ネットワーク中の2つ以上のノードからのドキュメントの受信セットのインターセクション(intersection)を計算するために、ブルーム・フィルタ計算サブモジュール334とともに動作し得る。
図4は、受信した複数キーワード・クエリを処理するための例示的な方法を示すフローチャートである。402に示すように、第1のノードは、複数のキーワードを備えるクエリを受信し得る。クエリは、たとえば、ANDクエリ、およびORクエリ、または複合AND/ORクエリであり得る。クエリは、受信しているノードがクエリ中の第1のキーワードを担当していると判断したネットワーク中の別のノード(問合せノード)から受信され得る。
404に示すように、第1のノードは、クエリ中で指定された第1のキーワードを含んでいるドキュメントのセットを判断する。第1のノードは、クエリワードについて第1のノードのメモリをスキャンし、第1のノードがそのメモリに内部的に記憶した用語頻度テーブルの対応する行を抽出することによって、適切なドキュメントを判断し得る。次いで、ノードは、選択された行において0でないエントリを有するドキュメントのセットを見つける。
406に示すように、第1のノードは、クエリ・キーワードクを含んでいるドキュメントのセットを表すために最適なブルーム・フィルタを計算し得る。これは、たとえば、キーワードを含んでいるドキュメントのセットのサイズに基づいて、検索プロセスに必要なブルーム・フィルタのサイズを計算することを含み得る。次いで、ノードは、ドキュメントのセット中の各ドキュメントのドキュメント識別子をブルーム・フィルタ上にハッシングし得る。次いで、408に示すように、第1のノードは、計算されたブルーム・フィルタおよびそれの係数とともに、初期クエリを、その初期クエリ中の第2のキーワードを担当している第2のノードに送る。いくつかの実装形態では、第1のノードは、第2のキーワードを担当しているノードを判断するように構成され得る。他の実装形態では、第2の(および後続の)キーワードを担当しているノードは、問合せノードによってあらかじめ決定され得る。
410に示すように、クエリがANDクエリである場合、第1のノードは第2のノードから検索結果を受信し得る。第1のノードは、たとえば、フォールス・ポジティブについて第2のノードによって戻されたドキュメントのセットを検査することによって、検索結果を検証し得る。すなわち、第1のノードは、第2のノードによって戻されたドキュメントのセットを検査して、セットが、第1のキーワードを含んでいないドキュメントを含んでいるかどうかを確かめ得る。いずれのそのようなフォールス・ポジティブも第1のノードによって除去され得る。412に示すように、第1のノードは検索結果を問合せノードに戻し得る。クエリがORクエリである場合、第1のノードは、414に示すように、第2のノードから肯定応答メッセージを受信すると、第1のキーワードに一致するドキュメントのリストを問合せノードに送り得る。
図4に関して上記で説明したように、第1のノードからクエリとブルーム・フィルタとを受信する第2のノードによって実行される方法は、検索がAND検索であるかOR検索であるかに応じて異なり得る。図5Aに、AND検索を実行するために第2のノードによって実装され得る方法を示す。図4、ステップ408に示すように、第1のノードがそれのブルーム・フィルタを計算した後、第1のノードは、初期クエリおよびその計算されたブルーム・フィルタを、クエリ中の第2のキーワードを担当している第2のノードに送る。502Aに示すように、第2のノードは、第1のノードからクエリとブルーム・フィルタとを受信する。次いで、504Aに示すように、第2のノードは、第2のキーワードに一致するドキュメントのセットを判断する。ドキュメントのセットを判断することは、第1のキーワードに関して上記で説明したように実行され得る。次いで、506Aに示すように、第2のノードは、第1のノードによって計算されたブルーム・フィルタを介して、第2のキーワードに一致するドキュメントの判断されたセットのあらゆる要素のメンバーシップを検査する。次いで、第2のノードは、インターセクションD2∩BF(D1)を計算することによってそれの検索結果を計算し、ただし、D2はドキュメントの第2のセットを表し、BF(D1)はドキュメントの第1のセットのブルーム・フィルタを表し、そして508Aに示すように、検索結果を第1のノードに戻す。次いで、第1のノードは、図4、ステップ412に示すように、ドキュメントのリストを問合せノードに送り得る。
図5Bに、OR検索を実行するために第2のノードによって実装され得るプロセスを示す。ステップ502B、504B、および506Bはステップ502A、504A、および506Aと同じであり、第2のノードは、第1のノードからクエリとブルーム・フィルタとを受信し、第2のキーワードに一致するドキュメントのセットを判断し、次いで、第1のノードによって計算されたブルーム・フィルタを介して、第2のキーワードに一致するドキュメントの判断されたセットのあらゆる要素のメンバーシップを検査する。508Bに示すように、第2のノードは、まだ第1のノードのブルーム・フィルタ中に存在しないドキュメントを問合せノードに戻す。第2のノードはまた、第1のノードにACK応答を送り得る。次いで、問合せノードは、第2のノードから得られた受信セットD2−BF(D1)(D2はドキュメントの第2のセットであり、BF(D1)はドキュメントの第1のセットのブルーム・フィルタである)と、第1のノードから得られたドキュメントの第1のセットとのユニオン(union)を取り出して、検索プロセスを完了し得る。
AND検索では、フォールス・ポジティブの通信コストおよび確率は、ブルーム・フィルタ長(Ls)とハッシュ関数の数(rs)との適切な選定によって低減され得る。Lsおよびrsは以下の式を使用して計算され得る。
Figure 0005497172
本明細書で説明する方法は、2つを超えるキーワード用語に関与するANDクエリへと拡張され得る。たとえば、ユーザが「k1およびk2およびk3および...kq」の形式のクエリを発行したとき、以下のステップが実行される。
(1)クエリがノードn1=hash(k1)に送られる。
(2)ノードn1は、ノードn1のローカル転置索引(inverted index)リストを見て、キーワードk1を含んでいるドキュメントD1のセットを見つける。n1は、セットD1のサイズを入力として、それぞれ(3)および(4)を使用してブルーム・フィルタのサイズおよびrの値を計算する。
(3)ノードn1は、D1中のすべてのドキュメントIDをブルーム・フィルタ上に追加し、フィルタ係数をノードn2=hash(k2)に送る。
(4)n1からクエリを受信すると、ノードn2は、ノードn2のローカル転置索引を見て、キーワードk2を含んでいるドキュメントD2のリストを見つける。n2は、ブルーム・フィルタBF(D1)を介してD2のあらゆる要素のメンバーシップを検査し、インターセクションD2∩BF(D1)を計算する。
(5)n2は、セットD2∩BF(D1)のサイズを入力として、
Figure 0005497172
のようにブルーム・フィルタのサイズを計算する。
sの値は、Lsの新しい値を用いて、
Figure 0005497172
のように計算される。n2はフィルタ係数をノードn3=hash(k3)に送る。
(6)クエリ中のq個のすべてのキーワードについてステップ(5)および(6)を繰り返す。各ステップにおいて、(9)を使用してLsの新しい値を計算し、rsの値を更新する。
(7)次いで、ノードnq=hash(kq)が、IDのリストを前のノードnq-1=hash(kq-1)に戻す。
(8)ノードnq-1は、受信したセットと、ノードnq-1が所有するセットDq-1とのインターセクションを実行し、ドキュメントの得られたリストをnq-2=hash(kq-2)に戻す。
(9)最終応答がn1=hash(k1)に達するまで、ステップ(7)および(8)を繰り返す。
(10)ノードn1は、受信したセットとセットD1とのインターセクションを実行し、ドキュメントの得られたリストをソースに戻す。
通信コストをさらに低減するために、|Dj|(1≦j≦q)のサイズに関する事前知識が使用され得る。クエリは、最初にノード
Figure 0005497172
に送られ得、次いで、|Dj|の2番目の最小値を有するノードj’にルーティングされ得、以下同様である。このようにして、通信データの量は著しく低減され得る。|Dj|のサイズの推定値をアプリオリに得るためにキャッシング技法が採用され得、これらの推定値は、ブルーム・フィルタのサイズを判断するために使用され得る。
OR検索では、フィルタ長Lsと、ハッシュ関数の数rsとは、リコール(recall)を所望の値より上に維持しながらブルーム・フィルタによる節約を最大にすることを目的とした、制約付き最適化問題を解くことによって取得され得る。
Figure 0005497172
OR検索を実行するための本明細書で説明する方法は、2つを超えるキーワード用語に関与するORクエリへと拡張され得る。たとえば、ユーザが「k1またはk2またはk3または...kq」の形式のクエリを発行したとき、以下のステップが実行される。
(1)クエリがノードn1=hash(k1)に送られる。
(2)ノードn1は、ノードn1のローカル転置索引リストを見て、キーワードk1を含んでいるドキュメントD1のセットを見つける。n1は、セットD1のサイズを入力として、それぞれ(15)および(16)を使用してブルーム・フィルタのサイズおよびrの値を計算する。
(3)ノードn1は、D1中のすべてのドキュメントIDをブルーム・フィルタ上に追加し、フィルタ係数をノードn2=hash(k2)に送る。ノードn1はD1を問合せノードに送る。
(4)n1からブルーム・フィルタとクエリとを受信すると、ノードn2は、ノードn2のローカル転置索引を見て、キーワードk2を含んでおり、n1によって送られたブルーム・フィルタ中に含まれていないドキュメントD2のリストを見つける。n2は、これらの追加のドキュメントIDを問合せノードに送り、受信データに対する肯定応答をn1に送る。
(5)n2は、これらの追加のドキュメントID(D2−BF(D1))をBF(D1)に追加する。合成ブルーム・フィルタはBF(D1,D2)と呼ばれるが、D2中のいくつかのIDは、ブルーム・フィルタにおいて起こり得る衝突によりステップ(4)において省略され得るので、これは、BF(D1∪D2)とは異なり得ることに留意されたい。n2はフィルタ係数BF(D1,D2)をノードn3=hash(k3)に送る。
(6)クエリ中のq個のすべてのキーワードについてステップ(4)および(5)を繰り返す。クエリが第iのノードni=hash(ki)にあるとき、ノードniは、BF(D1,D2,...,Di-1)において省略されたドキュメントIDを問合せノードに送り、更新されたブルーム・フィルタBF(D1,D2,...,Di)をノードni+1=hash(ki+1)に送る。
(7)問合せノードは、q個のノードから受信したすべてのドキュメントIDのユニオンを取り出して、検索を完了する。
通信コストをさらに低減するために、|Dj|(1≦j≦q)のサイズに関する事前知識が使用され得る。クエリは、最初にノード
Figure 0005497172
に送られ得、次いで、|Dj|の2番目の最大値を有するノードj’にルーティングされ得、以下同様である。さらに、ブルーム・フィルタは、|D1|および/または|D2|が小さいときのみ、大きい節約を与えるのを助ける(付録Bの図を参照)。|D1|および/または|D2|の値が大きい場合、(ブルーム・フィルタの代わりに)実際のセットを送信することが推奨される。特に、
Figure 0005497172
のとき、ブルーム・フィルタ手法を使用することが推奨される。
他の場合は、直接送信手法を使用することが推奨される。2つの対照的な手法の間のこの選定は、ステップ(2)において、ノードn1により、|D1|のノードn1の値と、|D2|のキャッシュされた値とを使用して行われ得る。
ブルーム・フィルタは、ANDタイプ検索とORタイプ検索の両方について増分結果を生成するために使用され得る。クエリを発行しているユーザは、サービスを検索するとき、すべての結果を必要とすることはめったにない。ストリーミング転送を使用し、所望の数の結果のみを戻すことによって、送る必要がある情報の量は低減され得る。付録Aおよび付録Bにおいてわかるように、クエリの通信コストはセット|D1|および/または|D2|のサイズに直接比例し、用語を含んでいるドキュメントの数が大きくなればなるほど、通信コストは高くなる。
ブルーム・フィルタは、増分リサーチを可能にすることによって通信コストを低減するのを助けることができる。ユーザがクエリ「k1およびk2」を用いて固定数の結果を検索したとき、対応するノードn1およびn2は、その数に達するまで増分的に通信することができる。ノードn1は、ノードn1のブルーム・フィルタをチャンクで送り、ノードn2は、その対応するブルーム・フィルタチャンクに対する結果のセットのみを戻す。単一のブルーム・フィルタは、分割され、まだいかなる意味も保持することができないので、ドキュメントセットD1はセットにパーティショニングされる必要があり、次いで、チャンク・サイズをターゲットにしてブルーム・フィルタ長が設計され得る。このプロセスは、ノードn1がクエリについて固定数の結果を識別するまで繰り返され得る。同様の増分手法はOR検索でも実行され得る。
AND検索とOR検索の組合せである他のタイプのクエリ、たとえば、Q=(Q1∪Q2)∩(Q3∪Q4)などでは、マルチステッププロシージャが実装され得る。第1のステップにおいて、クエリは、たとえば、カルノー図またはクワイン−マクラスキーアルゴリズムを使用して、簡略化され、積和として表される。上記で例では、クエリQはQ=(Q1∩Q3)∪(Q1∩Q4)∪(Q2∩Q3)∪(Q2∩Q4)として表される。
第2のステップにおいて、問合せノードnQは、クエリをパースし、クエリを一連のANDクエリに分解する。この例では、問合せノードは、クエリQを4つのクエリ、すなわち、以下のように分解するであろう。
1.(Q1∩Q3)、
2.(Q1∩Q4)、
3.(Q2∩Q3)、および
4.(Q2∩Q4)
これらの4つのクエリは個々のAND検索として別々に実行され得、個々の結果が収集される。最終ステップにおいて、問合せノードは、これらの個々の結果のユニオンを実行して、検索クエリに対する最終的な答えを得る。
図6を参照すると、ネットワークにおいてサービスを公開し、発見するためのシステム600が示されている。図示のように、システム600はプロセッサ、ソフトウェア、またはそれらの組合せ(たとえば、ファームウェア)によって実装される機能を表すことができる機能ブロックを含む。システム600は、連携して動作する電気構成要素の論理グルーピング602を含む。システム600は、たとえば、分散型ネットワークにおいてノードとして働くコンピューティング・デバイスによって実装され得る。
論理グルーピング602は、第1のキーワードと第2のキーワードとを含むクエリを受信するためのモジュール604を含むことができる。その上、論理グルーピング602は、第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけるためのモジュール606を含むことができる。論理グルーピング602はさらに、第1のセット中のドキュメントの第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算するためのモジュール608と、第1のセットの第1のブルーム・フィルタを、第2のキーワードをハッシングすることによって識別された分散型ネットワーク中の第2のノードに送るためのモジュール610であって、第1のブルーム・フィルタが第1のブルーム・フィルタ長とハッシュ関数の第1の数とを備える、モジュール610とを含み得る。さらに、システム600は、電気構成要素604〜610に関連する機能を実行するための命令を保持するメモリ618を含むことができる。メモリ618の外部にあるものとして示されているが、電気構成要素604〜610はメモリ618の内部に存在することができることを理解されたい。
本出願で使用する「構成要素」、「モジュール」、「システム」などの用語は、限定はしないが、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなど、コンピュータ関連のエンティティを含むものとする。たとえば、構成要素は、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得るが、これらに限定されない。例として、コンピューティング・デバイス上で実行されるアプリケーションと、そのコンピューティング・デバイスの両方を構成要素とすることができる。1つまたは複数の構成要素がプロセスおよび/または実行スレッド内に常駐することができ、1つの構成要素を1つのコンピュータ上に配置し、および/または2つ以上のコンピュータ間に分散し得る。さらに、これらの構成要素は、様々なデータ構造を記憶している様々なコンピュータ可読媒体から実行することができる。これらの構成要素は、ローカルシステム、分散型システム内、および/または他のシステムを用いるインターネットなどのネットワーク上の別の構成要素と信号を介して対話する1つの構成要素からのデータなど、1つまたは複数のデータパケットを有する信号によるなど、ローカルプロセスおよび/またはリモートプロセスを介して通信し得る。
さらに、本明細書では、ワイヤード端末またはワイヤレス端末とすることができる端末に関する様々な態様について説明する。端末は、システム、デバイス、加入者ユニット、加入者局、移動局、モバイル、モバイルデバイス、リモート局、リモート端末、アクセス端末、ユーザ端末、端末、通信デバイス、ユーザエージェント、ユーザデバイス、またはユーザ機器(UE)と呼ばれることもある。ワイヤレス端末は、セルラー電話、衛星電話、コードレス電話、セッション開始プロトコル(SIP)電話、ワイヤレス・ローカル・ループ(WLL)局、携帯情報端末(PDA)、ワイヤレス接続機能を有するハンドヘルド・デバイス、コンピューティング・デバイス、またはワイヤレスモデムに接続された他の処理デバイスであり得る。さらに、本明細書では基地局に関する様々な態様について説明する。基地局は、(1つまたは複数の)ワイヤレス端末と通信するために利用され得、アクセスポイント、ノードB、または何らかの他の用語で呼ばれることもある。
さらに、「または」という用語は、排他的な「または」ではなく、包括的な「または」を意味するものとする。すなわち、別段の規定がない限り、または文脈から明白でない限り、「XはAまたはBを使用する」という句は、自然な包括的置換のいずれかを意味するものとする。すなわち、「XはAまたはBを使用する」という句は、XがAを使用する場合、XがBを使用する場合、またはXがAとBの両方を使用する場合のいずれによっても満たされる。さらに、本出願および添付の特許請求の範囲で使用する冠詞「a」および「an」は、別段の規定がない限り、または単数形を示すことが文脈から明白でない限り、概して「1つまたは複数」を意味するものと解釈すべきである。
本明細書で説明する技法は、CDMA、TDMA、FDMA、OFDMA、SC−FDMAおよび他のシステムなど、様々なワイヤレス通信システムに使用され得る。「システム」および「ネットワーク」という用語は、しばしば互換的に使用される。CDMAシステムは、Universal Terrestrial Radio Access(UTRA)、cdma2000などの無線技術を実装し得る。UTRAは、Wideband−CDMA(W−CDMA)およびCDMAの他の変形態を含む。さらに、cdma2000は、IS−2000、IS−95およびIS−856規格をカバーする。TDMAシステムは、Global System for Mobile Communications(GSM(登録商標))などの無線技術を実装し得る。OFDMAシステムは、Evolved UTRA(E−UTRA)、Ultra Mobile Broadband(UMB)、IEEE802.11(Wi−Fi)、IEEE802.16(WiMAX)、IEEE802.20、Flash−OFDMなどの無線技術を実装し得る。UTRAおよびE−UTRAは、Universal Mobile Telecommunication System(UMTS)の一部である。3GPP Long Term Evolution(LTE)は、ダウンリンク上ではOFDMAを採用し、アップリンク上ではSC−FDMAを採用するE−UTRAを使用するUMTSのリリースである。UTRA、E−UTRA、UMTS、LTEおよびGSMは、「3rd Generation Partnership Project」(3GPP)と称する組織からの文書に記載されている。さらに、cdma2000およびUMBは、「3rd Generation Partnership Project 2」(3GPP2)と称する組織からの文書に記載されている。さらに、そのようなワイヤレス通信システムは、追加として、不対無許可スペクトル、802.xxワイヤレスLAN、BLUETOOTH(登録商標)、および任意の他の短距離または長距離ワイヤレス通信技法をしばしば使用するピアツーピア(たとえば、モバイル間の)アドホック・ネットワーク・システムを含み得る。
いくつかのデバイス、構成要素、モジュールなどを含み得るシステムに関して、様々な態様または特徴を提示する。様々なシステムは、追加のデバイス、構成要素、モジュールなどを含んでもよく、および/または各図に関連して論じるデバイス、構成要素、モジュールなどのすべてを含まなくてもよいことを理解および諒解されたい。これらの手法の組合せも使用され得る。
本明細書で開示する態様に関して説明する様々な例示的な論理、論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティング・デバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。さらに、少なくとも1つのプロセッサは、上記で説明したステップおよび/またはアクションの1つまたは複数を実行するように動作可能な1つまたは複数のモジュールを備え得る。
さらに、本明細書で開示する態様に関して説明する方法またはアルゴリズムのステップおよび/またはアクションは、直接ハードウェアで実施されるか、プロセッサによって実行されるソフトウェアモジュールで実施されるか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合され得る。代替として、記憶媒体はプロセッサに一体化され得る。さらに、いくつかの態様では、プロセッサおよび記憶媒体はASIC中に常駐し得る。さらに、ASICはユーザ端末中に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末中に個別構成要素として常駐し得る。さらに、いくつかの態様では、方法またはアルゴリズムのステップおよび/またはアクションは、コンピュータプログラム製品に組み込まれ得る、機械可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せ、あるいはそのセットとして常駐し得る。
1つまたは複数の態様では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装され得る。ソフトウェアで実装する場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体上で送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、どんな接続でもコンピュータ可読媒体と呼ばれることがある。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、通常、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
上記の開示は例示的な態様および/または態様について論じたが、添付の特許請求の範囲によって定義された、説明した態様および/または態様の範囲から逸脱することなく、様々な変更および修正を本明細書で行うことができることに留意されたい。さらに、説明した態様および/または態様の要素が単数形で説明または請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。さらに、態様および/または態様の全部または一部は、別段の記述がない限り、他の態様および/または態様の全部または一部とともに利用され得る。
付録A
AND検索のためのブルーム・フィルタパラメータを導出すること
この付録では、AND検索のためのブルーム・フィルタのパラメータを取得する導出について提示する。一般性の損失なしに、「k1およびk2」という形式の2キーワード・クエリを考察する。これらのキーワードを所有するノードがn1およびn2として示され、n1=hash(k1)およびn2=hash(k2)であるとする。さらに、ここで、D1およびD2は、それぞれキーワードk1およびk2を含んでいるドキュメントのセットを示す。
ブルーム・フィルタの存在下での総通信コストは、次式のようになるものと示され得る。
Figure 0005497172
ただし、Pcはブルーム・フィルタにおける衝突の確率である。式中に(1)からのPcに代入すると、
Figure 0005497172
この式からわかるように、通信コストの総量は、Lおよびrの関数であり、これらのパラメータの適切な選定によって最小限に抑えられ得る。
Figure 0005497172
および
Figure 0005497172
を設定すると、
Figure 0005497172
ほとんどの場合、ノードn1は、セットD1に関する情報のみを有し、セットD2に関する情報は有しない。したがって、上記の2つの式はD2をも含むので、これらの式を使用してLおよびrの最適値を計算するのは不可能であろう。|D2|=|D1|という仮定の下に値を計算することが提案される。Lsおよびrsとして示される、Lおよびrの次に最適な(sub-optimal)値は、以下のようになるものと示され得る。
Figure 0005497172
以下の図に、|D1|の異なる値に対するD2のサイズの関数としての通信コストを示す。図の結果は50%重複の下におけるものあり、ただし、50%重複は、インターセクションのサイズが|D1∩D2|=(50/100)×min{|D1|,|D2|}になるポイントとして定義する。この図から2つの主要な結論が引き出され得る。第1に、この図は、|D1|および|D2|が増加するにつれて通信コストが増加することを示している。|D1|および|D2|が増加するにつれて|D1∩D2|のサイズは増加し、したがって、より多くのドキュメントIDがユーザに戻されるので、この結果は予想されるものである。第2に、図の結果は、
Figure 0005497172
の代わりに次に最適な値Lsが使用されたとき、通信コストに関して多くの差異がないことを示唆している。これは、ノードn1が、フィルタのサイズを計算するための妥当な推定値として値|D1|を使用することができることを暗示している。
Figure 0005497172
付録B
OR検索のためのブルーム・フィルタパラメータを導出すること
この付録では、OR検索のためのブルーム・フィルタのパラメータを取得する導出について提示する。一般性の損失なしに、「k1またはk2」という形式の2キーワード・クエリを提示する。これらのキーワードを所有するノードがn1およびn2として示され、n1=hash(k1)およびn2=hash(k2)であるとする。さらに、D1およびD2が、それぞれキーワードk1およびk2を含んでいるドキュメントのセットを示すために使用される。
検索アルゴリズムのパフォーマンスを研究し、トレードオフを理解するために、節約およびリコールレートを数学的に判断する。ブルーム・フィルタの場合、総通信コストは次式のようになるものと示され得る。
Figure 0005497172
ただし、Pcは、(1)の場合のようにブルーム・フィルタにおける衝突の確率である。したがって、節約Sbの量は次式になる。
Figure 0005497172
ブルーム・フィルタを使用する間に支払われるコストは、次式
Figure 0005497172
のようになるものと示され得るリコールレートRbに関する。
フィルタ長Lと、ハッシュ関数の数rとの最適値は、Rb≧Rdesという制約の下でSbを最大にすることを目的とした、制約付き最適化問題を解くことによって取得され得、ただし、Rdesは、設計されたリコールレートを示す。コスト関数Tb=Sb+λ(Rb−Rdes)を定義すると、Lとrとの最適値は、
Figure 0005497172
および
Figure 0005497172
を設定することによって計算され得る。
Figure 0005497172
値|D2|はノードn1においてアプリオリに知られないので、次に最適な解は、|D2|=|D1|およびD1∩D2=φの仮定の下で(13)および(14)を解くことによって得られる。これにより、
Figure 0005497172
が与えられる。
以下の図に、|D1|および|D2|の関数としての通信コストを示す。図の結果は、50%重複の下におけるRdes=1−(1/2)9に関し、ただし、50%重複は前述のように定義している。この図は、|D1|および|D2|が小さいとき、節約が大きくなり、いずれかのセットサイズが大きいとき、節約が0未満にさえ減少することを示している。
Figure 0005497172
なお、以下に、出願当初の特許請求の範囲に記載された発明を付記する。
[C1]オーバーレイ・ネットワークにおいて検索する方法であって、
分散型ネットワーク中の第1のノードにおいてクエリを受信することであって、前記クエリが第1のキーワードと第2のキーワードとを含む、受信することと、
前記第1のキーワードを含んでいる第1の数のドキュメントの第1のセットを見つけることと、
前記第1のセット中の前記第1の数のドキュメントの関数として、最適な第1のブルーム・フィルタ長および対応する第1の数のハッシュ関数を計算することと、
前記第1のセットの第1のブルーム・フィルタを、前記第2のキーワードをハッシングすることによって識別された前記分散型ネットワーク中の第2のノードに送ることであって、前記第1のブルーム・フィルタが前記第1のブルーム・フィルタ長と前記第1の数のハッシュ関数とを備える、送ることと、
を備える方法。
[C2]前記クエリがANDクエリを備えるC1に記載の方法。
[C3]前記クエリがORクエリを備えるC1に記載の方法。
[C4]前記クエリがANDクエリとORクエリの組合せを備えるC1に記載の方法。
[C5]前記第1のセットD1の前記第1のブルーム・フィルタ長L s を計算することが、以下の式
Figure 0005497172
に従って計算することをさらに備え、前記第1のセットD1の第1の数のハッシュ関数r s を計算することが、以下の式
Figure 0005497172
に従って計算することをさらに備えるC2に記載の方法。
[C6]前記第1のセットD1の前記第1のブルーム・フィルタ長L s を計算することが、以下の式
Figure 0005497172
に従って計算することをさらに備え、前記第1のセットD1の第1の数のハッシュ関数r s を計算することが、以下の式
Figure 0005497172
に従って計算することをさらに備えるC3に記載の方法。
[C7]通信コストをさらに低減するために、それぞれのセット|Dj|のサイズに関する事前知識を使用することをさらに備えるC1に記載の方法。
[C8]ANDクエリを最適に実行するために、前記クエリをノード
Figure 0005497172
に送り、次いで、|Dj|の2番目の最小値を有する次のノードに送ることをさらに備えるC7に記載の方法。
[C9]ORクエリを最適に実行するために、最初に前記クエリをノード
Figure 0005497172
に送り、次いで、|Dj|の2番目の最大値を有する次のノードに送ることをさらに備えるC7に記載の方法。
[C10]クエリをどこにフォワーディングすべきかを判断するために、前記セット|Dj|の実際のまたは近似的サイズを判断するためのキャッシング技法を使用することをさらに備えるC7に記載の方法。
[C11]クエリを処理するために前記第1のブルーム・フィルタを使用するまたは使用しないための条件を判断することであって、前記条件は、各セット|Dj|のサイズがいつアプリオリに知られるかを備える、判断することをさらに備えるC1に記載の方法。
[C12]
Figure 0005497172
のときのみ、前記第1のブルーム・フィルタを前記計算することを実行し、ORクエリのために前記第1のブルーム・フィルタを使用することをさらに備えるC11に記載の方法。
[C13]分散型ネットワーク中の第1のノードにおいてクエリを受信するための第1のモジュールであって、前記クエリが第1のキーワードと第2のキーワードとを含む、第1のモジュールと、
前記第1のキーワードを含んでいる第1の数のドキュメントの第1のセットを見つけるための第2のモジュールと、
前記第1のセット中の前記第1の数のドキュメントの関数として、最適な第1のブルーム・フィルタ長および対応する第1の数のハッシュ関数を計算するための第3のモジュールと、
前記第1のセットの第1のブルーム・フィルタを、前記第2のキーワードをハッシングすることによって識別された前記分散型ネットワーク中の第2のノードに送るための第4のモジュールであって、前記第1のブルーム・フィルタが前記第1のブルーム・フィルタ長と前記第1の数のハッシュ関数とを備える、第4のモジュールと、
を備える、ネットワークにおいてサービスを公開または発見するように構成された少なくとも1つのプロセッサ。
[C14]分散型ネットワーク中の第1のノードにおいてクエリを受信することをコンピュータに行わせるための第1のコード・セットであって、前記クエリが第1のキーワードと第2のキーワードとを含む、第1のコード・セットと、
前記第1のキーワードを含んでいる第1の数のドキュメントの第1のセットを見つけることを前記コンピュータに行わせるための第2のコード・セットと、
前記第1のセット中の前記第1の数のドキュメントの関数として、最適な第1のブルーム・フィルタ長および対応する第1の数のハッシュ関数を計算することを前記コンピュータに行わせるための第3のコード・セットと、
前記第1のセットの第1のブルーム・フィルタを、前記第2のキーワードをハッシングすることによって識別された前記分散型ネットワーク中の第2のノードに送ることを前記コンピュータに行わせるための第4のコード・セットであって、前記第1のブルーム・フィルタが前記第1のブルーム・フィルタ長と前記第1の数のハッシュ関数とを備える、第4のコード・セットと、
を備えるコンピュータ可読媒体を備えるコンピュータプログラム製品。
[C15]分散型ネットワーク中の第1のノードにおいてクエリを受信するための手段であって、前記クエリが第1のキーワードと第2のキーワードとを含む、受信するための手段と、
前記第1のキーワードを含んでいる第1の数のドキュメントの第1のセットを見つけるための手段と、
前記第1のセット中の前記第1の数のドキュメントの関数として、最適な第1のブルーム・フィルタ長および対応する第1の数のハッシュ関数を計算するための手段と、
前記第1のセットの第1のブルーム・フィルタを、前記第2のキーワードをハッシングすることによって識別された前記分散型ネットワーク中の第2のノードに送るための手段であって、前記第1のブルーム・フィルタが前記第1のブルーム・フィルタ長と前記第1の数のハッシュ関数とを備える、送るための手段と、
を備える装置。
[C16]分散型ネットワークにおいて複数キーワード検索を実行するための装置であって、
第1のキーワードと第2のキーワードとを含めて問い合わせるように構成された受信機と、
前記第1のキーワードを含んでいる第1の数のドキュメントの第1のセットを見つけるように構成されたキーワード・セット判断構成要素と、
前記第1のセット中の前記第1の数のドキュメントの関数として、最適な第1のブルーム・フィルタ長および対応する第1の数のハッシュ関数を計算し、前記第1のセットの第1のブルーム・フィルタを、前記第2のキーワードをハッシングすることによって識別された前記分散型ネットワーク中の第2のノードに送るように構成されたブルーム・フィルタ計算構成要素であって、第1のブルーム・フィルタが前記第1のブルーム・フィルタ長と前記第1の数のハッシュ関数とを備える、ブルーム・フィルタ計算構成要素と、
を備える装置。
[C17]前記クエリがANDクエリであるC16に記載の装置。
[C18]前記クエリがORクエリであるC16に記載の装置。
[C19]前記クエリがANDクエリとORクエリの組合せを備えるC16に記載の装置。
[C20]前記第1のセットD1の前記第1のブルーム・フィルタ長L s を計算することが、以下の式
Figure 0005497172
に従って計算することをさらに備え、前記第1のセットD1の第1の数のハッシュ関数r s を計算することが、以下の式
Figure 0005497172
に従って計算することをさらに備えるC17に記載の装置。
[C21]前記第1のセットD1の前記第1のブルーム・フィルタ長L s を計算することが、以下の式
Figure 0005497172
に従って計算することをさらに備え、前記第1のセットD1の第1の数のハッシュ関数r s を計算することが、以下の式
Figure 0005497172
に従って計算することをさらに備えるC18に記載の装置。
[C22]前記ブルーム・フィルタ計算構成要素が、通信コストをさらに低減するために、それぞれのセット|Dj|のサイズに関する事前知識を使用するようにさらに構成されるC16に記載の装置。
[C23]前記ブルーム・フィルタ計算構成要素が、ANDクエリを最適に実行するために、前記クエリをノード
Figure 0005497172
に送り、次いで、|Dj|の2番目の最小値を有する次のノードに送るようにさらに構成されるC22に記載の装置。
[C24]前記ブルーム・フィルタ計算構成要素が、ORクエリを最適に実行するために、最初に前記クエリをノード
Figure 0005497172
に送り、次いで、|Dj|の2番目の最大値を有する次のノードに送るようにさらに構成されるC22に記載の装置。
[C25]前記ブルーム・フィルタ計算構成要素が、クエリをどこにフォワーディングすべきかを判断するために、前記セット|Dj|の実際のまたは近似的サイズを判断するためのキャッシング技法を使用するようにさらに構成されるC22に記載の装置。
[C26]前記ブルーム・フィルタ計算構成要素が、クエリを処理するために前記第1のブルーム・フィルタを使用するまたは使用しないための条件を判断するようにさらに構成され、前記条件は、各セット|Dj|のサイズがいつアプリオリに知られるかを備えるC16に記載の装置。
[C27]前記ブルーム・フィルタ計算構成要素が、
Figure 0005497172
のときのみ、前記第1のブルーム・フィルタを前記計算することを実行し、ORクエリのために前記第1のブルーム・フィルタを使用するようにさらに構成されるC26に記載の装置。

Claims (25)

  1. オーバーレイ・ネットワークにおいてノードによって複数キーワード・クエリを処理する方法であって、
    分散型ネットワーク中の第1のノードにおいてクエリを受信することであって、前記クエリが第1のキーワードと第2のキーワードとを含む、受信することと、
    前記第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけることと、
    前記第1のセット中のドキュメントの前記第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算することと、
    前記第1のセットの第1のブルーム・フィルタを、前記第2のキーワードをハッシングすることによって識別された前記分散型ネットワーク中の第2のノードに送ることであって、前記第1のブルーム・フィルタが前記第1のブルーム・フィルタ長とハッシュ関数の前記第1の数とを備える、送ることと、および、
    前記クエリがANDクエリの場合には、前記第1のノードにおいて、前記第2のノードから検索結果を受信して、前記検索結果を問い合わせノードに戻し、前記クエリがORクエリの場合には、前記第2のノードから肯定応答メッセージを受信すると、前記第1のノードにおいて、第1のキーワードを含んでいるドキュメントのセットを問い合せノードに送ること、
    を備える方法。
  2. 前記クエリがANDクエリを備える請求項1に記載の方法。
  3. 前記クエリがORクエリを備える請求項1に記載の方法。
  4. 前記クエリがANDクエリとORクエリの組合せを備える請求項1に記載の方法。
  5. 前記第1のセットD1の前記第1のブルーム・フィルタ長Lsを計算することが、以下の式
    Figure 0005497172
    ここにおいて、|Dj|は前記第1のセットD1のサイズを示す、
    に従って計算することをさらに備え、前記第1のセットD1のハッシュ関数の第1の数rsを計算することが、以下の式
    Figure 0005497172
    に従って計算することをさらに備える請求項2に記載の方法。
  6. 前記第1のセットD1の前記第1のブルーム・フィルタ長Lsを計算することが、以下の式
    Figure 0005497172
    ここにおいて、R des は、設計されたリコールレートを示す、
    に従って計算することをさらに備え、前記第1のセットD1のハッシュ関数の第1の数rsを計算することが、以下の式
    Figure 0005497172
    に従って計算することをさらに備える請求項3に記載の方法。
  7. 通信コストをさらに低減するために、それぞれのセットのサイズ|Dj|に関する事前知識を使用することをさらに備える請求項1に記載の方法。
  8. ANDクエリを最適に実行するために、前記クエリをノード
    Figure 0005497172
    に送り、次いで、|Dj|の2番目の最小値を有する次のノードに送ることをさらに備える請求項7に記載の方法。
  9. ORクエリを最適に実行するために、最初に前記クエリをノード
    Figure 0005497172
    に送り、次いで、|Dj|の2番目の最大値を有する次のノードに送ることをさらに備える請求項7に記載の方法。
  10. クエリを処理するために前記第1のブルーム・フィルタを使用するまたは使用しないための条件を判断することであって、前記条件は、各セットのサイズ|Dj|がいつアプリオリに知られるかを備える、判断することをさらに備える請求項1に記載の方法。
  11. Figure 0005497172
    のときのみ、前記第1のブルーム・フィルタを前記計算することを実行し、ORクエリのために前記第1のブルーム・フィルタを使用することをさらに備える請求項10に記載の方法。
  12. 分散型ネットワーク中の第1のノードにおいてクエリを受信するための第1のモジュールであって、前記クエリが第1のキーワードと第2のキーワードとを含む、第1のモジュールと、
    前記第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけるための第2のモジュールと、
    前記第1のセット中のドキュメントの前記第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算するための第3のモジュールと、
    前記第1のセットの第1のブルーム・フィルタを、前記第2のキーワードをハッシングすることによって識別された前記分散型ネットワーク中の第2のノードに送るための第4のモジュールであって、前記第1のブルーム・フィルタが前記第1のブルーム・フィルタ長とハッシュ関数の前記第1の数とを備える、第4のモジュールと、および、
    前記クエリがANDクエリの場合には、前記第2のノードから検索結果を受信して、前記検索結果を問い合わせノードに戻し、前記クエリがORクエリの場合には、前記第2のノードから肯定応答メッセージを受信すると、第1のキーワードを含んでいるドキュメントのセットを問い合せノードに送るための第5のモジュールと、
    を備える、ネットワークにおいてサービスを公開または発見するように構成された、複数キーワード・クエリを処理するための少なくとも1つのプロセッサ。
  13. 複数キーワード・クエリを処理するためのコードを記録したコンピュータ読み取り可能な記録媒体であって、
    分散型ネットワーク中の第1のノードにおいてクエリを受信することをコンピュータに行わせるための第1のコード・セットであって、前記クエリが第1のキーワードと第2のキーワードとを含む、第1のコード・セットと、
    前記第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけることを前記コンピュータに行わせるための第2のコード・セットと、
    前記第1のセット中のドキュメントの前記第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算することを前記コンピュータに行わせるための第3のコード・セットと、
    前記第1のセットの第1のブルーム・フィルタを、前記第2のキーワードをハッシングすることによって識別された前記分散型ネットワーク中の第2のノードに送ることを前記コンピュータに行わせるための第4のコード・セットであって、前記第1のブルーム・フィルタが前記第1のブルーム・フィルタ長とハッシュ関数の前記第1の数とを備える、第4のコード・セットと、および、
    前記クエリがANDクエリの場合には、前記第2のノードから検索結果を受信し、前記検索結果を問い合わせノードに戻すことを前記コンピュータに行わせ、前記クエリがORクエリの場合には、前記第2のノードから肯定応答メッセージを受信すると、第1のキーワードを含んでいるドキュメントのセットを問い合せノードに送ることを前記コンピュータに行わせるための第5のコード・セットと、
    を備えるコンピュータ読み取り可能な記録体。
  14. 複数キーワード・クエリを処理するための装置であって、
    分散型ネットワーク中の第1のノードにおいてクエリを受信するための手段であって、前記クエリが第1のキーワードと第2のキーワードとを含む、受信するための手段と、
    前記第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけるための手段と、
    前記第1のセット中のドキュメントの前記第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算するための手段と、
    前記第1のセットの第1のブルーム・フィルタを、前記第2のキーワードをハッシングすることによって識別された前記分散型ネットワーク中の第2のノードに送るための手段であって、前記第1のブルーム・フィルタが前記第1のブルーム・フィルタ長とハッシュ関数の前記第1の数とを備える、送るための手段と、および、
    前記クエリがANDクエリの場合には、前記第2のノードから検索結果を受信して、完全クエリ検索結果を問い合わせノードに戻し、前記クエリがORクエリの場合には、前記第2のノードから肯定応答メッセージを受信すると、第1のキーワードを含んでいるドキュメントのセットを問い合せノードに送るための手段と、
    を備える装置。
  15. 分散型ネットワークにおいて複数キーワード検索を実行するための装置であって、
    第1のキーワードと第2のキーワードとを含めて問い合わせるように構成された受信機と、
    前記第1のキーワードを含んでいるドキュメントの第1の数の第1のセットを見つけるように構成されたキーワード・セット判断構成要素と、
    前記第1のセット中のドキュメントの前記第1の数の関数として、最適な第1のブルーム・フィルタ長および対応するハッシュ関数の第1の数を計算し、前記第1のセットの第1のブルーム・フィルタを、前記第2のキーワードをハッシングすることによって識別された前記分散型ネットワーク中の第2のノードに送るように構成されたブルーム・フィルタ計算構成要素であって、第1のブルーム・フィルタが前記第1のブルーム・フィルタ長とハッシュ関数の前記第1の数とを備える、ブルーム・フィルタ計算構成要素と、および、
    前記クエリがANDクエリの場合には、前記第2のノードから検索結果を受信して、完全クエリ検索結果を問い合わせノードに戻し、前記クエリがORクエリの場合には、前記第2のノードから肯定応答メッセージを受信すると、第1のキーワードを含んでいるドキュメントのセットを問い合せノードに送るように構成された、複数キーワード処理要素と
    を備える装置。
  16. 前記クエリがANDクエリである請求項15に記載の装置。
  17. 前記クエリがORクエリである請求項15に記載の装置。
  18. 前記クエリがANDクエリとORクエリの組合せを備える請求項15に記載の装置。
  19. 前記第1のセットD1の前記第1のブルーム・フィルタ長Lsを計算することが、以下の式
    Figure 0005497172
    に従って計算することをさらに備え、前記第1のセットD1のハッシュ関数の第1の数rsを計算することが、以下の式
    Figure 0005497172
    に従って計算することをさらに備える請求項16に記載の装置。
  20. 前記第1のセットD1の前記第1のブルーム・フィルタ長Lsを計算することが、以下の式
    Figure 0005497172
    に従って計算することをさらに備え、前記第1のセットD1のハッシュ関数の第1の数rsを計算することが、以下の式
    Figure 0005497172
    に従って計算することをさらに備える請求項17に記載の装置。
  21. 前記ブルーム・フィルタ計算構成要素が、通信コストをさらに低減するために、それぞれのセットのサイズ|Dj|に関する事前知識を使用するようにさらに構成される請求項15に記載の装置。
  22. 前記ブルーム・フィルタ計算構成要素が、ANDクエリを最適に実行するために、前記クエリをノード
    Figure 0005497172
    に送り、次いで、|Dj|の2番目の最小値を有する次のノードに送るようにさらに構成される請求項21に記載の装置。
  23. 前記ブルーム・フィルタ計算構成要素が、ORクエリを最適に実行するために、最初に前記クエリをノード
    Figure 0005497172
    に送り、次いで、|Dj|の2番目の最大値を有する次のノードに送るようにさらに構成される請求項21に記載の装置。
  24. 前記ブルーム・フィルタ計算構成要素が、クエリを処理するために前記第1のブルーム・フィルタを使用するまたは使用しないための条件を判断するようにさらに構成され、前記条件は、各セットのサイズ|Dj|がいつアプリオリに知られるかを備える請求項15に記載の装置。
  25. 前記ブルーム・フィルタ計算構成要素が、
    Figure 0005497172
    のときのみ、前記第1のブルーム・フィルタを前記計算することを実行し、ORクエリのために前記第1のブルーム・フィルタを使用するようにさらに構成される請求項24に記載の装置。
JP2012520757A 2009-07-14 2010-07-14 分散型ネットワーク上で複数キーワード・クエリを効率的に処理するための方法および装置 Expired - Fee Related JP5497172B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US22550509P 2009-07-14 2009-07-14
US61/225,505 2009-07-14
US12/835,710 2010-07-13
US12/835,710 US8996568B2 (en) 2009-07-14 2010-07-13 Methods and apparatus for efficiently processing multiple keyword queries on a distributed network
PCT/US2010/042021 WO2011008889A2 (en) 2009-07-14 2010-07-14 Methods and apparatus for efficiently processing multiple keyword queries on a distributed network

Publications (2)

Publication Number Publication Date
JP2012533797A JP2012533797A (ja) 2012-12-27
JP5497172B2 true JP5497172B2 (ja) 2014-05-21

Family

ID=43450180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012520757A Expired - Fee Related JP5497172B2 (ja) 2009-07-14 2010-07-14 分散型ネットワーク上で複数キーワード・クエリを効率的に処理するための方法および装置

Country Status (7)

Country Link
US (1) US8996568B2 (ja)
EP (1) EP2454656A4 (ja)
JP (1) JP5497172B2 (ja)
KR (2) KR20160072843A (ja)
CN (1) CN102473084B (ja)
TW (1) TW201112025A (ja)
WO (1) WO2011008889A2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5359941B2 (ja) * 2010-03-10 2013-12-04 富士通株式会社 データ管理装置及びデータ管理方法
JP5666719B2 (ja) * 2010-12-20 2015-02-12 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ピアツーピア・ネットワークにおける検索
TW201312980A (zh) * 2011-05-03 2013-03-16 Interdigital Patent Holdings 在網際網路中內容識別、檢索及路由
US8782082B1 (en) 2011-11-07 2014-07-15 Trend Micro Incorporated Methods and apparatus for multiple-keyword matching
EP2629212A1 (en) * 2012-02-14 2013-08-21 Alcatel Lucent Method for storing and searching tagged content items in a distributed system
EP2831851A4 (en) * 2012-03-30 2015-08-26 Nokia Technologies Oy IDENTITY-BASED CARD EDITION
US11403317B2 (en) * 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
US9208254B2 (en) * 2012-12-10 2015-12-08 Microsoft Technology Licensing, Llc Query and index over documents
TWI480743B (zh) * 2012-12-11 2015-04-11 Inventec Corp 將目標資料拆分至伺服器與客戶端翻譯之系統及其方法
US9251133B2 (en) 2012-12-12 2016-02-02 International Business Machines Corporation Approximate named-entity extraction
US10372736B2 (en) * 2013-05-16 2019-08-06 University Of Utah Research Foundation Generating and implementing local search engines over large databases
CN103440249A (zh) * 2013-07-23 2013-12-11 南京烽火星空通信发展有限公司 一种非结构化数据快速检索的系统及方法
US9218169B2 (en) 2013-11-19 2015-12-22 Google Inc. Callpath finder
CN104717342B (zh) * 2013-12-11 2018-11-09 阿里巴巴集团控股有限公司 一种基于短信息唤醒客户端应用的方法及装置
US9467842B2 (en) * 2013-12-12 2016-10-11 Alcatel Lucent Discovery of objects in wireless environments
US20150220625A1 (en) * 2014-02-03 2015-08-06 Interdigital Patent Holdings, Inc. Methods and apparatus for conveying surveillance targets using bloom filters
US11265385B2 (en) 2014-06-11 2022-03-01 Apple Inc. Dynamic bloom filter operation for service discovery
CN105389314B (zh) * 2014-09-04 2019-07-23 中芯国际集成电路制造(上海)有限公司 一种日志文件查询系统及查询方法
GB2532988B (en) * 2014-12-04 2021-03-03 Arm Ip Ltd Method and device for scanning for data processing devices
US20160371339A1 (en) * 2015-06-17 2016-12-22 Qualcomm Incorporated Executing a faceted search within a semi-structured database using a bloom filter
US10277686B2 (en) * 2015-07-29 2019-04-30 Cisco Technology, Inc. Service discovery optimization in a network based on bloom filter
US10248701B2 (en) 2015-09-18 2019-04-02 International Business Machines Corporation Efficient distributed query execution
US10558702B2 (en) * 2016-04-06 2020-02-11 Baidu Usa Llc Unified storage system for online image searching and offline image analytics
US10585915B2 (en) * 2017-10-25 2020-03-10 International Business Machines Corporation Database sharding
CN108271234B (zh) * 2017-11-28 2022-03-11 中国电子科技集团公司电子科学研究院 移动自组织网络的服务发现方法及服务器
US11610107B2 (en) 2018-07-06 2023-03-21 Global Elmeast Inc. Methodology to automatically incorporate feedback to enable self learning in neural learning artifactories
CN110176984B (zh) * 2019-05-28 2020-11-03 创意信息技术股份有限公司 一种用于安全字符串模式匹配的数据结构构造及匹配方法
EP3809275B1 (en) * 2019-10-16 2022-11-09 Fetch.ai Limited System and method to improve system reliability via consistent recordal of data entities
DE102022117663B3 (de) * 2022-07-14 2024-01-25 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zur Übertragung einer IBLT-Datenstruktur und Benutzerendgerät
US11837004B1 (en) * 2023-02-24 2023-12-05 Oracle Financial Services Software Limited Searchable table extraction

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61223941A (ja) * 1985-03-29 1986-10-04 Kagaku Joho Kyokai 化学構造の検索方法
US4977499A (en) * 1988-04-08 1990-12-11 International Business Machines Corp. Method and apparatus for commanding operations on a computer network
US5265065A (en) * 1991-10-08 1993-11-23 West Publishing Company Method and apparatus for information retrieval from a database by replacing domain specific stemmed phases in a natural language to create a search query
US6487606B1 (en) * 1998-11-18 2002-11-26 Nortel Networks Limited System and method for delivering messages through a totem communications system
US7054867B2 (en) * 2001-09-18 2006-05-30 Skyris Networks, Inc. Systems, methods and programming for routing and indexing globally addressable objects and associated business models
JP4331203B2 (ja) 2003-06-04 2009-09-16 株式会社ソニー・コンピュータエンタテインメント ピアツーピアネットワークのためのコンテンツ分散型オーバーレイネットワーク
US7603464B2 (en) 2003-06-04 2009-10-13 Sony Computer Entertainment Inc. Method and system for identifying available resources in a peer-to-peer network
US7409406B2 (en) 2003-09-08 2008-08-05 International Business Machines Corporation Uniform search system and method for selectively sharing distributed access-controlled documents
US20050108368A1 (en) * 2003-10-30 2005-05-19 Aditya Mohan Method and apparatus for representing data available in a peer-to-peer network using bloom-filters
GB0409582D0 (en) * 2004-04-29 2004-06-02 British Telecomm Event notification network
US20080195597A1 (en) 2007-02-08 2008-08-14 Samsung Electronics Co., Ltd. Searching in peer-to-peer networks
JP4806362B2 (ja) * 2007-02-14 2011-11-02 富士通株式会社 並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法
JP4978288B2 (ja) * 2007-04-19 2012-07-18 沖電気工業株式会社 無線ネットワークシステム、情報提供装置及び無線端末
US7930547B2 (en) 2007-06-15 2011-04-19 Alcatel-Lucent Usa Inc. High accuracy bloom filter using partitioned hashing
CN101087305B (zh) 2007-07-09 2010-09-08 中国人民解放军国防科学技术大学 大规模非结构化p2p网络中的资源搜索方法
US9301121B2 (en) * 2007-07-11 2016-03-29 Qualcomm Incorporated Peer to peer multiple identifiers
US8103718B2 (en) * 2008-07-31 2012-01-24 Microsoft Corporation Content discovery and transfer between mobile communications nodes
WO2010043970A2 (en) * 2008-10-13 2010-04-22 Faroo Assets Limited System and method for distributed index searching of electronic content
US8943081B2 (en) * 2008-11-17 2015-01-27 At&T Intellectual Property I, L.P. User-powered recommendation system

Also Published As

Publication number Publication date
WO2011008889A2 (en) 2011-01-20
WO2011008889A3 (en) 2011-04-21
CN102473084B (zh) 2016-03-09
JP2012533797A (ja) 2012-12-27
EP2454656A2 (en) 2012-05-23
CN102473084A (zh) 2012-05-23
KR20160072843A (ko) 2016-06-23
TW201112025A (en) 2011-04-01
US20120011150A1 (en) 2012-01-12
EP2454656A4 (en) 2015-02-25
KR20120045017A (ko) 2012-05-08
US8996568B2 (en) 2015-03-31

Similar Documents

Publication Publication Date Title
JP5497172B2 (ja) 分散型ネットワーク上で複数キーワード・クエリを効率的に処理するための方法および装置
JP7065082B2 (ja) 分散されたセマンティック記述子に対するセマンティッククエリ
JP7037555B2 (ja) サービス層のためのアクセス制御ポリシーの同期
US9398110B2 (en) Method and apparatus for providing standard information processing pipelines
US20180032572A1 (en) Mechanisms for semantics publishing and discovery
US11797759B2 (en) Size-optimized data interchange method and system
KR101357704B1 (ko) 구조화된 메타 데이터 기반 탐색을 게시하기 위한 플러그인 모델용에 대한 방법 및 장치
KR20030047856A (ko) 데이터 처리 시스템, 데이터 처리 방법, 정보 처리 디바이스, 및 컴퓨터 판독가능 기록 매체
US20170308620A1 (en) Making graph pattern queries bounded in big graphs
CN105340243B (zh) 用于检测数字媒体设备存在于网络上的方法、系统和介质
JP2009540462A (ja) コンパイルスコープを用いたサービスの発見
JP2015528175A (ja) 情報をプッシュする方法および情報をプッシュするための装置
WO2012152076A1 (zh) 业务适配方法、装置及系统
US8738801B2 (en) Methods and apparatus for updating index information while adding and updating documents in a distributed network
US20100274823A1 (en) Method, apparatus and computer program product for providing an adaptive context model framework
CN105447188A (zh) 一种基于知识学习对等社交网络文档检索方法
CN104168147B (zh) 一种针对p2p网络监控基于一维链表的节点维护方法
Jin et al. Automated mashup of CoAP services on the Internet of Things
JP3947018B2 (ja) オブジェクト発見ネットワーク、ネットワークの構築方法、オブジェクト発見方法、ノード、オブジェクトのクエリメッセージ転送方法、プログラム、および記録媒体
JP4494901B2 (ja) リソース検索方法およびリソース検索システム
Darwish et al. An intelligent database proactive cache replacement policy for mobile communication system based on genetic programming
WO2018144517A1 (en) Semantic query processing with information asymmetry
Bettini et al. Context-aware web services for distributed retrieval of points of interest
Gaddah et al. Scalable semantic overlay routing in MANETs
Chang et al. Service Discovery and Trust in Mobile Social Network in Proximity

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130627

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130709

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131008

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131016

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140108

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: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140305

R150 Certificate of patent or registration of utility model

Ref document number: 5497172

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees