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.
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. 4. The method of claim 1 , wherein generating the first set of query communities from the set of queries comprises: generating a graph with a vertex for each unique query from the set of queries; for each pair of vertices in the graph, generating an edge between the vertices if the queries associated with each vertex in the pair are related; for each pair of vertices in the graph, generating an edge between the vertices if each vertex has more than a threshold number of neighbor vertices in common; generating one or more clusters from the vertices in the graph, wherein each cluster comprises one or more vertices from the graph; and generating the first set of query communities from the clusters, wherein each query community corresponds to a cluster and includes each query associated with a vertex from the cluster.