What techniques to use for image matching
Hashing is the way to go if you want fast -- constant time -- retrieval of nearest neighbors. Here's a recent example using neural networks to learn a binary hash:

Deep Learning of Binary Hash Codes for Fast Image Retrieval (code) (slides)

You want to avoid doing all-pairs computations like correlations.