Improving Search Performance in Unstructured P2P Networks: Autonomous Data Replication and Distributed Search