How to build a conceptual search engine?
This is an incredibly hard problem and it can't be solved in a way that would always produce adequate results. I'd suggest to stick to some very simple principles instead so that the results are at least predictable. I think you need 2 things: some basic morphology engine plus a dictionary of synonyms.
Whenever a search query arrives, for each word you

Look for a literal match
"Normalize/canonicalze" the word using the morphology engine, i.e. make it singular, first form, etc and look for matches
Look for synonyms of the word

Then repeat for all combinations of the input words, i.e. "big cats", "big cat", "huge cats" huge cat" etc.
In fact, you need to store your index data in canonical form, too (singluar, first form etc) along with the literal form.
As for concepts, such as cats are also animals - this is where it gets tricky. It never really worked, because otherwise Google would have been returning conceptual matches already, but it's not doing that.
I would like to build an internal search engine (I have a very large collection of thousands of XML files) that is able to map queries to concepts.  For example, if I search for "big cats", I would want highly ranked results to return documents with "large cats" as well.  But I may also be interested in having it return "huge animals", albeit at a much lower relevancy score.  
I'm currently reading through the Natural Language Processing in Python book, and it seems WordNet has some word mappings that might prove useful, though I'm not sure how to integrate that into a search engine.  Could I use Lucene to do this? How?
From further research, it seems "latent semantic analysis" is relevant to what I'm looking for but I'm not sure how to implement it.  
Any advice on how to get this done?