20. An apparatus, comprising: a first computing device providing a first node, the first computing device including: means for receiving a query at a first node in a distributed network from a querying node, wherein the query includes a first keyword and a second keyword; means for finding a first set of a first number of documents that contain the first keyword; means for computing an optimal first Bloom filter length and a corresponding first number of hash functions as a function of the first number of documents in the first set; means for sending a first Bloom filter of the first set to a second node in the distributed network, wherein the second node is identified based on a hashed second keyword, wherein the second node is responsible for finding a set of documents that contain the second keyword, and wherein the first Bloom filter comprises an array having the first Bloom filter length and the first number of hash functions; and means for returning, by the first node, documents consisting of the first set of documents to the querying node; and a second computing device providing the second node, the second computing device including: means for finding, at the second node, a second set of a second number of documents that contain the second keyword; means for checking, at the second node, a membership of each of the documents in the second set over the first Bloom filter to determine a third set of documents that contain the second keyword and are not already present in the first Bloom filter; and means for returning documents consisting of the third set of documents to the querying node.
20. An apparatus, comprising: a first computing device providing a first node, the first computing device including: means for receiving a query at a first node in a distributed network from a querying node, wherein the query includes a first keyword and a second keyword; means for finding a first set of a first number of documents that contain the first keyword; means for computing an optimal first Bloom filter length and a corresponding first number of hash functions as a function of the first number of documents in the first set; means for sending a first Bloom filter of the first set to a second node in the distributed network, wherein the second node is identified based on a hashed second keyword, wherein the second node is responsible for finding a set of documents that contain the second keyword, and wherein the first Bloom filter comprises an array having the first Bloom filter length and the first number of hash functions; and means for returning, by the first node, documents consisting of the first set of documents to the querying node; and a second computing device providing the second node, the second computing device including: means for finding, at the second node, a second set of a second number of documents that contain the second keyword; means for checking, at the second node, a membership of each of the documents in the second set over the first Bloom filter to determine a third set of documents that contain the second keyword and are not already present in the first Bloom filter; and means for returning documents consisting of the third set of documents to the querying node. 22. The apparatus of claim 20 , wherein the query comprises an OR query, and wherein the means for computing are further configured to compute the first Bloom filter length, L s , for the first set, D1, according to the following equation: L s =  D ⁢ ⁢ 1  ( ln ⁢ ⁢ 2 ) 2 × ln ⁡ ( 1 2 · 1 1 - R des ) wherein R des is a desired recall rate of the Bloom filter.