1. A method comprising: receiving a set of queries at a computing device, wherein each query is associated with a user who provided the query and each query has an associated time; dividing the received set of queries into a set of queries that are commercial queries and a set of queries that are non-commercial queries, by the computing device; generating a first set of query communities from the set of queries that are non-commercial queries and a second set of query communities from the set of queries that are commercial queries by the computing device, wherein each query community comprises a plurality of queries of the set of queries and each query in a query community is related to each other query in the query community, wherein a first query is related to a second query if the first query and the second query were provided by the same user with associated times that are within a time window more than a threshold number of times; determining a set of mappings of query communities from the first set of query communities to query communities from the second set of query communities by the computing device according to the users and times associated with the queries in the query communities; receiving a query from the first set of query communities at the computing device; and recommending one or more queries from the second set of query communities using the received query and the set of mappings.