1. A method of searching a database for a solid model comprising the steps of: providing a query model; determining a first set of values based on predetermined properties of said query model; wherein said first set of values includes at least a first set of distances between points on triangular faces of said query model, said distances being determined by determining an angular shortest path between two triangular faces on said query model, wherein the angular shortest path on the query model is the shortest path on the surface of the training model which is computed in terms of an angular difference between the two triangular faces on the query model; comparing said first set of values to a second set of values that is determined by predetermined properties for a group of models for training, said predetermined properties of said models for training including at least a second set of distances between points on triangular faces of the models for training, said second set of distances being determined by determining an angular shortest path between two triangular faces on said models for training, wherein the angular shortest path on the model for training is the shortest path on the surface of the model for training which is computed in terms of an angular difference between the two triangular faces on the model for training; and indexing, classifying and partially matching said query model with one or more models for training based on said comparing step.