Set-based indexing, as the name suggests, divides the set of indexed terms into subsets, such that all terms in a subset have a common property (an individual term can be placed in several subsets).
The most simple set-based indexing - top symbol hashing - can be found in Prolog as first argument indexing. Clauses are indexed (hashed) using their first argument, therefore using the first argument of a calling procedure, a set of possible matching candidate clauses is retrieved from the assertional database.
A more complex indexing method is path indexing. Paths leading to symbols inside a term are grouped into sets (path lists) based on the common properties that are shared between the paths. Paths in the query term are organized into a query tree that has leaves pointing to the path lists. The retrieval of terms is accomplished by traversing the paths in the query tree.