1. A method comprising: receiving a query comprising one or more search terms; identifying, using the one or more search terms, a set of responsive text-based data items from a plurality of text-based data items, wherein the plurality of text-based data items were generated by a plurality of data sources, and the set of responsive text-based data items comprises a plurality of the text-based data items that are responsive to the query; identifying one or more related text-based data items in the set of responsive text-based data items, wherein each text-based data item comprises a plurality of text-based data pieces, and the identifying the one or more related text-based data items comprises parsing a first text-based data item of the plurality of text-based data items into at least two first text-based data pieces, parsing a second text-based data item of the plurality of text-based data items into at least two second text-based data pieces, generating a fingerprint for each of the first text-based data pieces and for each of the second text-based data pieces, and comparing the fingerprints corresponding to the first text-based data pieces with the fingerprints corresponding to the second text-based data pieces to determine whether any of the first text-based data pieces are identical to any of the second text-based data pieces; responding to the query with information identifying the set of responsive text-based data items and one or more relationships, wherein the responding comprises generating a time-sorted list of information based on two or more of a plurality of sets of relationship-related metadata; generating one or more clusters of related data items, wherein each of the one or more clusters is generated using the information, and each cluster is grouped based upon a respective search term of the one or more search terms; and displaying the one or more clusters to a user.