1. A computer-readable medium containing program instructions for removing duplicate query results in a system comprising a plurality of data sources, the program instructions for: a) issuing a query from a user to a first data source; b) receiving a first query result; c) computing a first index for the first query result; d) passing the first query result to the user; e) issuing said query to a second data source: f) receiving a second query result; g) computing a second index for the second query result; h) comparing the first index with the second index to check for an index collision; i) if the first and second indexes match, querying the first data source for data corresponding to the second query result; j) discarding the second query result if the first data source contains the data; and wherein queries are issued to one data source at a time, allowing the results from each data source to be processed before the results from the next data source are received.