1. A method of indexing and searching a database comprising: providing a storage module; providing a comparator module communicatively coupled to the storage module; providing a database of iris templates within the storage module, wherein each iris template in the database comprises a barcode configured to have a certain number of bits; hierarchically partitioning the database into a plurality of layers of sub-databases of the iris templates based on phase information, radial information, and/or angular information of an iris image, wherein each iris template in each of the layers of the sub-databases comprises a segment of the iris template barcode and the sum of the iris templates of each layer of sub-databases represents all the iris templates in the database; providing a barcode of an iris image for matching to an iris template in the database, wherein the barcode of the iris image has the same configuration as the configuration of each iris template in the database; selecting a segment of the barcode of the iris image that corresponds to a segment of an iris template in a layer of the sub-databases; and progressively matching the selected segment of the barcode of the iris image to an iris template in a layer of the sub-databases by progressing from a top layer of the sub-databases to a lower layer of the sub-databases; and wherein the layers of the sub-databases comprise: phase clustering; radial clustering; angular clustering; and bit clustering or binning.