CN102473084A - 用于在分布式网络中高效处理多关键字查询的方法和装置 - Google Patents
用于在分布式网络中高效处理多关键字查询的方法和装置 Download PDFInfo
- Publication number
- CN102473084A CN102473084A CN2010800315660A CN201080031566A CN102473084A CN 102473084 A CN102473084 A CN 102473084A CN 2010800315660 A CN2010800315660 A CN 2010800315660A CN 201080031566 A CN201080031566 A CN 201080031566A CN 102473084 A CN102473084 A CN 102473084A
- Authority
- CN
- China
- Prior art keywords
- inquiry
- group
- bloom
- wave filter
- key word
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/43—Querying
- G06F16/435—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/335—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9538—Presentation of query results
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1061—Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
- H04L67/1068—Discovery involving direct consultation or announcement among potential requesting and potential source peers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery 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)
Abstract
本发明描述了用于使用多关键字来执行AND/OR搜索的方法和装置。在网络中的第一节点处接收包括多个关键字的查询。第一节点确定与多个关键字中的第一关键字相匹配的一组文档,并计算表示这些关键字的理想Bloom滤波器。第一节点向第二节点发送查询和Bloom滤波器,其中,第二节点根据该Bloom滤波器确定其对所述多个关键字中的第二关键字的搜索结果。
Description
基于3 5U.S.C.§.119要求优先权
本专利申请要求于2009年7月14日递交的、名称为“Methods andApparatus for Performing Searches in a Peer-to-Peer Distributed Network”的临时申请号61/225,505的优先权,该临时申请已经转让给本申请的受让人,故以引用方式将其明确地并入本文。
技术领域
概括地说,本发明内容涉及移动工作环境,具体地说,本发明内容涉及用于在分布式网络中进行多关键字查询(诸如AND和OR查询)的分布式网络、方法和装置。
背景技术
覆盖网络(覆盖网络)是在已有网络上构造的具有节点和逻辑链路的虚拟网络。覆盖网络的例子包括但不限于:互联网、Chord网、内容寻址网络(CAN)、Pastry网和Viceroy网。在一些覆盖网络中,每个节点存储覆盖网络数据的一部分,以在网络中分发数据,从而提高在存储和搜索数据方面的网络效率。
加入覆盖网络的设备或节点可能期望从该覆盖网络中的另一个设备或节点获取服务。使用多种服务描述语言中的任一种描述语言在覆盖网络中发布这些服务,其中,每一种描述语言都具有相应的用来查找所发布的服务的服务发现协议。Wikipedia给出了服务发现的定义,即:“服务发现协议是一种网络协议,其使得能够在计算机网络中自动检测多个设备及这些设备所提供的服务”。换言之,服务发现是查找所请求服务的服务供应方的动作。在搜索到了所请求的服务的位置时(通常是服务供应方的位置),用户就进一步的进行存取并使用该服务。
一般来说,服务发现协议包括两类实体:(a)、服务供应方—在覆盖网中提供服务的实体;(b)、客户—使用服务的实体。在一个方面,服务供应方的例子包括用于提供诸如以下服务的节点:打印、扫描、传真、存储、音乐共享、文=件共享、游戏和诸如用于订购电影票、旅馆、机票或在线游戏等的网页服务。此外,在该网络中的任意节点都可作为客户。由此,服务发现的目的就是为了帮助客户发现所感兴趣的特定服务(如果这种服务存在的话)的服务供应方。
为了在对等覆盖网络中成功地进行服务发现,服务供应方应当使用服务描述语言具体说明其服务,应当以可搜索的格式将有关所述服务的元数据存储在覆盖网络的节点中,而且客户应当能够使用可搜索的关键字来表达服务请求,其中,所述关键字被传递至查询系统以辅助查找相应的服务。
在发布处理的一部分中,从服务描述文档中提取关键字并以分发的方式将其在分布式网络中分别发布。随后,各节点发起查询,以发现关键字和/或服务。通常,执行对两个或多个关键字的搜索涉及执行AND搜索,其中,向每个节点发送包括所述关键字中之一的查询。类似的,通过向每个节点发送包括构成查询的多个关键字中的一个或多个关键字的查询来执行OR搜索。此类典型的搜索是与高通信开销相关联的。
由此,期望获得一种能够更高效地处理多个关键字查询并具有经优化的通信开销的方法。
发明内容
下面给出了对一个或多个方面的简要概述,以提供对这些方面的基本理解。该概述不是对所有可预想的方面的泛泛概括,也不旨在标识所有方面的关键或重要元件或者描述任何或所有方面的保护范围。其目的在于作为后文所提供更详细描述的序言,以简化形式给出一个或多个方面的一些概念。
根据一个方面,提供了一种在覆盖网络中进行搜索的方法,该方法包括:在分布式网络的第一节点处接收查询,其中,所述查询包括第一关键字和第二关键字;查找包括所述第一关键字的第一组第一数量的文档;根据所述第一组中的第一数量的文档,计算最佳第一Bloom滤波器长度以及相应的第一数量的散列函数;向所述分布式网络中通过对所述第二关键字执行散列来标识的第二节点发送所述第一组的第一Bloom滤波器,其中,所述第一Bloom滤波器包括所述第一Bloom滤波器长度和所述第一数量的散列函数。
另一个方面涉及用于在网络中发布或发现服务的至少一个处理器,包括:第一单元,用于在分布式网络的第一节点处接收查询,其中,所述查询包括第一关键字和第二关键字;第二单元,用于查找包括所述第一关键字的第一组第一数量的文档;第三单元,用于根据所述第一组中的第一数量的文档,计算最佳第一Bloom滤波器长度以及相应的第一数量的散列函数;第四单元,用于向所述分布式网络中通过对所述第二关键字执行散列来标识的第二节点发送所述第一组的第一Bloom滤波器,其中,所述第一Bloom滤波器包括所述第一Bloom滤波器长度和所述第一数量的散列函数。
另一个方面涉及一种包括计算机可读介质的计算机程序产品,其中,所述计算机可读介质包括:第一代码集,其使得一台计算机在分布式网络的第一节点处接收查询,其中,所述查询包括第一关键字和第二关键字;第二代码集,其使得所述计算机查找包括所述第一关键字的第一组第一数量的文档;第三代码集,其使得所述计算机根据所述第一组中的第一数量的文档,计算最佳第一Bloom滤波器长度以及相应的第一数量的散列函数;第四代码集,其使得所述计算机向所述分布式网络中通过对所述第二关键字执行散列来标识的第二节点发送所述第一组的第一Bloom滤波器,其中,所述第一Bloom滤波器包括所述第一Bloom滤波器长度和所述第一数量的散列函数。
另一方面涉及一种装置,包括:用于在分布式网络的第一节点处接收查询的模块,其中,所述查询包括第一关键字和第二关键字;用于查找包括所述第一关键字的第一组第一数量的文档的模块;用于根据所述第一组中的第一数量的文档,计算最佳第一Bloom滤波器长度以及相应的第一数量的散列函数的模块;用于向所述分布式网络中通过对所述第二关键字执行散列来标识的第二节点发送所述第一组的第一Bloom滤波器的模块,其中,所述第一Bloom滤波器包括所述第一Bloom滤波器长度和所述第一数量的散列函数。
另一方面涉及一种用于在分布式网络中执行多关键字搜索的装置,包括:接收机,用于接收包括第一关键字和第二关键字的查询;关键字组确定部件,用于查找包括所述第一关键字的第一组第一数量的文档;Bloom滤波器计算部件,用于:根据所述第一组中的第一数量的文档,计算最佳第一Bloom滤波器长度以及相应的第一数量的散列函数;向所述分布式网络中通过对所述第二关键字执行散列来标识的第二节点发送所述第一组的第一Bloom滤波器,其中,所述第一Bloom滤波器包括所述第一Bloom滤波器长度和所述第一数量的散列函数。
为实现前述目的和相关目的,一个或多个方面包括下面将要充分描述和在权利要求中重点列明的特征。下面的描述和附图详细阐明了一个或多个方面的某些示例性特征。不过,这些特征仅仅说明可采用各种方面之基本原理的一些不同方法,该描述旨在包括所有这些方面及其等同物。
附图说明
下面将结合附图描述本发明公开的方面,这些附图是举例说明而非要限制所公开的方面,其中,用相同的附图标记指示相同的要素,在附图中:
图1是对等网络的方面的框图;
图2是用于在网络中发布服务的系统的方面的示意图,其中,该系统支持多种不同的服务描述语言;
图3是用以执行所描述的功能的计算设备的方面的示意图;
图4是用于执行多关键字搜索的方法的方面的流程图;
图5A和图5B是用于执行多关键字搜索的方法的另外的方面的流程图;
图6是用于执行多关键字搜索的系统的方面的示意图。
具体实施方式
现在参照附图描述了多个方面。在下面的描述中,为便于解释,给出了大量具体细节,以提供对一个或多个方面的全面理解。当然,很明显,也可以不用这些具体细节来实现所述方面。
分布式网络(如,对等网络)依赖于发现设备和这些计算机网络中的设备所提供的服务的能力。可使用各种服务描述语言方案来描述服务。本文所描述的系统和方法提供了用于搜索发布到分布式网络的文档的系统和方法。具体来说,所描述的系统和方法包括查找用于AND和OR搜索的Bloom滤波器的最佳参数(散列(hash)函数的大小和数量)。
参照图1,提供了对等覆盖网络100的框图。网络100包括底层网络102,后者包括任意类型的网络(如,互联网协议网络)。尽管将底层网络102示出为单个实体,然而,底层网络可包括任意数量或类型的网络,诸如WAN、LAN、无线网络或任意其它类型的网络。尽管图1描绘的是对等覆盖网络,然而,本申请并不限于覆盖网络。对等覆盖网络100是可用来实现本发明所描述的方法和装置的一种示例性类型的分布式网络。也可以使用其它类型的分布式网络。此外,本发明所描述的系统和方法同样适用于任何其它类型的网络(包括集中式网络)。举例来说,网络100可包括提供发现服务的服务器。在这样的情况下,该服务器可作为用来保存与发现有关的信息的目录。举例来说,服务器保存网络中的节点发布的关键字和相应的信息。所述节点向服务器发布信息,所述查询也被发往该服务器。
在一个方面,底层网络102包括多个对等网络(104、106和108)。对等网络104、106和108中的每一者都包括底层网络102的节点的子集,这些网络使用底层网络102的服务来工作以使得这些节点能够进行通信。举例来说,在对等网络104、106和108中,所述节点通过底层网络102提供的通信连路相连接,以形成期望的路由路径。对等网络104、106和108可具有任意拓扑或结构以使得能够实现任意路由布局,而不限于图1所示的布局。
在对等覆盖网络(诸如网络104、106和108)中,每个节点都可用作服务供应方和/或客户。也就是说,节点可以向覆盖网络提供服务,也可以使用一个或多个其它节点的服务。例如,所述服务包括打印、扫描、传真、存储、音乐共享、文=件共享、游戏和诸如用于订购电影票、旅馆、机票或在线游戏等的网页服务。不过,值得注意的是,对这些服务的举例不是限制性的,实际的服务可以包括多于或少于所列举的这些服务的服务。每个节点可以包括计算设备,比方说,诸如个人计算机、膝上型计算机、无线通信设备、移动电话、个人数字助理、打印机、传真机和/或任何其它可连接到网络的计算设备。
服务发现协议可用来协助用作客户的节点查找所感兴趣的特定服务的服务供应方。服务供应方使用(例如)诸如以下的服务描述语言来具体说明其服务:扩展标记语言(XML)、搜索描述格式(RDF)、RDF-S、网页服务描述语言(WSDL)、WSDL-S、网页本体论语言(OWL)、用于服务的网页本体论语言(OWL-S)、通用描述发现和集成(UDDI)、通用即插即用(UPnP)和/或其它服务描述语言。与服务有关的元数据可采用可搜索的格式存储在覆盖网络的节点中,客户可使用可搜索的关键字来表达服务请求,其中,所述关键字被传递至查询系统以辅助查找相应的服务。
可以采用其本体服务描述格式将有关服务的元数据直接加以存储,也可以将其转换成可搜索模式。一种可能的实现方案是简单地从服务描述中提取关键字并在覆盖网络中发布这些关键字。另一种实现方案是直接以所选择的服务描述格式来发布这些关键字。再一种实现方案是将服务描述转换成可搜索模式。
图2描绘了用于服务发布的示例性系统200,该系统支持多种不同的服务描述语言且所描述的方面可扩展至其它类似的此类系统。系统200为在对等网络中通知和发现服务提供了公共框架。如图2所示,用于服务描述的数据202可使用任意服务描述语言/模式204(比方说,诸如XML、XDS、RDF、RDF-S、WSDL、UDDI、UPnP、OWL、OWL-s等)来发布。可提供一个或多个插入式单元206,以根据标准化模式209将服务描述从其本体形式(例如,对应的服务描述语言204)转换为可搜索服务描述208。可搜索服务描述208可随后在覆盖网络210中发布。
可搜索服务描述208使得能够聚集进行服务发现而需的所有信息以及进行排序和接入服务而需的信息。发布可搜索服务描述208包括从本体服务描述中提取关键字。例如,关键字可采用XML属性-值对、RDF三元组、仅关键字的形式来提取,也可以根据任意其它提取方法来提取。插入式单元206提供标准化模式209,后者定义了待提取的特定字段和用于提取该字段的格式。标准化模式209不是服务描述语言,因其并不提供服务描述语言的所有功能。与翻译器的效用不同,插入式单元206并不将一种服务描述语言翻译成一种或多种其它服务描述语言。而其实是,插入式单元206促进根据标准化模式209从原始服务描述中提取某些数据。举例来说,将标准化模式209指明的字段映射到本体服务描述204中的特定数据。这样一来,就是将按照标准化模式209来提取的信息在覆盖网络中发布。由此,就不再是在网络中发布多个版本的服务描述(其中,每一种服务描述采用不同的服务描述语言),而是向网络发布可被任意节点搜索并识别的单一描述。
另外,网络可先验性地决定使用一种特定服务描述格式,随后所有服务发布/发现都基于该格式。
覆盖网络210中的每个节点都可用以存储覆盖网络数据的一部分(称为分区),以将所述数据分发在网络中,从而增加在存储和搜索数据方面的网络效率。条目-频率表可用来表示对存储在网络中的数据的概览,其中,列表示文档,行表示文档中的条目。条目-频率表提供有关数据库的重要信息并可用于若干种类型的搜索。
可使用条目-频率表以各种方式在网络中分发数据。举例来说,可使用关键字分区(partition-by-keyword)的方式,其中,条目-频率表按行分开,根据散列函数将每一行或一组行随机分配给特定节点。散列函数用以向不同的节点分发关键字所有权。由此,每个节点负责特定的一组关键字。
图3描绘了可在分布式网络中用作节点的示例性计算设备300。计算设备300包括处理器302,后者用于执行与本文所描述的一个或多个部件相关联的处理功能。处理器302包括单组或多组处理器或多核处理器。此外,处理器302可实现成集成处理系统和/或分布式处理器系统。
计算设备300还包括存储器304,后者(例如)用于存储由处理器302来执行的本地版的应用程序。存储器304包括可由计算机使用的任意类型的存储器,诸如随机存取存储器(RAM)、只读存储器(ROM)、磁带、磁盘、光盘、易失性存储器、非易失性存储器和上述的任意组合。
此外,计算设备300包括通信部件306,后者用于建立并维持与使用上文所描述的硬件、软件和服务的一方或多方的通信。通信部件306可以实现计算设备300中多个部件之间的通信,还可以实现计算设备300和外部设备(诸如位于通信网络中的设备和/或串行或本地连接至计算设备300的设备)之间的通信。举例来说,通信部件306可以包括一条或多条总线,其还可以进一步包括分别与发射机和接收机相关联的发射链部件和接收链部件,以接口外部设备。此外,例如,通信部件306可用以使得计算设备300能够与分布式网络中的其它节点进行通信。
另外,计算设备300还包括数据存储器308,后者可以是硬件和/或软件的任意合适的组合,用于提供对结合本文所描述的方面来使用的信息、数据库和程序的大量存储。例如,数据存储器308可以是处理器302当前未执行的应用的数据仓储。
计算设备300还可包括用户接口部件310,后者用以从计算设备300的用户接收输入,后者还可用以生成输出以向用户呈现。用户接口部件310可包括一个或多个输入设备,后者包括但不限于:键盘、数字键盘、触控式显示器、导航键、功能键、话筒、语音识别部件或能够从用户接收输入的任何其它机制或上述的任意组合。此外,用户接口部件310可包括一个或多个输出设备,后者包括但不限于:显示器、扬声器、触觉反馈机制、打印机、能够向用户呈现输出的任何其它机制或上述的任意组合。
计算设备300还可包括一个或多个可搜索模式插入式单元206。例如,一个或多个插入式单元206可存储在存储器304中。每个模式插入式单元206可用于:根据标准化模式209,从以任意服务描述语言204来编写的服务描述生成可搜索服务描述208(图2)。向网络发布可搜索服务描述208,并使用可搜索服务描述208来处理对服务的查询。生成可搜索服务描述208包括:从服务描述中以其本体形式提取关键字,并随后以可搜索服务描述208的格式在网络中通知这些关键字。
计算设备300还包括查询接收单元320,后者用以接收用户查询。查询接收单元320可进一步用以确定网络中的哪个节点或哪些节点负责构成所述查询的特定关键字。如上文所描述的,网络可以采用关键字分区方式,其中,条目-频率表分为多行,将每一行或一组行随机分配给特定节点。由此,查询接收单元320就可用于:根据条目-频率表来确定对查询关键字负责的一个节点或多个节点。可采用散列函数来确定负责的节点。询问接收单元320还可用于将查询路由到适当的节点以进行处理。举例来说,在一些情况下,查询接收单元320可用于选择向之转发查询的第一节点,其中,该第一节点负责查询中的第一关键字。查询接收单元320还用于从网络中的其它节点接收搜索结果并将该结果转发回用户。
计算设备300还可包括查询处理单元330,后者用以处理对存储在网络中的数据和/或文档的查询。查询处理单元330可包括关键字组确定子单元332,后者用以确定与对节点所负责的这些关键字的关键字查询相匹配的一组文档。
查询处理单元330还可包括Bloom滤波器计算子单元334。Bloom滤波器计算子单元可用以确定最佳大小的Bloom滤波器,以用于呈现通过关键字组确定子单元332来确定的一组文档。例如,Bloom滤波器的长度可根据该组中的文档数量来确定。Bloom滤波器是一种空间效率概率数据结构,其用以检验某一元素是否是组成员。可为Bloom滤波器定义多个散列函数,这些散列函数中的每一个散列函数将组元素映射或散列到具有均匀随机分布的L个数组位置中之一。为了查询一元素或检验在组中是否存在该元素,将该元素作为输入提供给散列函数以得到数组位置。如果这些位置的任意位均为0,那么该元素就不在该组中;否则,如果这些位置的所有位均为1,那么该元素就在该组中或者在其它元素插入期间已将这些位设为1。
使用Bloom滤波器的一个益处是其提供了大量压缩。但是,这样会出现误判(false positive)。也就是说,Bloom滤波器可能指示一元素是组的一部分,但其实该元素并不是。举例来说,这在当与该元素对应的所有位置在其它元素插入期间已被设为1的情况下会发生。由此,Bloom滤波器计算子单元334可用以纠正误判。
查询处理单元330还可包括多关键字处理模块336,后者用以处理多关键字查询(诸如AND查询和OR查询)。AND查询旨在确定一组文档,其中,该组中的每一个文档都包括构成查询的一部分的每一个关键字。OR查询旨在确定一组文档,其中,该组中的每一个文档都包括在查询中指明的至少一个关键字。多关键字处理单元336可与Bloom滤波器计算子单元334一起工作来计算从网络中的两个或多个节点接收的多组文档的交集。
图4是描绘了用于处理所接收的多关键字查询的示例性方法的流程图。如在402所描绘的,第一节点接收包括多个关键字的查询。例如,该查询可以是AND查询、OR查询或经组合的AND/OR查询。可从网络中的另一个节点(查询节点)接收查询,其中,该节点已确定接收节点负责查询中的第一关键字。
如在404所描绘的,第一节点确定一组文档,该组文档包括在查询中指明的第一关键字。第一节点通过在其存储器中扫描查询字并提取其已内部存储在其存储器中的条目-频率表的相应行来确定适当的文档。该节点随后查找在选定的行中具有非零条目的一组文档。
如在406所描绘的,第一节点计算最佳Bloom滤波器,来表示包括查询关键字的一组文档。举例来说,这包括:根据包括所述关键字的一组文档的大小,计算进行搜索处理而需的Bloom滤波器的大小。所述节点随后将该组文档中的每一个文档的文档标识符散列到Bloom滤波器。如在408所描绘的,第一节点随后向负责初始查询中的第二关键字的第二节点发送初始查询以及计算出的Bloom滤波器及其系数。在一些实现方案中,第一节点可用以确定负责第二关键字的节点。在其它实现方案中,负责第二(以及任意随后的)关键字的节点可通过查询节点来确定。
如在410所描绘的,如果查询是AND查询,那么第一节点就从第二节点接收搜索结果。第一节点(例如)通过检查第二节点返回的一组文档来验证搜索结果,以防误判。也就是说,第一节点检查第二节点返回的一组文档,判断这组文档是否包括任何不包括第一关键字的文档。任何此类误判都会被第一节点排除。如在412所描绘的,第一节点将该搜索结果返还给查询节点。如果查询是OR查询,那么第一节点就在从第二节点接收到确认消息后,向查询节点发送与第一关键字相匹配的文档列表,如在414所描绘的。
如上文参照图4来描述的,从第一节点接收查询和Bloom滤波器的第二节点所执行的方法根据搜索是AND搜索还是OR搜索会有不同。图5A描绘了可由第二节点来实现的执行AND搜索的方法。如图4的步骤408所示,在第一节点计算出其Bloom滤波器之后,第一节点向负责查询中的第二关键字的第二节点发送起始查询和其计算出的Bloom滤波器。如在502A所描绘的,第二节点从第一节点接收查询和Bloom滤波器。随后,如在504A所描绘的,第二节点确定与第二关键字相匹配的一组文档。可按照上面参照第一关键字而描述的内容来执行对该组文档的确定。随后,如在506A所描绘的,第二节点检查所确定的与第二关键字相匹配的一组文档中的每个元素相对于第一节点计算出的Bloom滤波器的隶属关系。随后,如在508A所描绘的,第二节点通过计算交集D2∩BF(D1)来算出其搜索结果并将该搜索结果返还给第一节点,其中,D2表示第二组文档,BF(D1)表示第一组文档的Bloom滤波器。随后,如在图4的步骤412所描绘的,第一节点向查询节点发送文档列表。
图5B描绘了可由第二节点来实现的执行OR搜索的处理。步骤502B、504B和506B与502A,、504A和506A相同,其中,第二节点从第一节点接收查询和Bloom滤波器、确定与第二关键字相匹配的一组文档并随后检查所确定的与第二关键字相匹配的一组文档中的每个元素相对于第一节点计算出的Bloom滤波器的隶属关系。如在508B所描绘的,第二节点将在第一节点的Bloom滤波器中尚未出现的那些文档返还给查询节点。第二节点还向第一节点发送ACK响应。查询节点随后对如下文档取并集来完成搜索处理:所接收的、从第二节点获取的集D2-BF(D1)(其中,D2是第二组文档,BF(D1)是第一组文档的Bloom滤波器);从第一节点获取的第一组文档。
对AND搜索而言,通过适当地选取Bloom滤波器长度(Ls)和散列函数(rs)的数量,能够降低通信开销和误判率。Ls和rs可使用如下公式来计算:
本文所描述的方法可扩展至涉及多于两个关键字条目的AND查询。例如,当用户以“k1 and k2 and k3 and…kq”的形式发布查询时,执行如下步骤:
(1)将查询发往节点:n1=hash(k1)。
(2)节点n1查看其本地反向索引列表,查找包括关键字k1的一组文档D1。n1将组D1的大小作为输入,分别使用(3)和(4)计算Bloom滤波器的大小和r的值。
(3)节点n1将D1中的所有文档ID添加到Bloom滤波器并向节点n2=hash(k2)发送滤波器系数。
(4)在从n1接收到查询后,节点n2查看其本地反向索引,查找包括关键字k2的一组文档D2。n2检查D2中的每个元素相对于Bloom滤波器BF(D1)的隶属关系,并计算交集D2∩BF(D1)。
(5)n2将组的大小D2∩BF(D1)作为如下式子的输入来计算Bloom滤波器的大小:
使用新的Ls的值,按如下式子计算rs的值:
n2将滤波器系数发往节点n3=hash(k3).
(6)对查询中的所有q个关键字重复步骤(5)和(6)。在每一步骤,使用(9)计算新的Ls的值,且更新rs的值。
(7)随后,节点nq=hash(kq)将ID列表返还给前一节点nq-1=hash(kq-1)。
(8)节点nq-1对所接收的组和其所具有的组Dq-1取交集,并将所得到的文档列表返给nq-2=hash(kq-2).
(9)在最终响应抵达n1=hash(k1)之前,重复步骤(7)和(8)。
(10)节点n1对所接收的组和组D1取交集,并将所得到的文档列表返给源。
可使用有关|Dj|的大小(1≤j≤q)的现有知识来进一步降低通信开销。可首先将查询发往节点然后再将其路由到具有第二最小|Dj|值的节点j’,等等。以这样的方式,所传送的数据量就能够极大地下降。可采用缓冲技术来先验性地获得对|Dj|大小的估计,该估计可用来确定Bloom滤波器的大小。
在OR搜索中,滤波器的长度Ls和散列函数的数量rs可通过解决约束优化问题来得到,其中,其旨在在维持查全率(recall)高于期望值的同时最大化Bloom滤波器会带来的节约量(saving)。
本文所描述的用于执行OR搜索方法可扩展至涉及多于两个关键字条目的OR查询。例如,当用户以“k1 or k2 or k3 or…kq”的形式发布了查询时,执行下面的步骤:
(1)将查询发往节点:n1=hash(k1)。
(2)节点n1查看其本地反向索引列表,查找包括关键字k1的一组文档D1。n1将组D1的大小作为输入,分别使用(5)和(6)计算Bloom滤波器的大小和r的值。
(3)节点n1将D1中的所有文档ID添加到Bloom滤波器并向节点n2=hash(k2)发送滤波器系数。节点n1向查询节点发送D1。
(4)在从n1接收到Bloom滤波器和查询之后,节点n2查看其本地反向索引,查找包括关键字k2但却没有包括在n1发送的Bloom滤波器中的一组文档D2。n2将这些另外的文档ID发往查询节点并向n1发送对所接收的数据的确认。
(5)n2将这些另外的文档ID(D2-BF(D1))添加到BF(D1)。合并后的Bloom滤波器称作为BF(D1,D2);值得注意的是,这与BF(D1∪D2)可能会不同,因为在步骤(4),由于Bloom滤波器中可能存在的碰撞,会遗漏掉D2中的一些ID。n2向节点n3=hash(k3)发送滤波器系数BF(D1,D2)。
(6)对查询中的所有q个关键字重复步骤(4)和(5)。当查询在第i个节点ni=hash(ki)时,节点ni将BF(D1,D2,…,Di-1)之外的文档ID发往查询节点并向节点ni+1=hash(ki+1)发送更新后的Bloom滤波器BF(D1,D2,…,Di)。
(7)查询节点对从q个节点接收的所有文档ID取并集来完成搜索。
可使用有关|Dj|的大小(1≤j≤q)的现有知识来进一步降低通信开销。可首先将查询发往节点然后再将其路由到具有|Dj|的第二最小值的节点j’,等等。此外,Bloom滤波器仅在|D1|和/或|D2|很小时有助于提供大的节约量(参见附图B中的示图)。在|D1|和/或|D2|的值较大时,建议发送实际组(而不是Bloom滤波器)。具体来说,在下面情况下建议使用Bloom滤波器:
在其它情况下,建议采用直接发送方式。在两种不同的方式之间进行的选择可由节点n1在步骤(2)使用其|D1|的值和|D2|的缓存值来作出。
在AND和OR类型搜索中,可使用Bloom滤波器生成增量结果。发布查询的用户在其搜索服务时极少会需要所有结果。通过使用流式传送且仅返回期望数量的结果,需发送的信息量就能够降低。从附录A和附录B可以得出,查询的通信开销与组|D1|和/或|D2|的大小成正比,包括条目的文档数量越多,通信开销就会越大。
由于允许增量搜索,Bloom滤波器有助于降低通信开销。当用户使用查询“k1 and k2”搜索固定数量的结果时,相应的节点n1和n2以递增的方式进行通信,直至达到该数量为止。节点n1以组块(chunk)的形式发送其Bloom滤波器,节点n2仅返回针对相应的Bloom滤波器组块的一组结果。由于单个Bloom滤波器无法在保有意义的情况下被划分,文档组D1需要划分成多个组,然后根据组块大小来设计Bloom滤波器长度。重复该处理,直至节点n1标识了固定数量的查询结果为止。也可在OR搜索中执行类似的增量方式。
对是AND和OR搜索的组合的其它类型的查询来说,(例如,Q=(Q1∪Q2)∩(Q3∪Q4)等),可执行多步骤过程。在第一步骤,简化查询,使用卡诺图(Karnaugh maps)或Quine-McCluskey算法将查询表达为乘积和(sum-of-products)。在上面的例子中,查询Q表达为Q=(Q1∩Q3)∪(Q1∩Q4)∪(Q2∩Q3)∪(Q2∩Q4)。
在第二步骤,查询节点nQ解析该查询并将查询分成一系列的AND查询。在该例子中,查询节点将查询Q分成四个查询,也就是:
1.(Q1∩Q3);
2.(Q1∩Q4);
3.(Q2∩Q3);
4.(Q2∩Q4)。
可将这四个查询作为单独的AND搜索分别执行,收集这些单独的结果。在最后一步,查询节点将这些单独的结果联合起来,以得到搜索查询的最终答案。
转向图6,示出了用于在网络中发布和发现服务的系统600。如图所描绘的,系统600包括多个功能框,这些功能框表示由处理器、软件或其组合(例如,固件)来执行的功能。系统600包括逻辑分组602,后者具有协同工作的多个电子部件。例如,系统600可由在分发式网络中用作节点的计算设备来实现。
逻辑分组602包括单元604,后者用于接收包括第一关键字、第二关键字的查询。此外,逻辑分组602包括单元606,后者用于发现包括第一关键字的第一组第一数量的文档。逻辑分组602还包括:单元608,用于根据第一组中第一数量的文档计算最佳第一Bloom滤波器长度及相应的第一数量的散列函数;单元610,用于向分布式网络中的通过散列第二关键字来标识的第二节点发送第一组的第一Bloom滤波器,其中,第一Bloom滤波器包括第一Bloom滤波器长度和第一数量的散列函数。另外,系统600包括存储器618,后者用于保存用来执行与电子部件604-610相关联的功能的指令。尽管将电子部件604-610示出为在存储器618的外部,然而,应当理解,电子部件604-610可以在存储器618之内。
在本申请中所用的术语“部件”、“单元”、“系统”等意旨在包括与计算机相关的实体,诸如但不限于:硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,部件可以是、但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,在计算设备上运行的程序和该计算设备都可以是部件。一个或多个部件可以位于执行中的进程和/或线程内,以及,一个部件可以位于一台计算机上和/或分布于两台或更多台计算机之间。另外,可以通过存储了多种数据结构的多种计算机可读介质执行这些部件。这些部件可以通过本地和/或远程进程(例如,根据具有一个或多个数据分组的信号)进行通信(如,来自一个部件的数据在本地系统中、分布式系统中和/或通过诸如互联网等的网络与其它系统的部件通过信号进行交互)。
此外,本文结合终端(可以是有线终端,也可以是无线终端)描述了各种方面。终端还可称为系统、设备、用户单元、用户站、移动站、移动装置、移动设备、远程站、远程终端、接入终端、用户终端、终端、通信设备、用户代理、用户设备或用户装置(UE)。无线终端可以是蜂窝电话、卫星电话、无绳电话、会话发起协议(SIP)电话、无线本地环路(WLL)站、个人数字助理(PDA)、具有无线连接能力的手持设备、计算设备或连接至无线调制解调器的其它处理设备。此外,本文结合基站描述了各种方面。基站可用于同无线终端进行通信,其还指的是接入点、节点B或一些其它术语。
此外,术语“或者”意味着包括性的“或者”而不是排他性的“或者”。也就是说,除非另外指定,或者从上下文能清楚得知,否则“X使用A或者B”指的是任何自然的包括性置换。也就是说,短语“X使用A或者B”满足如下所述的任意例子:X使用A、X使用B或X使用A和B二者。另外,除非另外指定或从上下文能清楚得知是单一形式,否则本申请和所附权利要求书中使用的“一”和“一个”物件通常表示“一个或多个”。
本发明所描述的技术可以用于各种无线通信系统,诸如CDMA、TDMA、FDMA、OFDMA、SC-FDMA和其它系统。术语“系统”和“网络”经常交互使用。CDMA系统可以实现诸如通用陆地无线接入(UTRA)、cdma2000等的无线技术。UTRA包括宽带CDMA(W-CDMA)和CDMA的其它变形。此外,cdma2000涵盖了IS-2000、IS-95和IS-856标准。TDMA系统可以实现诸如全球移动通信系统(GSM)等的无线技术。OFDMA系统可以实现诸如演进的UTRA(E-UTRA)、超移动宽带(UMB)、IEEE 802.11(Wi-Fi)、IEEE 802.16(WiMAX)、IEEE 802.20、Flash-OFDM等的无线技术。UTRA和E-UTRA是通用移动电信系统(UMTS)的一部分。3GPP长期演进(LTE)是使用E-UTRA的UMTS的一个发布版本,其在下行链路上采用OFDMA,在上行链路上采用SC-FDMA。在来自名为“第三代合作伙伴计划(3GPP)”的组织的文档中描述了UTRA、E-UTRA、UMTS、LTE和GSM。另外,在来自名为“第三代合作伙伴计划2(3GPP2)”的组织的文档中描述了cdma 2000和UMB。此外,这些无线通信系统还可以包括对等(peer-to-peer)(例如,移动设备至移动设备)ad hoc网络系统,该网络系统常使用非成对无牌照频谱、802.xx无线LAN、蓝牙和任何其它短距离或长距离无线通信技术。
各个方面和特征都是围绕着包括多个设备、部件、单元等的系统而展开的。应当理解并认识到,各种系统可以包括额外的设备、部件、模块等和/或可以不包括结合附图来描述的所有设备、部件、单元等。也可以使用这些方法的组合。
用于执行本发明所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件部件或者其任意组合,可以实现或执行结合本发明公开的方面而描述的各种示例性的逻辑、逻辑框、模块和电路。通用处理器可以是微处理器,或者,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器也可能实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它此种结构。另外,至少一个处理器可以包括可用以执行上文所描述的一项或多项步骤和/或动作的一个或多个单元。
此外,结合本文所公开的方面来描述的方法或者算法的步骤和/或动作可直接体现为硬件、由处理器执行的软件单元或其组合。软件单元可以位于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。此外,在一些方面,处理器和存储介质可以位于ASIC中。该ASIC可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。另外,在一些方面,方法或算法的步骤和/或动作可作为代码和/或指令、代码和/或指令的任意组合或一组代码和/或指令存在于机器可读介质和/或计算机可读介质中,其中,机器可读介质和/或计算机可读介质可并入计算机程序产品中。
在一个或多个方面,本发明所述功能可以用硬件、软件、固件或它们组合的方式来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。通过示例而非限制的方式,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储介质或其它磁存储设备、或者能够用于携带或存储期望的指令或数据结构形式的程序代码并能够由计算机进行存取的任何其它介质。此外,任何连接可以适当地称作为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或者诸如红外线、无线和微波之类的无线技术从网站、服务器或其它远程源传输的,那么同轴电缆、光纤电缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在介质的定义中。如本发明所使用的,盘和碟包括紧致盘(CD)、激光影碟、光碟、数字通用光碟(DVD)、软盘和蓝光碟,其中盘(disk)通常磁性地复制数据,而碟(disc)则用激光来光学地复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。
前面的公开内容描述了示例性方面和/或方面,不过,值得注意的是,在不脱离由所附权利要求书限定的所描述的方面和/或方面的情况下,可以对本发明进行各种改变和修改。此外,尽管以单数形式描述或声明了本文所描述的方面和/或方面的要素,然而,除非明确指明限于单数,那么复数是可预见的。另外,除非另外指明,那么任意方面和/或方面的全部或一部分可与任意其它方面和/或方面的全部或一部分一起使用。
附录A
推导针对AND搜索的Bloom滤波器参数
在该附录中,给出了对获得针对AND搜索的Bloom滤波器参数的推导。不失一般性的,给出了“k1 and k2”形式的两关键字查询。拥有这些关键字的节点表示为n1和n2,其中,n1=hash(k1)、n2=hash(k2)。此外,在该附录中,D1和D2分别表示包括关键字k1和k2的一组文档。
在Bloom滤波器存在的情况下,总通信开销可以表示为:
Cb=L+Pc|D2|b+2|D1∩D2|b (A1)
其中,Pc是Bloom滤波器中发生碰撞的概率。将(1)中的Pc代入该方程:
Cb=L+(1-e-|D1|r/L)r|D2|b+2|D1∩D2|b (A2)
从该方程可以看出,通信开销的总量是L和r的函数,可通过适当地选取这些参数将通信开销的总量最小化。
使得 且 则:
通常来说,节点n1仅具有与组D1有关的信息,而没有与组D2有关的信息。由此,n1就无法使用上述两个方程(因为这些表达式还涉及D2)来计算L和r的最佳值。建议在|D2|=|D1|的假定条件下计算这些值。L和r的次佳值可以表示为:
下图示出了在不同的|D1|值下,作为D2的大小的函数的通信开销。图中的结果在50%重叠(overlap)之下,其中,50%重叠定义为一点,在该点上交集的大小|D1∩D2|=(50/100)x min{|D1|,|D2|}。从该图中可以得出两个主要结论。第一,该图示出了通信消耗随着|D1|和|D2|的增加而增加。这样的结果是可预料的,因为|D1∩D2|的大小会随着|D1|和|D2|的增加而增加,由此就会有更多的文档ID返给用户。第二,图中的结果暗示了——在使用的是次最佳值Ls而不是时,就通信开销来说差别不大;这意味着节点n1可使用|D1|的值作为对滤波器大小计算的合理估计。
附录B
推导针对OR搜索的Bloom滤波器参数
在该附录中,给出了对获得针对OR搜索的Bloom滤波器参数的推导。不失一般性的,给出了“k1 or k2”形式的两关键字查询。拥有这些关键字的节点表示为n1和n2,其中,n1=hash(k1)、n2=hash(k2)。此外,D1和D2分别表示包括关键字k1和k2的一组文档。
为便于研究搜索算法的性能并理解权衡点,从数学上来确定节约量和查全率(recall-rate)。使用Bloom滤波器,总通信开销可表示为:
Cb=L+|D1|b+(1-Pc)*(|D2|-|D1∩D2|)b (B1)
其中,Pc是(1)中的Bloom滤波器中发生碰撞的概率。由此,总节约量Sb为:
Sb=|D2|b-L-(1-(1-e-|D1|r/L)r)*(|D2|-|D1∩D2|)b (B2)
使用Bloom滤波器时付出的开销是用查全率Rb表示的,其可表示为:
滤波器长度L、散列函数的数量r的最佳值可通过解决约束优化问题来得到,其中,所述约束优化问题旨在:在Rb≥Rdes的约束条件下最大化Sb,其中,Rdes表示所设计的查全率。定义消耗函数:Tb=Sb+λ(Rb-Rdes);通过设置 和 来计算L和r的最佳值。
由于在节点n1事先并不知道|D2|的值,在|D2|=|D1|以及D1∩D2=φ的假定下,通过求解(13)和(14)来获得次佳解。这使得:
下图示出了为|D1|和|D2|的函数的通信开销。图中的结果在50%重叠之下(Rdes=1-(1/2)9),其中,50%重叠的定义如前。该图示出了:当|D1|和|D2|很小时,节约量较大,而当任一组的大小很大时,节约量甚至降到0以下。
Claims (27)
1.一种用于在覆盖网络中进行搜索的方法,包括:
在分布式网络的第一节点处接收查询,其中,所述查询包括第一关键字和第二关键字;
查找包括所述第一关键字的第一组第一数量的文档;
根据所述第一组中的第一数量的文档,计算最佳第一Bloom滤波器长度以及相应的第一数量的散列函数;
向所述分布式网络中通过对所述第二关键字执行散列来标识的第二节点发送所述第一组的第一Bloom滤波器,其中,所述第一Bloom滤波器包括所述第一Bloom滤波器长度和所述第一数量的散列函数。
2.根据权利要求1所述的方法,其中,所述查询包括AND查询。
3.根据权利要求1所述的方法,其中,所述查询包括OR查询。
4.根据权利要求1所述的方法,其中,所述查询包括AND查询和OR查询的组合。
5.根据权利要求2所述的方法,其中,计算所述第一组D1的第一Bloom滤波器长度LS还包括按如下方程来计算:
其中,计算所述第一组D1的第一数量的散列函数rs还包括按如下方程来计算:
6.根据权利要求3所述的方法,其中,计算所述第一组D1的第一Bloom滤波器长度LS还包括按如下方程来计算:
其中,计算所述第一组D1的第一数量的散列函数rs还包括按如下方程来计算:
7.根据权利要求1所述的方法,还包括:
使用关于相应的组的大小|Dj|的现有知识来进一步降低通信开销。
10.根据权利要求7所述的方法,还包括:
使用缓存技术来确定所述组的实际或近似大小|Dj|,以确定向何处转发查询。
11.根据权利要求1所述的方法,还包括:
确定使用或不使用所述第一Bloom滤波器来处理查询的条件,其中,所述条件包括先验性地已知每一组的大小|Dj|的情况。
12.根据权利要求11所述的方法,还包括仅在如下情况下执行对所述第一Bloom滤波器的计算并使用所述第一Bloom滤波器进行OR查询:
13.用于在网络中发布或发现服务的至少一个处理器,包括:
第一单元,用于在分布式网络的第一节点处接收查询,其中,所述查询包括第一关键字和第二关键字;
第二单元,用于查找包括所述第一关键字的第一组第一数量的文档;
第三单元,用于根据所述第一组中的第一数量的文档,计算最佳第一Bloom滤波器长度以及相应的第一数量的散列函数;
第四单元,用于向所述分布式网络中通过对所述第二关键字执行散列来标识的第二节点发送所述第一组的第一Bloom滤波器,其中,所述第一Bloom滤波器包括所述第一Bloom滤波器长度和所述第一数量的散列函数。
14.一种计算机程序制品,包括:
计算机可读介质,包括:
第一代码集,其使得计算机在分布式网络的第一节点处接收查询,其中,所述查询包括第一关键字和第二关键字;
第二代码集,其使得所述计算机查找包括所述第一关键字的第一组第一数量的文档;
第三代码集,其使得所述计算机根据所述第一组中的第一数量的文档,计算最佳第一Bloom滤波器长度以及相应的第一数量的散列函数;
第四代码集,其使得所述计算机向所述分布式网络中通过对所述第二关键字执行散列来标识的第二节点发送所述第一组的第一Bloom滤波器,其中,所述第一Bloom滤波器包括所述第一Bloom滤波器长度和所述第一数量的散列函数。
15.一种装置,包括:
用于在分布式网络的第一节点处接收查询的模块,其中,所述查询包括第一关键字和第二关键字;
用于查找包括所述第一关键字的第一组第一数量的文档的模块;
用于根据所述第一组中的第一数量的文档,计算最佳第一Bloom滤波器长度以及相应的第一数量的散列函数的模块;
用于向所述分布式网络中通过对所述第二关键字执行散列来标识的第二节点发送所述第一组的第一Bloom滤波器的模块,其中,所述第一Bloom滤波器包括所述第一Bloom滤波器长度和所述第一数量的散列函数。
16.一种用于在分布式网络中执行多关键字搜索的装置,包括:
接收机,用于接收包括第一关键字和第二关键字的查询;
关键字组确定部件,用于查找包括所述第一关键字的第一组第一数量的文档;
Bloom滤波器计算部件,用于:
根据所述第一组中的第一数量的文档,计算最佳第一Bloom滤波器长度以及相应的第一数量的散列函数;
向所述分布式网络中通过对所述第二关键字执行散列来标识的第二节点发送所述第一组的第一Bloom滤波器,其中,所述第一Bloom滤波器包括所述第一Bloom滤波器长度和所述第一数量的散列函数。
17.根据权利要求16所述的装置,其中,所述查询是AND查询。
18.根据权利要求16所述的装置,其中,所述查询是OR查询。
19.根据权利要求16所述的装置,其中,所述查询包括AND查询和OR查询的组合。
20.根据权利要求17所述的装置,其中,计算所述第一组D1的第一Bloom滤波器长度LS还包括按如下方程来计算:
其中,计算所述第一组D1的第一数量的散列函数rs还包括按如下方程来计算:
21.根据权利要求18所述的装置,其中,计算所述第一组D1的第一Bloom滤波器长度LS还包括按如下方程来计算:
其中,计算所述第一组D1的第一数量的散列函数rs还包括按如下方程来计算:
22.根据权利要求16所述的装置,其中,所述Bloom滤波器计算部件还用于:
使用关于相应的组的大小|Dj|的现有知识来进一步降低通信开销。
23.根据权利要求22所述的装置,其中,所述Bloom滤波器计算部件还用于:
向节点发送所述查询,然后向具有第二最小|Dj|值的下一个节点发送所述查询,以最佳地执行AND查询。
25.根据权利要求22所述的装置,其中,所述Bloom滤波器计算部件还用于:
使用缓存技术来确定所述组的实际或近似大小|Dj|,以确定向何处转发查询。
26.根据权利要求16所述的装置,其中,所述Bloom滤波器计算部件还用于:
确定使用或不使用所述第一Bloom滤波器来处理查询的条件,其中,所述条件包括先验性地已知每一组的大小|Dj|的情况。
27.根据权利要求26所述的装置,其中,所述Bloom滤波器计算部件还用于:
仅在如下情况下执行对所述第一Bloom滤波器的计算并使用所述第一Bloom滤波器进行OR查询:
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 |
---|---|
CN102473084A true CN102473084A (zh) | 2012-05-23 |
CN102473084B CN102473084B (zh) | 2016-03-09 |
Family
ID=43450180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080031566.0A Expired - Fee Related CN102473084B (zh) | 2009-07-14 | 2010-07-14 | 用于在分布式网络中高效处理多关键字查询的方法和装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8996568B2 (zh) |
EP (1) | EP2454656A4 (zh) |
JP (1) | JP5497172B2 (zh) |
KR (2) | KR20160072843A (zh) |
CN (1) | CN102473084B (zh) |
TW (1) | TW201112025A (zh) |
WO (1) | WO2011008889A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440249A (zh) * | 2013-07-23 | 2013-12-11 | 南京烽火星空通信发展有限公司 | 一种非结构化数据快速检索的系统及方法 |
CN105389314A (zh) * | 2014-09-04 | 2016-03-09 | 中芯国际集成电路制造(上海)有限公司 | 一种日志文件查询系统及查询方法 |
CN108271234A (zh) * | 2017-11-28 | 2018-07-10 | 中国电子科技集团公司电子科学研究院 | 移动自组织网络的服务发现方法及服务器 |
CN111247518A (zh) * | 2017-10-25 | 2020-06-05 | 国际商业机器公司 | 数据库分片 |
Families Citing this family (26)
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 |
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 |
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 |
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 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101087305A (zh) * | 2007-07-09 | 2007-12-12 | 中国人民解放军国防科学技术大学 | 大规模非结构化p2p网络中的资源搜索方法 |
Family Cites Families (18)
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 |
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 |
-
2010
- 2010-07-13 US US12/835,710 patent/US8996568B2/en not_active Expired - Fee Related
- 2010-07-14 JP JP2012520757A patent/JP5497172B2/ja not_active Expired - Fee Related
- 2010-07-14 EP EP10736927.4A patent/EP2454656A4/en not_active Withdrawn
- 2010-07-14 KR KR1020167014220A patent/KR20160072843A/ko active IP Right Grant
- 2010-07-14 TW TW099123170A patent/TW201112025A/zh unknown
- 2010-07-14 CN CN201080031566.0A patent/CN102473084B/zh not_active Expired - Fee Related
- 2010-07-14 WO PCT/US2010/042021 patent/WO2011008889A2/en active Application Filing
- 2010-07-14 KR KR1020127003900A patent/KR20120045017A/ko active Search and Examination
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101087305A (zh) * | 2007-07-09 | 2007-12-12 | 中国人民解放军国防科学技术大学 | 大规模非结构化p2p网络中的资源搜索方法 |
Non-Patent Citations (3)
Title |
---|
HANHUA CHEN ET AL.: "Efficient Multi-keyword Search over P2P Web", 《WWW2008/ALTERNATE TRACK: WWW IN CHINA-CHINESE WEB INNOVATIONS》, 25 April 2008 (2008-04-25) * |
PATRICK REYNOLDS ET AL.: "Efficient peer-to-peer keyword searching", 《PROCEEDINGS OF THE ACM/IFIP/USENIX 2003 INTERNATIONAL CONFERENCE ON MIDDLEWARE》, 16 June 2003 (2003-06-16), pages 21 - 40, XP055213421, DOI: doi:10.1007/3-540-44892-6_2 * |
SAKRITI RAMESH ET AL.: "Optimizing Distributed Joins with Bloom Filters", 《PROCEEDINGS OF THE 5TH INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING AND INTERNET TECHNOLOGY, ICDCIT"08》, 12 December 2008 (2008-12-12) * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440249A (zh) * | 2013-07-23 | 2013-12-11 | 南京烽火星空通信发展有限公司 | 一种非结构化数据快速检索的系统及方法 |
CN105389314A (zh) * | 2014-09-04 | 2016-03-09 | 中芯国际集成电路制造(上海)有限公司 | 一种日志文件查询系统及查询方法 |
CN111247518A (zh) * | 2017-10-25 | 2020-06-05 | 国际商业机器公司 | 数据库分片 |
CN111247518B (zh) * | 2017-10-25 | 2024-05-14 | 国际商业机器公司 | 用于数据库分片的方法和系统 |
CN108271234A (zh) * | 2017-11-28 | 2018-07-10 | 中国电子科技集团公司电子科学研究院 | 移动自组织网络的服务发现方法及服务器 |
CN108271234B (zh) * | 2017-11-28 | 2022-03-11 | 中国电子科技集团公司电子科学研究院 | 移动自组织网络的服务发现方法及服务器 |
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 |
JP5497172B2 (ja) | 2014-05-21 |
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 |
---|---|---|
CN102473084A (zh) | 用于在分布式网络中高效处理多关键字查询的方法和装置 | |
CN102246493B (zh) | 能够减少访问时间的获取内容的方法和装置 | |
EP1783954B1 (en) | System and method for discovering network resources | |
CN101341724B (zh) | 用于传送消息的系统和方法 | |
KR20110122834A (ko) | 네트워크-기반 주소록 시스템에서 다수의 연락처 정보 소스를 취합하는 시스템 및 방법 | |
CN102929984B (zh) | 失效网址搜索方法和装置 | |
CN101065748A (zh) | 对于由移动设备的用户启动的查询进行处理的方法和系统 | |
JP2009087345A (ja) | 自然言語ベースのサービス選択システムおよび方法、サービスクエリシステムおよび方法 | |
Kandris et al. | COALA: a protocol for the avoidance and alleviation of congestion in wireless sensor networks | |
WO2010015131A1 (zh) | 基于语义的Web服务关系网络系统 | |
CN102945259B (zh) | 一种基于收藏夹的搜索方法和搜索装置 | |
US20150006623A1 (en) | Method and System for Transmitting Network File | |
JP6865593B2 (ja) | 不均一ネットワークにまたがるコンテンツ配送 | |
EP2287797A1 (en) | Method and apparatus for providing/receiving mobile digital advertisement service | |
CN102612825A (zh) | 用于改进报头压缩的方法和装置 | |
US8706909B1 (en) | Systems and methods for semantic URL handling | |
US20050152283A1 (en) | Wireless device discovery | |
JP2010266952A (ja) | メンバ管理装置、メンバ管理システム、メンバ管理プログラム、および、メンバ管理方法 | |
CN102087653B (zh) | 一种发布网站信息的方法及装置 | |
CN103731399A (zh) | 基于cdn网络的数据访问方法、系统及装置 | |
Yang et al. | Cross-layer model design in wireless ad hoc networks for the Internet of Things | |
KR20020010429A (ko) | 무선 사이트의 컨텐츠 리퍼메팅 시스템 및 그 방법 | |
Zhang et al. | TB-RPL: A Try-the-Best Fused Mode of Operation to Enhance Point-to-Point Communication Performance in RPL | |
Lian et al. | A Cuckoo Filter-Based Name Resolution and Routing Method in Information-Centric Networking | |
Parsons et al. | Digital tools for democratic participation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160309 Termination date: 20180714 |
|
CF01 | Termination of patent right due to non-payment of annual fee |