Existing peer-to-peer systems implement a single function well: data lookup. There is now a wealth of research describing how to reliably disseminate, and to later retrieve, data in a scalable and load-balanced manner.

However, searching has received less attention. The current state of the art is to distribute inverted indexes in the name space. Intersection of distributed sets can be made more efficient by exchanging bloom filters prior to moving objects.

We describe an orthogonal and complementary technique: using result-caching to avoid duplicating work and data movement. The main contribution of the paper is a new data structure, the view tree, that can be used to efficiently store and retrieve such prior results. These results, which can also be thought of as materialized views, can then be used to efficiently answer future queries. Note that object attributes could either be derived from application semantics (e.g. meta-data from files in a filesystem) or computed via techniques such as latent semantic indexing.

	title = "Efficient Peer-To-Peer Searches Using Result-Caching",
	author = "Bobby Bhattacharjee and Sudarshan Chawathe and Vijay Gopalakrishnan and Pete Keleher and Bujor Silaghi",
	booktitle = {The 2nd International Workshop on Peer-to-Peer Systems (IPTPS'03)},
	month = {February},
	year = {2003},