# US 2019/0171645 A1 · System and method for an index search engine

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

- Number: US 2019/0171645 A1
- Document ID: US20190171645A1
- Status: Published application
- Kind: A1
- Application number: 16/210,764
- Filed: 2018-12-05
- Published: 2019-06-06
- Earliest claimed: 2017-12-05
- Assignees: Walmart Apollo, LLC
- Applicants: Walmart Apollo, LLC
- Inventors: Kevin M. Charles; John Randy Frerking; Richard T. Jackson
- Web page: https://patentgrep.com/patent/US20190171645A1

## CPC

- G06F 16/24542: {Plan optimisation}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 16/22: Indexing; Data structures therefor; Storage structures
- G06F 16/2264: {Multidimensional index structures}
- G06F 2212/7201: Logical to physical mapping or translation of blocks or pages
- G06F 2212/7206: Reconfiguration of flash memory system
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system for an index search engine includes a first non-volatile memory having a set of partitions. One partition includes one search array file having one or more search array records. The system also includes a second non-volatile memory having an index structure. The index structure includes a four-memory level configuration. Each memory level has a specified memory length. An entry in each memory level of first three levels contains a value pointing to a starting address of immediate next memory level. An entry in the fourth memory level contains a data value including an indexed field value of one of the search array records.

## Claims

### Claim 1

A system for an index search engine, comprising:
a first non-volatile memory including a set of partitions, wherein one partition includes one search array file having one or more search array records; and
a second non-volatile memory including an index structure, wherein:
the index structure includes a four-memory level configuration;
each memory level has a specified memory length;
an entry in each memory level of first three levels contains a value pointing to a starting address of immediate next memory level;
an entry in fourth memory level contains a data value including an indexed field value of one of the search array records.

### Claim 2 (depends on 1)

The system of claim 1, wherein the specified memory length is one of: 1024 bytes and 2048 bytes.

### Claim 3 (depends on 1)

The system of claim 1, wherein the value of an entry in each memory level of the first three levels is one of: a 4-byte value and a 8-byte value.

### Claim 4 (depends on 1)

The system of claim 1, wherein the first non-volatile memory and the second non-volatile memory are a same type of non-volatile memory or two different types of non-volatile memory.

### Claim 5 (depends on 1)

The system of claim 1, wherein:
each of the partitions is assigned a partition number; and
the data value of an entry in the fourth memory level further includes the partition number of a partition on which the indexed field value is stored, and a counter for hitting the indexed field value.

### Claim 6 (depends on 1)

The system of claim 1, wherein the value of an entry in each memory level of first three and the data value of an entry in fourth memory level are determined by a hexadecimal value of the indexed field value.

### Claim 7 (depends on 1)

The system of claim 1, wherein each of the search array records includes an index length accounting for all indexed fields of the record, a length of an indexed field, a value of the indexed field, and a non-volatile memory address of a record from which the search array record is determined.

### Claim 8 (depends on 1)

The system of claim 1, wherein the search array file further includes a counter for the number of search array records written thereto.

### Claim 9 (depends on 1)

The system of claim 1, further comprising a third non-volatile memory, the third non-volatile memory including one or more index array files, wherein each of the index files corresponds to one indexed field.

### Claim 10 (depends on 1)

The system of claim 1, further comprising a fourth non-volatile memory, the fourth non-volatile memory including one or more index of indexes files, wherein each of the index of indexes files corresponds to one indexed field.

### Claim 11

A method for searching an index field value, comprising:
dividing a first non-volatile memory into a set of partitions;
writing and storing the index field value to a search array file stored in one of the partitions, wherein the field index value and associated data values form a search array record of the search file; and
indexing the index field value in an index structure in a second non-volatile memory,
wherein:
the index structure includes a four-memory level configuration;
each memory level has a specified memory length;
an entry in each memory level of first three levels contains a value pointing to a starting address of immediate next memory level;
an entry in fourth memory level contains the indexed field value.

### Claim 12 (depends on 11)

The method of claim 11, wherein the specified memory length is one of: 1024 bytes and 2048 bytes.

### Claim 13 (depends on 11)

The method of claim 11, wherein the value of an entry in each memory level of the first three levels is one of: a 4-byte value and a 8-byte value.

### Claim 14 (depends on 11)

The method of claim 11, wherein the first non-volatile memory and the second non-volatile memory are a same type of non-volatile memory or two different types of non-volatile memory.

### Claim 15 (depends on 11)

The method of claim 11, further comprising:
assigning each of the partitions a partition number,
wherein the entry in the fourth memory level further includes the partition number of the partition on which the indexed field value is stored, and a counter for hitting the indexed field value.

### Claim 16 (depends on 11)

The method of claim 11, wherein the value of the entry in each memory level of first three and the indexed field value of the entry in fourth memory level are determined by a hexadecimal value of the index field value.

### Claim 17 (depends on 11)

The method of claim 11, wherein indexing the index field value in the index structure include:
generating a hexadecimal value of the index field value;
dividing the hexadecimal value into four portions;
writing a first value to an entry of the first memory level, the first value being determined by the first portion of the hexadecimal value;
writing a second value to an entry of the second memory level, the second value being determined by the second portion of the hexadecimal value;
writing a third value to an entry of the third memory level, the third value being determined by the third portion of the hexadecimal value; and
writing the index field value to an entry of the fourth memory level, a location of the entry in the fourth memory level being determined by the fourth portion of the hexadecimal value.

### Claim 18 (depends on 11)

The method of claim 11, wherein writing the index field value to a search array file stored in one of the partitions includes:
searching the index structure for a partition number of the one partition;
if the index field value is found in the index structure, writing the field index value and associated data values to the one partition identified by the partition number;
if the index field value is not found in the index structure, writing the field index value and associated data values to the one partition that is a least used partition, and updating the index structure with a partition number of the least used partition; and
counting the number of search array records written to the search array file.

### Claim 19 (depends on 11)

The method of claim 11, further comprising:
writing an index array file to a third non-volatile memory, the index files corresponding to the indexed field value.

### Claim 20 (depends on 11)

The method of claim 11, further comprising:
writing an index of indexes file to a fourth non-volatile memory, the index of indexes file corresponding to the indexed field value.
