Patent ID: 8745034

Claim:
A method, comprising: receiving a search query including filter criteria and sort criteria, wherein: the filter criteria specify a plurality of operands including a first operand associated with one or more filters and a second operand associated with one or more filters, and a logical relationship between the plurality of operands, wherein the logical relationship between the plurality of operands is a Boolean AND; and the sort criteria specify a set of one or more predefined sort parameters and corresponding sort directions for sorting index entries in a predefined sort order; and in response to the search query: identifying a plurality of index portions for the filter(s) of the first operand and the filter(s) of the second operand, wherein the plurality of index portions are identified in accordance with the plurality of operands and the sort criteria, a respective index entry in the plurality of index portions includes: an identifier representative of a value for the predefined sort parameter and a unique identifier for a respective entity associated with the respective index entry, and each of the plurality of index portions has a distinct combination of operands and sort order; identifying one or more matching entities that match the search query, wherein the identifying includes: identifying matching index entries in the plurality of index portions in accordance with the logical relationship between the plurality of operands by: (A) selecting a first index entry from a first index portion in the plurality of index portions in accordance with the filter(s) of the first operand; (B) identifying the unique identifier included in the first index entry; (C) selecting a second index entry from a second index portion in the plurality of index portions in accordance with the unique identifier included in the first index entry; (D) sequentially retrieving, from the second index portion, starting with the second index entry, a unique identifier included in a next index entry in sort order of the second index portion, wherein the next index entry matches the filter(s) of the second operand; (E) identifying a third index entry, from the first index portion, in accordance with (i) the unique identifier included in said next index entry and (ii) the filter(s) of the first operand; (F) identifying a unique identifier included in the third index entry; (G) identifying, as matching entries, from the plurality of index portions, index entries having the unique identifier included in the third index entry; and providing representations of one or more of the matching entities.