It's not often an app really impresses me, but PhotoTime (free) does. While many apps, including Apple's Photos app, will tag photos and read EXIF data from your photos, PhotoTime goes a lot deeper.
First, you let PhotoTime see your photos, and they are uploaded to the PhotoTime servers. Some very sophisticated software reads the metadata on your pix, but also does face and shape recognition. The images are sent back to your phone with the tags in place.
I have lots and lots of photos on my iPhone, and was pretty stunned at the results. I typed 'desert' and got pictures I'd taken in the desert. When the app sees a face, it will ask you to identify it, and in my testing it recognized that person even if lighting and angles changed. What was really impressive is I looked at a photo of my pet bird, and the app correctly identified it as a bird, but also correctly tagged him as a Cockatoo. A picture of a small telescope in my back yard was identified as a telescope, while it also recognized photos of cactus, although sometimes it added 'spire' or 'tall building' to the tags. Of course, it is easy to edit the tags and remove anything that is wrong.
Once everything as been tagged, it's easy to locate photos. You can ask for 4th of July or fireworks, Xmas tree photos, or everything taken in Utah, for example. Apple needs this technology badly.