Patent US5701459A successfully refreshed from Google Patents.
US5701459A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Method and apparatus for rapid full text index creation
Assignee: Apple Inc
•
Filing: 1996-03-01
•
Granted: 1997-12-23
•
Expires: 2016-03-01
Abstract
Abstract A computer system and method for document indexing and data retrieval. A full text index is created in two phases. In the first phase, a word list symbol table, an alphabetically ordered list, and a non-repeating word number stream are constructed from the source text. In the second phase, a word number access array and in-memory full text index are constructed and then index data is merged into the final index.
Inventors
- 👤 Ronald P. Millett
- 👤 Robin P. Tuck
- 👤 Blaine S. Dennis
- 👤 David O. Robertson
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-10-29 11:07
CPC Classifications
G; G06; G06F; G06F16/00; G06F16/30; G06F16/31; G06F16/316; G06F16/328; G06F16/322; Y; Y10; Y10S; Y10S707/00; Y10S707/99931; Y10S707/99933; Y10S707/99941; Y10S707/99942
Claims Analysis
Total Claims: 39
Claim 1
Independent Claim
230 words
A computer system for creating a full text index associated with a source text including one or more documents, each document comprising one or more granules, each granule defining an indexing unit of text including one or more words, the computer system comprising: (a) a first storage for storing the source text; (b) memory coupled to a processor for storing data used to create the full text index; (c) a second storage for storing the full text index; wherein the processor is associated with the first and second storage for creating the full text index in two phases, said processor performing the steps of: i. in the first phase, reading the source text; creating a word list comprising an entry for each unique word in the source text; and creating a non-repeating word number stream comprising a single entry for each unique word in each granule of the source text; and ii. in the second phase, creating an array in the memory comprising an entry for each unique word in the source text, said entry including a reference to a location in an uncompressed index, said uncompressed index associating a granule reference with each of said unique words; creating said uncompressed index as a function of the non-repeating word number stream; compressing the uncompressed index into the full text index; and storing the full text index in said second storage.
Claim 2
Dependent Claim
230 words
A computer system for creating a full text index associated with a source text including one or more documents, each document comprising one or more granules, each granule defining an indexing unit of text including one or more words, the computer system comprising: (a) a first storage for storing the source text; (b) memory coupled to a processor for storing data used to create the full text index; (c) a second storage for storing the full text index; wherein the processor is associated with the first and second storage for creating the full text index in two phases, said processor performing the steps of: i. in the first phase, reading the source text; creating a word list comprising an entry for each unique word in the source text; and creating a non-repeating word number stream comprising a single entry for each unique word in each granule of the source text; and ii. in the second phase, creating an array in the memory comprising an entry for each unique word in the source text, said entry including a reference to a location in an uncompressed index, said uncompressed index associating a granule reference with each of said unique words; creating said uncompressed index as a function of the non-repeating word number stream; compressing the uncompressed index into the full text index; and storing the full text index in said second storage.
Claim 3
Dependent Claim
42 words
The computer system of claim 1 wherein for each unique word in the source text, granule reference list data is included in the uncompressed index, and said granule reference list data is compressed by a combination of one or more compression methods.
Claim 4
Dependent Claim
41 words
The computer system of claim 2 wherein the compression methods by which granule reference list data associated with a unique word in the source text is compressed comprises run length encoding, bit string encoding, delta encoding, and absolute element reference encoding.
Claim 5
Dependent Claim
163 words
The computer system of claim 3 wherein: compression by said run length encoding comprises storing the granule number associated with a first of two or more consecutive granules in which the unique word occurs in combination with the total number of consecutive granules in which the unique word occurs; compression by said bit string encoding comprises storing a sequence of one or more bits corresponding to the number of granules in the source text in which each said bit corresponding to a granule number associated with the granule in which the unique word occurs has a value of `1` and each remaining said bit has a value of `0`; compression by said delta encoding comprises storing a value representing the number of consecutive granules in which the unique word does not occur between granules in which the unique word occurs; and compression by said absolute element reference encoding comprises storing a granule number corresponding to a granule in which the unique word occurs.
Claim 6
Dependent Claim
67 words
The computer system of claim 1 wherein the word list comprises a first table containing one or more entries of a first type, each said entry associated with a unique hash number and addressing a second table containing one or more entries of a second type, each said second table entry addressing a binary tree comprising nodes for one or more unique words in the source text.
Claim 7
Dependent Claim
33 words
The computer system of claim 1 wherein each unique word in the source text is associated with a word number and each granule in the source text is associated with a granule number.
Claim 8
Dependent Claim
52 words
The computer system of claim 6 wherein the non-repeating word number stream comprises a sequence of said word numbers and a boundary demarcation for each said granule for recording the granule number in which said words occur, wherein each unique word number appears at most once between each said granule boundary demarcation.
Claim 9
Dependent Claim
56 words
The computer system of claim 7 wherein for each unique word in the source text, granule reference list data is included in the uncompressed index, the granule reference list data associated with each unique word in the source text comprising a sequential list of granule numbers associated with the granules in which the unique word occurs.
Claim 10
Dependent Claim
16 words
The computer system of claim 1 further comprising retrieval system for accessing the full text index.
Claim 11
Dependent Claim
50 words
The computer system of claim 1 wherein the steps of the second phase are iterated one or more times, further comprising the step of merging a first full text index stored in the second storage with a second full text index so as to create a third full text index.
Claim 12
Dependent Claim
192 words
A computer system for creating in two phases a full text index associated with a source text including one or more documents, each document comprising one or more granules, each granule defining an indexing unit of text including one or more words, the computer system comprising: (a) a means for reading the source text; (b) a means for creating a word list comprising an entry for each unique word in the source text; (c) a means for creating a non-repeating word number stream comprising a single entry for each unique word in each granule of the source text, the entries for the unique words being intermixed with respect to each other; (d) a means for creating an array comprising an entry for each unique word in the source text, said entry including a reference to a location in an uncompressed index, said uncompressed index associating a granule reference with each of the unique words; (e) a means for creating the uncompressed index based on the non-repeating word number stream; (f) a means for compressing the uncompressed index into the full text index; and (g) a means for storing the full text index.
Claim 13
Dependent Claim
192 words
A computer system for creating in two phases a full text index associated with a source text including one or more documents, each document comprising one or more granules, each granule defining an indexing unit of text including one or more words, the computer system comprising: (a) a means for reading the source text; (b) a means for creating a word list comprising an entry for each unique word in the source text; (c) a means for creating a non-repeating word number stream comprising a single entry for each unique word in each granule of the source text, the entries for the unique words being intermixed with respect to each other; (d) a means for creating an array comprising an entry for each unique word in the source text, said entry including a reference to a location in an uncompressed index, said uncompressed index associating a granule reference with each of the unique words; (e) a means for creating the uncompressed index based on the non-repeating word number stream; (f) a means for compressing the uncompressed index into the full text index; and (g) a means for storing the full text index.
Claim 14
Dependent Claim
67 words
The computer system of claim 11 wherein the word list comprises a first table containing one or more entries of a first type, each said entry associated with a unique hash number and addressing a second table containing one or more entries of a second type, each said second table entry addressing a binary tree comprising nodes for one or more unique words in the source text.
Claim 15
Dependent Claim
33 words
The computer system of claim 11 wherein each unique word in the source text is associated with a word number and each granule in the source text is associated with a granule number.
Claim 16
Dependent Claim
52 words
The computer system of claim 13 wherein the non-repeating word number stream comprising a sequence of said word numbers and a boundary demarcation for each said granule for recording the granule number in which said words occur, wherein each unique word number appears at most once between each said granule boundary demarcation.
Claim 17
Dependent Claim
37 words
The computer system of claim 14 wherein for each unique word in the source text, the granule reference list data comprises a sequential list of granule numbers associated with the granules in which the unique word occurs.
Claim 18
Dependent Claim
23 words
The computer system of claim 15 wherein the granule reference list data is compressed by a combination of one or more compression methods.
Claim 19
Dependent Claim
41 words
The computer system of claim 16 wherein the compression methods by which granule reference list data associated with a unique word in the source text is compressed comprises run length encoding, bit string encoding, delta encoding, and absolute element reference encoding.
Claim 20
Dependent Claim
163 words
The computer system of claim 17 wherein: compression by said run length encoding comprises storing the granule number associated with a first of two or more consecutive granules in which the unique word occurs in combination with the total number of consecutive granules in which the unique word occurs; compression by said bit string encoding comprises storing a sequence of one or more bits corresponding to the number of granules in the source text in which each said bit corresponding to a granule number associated with the granule in which the unique word occurs has a value of `1`; and each remaining said bit has a value of `0`; compression by said delta encoding comprises storing a value representing the number of consecutive granules in which the unique word does not occur between granules in which the unique word occurs; and compression by said absolute element reference encoding comprises storing a granule number corresponding to a granule in which the unique word occurs.
Claim 21
Dependent Claim
32 words
The computer system of claim 11, further comprising a means for merging a first full text index with a second full text index so as to create a third full text index.
Claim 22
Independent Claim
363 words
A method in a computer system for creating in first and second phases a full text index associated with a source text including one or more documents, each document comprising one or more granules, each granule defining an indexing unit of text including one or more words, the method comprising the steps of: parsing the source text into one or more granules, a granule number being associated with each granule; in the first phase, i. reading words from the source text, assigning a word number to each unique word, and creating a word list with an entry for each such unique word and associated word number; ii. creating a non-repeating word number stream comprising a sequence of said word numbers and a boundary demarcation for each said granule for recording the granule number in which each word occurs, wherein each unique word number appears at most once between each said granule boundary demarcation; iii. creating an alphabetically ordered list of unique words in the source text, wherein the alphabetically ordered list includes the word number associated with each unique word; in the second phase, i. determining memory requirements for an in-memory index comprising a granule reference list for each unique word in the source text, and allocating a portion of the memory for each said granule reference list; ii. creating an array comprising an entry for each unique word in the source text wherein each said entry contains data fields for the location in the in-memory index and the full text index associated with the unique word; iii. creating the granule reference list for each unique word in the source text by sequentially reading the non-repeating word number stream and, for each granule boundary demarcation in the stream, incrementing a granule number counter and, for each word number in the stream, recording the value of the granule number counter in the portion of the memory allocated for the unique word in the source text associated with the word number; iv. compressing the in-memory index; v. alphabetically ordering the compressed in-memory index and storing the compressed in-memory index; and vi. storing the compressed in-memory index and data used to create the full text index.
Claim 23
Independent Claim
363 words
A method in a computer system for creating in first and second phases a full text index associated with a source text including one or more documents, each document comprising one or more granules, each granule defining an indexing unit of text including one or more words, the method comprising the steps of: parsing the source text into one or more granules, a granule number being associated with each granule; in the first phase, i. reading words from the source text, assigning a word number to each unique word, and creating a word list with an entry for each such unique word and associated word number; ii. creating a non-repeating word number stream comprising a sequence of said word numbers and a boundary demarcation for each said granule for recording the granule number in which each word occurs, wherein each unique word number appears at most once between each said granule boundary demarcation; iii. creating an alphabetically ordered list of unique words in the source text, wherein the alphabetically ordered list includes the word number associated with each unique word; in the second phase, i. determining memory requirements for an in-memory index comprising a granule reference list for each unique word in the source text, and allocating a portion of the memory for each said granule reference list; ii. creating an array comprising an entry for each unique word in the source text wherein each said entry contains data fields for the location in the in-memory index and the full text index associated with the unique word; iii. creating the granule reference list for each unique word in the source text by sequentially reading the non-repeating word number stream and, for each granule boundary demarcation in the stream, incrementing a granule number counter and, for each word number in the stream, recording the value of the granule number counter in the portion of the memory allocated for the unique word in the source text associated with the word number; iv. compressing the in-memory index; v. alphabetically ordering the compressed in-memory index and storing the compressed in-memory index; and vi. storing the compressed in-memory index and data used to create the full text index.
Claim 24
Dependent Claim
68 words
The method as recited in claim 20 wherein the word list comprises a first table containing one or more entries of a first type, each said entry associated with a unique hash number and addressing a second table containing one or more entries of a second type, each said second table entry addressing a binary tree comprising nodes for one or more unique words in the source text.
Claim 25
Dependent Claim
31 words
The method as recited in claim 20 wherein each said granule reference list comprises a sequential list of granule numbers associated with the granules in which the associated unique word occurs.
Claim 26
Dependent Claim
23 words
The method as recited in claim 22 wherein the granule reference lists are compressed by a combination of one or more compression methods.
Claim 27
Dependent Claim
42 words
The method as recited in claim 23 wherein the compression methods by which a granule reference list associated with a unique word in the source text is compressed comprises run length encoding, bit string encoding, delta encoding and absolute element reference encoding.
Claim 28
Dependent Claim
165 words
The method as recited in of claim 24 wherein: compression by said run length encoding comprises storing the granule number associated with a first of two or more consecutive granules in which the unique word occurs in combination with the total number of consecutive granules in which the unique word occurs; compression by said bit string encoding comprises storing a sequence of one or more bits corresponding to the number of granules in the source text in which each said bit corresponding to a granule number associated with the granule in which the unique word occurs has a value of `1` and each remaining said bit has a value of `0`; compression by said delta encoding comprises storing a value representing the number of consecutive granules in which the unique word does not occur between granules in which the unique word occurs; and compression by said absolute element reference encoding comprises storing a granule number corresponding to a granule in which the unique word occurs.
Claim 29
Dependent Claim
38 words
The method as recited in claim 25 wherein the combination of one or more compression methods utilized to compress the granule reference lists is determined by a triggering method so as to minimize the size of compressed index.
Claim 30
Dependent Claim
20 words
The method as recited in claim 20 wherein the full text index which is stored comprises multiple packets of data.
Claim 31
Dependent Claim
45 words
The method as recited in claim 20 wherein the steps of the second phase are iterated one or more times, further comprising the step of merging a full text index with a second full text index so as to create a third full text index.
Claim 32
Independent Claim
186 words
A method in a computer system for creating in two phases a full text index associated with a source text including one or more documents, each document comprising one or more granules, each granule defining an indexing unit of text including one or more words, the method comprising the steps of: i. in the first phase, (a) reading the source text; (b) creating a word list comprising an entry for each unique word in the source text; and (c) creating a non-repeating word number stream comprising a single entry for each unique word in each granule of the source text; and ii. in the second phase, (a) determining an amount of memory necessary to contain an uncompressed index: (b) creating an array comprising an entry for each unique word in the source text, said entry including a reference to location in the uncompressed index, said uncompressed index associating a granule reference with each of the unique words; (c) creating the uncompressed index based on the non-repeating word number stream; (d) compressing the uncompressed index into the full text index; and (e) storing the full text index.
Claim 33
Independent Claim
186 words
A method in a computer system for creating in two phases a full text index associated with a source text including one or more documents, each document comprising one or more granules, each granule defining an indexing unit of text including one or more words, the method comprising the steps of: i. in the first phase, (a) reading the source text; (b) creating a word list comprising an entry for each unique word in the source text; and (c) creating a non-repeating word number stream comprising a single entry for each unique word in each granule of the source text; and ii. in the second phase, (a) determining an amount of memory necessary to contain an uncompressed index: (b) creating an array comprising an entry for each unique word in the source text, said entry including a reference to location in the uncompressed index, said uncompressed index associating a granule reference with each of the unique words; (c) creating the uncompressed index based on the non-repeating word number stream; (d) compressing the uncompressed index into the full text index; and (e) storing the full text index.
Claim 34
Dependent Claim
68 words
The method as recited in claim 29, wherein the word list comprises a fast table containing one or more entries of a first type, each said entry associated with a unique hash number and addressing a second table containing one or more entries of a second type, each said second table entry addressing a binary tree comprising nodes for one or more unique words in the source text.
Claim 35
Dependent Claim
51 words
The method as recited in claim 29, wherein the steps of the second phase are iterated one or more times, further comprising the step of merging a first full text index stored in the second storage with a second full text index so as to create a third full text index.
Claim 36
Independent Claim
178 words
A method for creating a full text index of a source text, the source text including one or more documents, each document having one or more granules, each granule defining an indexing unit of text including one or more words, the steps comprising: a) reading the source text; b) creating a word list having an entry for each unique word in the source text, each entry including a unique word number associated with the respective unique word, c) forming a non-repeating word number stream comprising a word reference for each unique word in each granule of the source text by: i) referencing the word list; ii) obtaining from the word list a word reference associated with the respective unique word; iii) inserting the word reference in the non-repeating word number stream; and d) creating an array comprising an entry for each unique word in the source text, each said entry including an index reference to an index associated with the unique word, each said index operative to contain references to granules in which the associated unique word exists.
Claim 37
Independent Claim
178 words
A method for creating a full text index of a source text, the source text including one or more documents, each document having one or more granules, each granule defining an indexing unit of text including one or more words, the steps comprising: a) reading the source text; b) creating a word list having an entry for each unique word in the source text, each entry including a unique word number associated with the respective unique word, c) forming a non-repeating word number stream comprising a word reference for each unique word in each granule of the source text by: i) referencing the word list; ii) obtaining from the word list a word reference associated with the respective unique word; iii) inserting the word reference in the non-repeating word number stream; and d) creating an array comprising an entry for each unique word in the source text, each said entry including an index reference to an index associated with the unique word, each said index operative to contain references to granules in which the associated unique word exists.
Claim 38
Dependent Claim
16 words
A method according to claim 32, wherein the non-repeating word number stream comprises granule boundary indicators.
Claim 39
Dependent Claim
72 words
A method according to claim 33, further comprising: reading the non-repeating word number stream; and for each word reference, using a granule boundary counter to determine the granule in which the unique word associated with the word reference is located, determining from the array the location of the index associated with the unique word, and inserting into the associated index a reference to the granule in which the unique word is located.
References Cited (Backward Citations)
US4318184A
Cited
US4771385A
Cited
US4817036A
Cited
US5297038A
Cited
US4972349A
Cited
US5321606A
Cited
US5201048A
Cited
US5109433A
Cited
US5153831A
Cited
US5251129A
Cited
US5321833A
Cited
US5383121A
Cited
US5375235A
Cited
US5412807A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2000-12-22 | 2001-06-23 | 2001-12-23 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2004-12-22 | 2005-06-23 | 2005-12-23 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2008-12-22 | 2009-06-23 | 2009-12-23 | $7700.00 | Window Closed / Lapsed |