Natural Language is quite problematic because there one has several severities. There is the Problem of Homonyms and Synonyms which is rather difficult to handle with a standard or Traditional Search Engines.
Generally in Classic Information Retrieval one has a Set of Documents which are
Files of Records and on the other hand one might have
Information Requests, i.e. a
Set of Queries. The Problem now is that one has to match these Queries to the Documents. So one has to to find which Documents really fit to the Queries. For that in principle one Indexes the Documents and on the other hand one formulates the Queries in some kind of Indexing Language, so that in these two Representations, as there is a Transformation in the Representation of both sides, then in the Indexing Language, one can do similarity based Search or Mapping Approach. One tries to map these Queries these Documents by some kind of Similarity Measure which is for example String Matching, Equality or Fuzzy kind of String Matching. So in Information Retrieval one has a Search Query and one has the Set of Documents, then one has a large Index where the Document has been translated into a Format that can be mapped against the Search Query and therefore one looks up the Search Query in the Index to find which Documents belongs to, refers to or has to do something with the Query.