{'fraction_non_alphanumeric': 0.026022304832713755, 'fraction_numerical': 0.004779607010090282, 'mean_word_length': 4.640718562874252, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A PeertoPeer Inverted Index Implementation For Word-Based Content Search

For the last few years Peer-to-Peer (P2P) systems have been used for cooperative file sharing among users. Napster was the first system that allowed the exchange of music files through the collaboration of it’s peers. P2P systems make an effective use of the widespread availability of computing and storage resources that are present over the Internet, even though temporarily. The ability to search information is of great importance in order to take full advantage of such huge amount of shared information. The first generation of P2P systems, like Napster [4] and Gnutella [3], uses a word based searching model. Users search for files that match a given word or list of words. Napster makes use of a central index for searching, despite file transfers being made only between peers. A centralized index creates a single point of failure on the system, which can be used to shutdown the system. Gnutella was the first system to use a completely decentralized networking model. Searching is made through neighborhood broadcasts, which create a considerable amount of network traffic. Therefore, this system does not scale to a very large number of users [6]. The second generation of P2P systems, like Chord [9] and Pastry [7], is based on the Distributed Hash Table (DHT) model. A DHT system forms an overlay network where each peer is given an unique identifier. The identifier has constant size and may be generated as the result of an hashing function. This identifier is also used as the key of the (key, value) pair each peer will store. The distributed hash table is formed by all the pairs contained on peers. The overlay network is capable of locating any key of the hash table, and therefore the peer storing it, from any other peer in a scalable way. The routing procedure required for locating