# US 10,372,736 B2 · Generating and implementing local search engines over large databases

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,736 B2
- Document ID: US10372736B2
- Status: Granted
- Kind: B2
- Application number: 14/891,318
- Filed: 2014-05-16
- Published: 2016-04-14
- Granted: 2019-08-06
- Earliest claimed: 2013-05-16
- Assignees: University of Utah Research Foundation
- Applicants: University of Utah Research Foundation
- Inventors: Feifei Li; Cody Hansen
- Web page: https://patentgrep.com/patent/US10372736B2

## CPC

- G06F 16/319: {Inverted lists}
- G06F 16/313: {Selection or weighting of terms for indexing}
- G06F 16/3331: Query processing
- G06F 16/334: Query execution (filtering based on additional data G06F16/335)
- G06F 40/205: Parsing
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A computing system receives as inputs data records stored in a database. The computing parses the data records into file pairs that each include a keyword file and record ID file and merge file pairs into a keyword file and record ID file, where the keyword file includes keywords in sorted order, and where the record ID file includes a list of record IDs for keywords in the keyword file. The computing system further creates an offset file which stores offset values for starting addresses of record ID lists in the record ID file, and generates an index of keywords by assigning unique identifiers to keywords in the keyword file. The computing system also provides a query interface that allows the database's data records to be searched using the generated index of keywords.

## Claims

### Claim 1

A computer system comprising:
one or more processors;
a system memory storing instructions executable by the one or more processors to implement:
a parsing module that receives as inputs one or more data records stored in a database, and parses the one or more data records into one or more file pairs, wherein
each file pair includes a keyword file comprising keywords of the one or more data records, and a record ID file comprising record IDs corresponding to the keywords in the keyword file,
each file pair implicitly forms a set of inverted lists from the keywords in the keyword file to add the record IDs to the record ID file,
the parsing module maintains a hashmap while scanning through the one or more data records, the hashmap including one or more entries that include a keyword and a vector of the record IDs, and the hashmap comprises T iterations that are each created when a size of a current hashmap iteration exceeds available memory;
a merging module that
merges T file pairs into a merged keyword file and a merged record ID file, the merged keyword file including sorted keywords, the merged record ID file including a list of record IDs for the sorted keywords in the merged keyword file, and
creates an offset file which stores offset values for starting addresses of the list of record IDs in the merged record ID file;
a generating module that generates an index of the sorted keywords by assigning unique identifiers to the sorted keywords in the merged keyword file, the index allowing searches to return result keyword IDs that correspond to result keywords that are sufficiently similar to a search term; and
a searching module that provides a query interface that allows the one or more data records to be searched using the generated index.

### Claim 2 (depends on 1)

The computer system of claim of claim 1, wherein the parsing module parses the one or more data records into one keyword-based inverted list per distinct keyword.

### Claim 3 (depends on 1)

The computer system of claim 1, wherein the parsing module views each of the one or more data records as a single string, regardless of types of the single string's attributes.

### Claim 4 (depends on 1)

The computer system of claim 1, wherein the computer system supports one or more of the following: search-as-you-type, approximate search using multiple keywords, and live and dynamic recommendations and rankings based on query keywords.

### Claim 5 (depends on 1)

The computer system of claim 1, wherein the query interface comprises a web-based interface or a desktop interface.

### Claim 6 (depends on 1)

The computer system of claim 1, wherein the query interface comprises a mobile interface for a mobile device.

### Claim 7

A computer program product for implementing a method for providing local search engines over large databases, the computer program product comprising one or more non-transitory computer-readable storage media having stored thereon computer-executable instructions that, when executed by one or more processors of a computing system, cause the computing system to perform the method, the method comprising:
receiving as inputs one or more data records stored in a database;
parsing the one or more data records into one or more file pairs, wherein
each file pair includes a keyword file comprising keywords of the one or more data records, and a record ID file comprising record IDs corresponding to the keywords in the keyword file, and
each file pair implicitly forms a set of inverted lists from the keywords in the keyword file to add the record IDs to the record ID file;
maintaining a hashmap while scanning through the one or more data records, the hashmap including one or more entries that include a keyword and a vector of the record IDs, wherein the hashmap comprises T iterations that are each created when a size of a current hashmap iteration exceeds available memory;
merging T file pairs into a merged keyword file and a merged record ID file, the merged keyword file including sorted keywords, the merged record ID file including a list of record IDs for the sorted keywords in the merged keyword file;
creating an offset file which stores offset values for starting addresses of the list of record IDs in the merged record ID file;
generating an index of the sorted keywords by assigning unique identifiers to the sorted keywords in the merged keyword file, the index allowing searches to return result keyword IDs that correspond to result keywords that are sufficiently similar to a search term; and
providing a query interface that allows the one or more data records to be searched using the generated index.

### Claim 8 (depends on 7)

The computer program product of claim of claim 7, wherein the one or more data records are parsed into one keyword-based inverted list per distinct keyword.

### Claim 9 (depends on 7)

The computer program product of claim 7, wherein each of the one or more data records is viewed as a single string, regardless of types of the single string's attributes.

### Claim 10 (depends on 7)

The computer program product of claim 7, wherein one or more of the following functions is provided: search-as-you-type, approximate search using multiple keywords, and live and dynamic recommendations and rankings based on query keywords.

### Claim 11 (depends on 7)

The computer program product of claim 7, wherein the query interface comprises a web-based interface or a desktop interface.

### Claim 12 (depends on 7)

The computer program product of claim 7, wherein the query interface comprises a mobile interface for a mobile device.

### Claim 13

A computer-implemented method for providing local search engines over large databases, the method comprising:
receiving as inputs one or more data records stored in a database;
parsing the one or more data records into one or more file pairs, wherein
each file pair includes a keyword file comprising keywords of the one or more data records, and a record ID file comprising record IDs corresponding to the keywords in the keyword file, and
each file pair implicitly forms a set of inverted lists from the keywords in the keyword file to add the record IDs to the record ID file;
maintaining a hashmap while scanning through the one or more data records, the hashmap including one or more entries that include a keyword and a vector of the record IDs, wherein the hashmap comprises T iterations that are each created when a size of a current hashmap iteration exceeds available memory;
merging T file pairs into a merged keyword file and a merged record ID file, the merged keyword file including sorted keywords, the merged record ID file including a list of record IDs for the sorted keywords in the merged keyword file;
creating an offset file which stores offset values for starting addresses of the list of record IDs in the merged record ID file;
generating an index of the sorted keywords by assigning unique identifiers to the sorted keywords in the merged keyword file, the index allowing searches to return result keyword IDs that correspond to result keywords that are sufficiently similar to a search term; and
providing a query interface that allows the one or more data records to be searched using the generated index.

### Claim 14 (depends on 13)

The method of claim of claim 13, wherein the one or more data records are parsed into one keyword-based inverted list per distinct keyword.

### Claim 15 (depends on 13)

The method of claim 13, wherein each of the one or more data records is viewed as a single string, regardless of types of the single string's attributes.

### Claim 16 (depends on 13)

The method of claim 13, wherein one or more of the following functions is provided: search-as-you-type, approximate search using multiple keywords, and live and dynamic recommendations and rankings based on query keywords.

### Claim 17 (depends on 13)

The method of claim 13, wherein the query interface comprises a web-based interface, a desktop interface, or a mobile interface for a mobile device.
