Can anyone suggest good algorithms for CBIR? Project: Content Based Image Retrieval - Semi-supervised (manual tagging is done on images while training)

Description

I have 1000000 images in the database. The training is manual (supervised) - title and tags are provided for each image. Example: coke.jpg Title : Coke Tags : Coke, Can

Using the images and tags, I have to train the system. After training, when I give a new image (already in database/ completely new) the system should output the possible tags the image may belong to and display few images belonging to each tag. The system may also say no match found.

Questions:

1) What is mean by image fingerprint? What is the image fingerprint size expected ? (important because there will be millions of images to be inserted in database)

2) What is the field format of that fingerprint in the database ? (important because a fast search is needed … script should search in a 1M images database in less than 1 second)

3) What is the descriptors (algorithms) we use to analyze them ?

Thanks in advance
A luminosity histogram (especially one that is separated into RGB components) is a reasonable fingerprint for an image - and can be implemented quite efficiently. 


Subtracting one histogram from another will produce a new historgram which you can process to decide how similar two images are.
Histograms, because the only evaluate the distribution and occurrence of luminosity/color information handle affine transformations quite well. 
Luminosity histograms produce false negatives when the color information in an image is manipulated.