1. A method for indexing data, comprising: formulating an objective function to index a dataset, a portion of the dataset including supervision information; determining a data property component of the objective function which utilizes a property of the dataset to group data of the dataset; determining a supervised component of the objective function which utilizes the supervision information to group data of the dataset; and optimizing the objective function using a processor based upon the data property component and the supervised component to partition a node into a plurality of child nodes.