A method for searching for a similar image among a plurality of stored images, comprising the steps of: for each stored image, calculating one global feature vector representing the entire content of the stored image, calculating distance measures between each stored image of the plurality of stored images by using the one global feature vector calculated for each image, clustering the plurality of stored images into one or more clusters of stored images based on the calculated distance measures, wherein each cluster comprises one or more stored images, for each cluster comprising a plurality of stored images, - for each stored image in the cluster, calculating a plurality of local feature vectors, each representing a sub-area of the content of the stored image, - performing a matching operation between at least some of the plurality of local feature vectors for all of the stored images in the cluster, and - based on a result of the matching operation, filtering local feature vectors which are matched between at least a threshold number of the stored images, and - storing the filtered feature vectors, retrieving an image for which a similar image should be found, calculating a plurality of local feature vectors for the retrieved image, finding a similar image among the plurality of stored images by using the stored filtered feature vectors for at least one of the one or more clusters, and the retrieved image feature vectors. for each stored image, calculating one global feature vector representing the entire content of the stored image, calculating distance measures between each stored image of the plurality of stored images by using the one global feature vector calculated for each image, clustering the plurality of stored images into one or more clusters of stored images based on the calculated distance measures, wherein each cluster comprises one or more stored images, for each cluster comprising a plurality of stored images, - for each stored image in the cluster, calculating a plurality of local feature vectors, each representing a sub-area of the content of the stored image, - performing a matching operation between at least some of the plurality of local feature vectors for all of the stored images in the cluster, and - based on a result of the matching operation, filtering local feature vectors which are matched between at least a threshold number of the stored images, and - storing the filtered feature vectors, retrieving an image for which a similar image should be found, calculating a plurality of local feature vectors for the retrieved image, - for each stored image in the cluster, calculating a plurality of local feature vectors, each representing a sub-area of the content of the stored image, - performing a matching operation between at least some of the plurality of local feature vectors for all of the stored images in the cluster, and - based on a result of the matching operation, filtering local feature vectors which are matched between at least a threshold number of the stored images, and - storing the filtered feature vectors, retrieving an image for which a similar image should be found, calculating a plurality of local feature vectors for the retrieved image, finding a similar image among the plurality of stored images by using the stored filtered feature vectors for at least one of the one or more clusters, and the retrieved image feature vectors.