1. A method of retrieving documents from a database comprising the steps of: a. semantically editing a document to create at least one searchable compound word that contains information contextually relevant to the contents of the document; b. associating the at least one compound word with the document thereby to produce an enhanced document; c. storing the enhanced document in an enhanced document database; d. providing a semantic query editor that is operable to receive a query input by a searcher, and using said query editor being operable to convert the query into at least one query searchable compound words, that contains information contextually relevant to the query; e. providing a search means to search the enhanced document database, searching the enhanced document database to match the at least one query searchable compound word with compound words associated with a document and thereby locate specific documents in the database containing the at least one compound search word; and f. presenting the specific documents to the searcher, wherein there is provided a semantic rule engine that is operable to generate and store rules each of which includes at least one compound word derived from at least one of the enhanced documents, and the method comprises the further steps, prior to step (f), of semantic searching a selected enhanced document to generate at least one searchable compound word associated with the selected enhanced document, searching the rules to find at least one rule specifying the at least one searchable compound word and at least one additional compound word to generate a set of candidate rules as rules which are possibly relevant to the selected enhanced document, and processing the set of candidate rules and adding to the selected enhanced document additional compound words specified in at least one of the rules in the set of candidate rules where the respective rule is satisfied for the selected enhanced document.