Creating Domain specific Question Answering Systems
This is broad question, but here is the general approach. There are several sub-problems involved in a typical QA system, and each may be solved using different approaches:


Question Classification - What type of question is the user asking? This can be posed as a classification problem, assuming you have labels. 
Parsing the question - Multiple NLP techniques would be required here
Converting question to canonical form - Every question would be converted into a canonical or structured format (which can be used to query). This is usually the most difficult part of the process. This is usually referred to as Semantic Parsing. One approach is to get variants of phrases and then map it to a single canonical form using some similarity metric. You can start with this paper.


If you can get from a natural language text to a canonical form, you are essentially done. Storing data and retrieval are trivial aspects which could be done in numerous ways. Coming to the question of domains, it is always going to be a trade-off between accuracy for one domain vs a general QA system (which is way too difficult to crack). A single model for every domain will most likely give you better results at the cost of extra effort.