Search systems allow users/peers to search for data that is distributed around the P2P network. The main capabilities of such systems include:
Semi-centralised: Server Node
The server version of this architecture domain would
typically utilise mechanisms for searching and filtering data that is indexed
within a local data repository. When a search request comes in it would
typically pass to the Data Search/Filtering layer where it would be acted upon. The Data Repository would be interrogated
and the returned results could be crosschecked against current online peers if
necessary. Returned results belonging to a peer that is offline or is
overloaded could be filtered out. The final set of search results could then be
returned back to the requesting peer. Server nodes would need to ensure that
the indexed data is kept up to date.

Figure 1 - Search System Server Architecture
Server peer Layers
Semi-centralised: Client Node
It will be important for the server to be aware of what
data a client peer is making publicly available and what client peers are
on-line. As a result the Awareness Controller within the client is liable to be
tightly coupled to the Awareness Monitor within the server. Typically a client node could supply details
of locally stored data at startup, or whenever the data is changed in someway
(for example, new data being added). When a client receives the search results
from the server it is likely that details regarding the location and
authentication requirements of these peers (if needed) will also be included.
This allows the client peer to then establish a direct connection with the
target peer.

Figure 2 - Search System Client Architecture
Client peer Layers
Decentralised Node
Decentralised search systems are already quite common (Gnutella, Freenet, etc). A node within a decentralised system would possess the same functionality as a client node described above, but would also need to handle the data searching aspect as well. When that node receives a search request then it would need to perform a search on the data that is held locally. In addition the node would also need to handle the decentralisation specific issues (e.g., publishing, discovery and message routing).

Figure 3 – Search System Decentralised Architecture
Decentralised peer Layers