The next step is to search the network for a specific resource such as a file, a peer service, or a hardware device. Clearly, a simple scheme described above works similarly to a Gnutella search and in fact the Gnutella protocol can be implemented on top of Rabbit. However, this kind of search would very quickly saturate any network because every search request is routed through many unrelated and simply irrelevant peers. It is clearly a waste of bandwidth and CPU to search for anime pictures on a peer that only holds financial documents. Groups A group is a string that contains the complete path of a resource within a group hierarchy.
Any resource can have multiple groups associated with it.
For example, a file called PrezSpeech.wav can have Audio. WAV.Voice and Person. When a peer system starts up, it compiles a list of groups for all the local resources available on the system. When performing a search for a specific resource the groups are used to cluster the peers with similar resources and to eliminate the peers with the irrelevant resources. A whole range of various search algorithms can be implemented based on the group hierarchy.