I think a big difficulty in building peer-to-peer search engines like YaCy is the lack of fraud resistant link graph to rank webpages. There is no way to know whether one page really links to another without crawling and parsing it yourself, and that’s too slow for real time applications.
Technologically you could store the graph in a distributed hash table but that doesn’t really solve the fraud problem since anyone could modify the data.