# US 7,610,194 B2 · Dynamic database reordering system

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

- Number: US 7,610,194 B2
- Document ID: US7610194B2
- Status: Granted
- Kind: B2
- Application number: 10/621,864
- Filed: 2003-07-16
- Published: 2004-04-29
- Granted: 2009-10-27
- Earliest claimed: 2002-07-18
- Assignees: Tegic Communications, Inc.
- Inventors: Ethan R. Bradford; David Jon Kay
- Web page: https://patentgrep.com/patent/US7610194B2

## CPC

- G06F 3/0236: {using selection techniques to select from displayed items}
- G06F 40/274: Converting codes to words; Guess-ahead of partial word inputs
- Y10S 707/99931: Database or file accessing
- Y10S 707/99932: Access augmentation or optimizing
- Y10S 707/99933: Query processing, i.e. searching
- Y10S 707/99934: Query formulation, input preparation, or translation
- Y10S 707/99935: Query augmenting and refining, e.g. inexact access
- Y10S 707/99936: Pattern matching access
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

A dynamic database reordering system provides a linguistics database that contains words that are ordered according to a linguistics model that dictates the order in which words are presented to a user. While a user enters keystrokes on a keypad of a communications device is pressing keys, the invention predicts the words, letters, numbers, or word stubs that the user is trying to enter. The invention reorders the linguistics model order based on the user's usage of the system by tracking the user's word selections. Once a word has been selected as a result of a next key selection (the nexted word), a frequency value is applied to the selected word and the word ordered first by the linguistics model in the linguistics database for that key sequence. The frequency value of the nexted word will become greater than the frequency value of the first displayed word upon repeated nexting to the same word. Subsequent user entries of the key sequence for the nexted word and the first ordered word will result in displaying the nexted word before the word ordered first by the linguistics model.

## Claims

### Claim 1

A computer-implemented process for reordering items in a database to be retrieved for display to a user, comprising the steps of:
storing a plurality of words in a linguistic database (LDB), said plurality of words ordered in said LDB according to a predefined linguistics frequency of use model;
accepting with a processor user input from a keyboard, said user input comprising at least one keypress;
retrieving any words from said LDB that matches at least one letter corresponding to said at least one keypress;
displaying a list of said retrieved words as ordered in said LDB;
accepting a user-defined word as input by said user;
storing said user-defined word in a user database (UDB);
assigning a frequency count to said user-defined word;
storing said frequency count for said user-defined word in said UDB;
enabling said user to select a word from said displayed list;
assigning a frequency count to every selected word in a non first order position in said displayed list and a frequency count to a first order word, if a non first order word is selected, said frequency count for said non first order selected word being different than said frequency count for said first order non selected word;
storing said frequency count of each word in association with each word in said UDB;
accepting a subsequent user input from a keyboard, said user input comprising at least one keypress;
retrieving any words from said LDB and any user-defined words from said UDB that match at least one letter corresponding to said at least one keypress;
if more than one word from any of said LDB and said UDB is retrieved and at least one retrieved word is associated with a frequency count, dynamically reordering for display said retrieved words as a function of said predefined linguistics frequency of use model and each frequency count associated with any of said retrieved words;
displaying a list of said reordered matching words if more than one word matches said user's subsequent input; and
updating a frequency count associated with a word each time a non first order word is selected from a displayed list of matching words.

### Claim 2 (depends on 1)

The process of claim 1, wherein if a non first ordered word is selected by said user a predetermined number of times then said non first ordered word is displayed in a first ordered position in said list of reordered matching words.

### Claim 3 (depends on 1)

The process of claim 1, wherein all non first ordered words that are assigned said frequency count are initially assigned equal frequency counts.

### Claim 4 (depends on 1)

The process of claim 1, wherein said word's frequency count is increased each time said user selects said word.

### Claim 5 (depends on 1)

The process of claim 1, wherein if said user selects said word from said list of retrieved words or said list of reordered words that is below a second ordered position, then said selected word is assigned said frequency count that places said word in said second ordered position in said list.

### Claim 6 (depends on 1)

The process of claim 1, further comprising the step of:
periodically checking free space in said UDB and, if said free space is less than a predetermined amount, then removing from said UDB said words that have said frequency counts below a predetermined threshold.

### Claim 7 (depends on 6)

The process of claim 6, wherein said removing step removes said user-defined words having said frequency counts below said predetermined threshold after removing other words having said frequency counts below said predetermined threshold.

### Claim 8 (depends on 1)

The process of claim 1, further comprising the step of:
resolving frequency collisions when two words in said list of reordered words are associated with equal frequency counts by ordering said word that was most recently selected first.

### Claim 9 (depends on 1)

The process of claim 1, further comprising the step of:
resolving frequency collisions when two words in said list of reordered words are associated with equal frequency counts by ordering said word having a higher initial ordering in said LDB first.

### Claim 10 (depends on 1)

The process of claim 1, further comprising the step of:
resolving frequency collisions in said list of reordered words when a user-defined word and a word from said LDB have equal reordering frequency counts by ordering said user-defined word first.

### Claim 11 (depends on 1)

The process of claim 1 wherein when said word from said LDB is selected for a first time, said step of assigning said frequency count generates said frequency count from said word's position in said LDB as a function of said predefined linguistics frequency of use model.

### Claim 12 (depends on 11)

The process of claim 11, wherein said user-defined words are initially assigned equal frequency counts during said assigning step.

### Claim 13

A computer-implemented process for reordering items in a database to be retrieved for display to a user, comprising the steps of:
storing a plurality of words in a linguistic database (LDB), said plurality of words ordered in said LDB according to a predefined linguistics frequency of use model;
accepting with a processor user input from a keyboard, said user input comprising at least one keypress;
retrieving any words from said LDB that match at least one letter corresponding to said at least one keypress;
displaying a list of said retrieved words as ordered in said LDB;
accepting a user-defined word as input by said user;
storing said user-defined word in a user database (UDB);
assigning a frequency count to said user-defined word;
storing said frequency count for said user-defined word in said UDB;
enabling said user to select a word from said displayed list;
assigning a frequency count to every selected word in a non first order position in said displayed list and a frequency count to a first order word, if a non first order word is selected, said frequency count for said non first order selected word being different than said frequency count, said frequency count for said first order non selected word;
storing said frequency count of each word in association with each word in said UDB;
storing a frequency count for a first order word from said displayed list if a non first order word is selected from said displayed list, said frequency count for said non selected first order word being lower than said frequency count for said selected non first order word, said frequency count being stored in association with said first order non selected word in said UDB
accepting a subsequent user input from a keyboard, said user input comprising at least one keypress;
retrieving any words from said LDB and any user-defined words from said UDB that match at least one letter corresponding to said at least one keypress;
if more than one word from any of said LDB and said UDB is retrieved and at least one retrieved word is associated with a frequency count, dynamically reordering for display said retrieved words as a function of said predefined linguistics frequency of use model and each frequency count associated with any of said retrieved words;
displaying a list of said reordered matching words if more than one word matches said user's subsequent input;
updating a frequency count associated with a word each time a non first order word is selected from a displayed list of matching words; and
periodically aging said frequency counts in said reorder database by reducing said frequency counts by a predetermined factor.

### Claim 14

A computer-implemented process for reordering items in a database to be retrieved for display to a user, comprising the steps of:
storing a plurality of words in a linguistic database (LDB), said plurality of words ordered in said LDB according to a predefined linguistics frequency of use model;
accepting with a processor user input from a keyboard, said user input comprising at least one keypress;
retrieving any words from said LDB that matches at least one letter corresponding to said at least one keypress;
displaying a list of said retrieved words as ordered in said LDB;
accepting a user-defined word as input by said user;
storing said user-defined word in a user database (UDB);
assigning a frequency count to said user-defined word;
storing said frequency count for said user-defined word in said UDB;
enabling said user to select a word from said displayed list;
assigning a frequency count to every selected word in a non first order position in said displayed list and a frequency count to a first order word, if a non first order word is selected, said frequency count for said non first order selected word being different than said frequency count for said first order non selected word;
storing said frequency count of each word and in association with each word in said UDB;
accepting a subsequent user input from a keyboard, said user input comprising at least one keypress;
retrieving any words from said LDB and any user-defined words from said UDB that match at least one letter corresponding to said at least one keypress;
if more than one word from any of said LDB and said UDB is retrieved and at least one retrieved word is associated with a frequency count, dynamically reordering for display said retrieved as a function of said predefined linguistics frequency of use model and each frequency count associated with any of said retrieved words;
displaying a list of said reordered matching words if more than one word matches said user's subsequent input;
updating a frequency count associated with a word each time a non first order word is selected from a displayed list of matching words; and
wherein words selected by said user that do not have a possibility of a collision with other words are not assigned a frequency count.

### Claim 15

An apparatus for reordering items in a database to be retrieved for display to a user, comprising:
a module for accepting user input from a keyboard, said user input comprising at least one keypress;
a linguistic database (LDB) containing a plurality of words ordered according to a predefined linguistic frequency of use model;
a module for displaying to said user a list of any words in said LDB and any user-defined words in a user database (UDB) that match at least one letter corresponding to said at least one keypress, said words retrieved from any of said LDB and from said UDB;
said UDB for storing any user-defined words entered by said user, a frequency count associated with each user-defined word, and a frequency count associated with each word stored in said LOB that was assigned a frequency count by an assigning module;
a module for retrieving from any of said LOB and from said UDB a list of any words that match at least one letter corresponding to said at least one keypress of said user's input, said words dynamically reordered for display of said retrieved words as a function of said predefined linguistics frequency of use model and each frequency count associated with any of said retrieved words; and
said assigning module for assigning a frequency count to every selected word in a non first order position in a list of said retrieved words and assigning a frequency count to a first order word if a word in a non first order position is selected, said frequency count being different for said first order word than said frequency count for said selected non first order word, said assigning module updating a frequency count each time a non first order word is selected from said retrieved list.

### Claim 16 (depends on 15)

The apparatus of claim 15, wherein said frequency count is assigned to said selected word if said selected word is in a non first order position in said list and is selected for a first time.

### Claim 17 (depends on 16)

The apparatus of claim 16, wherein if said non first ordered word is selected by said user a predetermined number of times then said non first ordered word is displayed in a first ordered position in said list.

### Claim 18 (depends on 16)

The apparatus of claim 16, wherein all non first ordered words that are assigned said frequency count are initially assigned equal frequency counts.

### Claim 19 (depends on 15)

The apparatus of claim 15, wherein said word's frequency count is increased each time said user selects said word.

### Claim 20 (depends on 15)

The apparatus of claim 15, wherein if said user selects from said list a word that is below a second ordered position then said assigning module assigns a frequency count that places said word in said second ordered position in said list.

### Claim 21 (depends on 15)

The apparatus of claim 15, further comprising:
a module for periodically checking for free space in said UDB and, if said free space is less than a predetermined amount, then removing from said UDB said frequency counts and corresponding object numbers or corresponding user-defined words for words that have frequency counts below a predetermined threshold.

### Claim 22 (depends on 21)

The apparatus of claim 21, wherein said removing module removes user-defined words having frequency counts below said predetermined threshold after removing other words having frequency counts below said predetermined threshold.

### Claim 23 (depends on 15)

The apparatus of claim 15, further comprising:
a module for resolving frequency collisions when two words in said list have equal frequency counts by ordering said most recently selected word first.

### Claim 24 (depends on 15)

The apparatus of claim 15, further comprising:
a module for resolving frequency collisions when two words in said list have equal frequency counts by ordering said word having a higher initial ordering in said LDB first.

### Claim 25 (depends on 15)

The apparatus of claim 15, further comprising:
a module for resolving frequency collisions in said list when said user-defined word and said word from said LDB have equal frequency counts by ordering said user-defined word first.

### Claim 26 (depends on 15)

The apparatus of claim 15 wherein said assigning module assigns said frequency count for said word from said LDB based on said predefined linguistics frequency of use model.

### Claim 27 (depends on 26)

The apparatus of claim 26, wherein said user-defined words are initially assigned equal frequency counts by said assigning module.

### Claim 28

An apparatus for reordering items in a database to be retrieved for display to a user, comprising:
a module for accepting user input from a keyboard, said user input comprising at least one keypress;
a linguistic database (LDB) containing a plurality of words ordered according to a predefined linguistic frequency of use model;
a module for displaying to said user a list of any words in said LDB and any user-defined words in a user database (UDB) that match at least one letter corresponding to said at least one keypress, said words retrieved from any of said LDB and from said UDB;
said UDB for storing any user-defined words entered by said user, a frequency count associated with each user-defined word, and a frequency count associated with each word stored in said LDB that was assigned a frequency count by an assigning module;
a module for retrieving from any of said LDB and from said UDB a list of any words that match at least one letter corresponding to said at least one keypress of said user's input, said words dynamically reordered for display of said retrieved words as a function of said predefined linguistics frequency of use model and each frequency count associated with any of said retrieved words;
said assigning module for assigning said a frequency count to every selected word in a non first order position in a list of said retrieved words and assigning a frequency count to a first order word if a word in a non first order position is selected, said frequency count being different for said first order word than said frequency count for said selected non first order word, said assigning module updating a frequency count each time a non first order word is selected from said retrieved list; and
a module for periodically aging said frequency counts in said reorder database by reducing said frequency counts by a predetermined factor.

### Claim 29

An apparatus for reordering items in a database to be retrieved for display to a user, comprising:
a module for accepting user input from a keyboard, said user input comprising at least one keypress;
a linguistic database (LDB) containing a plurality of words ordered according to a predefined linguistic frequency of use model;
a module for displaying to said user a list of any words in said LDB and any user-defined words in a user database (UDB) that match at least one letter corresponding to said at least one keypress, said words retrieved from any of said LDB and from said UDB;
said UDB for storing any user-defined words entered by said user, a frequency count associated with each user-defined word, and a frequency count associated with each word stored in said LDB that was assigned a frequency count by an assigning module;
a module for retrieving from any of said LDB and from said UDB a list of any words that match at least one letter corresponding to said at least one keypress of said user's input, said words dynamically reordered for display of said retrieved words as a function of said predefined linguistics frequency of use model and each frequency count associated with any of said retrieved words; and
said assigning module for assigning a frequency count to every selected word in a non first order position in a list of said retrieved words and assigning a frequency count to a first order word if a word in a non first order position is selected, said frequency count being different for said first order word than said frequency count for said selected non first order word, said assigning module updating a frequency count each time a non first order word is selected from said retrieved list;
wherein said words selected by said user that do not have a possibility of a collision with other words are not assigned said frequency count.
