IP Library Granted Patent US 7,026,964
Granted Patent B2
US 7,026,964 · App. 11/082,391 · Granted Apr 11, 2006

Generating and searching compressed data

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,026,964
App. No.
11/082,391
Granted
Apr 11, 2006
Kind
B2
Abstract

Data destined for a client is compressed at a server in a manner that produces a compressed data string that can be searched in its compressed state. The server constructs a code table that assigns codes from a standard code set (e.g., ASCII code set) that are normally unused to selected character pairs in the data string (e.g., the most frequently occurring character pairs). During compression, the selected character pairs are replaced with the corresponding codes. Identifiers are inserted into the compressed data string to separate substrings. To search the compressed data string at the client, a search query is compressed and compared to the compressed substrings. The substring identifiers are used to quickly locate each successive compressed substring. When a match is found, the matching substring is decompressed by replacing the code in the compressed substring with the corresponding character pair in the code table.

Claims (40)

1. A method comprising:

compressing an alphanumeric data string to form a compressed data swing;

inserting identifiers throughout the compressed data string to form distinct substrings;

fragmenting the data string into equal-size fragments prior to delivery of the data string to a remote client; and

searching the compressed data string using the identifiers to index from substring to substring.

2. A method as recited in claim 1 , wherein the compressing comprises substituting available character codes in a character code set that are not used to represent individual characters in the data string for selected character pairs in the data string.

3. A method as recited in claim 1 , further comprising:

identifying frequently occurring character pairs in the alphanumeric data string;

constructing a code table with first codes that represent individual characters in the data string and second codes that can be assigned to represent the frequently occurring character pairs in the data string; and

compressing the data string by substituting the second codes for the frequently occurring character pairs.

4. A method as recited in claim 3 , wherein the identifying comprises:

using a counts table with counts associated with every possible combination of two characters; and

for each character pair in the data string, incrementing a count associated with the character pair in the counts table.

5. A method as recited in claim 3 , wherein the constructing comprises:

marking in the code table individual characters found in the data string and associating the first codes with the individual characters; and

assigning any remaining codes as the second codes to represent the frequently occurring character pairs.

6. A computer-readable medium comprising computer-executable instructions that, when executed, direct a computing device to perform the method as recited in claim 1 .

7. A method for preparing program data for delivery to a client that executes an electronic program guide, comprising:

initially allocating different-size portions of memory representative of a client memory for different time units represented in the electronic program guide;

evaluating whether program data for the different time units fits in the respective different-size portions of the memory; and

adjusting quantities of the program data for the different time units to identify an entire set of program data for storage at the client, wherein different quantities of the program data are stored for the different time units.

8. A method as recited in claim 7 , further comprising fragmenting the program data into equal-size fragments prior to delivery to the client.

9. A method as recited in claim 7 , wherein the time units comprise 24-hour days.

10. A method as recited in claim 7 , wherein the allocating comprises allocating more of the memory for time units that are closer in time and less of the memory for time units that are further out in time.

11. A computer-readable medium comprising computer-executable instructions that, when executed, direct a computing device to perform the method as recited in claim 7 .

12. A method comprising:

forming a data string of program data for an electronic program guide;

compressing the data string by identifying frequently occurring character pairs in the data string and substituting character codes from a character code set, which are not used to represent individual characters, in place of the frequently occurring character pairs; and

fragmenting the data string into equal-size fragments prior to delivery of the data string to a remote client.

13. A method as recited in claim 12 , further comprising:

storing the program data in multiple tables, each table comprising one or more records with one or more fields; and

sorting the records in the tables according to a selected field type prior to delivery of the program data to the remote client, wherein the records form the data string.

14. A method as recited in claim 13 , wherein the tables comprises a particular structure and the sorting rearranges the records without changing the particular structure.

15. A method as recited in claim 13 , wherein the selected field type is selected from a group of fields including actor names, program genre, title, and ratings.

16. A method as recited in claim 13 , wherein the records comprise program records containing programming information, individual program records having a title field to identify a program name, and the sorting comprises arranging the program records in the tables according to a stopped name version of the program name in the title field.

17. A method as recited in claim 12 , further comprising:

compressing the data string to form a compressed data string;

inserting identifiers throughout the compressed data string to form distinct substrings; and

searching the compressed data string using the identifiers to index from substring to substring.

18. A computer-readable medium comprising computer-executable instructions that, when executed, direct a computing device to perform the method as recited in claim 12 .

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Jun 5, 2020
From: HPS INVESTMENT PARTNERS, LLC
To: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
Reel/Frame 053458/0749 →
RELEASE OF SECURITY INTEREST Recorded Jun 5, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
Reel/Frame 053481/0790 →
SECURITY INTEREST Recorded Jun 1, 2020
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS INC.; VEVEO, INC.; INVENSAS CORPORATION; INVENSAS BONDING TECHNOLOGIES, INC.; TESSERA, INC.; TESSERA ADVANCED TECHNOLOGIES, INC.; DTS, INC.; PHORUS, INC.; IBIQUITY DIGITAL CORPORATION
To: BANK OF AMERICA, N.A.
Reel/Frame 053468/0001 →
PATENT SECURITY AGREEMENT Recorded Nov 25, 2019
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 051110/0006 →
SECURITY INTEREST Recorded Nov 22, 2019
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
To: HPS INVESTMENT PARTNERS, LLC, AS COLLATERAL AGENT
Reel/Frame 051143/0468 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2014
From: MICROSOFT CORPORATION
To: ROVI TECHNOLOGIES CORPORATION
Reel/Frame 034539/0676 →