A computer-implemented method for caching search results of search queries using binary decision diagrams (BDDs) comprising: constructing a plurality of first binary decision diagrams (210, 220, 230, 240), each of the first BDDs representing a different one of a plurality of words, each of the words having a unique word identifier, each first BDD being constructed based on the word ID of the word represented by the first BDD; constructing a plurality of second BDDs (310, 320), each of the second BDDs representing a different one of a plurality of search queries, each of the search queries comprising one or more of the words, each second BDD being constructed by performing an AND operation on the first BDDs representing the words in the search query represented by the second BDD; constructing a plurality of third BDDs (410, 420, 430, 440, 450), each of the third BDDs representing a different one of a plurality of web pages, each of the web pages having a unique page ID, each of the third BDDs being constructed based on the page ID of the web page represented by the third BDD; constructing a plurality of fourth BDDs (510, 520), each of the fourth BDDs representing a different one of a plurality of search results generated in response to the search queries, each of the search results comprising one or more of the web pages, each fourth BDD being constructed by performing an OR operation on the third BDDs representing the web pages in the search result represented by the fourth BDD; constructing a plurality of fifth BDDs (610, 620, 630), each of the fifth BDDs representing a different one of a plurality of search tuples, each of the search tuples comprising a different one of the search queries and a different one of the search results corresponding to the search query, each fifth BDD being constructed by performing an AND operation on the second BDD representing the search query and the fourth BDD representing the search result that the search tuple represented by the fifth BDD comprises; constructing a sixth BDD by performing an OR operation on the fifth BDDs, the sixth BDD representing the search queries and the search results; receiving, by the one or more computer systems, a new search query, the new search query comprising one or more of the words; searching, by the one or more computer systems, through the sixth BDD for search results to the new search query; and returning, by the one or more computer systems, the search results in response to the new search query. constructing a plurality of first binary decision diagrams (210, 220, 230, 240), each of the first BDDs representing a different one of a plurality of words, each of the words having a unique word identifier, each first BDD being constructed based on the word ID of the word represented by the first BDD; constructing a plurality of second BDDs (310, 320), each of the second BDDs representing a different one of a plurality of search queries, each of the search queries comprising one or more of the words, each second BDD being constructed by performing an AND operation on the first BDDs representing the words in the search query represented by the second BDD; constructing a plurality of third BDDs (410, 420, 430, 440, 450), each of the third BDDs representing a different one of a plurality of web pages, each of the web pages having a unique page ID, each of the third BDDs being constructed based on the page ID of the web page represented by the third BDD; constructing a plurality of fourth BDDs (510, 520), each of the fourth BDDs representing a different one of a plurality of search results generated in response to the search queries, each of the search results comprising one or more of the web pages, each fourth BDD being constructed by performing an OR operation on the third BDDs representing the web pages in the search result represented by the fourth BDD; constructing a plurality of fifth BDDs (610, 620, 630), each of the fifth BDDs representing a different one of a plurality of search tuples, each of the search tuples comprising a different one of the search queries and a different one of the search results corresponding to the search query, each fifth BDD being constructed by performing an AND operation on the second BDD representing the search query and the fourth BDD representing the search result that the search tuple represented by the fifth BDD comprises; constructing a sixth BDD by performing an OR operation on the fifth BDDs, the sixth BDD representing the search queries and the search results; receiving, by the one or more computer systems, a new search query, the new search query comprising one or more of the words; searching, by the one or more computer systems, through the sixth BDD for search results to the new search query; and returning, by the one or more computer systems, the search results in response to the new search query.