Title matching against human input
One plausible approach is to use edit distance to measure the similarity of two titles.  You might want to adjust it to reduce the penalty for capitalization (e.g., changing x to X might cost 0, or some very small amount).
Then, given a human-entered title, you need a way to find the closest match in the database.  There are various data structures and techniques for this.  See, e.g., shingling, BK trees, metric trees, Efficient map data structure supporting approximate lookup, Efficient data structures for building a fast spell checker, https://cstheory.stackexchange.com/q/4165/5038, http://norvig.com/spell-correct.html.
Another heuristic might be to extract each word from the human-entered title, canonicalize it (e.g., spelling correction, lower-case it, etc.), then look it up to find the first 1000 titles in the database that contain this word.  Take the union of those titles from the database, compare each to the human-entered title using edit distance, and keep the closest match.