from pybloom import BloomFilter import os import re posts = {post_name: open("posts/" + post_name).read() for post_name in os.listdir("posts")} split_posts = {name: set(re.split("\W+", contents.lower())) for name, contents in posts.items()} filters = {} for name, words in split_posts.items(): filters[name] = BloomFilter(capacity=1000, error_rate=0.01) for word in words: filters[name].add(word) def search(search_string): results = [] search_terms = re.split("\W+", search_string) for name, filter in filters.items(): if all(term in filter for term in search_terms): results.append(name) return results search("python raspberry")