IP Library Granted Patent US 7,548,908
Granted Patent B2
US 7,548,908 · App. 11/475,427 · Granted Jun 16, 2009

Dynamic bloom filter for caching query results

Assignee: Yahoo! Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,548,908
App. No.
11/475,427
Granted
Jun 16, 2009
Kind
B2
Abstract

Methods, systems, and machine-readable media are disclosed for searching a corpus of information by utilizing a Bloom filter for caching query results. According to one aspect of the present invention, a method of caching information from a corpus of information can include populating one or more Bloom filters with a plurality of bits representative of information in the corpus of information. A search request can be received identifying requested information from the corpus of information. One or more bits in the filter(s) associated with the requested information can be checked and the requested information can be retrieved from the corpus of information based on results of said checking. Furthermore, the filter(s) can be used to determine which information to make available to a particular user in a system where certain information is associated with or access is limited to certain users or groups of users.

Claims (47)

1. A computer-implemented method for caching a corpus of information, the method comprising:

populating a dynamic Bloom filter with a plurality of virtual bits, the plurality of virtual bits representative of information comprising the corpus, a given virtual bit operative to support two or more values;

receiving a search request that identifies requested information from the corpus;

checking one or more bits in the Bloom filter associated with the requested information to determine whether the requested information is present in the corpus;

retrieving the requested information from the corpus on the basis of the result of the check;

determining whether the requested information is represented in the Bloom filter;

determining whether to represent the requested information in the Bloom filter where the requested information is not represented in the Bloom filter;

adding the requested information to the Bloom filter in response to the determining step without blocking the Bloom filter;

determining whether to continue to represent the requested information in the Bloom filter where the requested information is represented in the Bloom filter;

removing old data associated with the requested information from the Bloom filter without blocking the Bloom filter and adding new data associated with the requested information to the Bloom filter without blocking the Bloom filter in response to a determination to continue to represent the requested information in the Bloom filter;

removing the old data associated with the requested information from the Bloom filter without blocking the Bloom filter in response to a determination to not continue to represent the requested information in the Bloom filter;

wherein removing old data associated with the requested information from the Bloom filter comprises identifying one or more virtual bits associated with the requested information from the dynamic Bloom filter, determining whether a value of a given identified virtual bit is less than or equal to a minimum value, decrementing the value of the given identified virtual bit where the value of the given identified virtual bit is less than or equal to the minimum value, recording an indication that the given identified virtual bit is less than or equal to the minimum value in an underflow cache where the given identified virtual bit is less than or equal to the minimum value, determining whether the underflow cache indicates an underflow condition, and cleaning the Bloom filter in response to the determination of the existence of an underflow condition.

2. A computer-implemented method for caching a corpus of information, the method comprising:

populating a dynamic Bloom filter with a plurality of virtual bits, the plurality of virtual bits representative of information comprising the corpus, a given virtual bit operative to support two or more values;

receiving a search request that identifies requested information from the corpus;

checking one or more bits in the Bloom filter associated with the requested information to determine whether the requested information is present in the corpus; and

retrieving the requested information from the corpus on the basis of the result of the check; and

storing one or more of the plurality of virtual bits into an underflow cache to remove old data from the Bloom filter.

3. The method of claim 2 comprising:

determining whether the requested information is represented in the Bloom filter;

determining whether to represent the requested information in the Bloom filter where the requested information is not represented in the Bloom filter; and

adding the requested information to the Bloom filter in response to the determining step without blocking the Bloom filter.

4. The method of claim 3 comprising:

determining whether to continue to represent the requested information in the Bloom filter where the requested information is represented in the Bloom filter; and

removing old data associated with the requested information from the Bloom filter without blocking the Bloom filter and adding new data associated with the requested information to the Bloom filter without blocking the Bloom filter in response to a determination to continue to represent the requested information in the Bloom filter.

5. The method of claim 4 comprising removing the old data associated with the requested information from the Bloom filter without blocking the Bloom filter in response to a determination to not continue to represent the requested information in the Bloom filter.

6. The method of claim 5 wherein removing old data associated with the requested information from the Bloom filter comprises:

identifying one or more virtual bits associated with the requested information from the dynamic Bloom filter;

determining whether a value of a given identified virtual bit is less than or equal to a minimum value; and

decrementing the value of the given identified virtual bit where the value of the given identified virtual bit is less than or equal to the minimum value.

7. The method of claim 6 comprising repeating the determining and decrementing steps for each of the one or more identified virtual bits.

8. The method of claim 6 comprising recording an indication that the given identified virtual bit is less than or equal to the minimum value in the underflow cache where the given identified virtual bit is less than or equal to the minimum value.

9. The method of claim 1 wherein adding new data associated with the requested information from the Bloom filter comprises:

identifying one or more virtual bits associated with the requested information from the dynamic Bloom filter;

determining whether a value of a given identified virtual bit is greater than or equal to a maximum value; and

incrementing the value of the given identified virtual bit where the value of the given identified virtual bit is greater than or equal to the maximum value.

10. The method of claim 9 comprising repeating the determining and incrementing steps for each of the one or more identified virtual bits.

11. The method of claim 1 wherein populating a Bloom filter with a plurality of bits comprises populating with a plurality of bits representative of information in a personalization database.

12. The method of claim 1 wherein populating a Bloom filter with a plurality of bits comprises populating with a plurality of bits representative of information in a personalization database relating to a trust network.

13. The method of claim 1 wherein populating a Bloom filter with a plurality of bits comprises populating with a plurality of bits representative of information in an index of content items available on a computer network.

14. The method of claim 1 wherein populating a Bloom filter with a plurality of bits comprises populating with a plurality of bits representative of information in an index of content items available on an intranet.

15. The method of claim 1 wherein populating a Bloom filter with a plurality of bits comprises populating with a plurality of bits representative of information in an index of content items available on the Internet.

16. The method of claim 1 wherein populating a Bloom filter with a plurality of bits comprises populating a bit map with the plurality of bits.

17. The method of claim 16 wherein populating the bit map comprises defining one or more hash functions to map information comprising the corpus to one or more positions in the bit map.

18. The method of claim 1 comprising initializing the plurality of bits to zero in the Bloom filter.

19. The method of claim 1 comprising retrieving one or more items of additional information related to the requested information from the corpus on the basis of the result of the check.

20. The method of claim 1 wherein populating comprises populating a non-blocking Bloom filter.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 29, 2021
From: R2 SOLUTIONS LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 056832/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2021
From: EXCALIBUR IP, LLC
To: R2 SOLUTIONS LLC
Reel/Frame 055283/0483 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 053654 FRAME 0254. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST GRANTED PURSUANT TO THE PATENT SECURITY AGREEMENT PREVIOUSLY RECORDED. Recorded Dec 30, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: R2 SOLUTIONS LLC
Reel/Frame 054981/0377 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038950/0592 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2016
From: EXCALIBUR IP, LLC
To: YAHOO! INC.
Reel/Frame 038951/0295 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038383/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2006
From: FU, YUN; XU, ZHICHEN; MAO, JIANCHANG
To: YAHOO! INC.
Reel/Frame 018021/0275 →
Continuity (2)
Provisional Application 6069373500 · Jun 24, 2005
Related Publication 20060294311A1 · Dec 28, 2006