1. A method of searching for data in one or more heterogeneous data sources within a computer system, the method comprising the steps of: receiving a request for data at a federated data source; and from the federated data source, retrieving data from one or more of one or more terminal data repositories or one or more search gateway data sources.