Here is an exceptionally well-written article about search engine theory from Digital Web magazine. It concentrates on one of the biggest problems facing search engine developers: users will often call something a different name than what the search engine has indexed.
Are you looking for “first course” or “appetizer”? “Human resources” or “personell”? “Linux” or “Unix”? The idea a user has in his or her head often will not jibe with the index, and you have to be prepared to handle this.